use rlua::prelude::*;use libm;pub fn init(lua: &Lua) -> crate::Result<()> {    lua.exec::<_, ()>("lua_math=math", None)?;    let module = lua.create_table()?;    module.set("acos", lua.create_function( |_, num| {        Ok(libm::acos(num))    })? )?;    module.set("acosf", lua.create_function( |_, num| {        Ok(libm::acosf(num))    })? )?;    module.set("asin", lua.create_function( |_, num| {        Ok(libm::asin(num))    })? )?;    module.set("asinf", lua.create_function( |_, num| {        Ok(libm::asinf(num))    })? )?;    module.set("atan", lua.create_function( |_, num| {        Ok(libm::atan(num))    })? )?;    module.set("atan2", lua.create_function( |_, (num0, num1)| {        Ok(libm::atan2(num0, num1))    })? )?;    module.set("atan2f", lua.create_function( |_, (num0, num1)| {        Ok(libm::atan2f(num0, num1))    })? )?;    module.set("atanf", lua.create_function( |_, num| {        Ok(libm::atanf(num))    })? )?;    module.set("cbrt", lua.create_function( |_, num| {        Ok(libm::cbrt(num))    })? )?;    module.set("cbrtf", lua.create_function( |_, num| {        Ok(libm::cbrtf(num))    })? )?;    module.set("ceil", lua.create_function( |_, num| {        Ok(libm::ceil(num))    })? )?;    module.set("ceilf", lua.create_function( |_, num| {        Ok(libm::ceilf(num))    })? )?;;    module.set("cos", lua.create_function( |_, num| {        Ok(libm::cos(num))    })? )?;    module.set("cosf", lua.create_function( |_, num| {        Ok(libm::cosf(num))    })? )?;    module.set("cosh", lua.create_function( |_, num| {        Ok(libm::cosh(num))    })? )?;    module.set("coshf", lua.create_function( |_, num| {        Ok(libm::coshf(num))    })? )?;    module.set("exp", lua.create_function( |_, num| {        Ok(libm::exp(num))    })? )?;    module.set("exp2", lua.create_function( |_, num| {        Ok(libm::exp2(num))    })? )?;    module.set("exp2f", lua.create_function( |_, num| {        Ok(libm::exp2f(num))    })? )?;    module.set("expf", lua.create_function( |_, num| {        Ok(libm::expf(num))    })? )?;    module.set("expm1", lua.create_function( |_, num| {        Ok(libm::expm1(num))    })? )?;    module.set("expm1f", lua.create_function( |_, num| {        Ok(libm::expm1f(num))    })? )?;    module.set("fabs", lua.create_function( |_, num| {        Ok(libm::fabs(num))    })? )?;    module.set("fabsf", lua.create_function( |_, num| {        Ok(libm::fabsf(num))    })? )?;    module.set("fdim", lua.create_function( |_, (n0, n1)| {        Ok(libm::fdim(n0, n1))    })? )?;    module.set("fdimf", lua.create_function( |_, (n0, n1)| {        Ok(libm::fdimf(n0, n1))    })? )?;    module.set("floor", lua.create_function( |_, num| {        Ok(libm::floor(num))    })? )?;    module.set("floorf", lua.create_function( |_, num| {        Ok(libm::floorf(num))    })? )?;    module.set("fma", lua.create_function( |_, (n0, n1, n2)| {        Ok(libm::fma(n0, n1, n2))    })? )?;    module.set("fmaf", lua.create_function( |_, (n0, n1, n2)| {        Ok(libm::fmaf(n0, n1, n2))    })? )?;    module.set("fmod", lua.create_function( |_, (n0, n1)| {        Ok(libm::fmod(n0, n1))    })? )?;    module.set("fmodf", lua.create_function( |_, (n0, n1)| {        Ok(libm::fmodf(n0, n1))    })? )?;    module.set("hypot", lua.create_function( |_, (n0, n1)| {        Ok(libm::hypot(n0, n1))    })? )?;    module.set("hypotf", lua.create_function( |_, (n0, n1)| {        Ok(libm::hypotf(n0, n1))    })? )?;    module.set("log", lua.create_function( |_, num| {        Ok(libm::log(num))    })? )?;    module.set("log2", lua.create_function( |_, num| {        Ok(libm::log2(num))    })? )?;    module.set("log10", lua.create_function( |_, num| {        Ok(libm::log10(num))    })? )?;    module.set("log10f", lua.create_function( |_, num| {        Ok(libm::log10f(num))    })? )?;    module.set("log1p", lua.create_function( |_, num| {        Ok(libm::log1p(num))    })? )?;    module.set("log1pf", lua.create_function( |_, num| {        Ok(libm::log1pf(num))    })? )?;    module.set("log2f", lua.create_function( |_, num| {        Ok(libm::log2f(num))    })? )?;    module.set("logf", lua.create_function( |_, num| {        Ok(libm::logf(num))    })? )?;    module.set("pow", lua.create_function( |_, (n0, n1)| {        Ok(libm::pow(n0, n1))    })? )?;    module.set("powf", lua.create_function( |_, (n0, n1)| {        Ok(libm::powf(n0, n1))    })? )?;    module.set("round", lua.create_function( |_, num| {        Ok(libm::round(num))    })? )?;    module.set("roundf", lua.create_function( |_, num| {        Ok(libm::roundf(num))    })? )?;    module.set("scalbn", lua.create_function( |_, (n0, n1)| {        Ok(libm::scalbn(n0, n1))    })? )?;    module.set("scalbnf", lua.create_function( |_, (n0, n1)| {        Ok(libm::scalbnf(n0, n1))    })? )?;    module.set("sin", lua.create_function( |_, num| {        Ok(libm::sin(num))    })? )?;    module.set("sinf", lua.create_function( |_, num| {        Ok(libm::sinf(num))    })? )?;    module.set("sinh", lua.create_function( |_, num| {        Ok(libm::sinh(num))    })? )?;    module.set("sinhf", lua.create_function( |_, num| {        Ok(libm::sinhf(num))    })? )?;    module.set("sqrt", lua.create_function( |_, num| {        Ok(libm::sqrt(num))    })? )?;    module.set("sqrtf", lua.create_function( |_, num| {        Ok(libm::sqrtf(num))    })? )?;    module.set("tan", lua.create_function( |_, num| {        Ok(libm::tan(num))    })? )?;    module.set("tanf", lua.create_function( |_, num| {        Ok(libm::tanf(num))    })? )?;    module.set("tanh", lua.create_function( |_, num| {        Ok(libm::tanh(num))    })? )?;    module.set("tanhf", lua.create_function( |_, num| {        Ok(libm::tanhf(num))    })? )?;    module.set("trunc", lua.create_function( |_, num| {        Ok(libm::trunc(num))    })? )?;    module.set("truncf", lua.create_function( |_, num| {        Ok(libm::truncf(num))    })? )?;    lua.globals().set("math", module)?;    Ok(())}