/* Automatically generated by chibi-ffi; version: 0.4 */

#include <chibi/eval.h>

#include <math.h>
#if defined(__EMSCRIPTEN__) || !defined(FP_FAST_FMA)
#define FP_FAST_FMA 0
#endif
/*
types: ()
enums: ()
*/

sexp sexp_flerfc_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, erfc(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_flerf_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, erf(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_flsecond_bessel_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0, sexp arg1) {
  sexp res;
  if (! sexp_exact_integerp(arg0))
    return sexp_type_exception(ctx, self, SEXP_FIXNUM, arg0);
  if (! sexp_flonump(arg1))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg1);
  res = sexp_make_flonum(ctx, yn(sexp_sint_value(arg0), sexp_flonum_value(arg1)));
  return res;
}

sexp sexp_flfirst_bessel_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0, sexp arg1) {
  sexp res;
  if (! sexp_exact_integerp(arg0))
    return sexp_type_exception(ctx, self, SEXP_FIXNUM, arg0);
  if (! sexp_flonump(arg1))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg1);
  res = sexp_make_flonum(ctx, jn(sexp_sint_value(arg0), sexp_flonum_value(arg1)));
  return res;
}

sexp sexp_lgamma_r_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  int tmp1;
  sexp_gc_var2(res, res1);
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  sexp_gc_preserve2(ctx, res, res1);
  res = sexp_make_flonum(ctx, lgamma_r(sexp_flonum_value(arg0), &tmp1));
  res1 = sexp_make_integer(ctx, tmp1);
  res = sexp_cons(ctx, res, SEXP_NULL);
  sexp_push(ctx, res, sexp_car(res));
  sexp_cadr(res) = res1;
  sexp_gc_release2(ctx);
  return res;
}

sexp sexp_flgamma_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, tgamma(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_remquo_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0, sexp arg1) {
  int tmp2;
  sexp_gc_var2(res, res2);
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  if (! sexp_flonump(arg1))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg1);
  sexp_gc_preserve2(ctx, res, res2);
  res = sexp_make_flonum(ctx, remquo(sexp_flonum_value(arg0), sexp_flonum_value(arg1), &tmp2));
  res2 = sexp_make_integer(ctx, tmp2);
  res = sexp_cons(ctx, res, SEXP_NULL);
  sexp_push(ctx, res, sexp_car(res));
  sexp_cadr(res) = res2;
  sexp_gc_release2(ctx);
  return res;
}

sexp sexp_flatanh_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, atanh(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_flacosh_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, acosh(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_flasinh_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, asinh(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_fltanh_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, tanh(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_flcosh_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, cosh(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_flsinh_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, sinh(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_flatan2_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0, sexp arg1) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  if (! sexp_flonump(arg1))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg1);
  res = sexp_make_flonum(ctx, atan2(sexp_flonum_value(arg0), sexp_flonum_value(arg1)));
  return res;
}

sexp sexp_flatan1_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, atan(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_flacos_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, acos(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_flasin_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, asin(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_fltan_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, tan(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_flcos_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, cos(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_flsin_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, sin(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_fllog10_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, log10(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_fllog2_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, log2(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_fllog12b__stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, log1p(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_fllog_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, log(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_flexpt_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0, sexp arg1) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  if (! sexp_flonump(arg1))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg1);
  res = sexp_make_flonum(ctx, pow(sexp_flonum_value(arg0), sexp_flonum_value(arg1)));
  return res;
}

sexp sexp_flhypot_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0, sexp arg1) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  if (! sexp_flonump(arg1))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg1);
  res = sexp_make_flonum(ctx, hypot(sexp_flonum_value(arg0), sexp_flonum_value(arg1)));
  return res;
}

sexp sexp_flcbrt_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, cbrt(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_flsqrt_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, sqrt(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_flexp_1_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, expm1(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_flexp2_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, exp2(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_flexp_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, exp(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_fltruncate_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, trunc(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_flceiling_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, ceil(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_flfloor_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, floor(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_flposdiff_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0, sexp arg1) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  if (! sexp_flonump(arg1))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg1);
  res = sexp_make_flonum(ctx, fdim(sexp_flonum_value(arg0), sexp_flonum_value(arg1)));
  return res;
}

sexp sexp_flabs_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, fabs(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_fpclassify_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_integer(ctx, fpclassify(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_flnormalized_p_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_boolean(isnormal(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_flnan_p_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_boolean(isnan(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_flinfinite_p_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_boolean(isinf(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_flfinite_p_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_boolean(isfinite(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_sign_bit_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_integer(ctx, signbit(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_frexp_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  int tmp1;
  sexp_gc_var2(res, res1);
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  sexp_gc_preserve2(ctx, res, res1);
  res = sexp_make_flonum(ctx, frexp(sexp_flonum_value(arg0), &tmp1));
  res1 = sexp_make_integer(ctx, tmp1);
  res = sexp_cons(ctx, res, SEXP_NULL);
  sexp_push(ctx, res, sexp_car(res));
  sexp_cadr(res) = res1;
  sexp_gc_release2(ctx);
  return res;
}

sexp sexp_flinteger_exponent_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_integer(ctx, ilogb(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_flexponent_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  res = sexp_make_flonum(ctx, logb(sexp_flonum_value(arg0)));
  return res;
}

sexp sexp_modf_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0) {
  double tmp1;
  sexp_gc_var2(res, res1);
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  sexp_gc_preserve2(ctx, res, res1);
  res = sexp_make_flonum(ctx, modf(sexp_flonum_value(arg0), &tmp1));
  res1 = sexp_make_flonum(ctx, tmp1);
  res = sexp_cons(ctx, res, SEXP_NULL);
  sexp_push(ctx, res, sexp_car(res));
  sexp_cadr(res) = res1;
  sexp_gc_release2(ctx);
  return res;
}

sexp sexp_make_flonum_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0, sexp arg1) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  if (! sexp_exact_integerp(arg1))
    return sexp_type_exception(ctx, self, SEXP_FIXNUM, arg1);
  res = sexp_make_flonum(ctx, ldexp(sexp_flonum_value(arg0), sexp_sint_value(arg1)));
  return res;
}

sexp sexp_flcopysign_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0, sexp arg1) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  if (! sexp_flonump(arg1))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg1);
  res = sexp_make_flonum(ctx, copysign(sexp_flonum_value(arg0), sexp_flonum_value(arg1)));
  return res;
}

sexp sexp_fladjacent_stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0, sexp arg1) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  if (! sexp_flonump(arg1))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg1);
  res = sexp_make_flonum(ctx, nextafter(sexp_flonum_value(arg0), sexp_flonum_value(arg1)));
  return res;
}

sexp sexp_fl2b_2a__stub (sexp ctx, sexp self, sexp_sint_t n, sexp arg0, sexp arg1, sexp arg2) {
  sexp res;
  if (! sexp_flonump(arg0))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg0);
  if (! sexp_flonump(arg1))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg1);
  if (! sexp_flonump(arg2))
    return sexp_type_exception(ctx, self, SEXP_FLONUM, arg2);
  res = sexp_make_flonum(ctx, fma(sexp_flonum_value(arg0), sexp_flonum_value(arg1), sexp_flonum_value(arg2)));
  return res;
}


sexp sexp_init_library (sexp ctx, sexp self, sexp_sint_t n, sexp env, const char* version, const sexp_abi_identifier_t abi) {
  sexp_gc_var3(name, tmp, op);
  if (!(sexp_version_compatible(ctx, version, sexp_version)
        && sexp_abi_compatible(ctx, abi, SEXP_ABI_IDENTIFIER)))
    return SEXP_ABI_ERROR;
  sexp_gc_preserve3(ctx, name, tmp, op);
  name = sexp_intern(ctx, "fl-fast-+*", 10);
  sexp_env_define(ctx, env, name, tmp=sexp_make_boolean(FP_FAST_FMA));
  name = sexp_intern(ctx, "FP_SUBNORMAL", 12);
  sexp_env_define(ctx, env, name, tmp=sexp_make_integer(ctx, FP_SUBNORMAL));
  name = sexp_intern(ctx, "fl-epsilon", 10);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, DBL_EPSILON));
  name = sexp_intern(ctx, "fl-integer-exponent-nan", 23);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, FP_ILOGBNAN));
  name = sexp_intern(ctx, "fl-integer-exponent-zero", 24);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, FP_ILOGB0));
  name = sexp_intern(ctx, "fl-least", 8);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, -DBL_MAX));
  name = sexp_intern(ctx, "fl-greatest", 11);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, DBL_MAX));
  name = sexp_intern(ctx, "fl-cos-1", 8);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, cos(1.0)));
  name = sexp_intern(ctx, "fl-sin-1", 8);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, sin(1.0)));
  name = sexp_intern(ctx, "fl-e-euler", 10);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, exp(0.57721566490153286060651209008240243)));
  name = sexp_intern(ctx, "fl-euler", 8);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, 0.57721566490153286060651209008240243));
  name = sexp_intern(ctx, "fl-1/log-phi", 12);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, 1.0/log((1.0+sqrt(5.0))/2.0)));
  name = sexp_intern(ctx, "fl-log-phi", 10);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, log((1.0+sqrt(5.0))/2.0)));
  name = sexp_intern(ctx, "fl-phi", 6);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, (1.0+sqrt(5.0))/2.0));
  name = sexp_intern(ctx, "fl-4thrt-2", 10);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, pow(2.0, 0.25)));
  name = sexp_intern(ctx, "fl-cbrt-3", 9);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, cbrt(3.0)));
  name = sexp_intern(ctx, "fl-cbrt-2", 9);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, cbrt(2.0)));
  name = sexp_intern(ctx, "fl-1/sqrt-2", 11);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, M_SQRT1_2));
  name = sexp_intern(ctx, "fl-sqrt-10", 10);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, sqrt(10.0)));
  name = sexp_intern(ctx, "fl-sqrt-5", 9);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, sqrt(5.0)));
  name = sexp_intern(ctx, "fl-sqrt-3", 9);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, sqrt(3.0)));
  name = sexp_intern(ctx, "fl-sqrt-2", 9);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, M_SQRT2));
  name = sexp_intern(ctx, "fl-2/sqrt-pi", 12);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, M_2_SQRTPI));
  name = sexp_intern(ctx, "fl-sqrt-pi", 10);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, sqrt(M_PI)));
  name = sexp_intern(ctx, "fl-pi/4", 7);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, M_PI/4));
  name = sexp_intern(ctx, "fl-pi/2", 7);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, M_PI/2));
  name = sexp_intern(ctx, "fl-2/pi", 7);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, M_2_PI));
  name = sexp_intern(ctx, "fl-1/pi", 7);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, M_1_PI));
  name = sexp_intern(ctx, "fl-pi", 5);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, M_PI));
  name = sexp_intern(ctx, "fl-log-10", 9);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, M_LN10));
  name = sexp_intern(ctx, "fl-log-2", 8);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, M_LN2));
  name = sexp_intern(ctx, "fl-log10-e", 10);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, M_LOG10E));
  name = sexp_intern(ctx, "fl-log2-e", 9);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, M_LOG2E));
  name = sexp_intern(ctx, "fl-e-2", 6);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, logb(2.0)));
  name = sexp_intern(ctx, "fl-e", 4);
  sexp_env_define(ctx, env, name, tmp=sexp_make_flonum(ctx, M_E));
  op = sexp_define_foreign(ctx, env, "flerfc", 1, sexp_flerfc_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flerf", 1, sexp_flerf_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flsecond-bessel", 2, sexp_flsecond_bessel_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FIXNUM);
    sexp_opcode_arg2_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flfirst-bessel", 2, sexp_flfirst_bessel_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FIXNUM);
    sexp_opcode_arg2_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "lgamma_r", 1, sexp_lgamma_r_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg2_type(op) = sexp_make_fixnum(SEXP_FIXNUM);
  }
  op = sexp_define_foreign(ctx, env, "flgamma", 1, sexp_flgamma_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "remquo", 2, sexp_remquo_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg2_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg3_type(op) = sexp_make_fixnum(SEXP_FIXNUM);
  }
  op = sexp_define_foreign(ctx, env, "flatanh", 1, sexp_flatanh_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flacosh", 1, sexp_flacosh_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flasinh", 1, sexp_flasinh_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "fltanh", 1, sexp_fltanh_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flcosh", 1, sexp_flcosh_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flsinh", 1, sexp_flsinh_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flatan2", 2, sexp_flatan2_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg2_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flatan1", 1, sexp_flatan1_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flacos", 1, sexp_flacos_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flasin", 1, sexp_flasin_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "fltan", 1, sexp_fltan_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flcos", 1, sexp_flcos_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flsin", 1, sexp_flsin_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "fllog10", 1, sexp_fllog10_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "fllog2", 1, sexp_fllog2_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "fllog1+", 1, sexp_fllog12b__stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "fllog", 1, sexp_fllog_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flexpt", 2, sexp_flexpt_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg2_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flhypot", 2, sexp_flhypot_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg2_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flcbrt", 1, sexp_flcbrt_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flsqrt", 1, sexp_flsqrt_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flexp-1", 1, sexp_flexp_1_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flexp2", 1, sexp_flexp2_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flexp", 1, sexp_flexp_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "fltruncate", 1, sexp_fltruncate_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flceiling", 1, sexp_flceiling_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flfloor", 1, sexp_flfloor_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flposdiff", 2, sexp_flposdiff_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg2_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flabs", 1, sexp_flabs_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "fpclassify", 1, sexp_fpclassify_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FIXNUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flnormalized?", 1, sexp_flnormalized_p_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_BOOLEAN);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flnan?", 1, sexp_flnan_p_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_BOOLEAN);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flinfinite?", 1, sexp_flinfinite_p_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_BOOLEAN);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flfinite?", 1, sexp_flfinite_p_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_BOOLEAN);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "sign-bit", 1, sexp_sign_bit_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FIXNUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "frexp", 1, sexp_frexp_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg2_type(op) = sexp_make_fixnum(SEXP_FIXNUM);
  }
  op = sexp_define_foreign(ctx, env, "flinteger-exponent", 1, sexp_flinteger_exponent_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FIXNUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "flexponent", 1, sexp_flexponent_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "modf", 1, sexp_modf_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg2_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "make-flonum", 2, sexp_make_flonum_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg2_type(op) = sexp_make_fixnum(SEXP_FIXNUM);
  }
  op = sexp_define_foreign(ctx, env, "flcopysign", 2, sexp_flcopysign_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg2_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "fladjacent", 2, sexp_fladjacent_stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg2_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  op = sexp_define_foreign(ctx, env, "fl+*", 3, sexp_fl2b_2a__stub);
  if (sexp_opcodep(op)) {
    sexp_opcode_return_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg1_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg2_type(op) = sexp_make_fixnum(SEXP_FLONUM);
    sexp_opcode_arg3_type(op) = sexp_make_fixnum(SEXP_FLONUM);
  }
  sexp_gc_release3(ctx);
  return SEXP_VOID;
}

