#include "spvm_native.h"
#include <math.h>
#include <fenv.h>
#include <complex.h>
static const char* MFILE = "SPVM/Math.c";
int32_t SPNATIVE__SPVM__Math__isinff(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
(void)stack;
float fval = stack[0].fval;
stack[0].ival = isinf(fval);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__fpclassifyf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
(void)stack;
float fval = stack[0].fval;
stack[0].ival = fpclassify(fval);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__isfinitef(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
(void)stack;
float fval = stack[0].fval;
stack[0].ival = isfinite(fval);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__isnanf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
(void)stack;
float fval = stack[0].fval;
stack[0].ival = isnan(fval);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__HUGE_VALF(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
(void)stack;
stack[0].fval = (float)HUGE_VALF;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__INFINITYF(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
(void)stack;
stack[0].fval = (float)INFINITY;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__NANF(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
(void)stack;
stack[0].fval = (float)NAN;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__HUGE_VAL(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
(void)stack;
stack[0].dval = (double)HUGE_VAL;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__INFINITY(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
(void)stack;
stack[0].dval = (double)INFINITY;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__NAN(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
(void)stack;
stack[0].dval = (double)NAN;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__FE_DOWNWARD(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
(void)stack;
stack[0].ival = FE_DOWNWARD;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__FE_TONEAREST(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
(void)stack;
stack[0].ival = FE_TONEAREST;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__FE_TOWARDZERO(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
(void)stack;
stack[0].ival = FE_TOWARDZERO;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__FE_UPWARD(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
(void)stack;
stack[0].ival = FE_UPWARD;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__fesetround(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
(void)stack;
int32_t ival = stack[0].ival;
stack[0].ival = fesetround(ival);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__FP_INFINITE(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
(void)stack;
stack[0].ival = FP_INFINITE;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__FP_NAN(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
(void)stack;
stack[0].ival = FP_NAN;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__FP_ZERO(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
(void)stack;
stack[0].ival = FP_ZERO;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__FP_ILOGB0(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
(void)stack;
stack[0].ival = FP_ILOGB0;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__FP_ILOGBNAN(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
(void)stack;
stack[0].ival = FP_ILOGBNAN;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__signbitf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
(void)stack;
float fval = stack[0].fval;
stack[0].ival = signbit(fval);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__signbit(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
(void)stack;
double dval = stack[0].dval;
stack[0].ival = signbit(dval);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__isinf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
(void)stack;
double dval = stack[0].dval;
stack[0].ival = isinf(dval);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__isnan(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
(void)stack;
double dval = stack[0].dval;
stack[0].ival = isnan(dval);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__fpclassify(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
(void)stack;
double dval = stack[0].dval;
stack[0].ival = fpclassify(dval);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__isfinite(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
(void)stack;
double dval = stack[0].dval;
stack[0].ival = isfinite(dval);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__cos(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = cos(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__cosf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = cosf(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__sin(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = sin(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__sinf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = sinf(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__tan(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = tan(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__tanf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = tanf(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__acos(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = acos(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__acosf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = acosf(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__asin(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = asin(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__asinf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = asinf(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__acosh(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = acosh(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__acoshf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = acoshf(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__asinh(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = asinh(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__asinhf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = asinhf(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__atanh(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = atanh(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__atanhf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = atanhf(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__atan(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = atan(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__atanf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = atanf(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__exp(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = exp(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__expf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = expf(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__exp2(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = exp2(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__exp2f(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = exp2f(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__log(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = log(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__logf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = logf(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__log10(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = log10(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__log10f(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = log10(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__sqrt(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = sqrt(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__sqrtf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = sqrtf(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__cbrt(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = cbrt(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__cbrtf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = cbrtf(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__ceil(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = ceil(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__ceilf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = ceilf(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__fmod(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = fmod(stack[0].dval, stack[1].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__fmodf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = fmodf(stack[0].fval, stack[1].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__remainder(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
// re - Math.Round(re / im) * im
double value = remainder(stack[0].dval, stack[1].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__remainderf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
// re - Math.Round(re / im) * im
float value = remainderf(stack[0].fval, stack[1].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__remquo(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = remquo(stack[0].dval, stack[1].dval, stack[2].iref);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__remquof(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = remquof(stack[0].fval, stack[1].fval, stack[2].iref);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__floor(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = floor(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__floorf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = floor(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__nearbyint(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = nearbyint(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__nearbyintf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = nearbyintf(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__atan2(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = atan2(stack[0].dval, stack[1].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__pow(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = pow(stack[0].dval, stack[1].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__powf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = powf(stack[0].fval, stack[1].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__round(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = round(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__roundf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = roundf(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__lround(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
int64_t value = llround(stack[0].dval);
stack[0].lval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__lroundf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
int64_t value = llroundf(stack[0].fval);
stack[0].lval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__trunc(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = trunc(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__truncf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = truncf(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__fabs(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = fabs(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__fabsf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = fabsf(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__erf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = erf(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__erff(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = erff(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__erfc(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = erfc(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__erfcf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = erfcf(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__lgamma(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = lgamma(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__lgammaf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = lgammaf(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__tgamma(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = tgamma(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__tgammaf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = tgammaf(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__cosh(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = cosh(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__coshf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = coshf(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__sinh(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = sinh(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__sinhf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = sinhf(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__tanh(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = tanh(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__tanhf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = tanhf(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__hypot(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = hypot(stack[0].dval, stack[1].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__hypotf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = hypotf(stack[0].fval, stack[1].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__expm1(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = expm1(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__expm1f(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = expm1(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__frexp(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = frexp(stack[0].dval, stack[1].iref);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__frexpf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = frexpf(stack[0].fval, stack[1].iref);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__ilogb(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
int32_t value = ilogb(stack[0].dval);
stack[0].ival = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__ilogbf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
int32_t value = ilogbf(stack[0].fval);
stack[0].ival = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__ldexp(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = ldexp(stack[0].dval, stack[1].ival);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__ldexpf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = ldexpf(stack[0].fval, stack[1].ival);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__log1p(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = log1p(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__log1pf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = log1pf(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__logb(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = logb(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__logbf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = logbf(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__log2(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = log2(stack[0].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__log2f(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = log2f(stack[0].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__scalbn(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = scalbn(stack[0].dval, stack[1].ival);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__scalbnf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = scalbnf(stack[0].fval, stack[1].ival);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__scalbln(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = scalbln(stack[0].dval, stack[1].lval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__scalblnf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = scalblnf(stack[0].fval, stack[1].lval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__modf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = modf(stack[0].dval, stack[1].dref);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__modff(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = modff(stack[0].fval, stack[1].fref);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__copysign(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = copysign(stack[0].dval, stack[1].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__copysignf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = copysignf(stack[0].fval, stack[1].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__nan(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
void* string = stack[0].oval;
if (string == NULL) {
SPVM_DIE("String must be defined", MFILE, __LINE__);
}
const char* tagp = env->get_chars(env, string);
double value = nan(tagp);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__nanf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
void* string = stack[0].oval;
if (string == NULL) {
SPVM_DIE("String must be defined", MFILE, __LINE__);
}
const char* tagp = env->get_chars(env, string);
float value = nanf(tagp);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__nextafter(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = nextafter(stack[0].dval, stack[1].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__nextafterf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = nextafterf(stack[0].fval, stack[1].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__nexttoward(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = nexttoward(stack[0].dval, stack[1].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__nexttowardf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = nexttowardf(stack[0].fval, stack[1].dval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__fdim(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = fdim(stack[0].dval, stack[1].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__fdimf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = fdimf(stack[0].fval, stack[1].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__fmax(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = fmax(stack[0].dval, stack[1].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__fmaxf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = fmaxf(stack[0].fval, stack[1].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__fmin(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = fmin(stack[0].dval, stack[1].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__fminf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = fminf(stack[0].fval, stack[1].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__fma(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
double value = fma(stack[0].dval, stack[1].dval, stack[2].dval);
stack[0].dval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__fmaf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
float value = fmaf(stack[0].fval, stack[1].fval, stack[2].fval);
stack[0].fval = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__isgreater(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
int32_t value = isgreater(stack[0].dval, stack[1].dval);
stack[0].ival = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__isgreaterf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
int32_t value = isgreater(stack[0].fval, stack[1].fval);
stack[0].ival = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__isgreaterequal(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
int32_t value = isgreaterequal(stack[0].dval, stack[1].dval);
stack[0].ival = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__isgreaterequalf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
int32_t value = isgreaterequal(stack[0].fval, stack[1].fval);
stack[0].ival = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__isless(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
int32_t value = isless(stack[0].dval, stack[1].dval);
stack[0].ival = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__islessf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
int32_t value = isless(stack[0].fval, stack[1].fval);
stack[0].ival = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__islessequal(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
int32_t value = islessequal(stack[0].dval, stack[1].dval);
stack[0].ival = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__islessequalf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
int32_t value = islessequal(stack[0].fval, stack[1].fval);
stack[0].ival = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__islessgreater(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
int32_t value = islessgreater(stack[0].dval, stack[1].dval);
stack[0].ival = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__islessgreaterf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
int32_t value = islessgreater(stack[0].fval, stack[1].fval);
stack[0].ival = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__isunordered(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
int32_t value = isunordered(stack[0].dval, stack[1].dval);
stack[0].ival = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__isunorderedf(SPVM_ENV* env, SPVM_VALUE* stack) {
(void)env;
int32_t value = isunordered(stack[0].fval, stack[1].fval);
stack[0].ival = value;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__cacos(SPVM_ENV* env, SPVM_VALUE* stack) {
double re = stack[0].dval;
double im = stack[1].dval;
double complex z = re + im * _Complex_I;
double complex z_out = cacos(z);
stack[0].dval = creal(z_out);
stack[1].dval = cimag(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__cacosf(SPVM_ENV* env, SPVM_VALUE* stack) {
float re = stack[0].fval;
float im = stack[1].fval;
float complex z = re + im * _Complex_I;
float complex z_out = cacosf(z);
stack[0].fval = crealf(z_out);
stack[1].fval = cimagf(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__casin(SPVM_ENV* env, SPVM_VALUE* stack) {
double re = stack[0].dval;
double im = stack[1].dval;
double complex z = re + im * _Complex_I;
double complex z_out = casin(z);
stack[0].dval = creal(z_out);
stack[1].dval = cimag(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__casinf(SPVM_ENV* env, SPVM_VALUE* stack) {
float re = stack[0].fval;
float im = stack[1].fval;
float complex z = re + im * _Complex_I;
float complex z_out = casinf(z);
stack[0].fval = crealf(z_out);
stack[1].fval = cimagf(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__catan(SPVM_ENV* env, SPVM_VALUE* stack) {
double re = stack[0].dval;
double im = stack[1].dval;
double complex z = re + im * _Complex_I;
double complex z_out = catan(z);
stack[0].dval = creal(z_out);
stack[1].dval = cimag(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__catanf(SPVM_ENV* env, SPVM_VALUE* stack) {
float re = stack[0].fval;
float im = stack[1].fval;
float complex z = re + im * _Complex_I;
float complex z_out = catanf(z);
stack[0].fval = crealf(z_out);
stack[1].fval = cimagf(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__ccos(SPVM_ENV* env, SPVM_VALUE* stack) {
double re = stack[0].dval;
double im = stack[1].dval;
double complex z = re + im * _Complex_I;
double complex z_out = ccos(z);
stack[0].dval = creal(z_out);
stack[1].dval = cimag(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__ccosf(SPVM_ENV* env, SPVM_VALUE* stack) {
float re = stack[0].fval;
float im = stack[1].fval;
float complex z = re + im * _Complex_I;
float complex z_out = ccosf(z);
stack[0].fval = crealf(z_out);
stack[1].fval = cimagf(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__csin(SPVM_ENV* env, SPVM_VALUE* stack) {
double re = stack[0].dval;
double im = stack[1].dval;
double complex z = re + im * _Complex_I;
double complex z_out = csin(z);
stack[0].dval = creal(z_out);
stack[1].dval = cimag(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__csinf(SPVM_ENV* env, SPVM_VALUE* stack) {
float re = stack[0].fval;
float im = stack[1].fval;
float complex z = re + im * _Complex_I;
float complex z_out = csinf(z);
stack[0].fval = crealf(z_out);
stack[1].fval = cimagf(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__ctan(SPVM_ENV* env, SPVM_VALUE* stack) {
double re = stack[0].dval;
double im = stack[1].dval;
double complex z = re + im * _Complex_I;
double complex z_out = ctan(z);
stack[0].dval = creal(z_out);
stack[1].dval = cimag(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__ctanf(SPVM_ENV* env, SPVM_VALUE* stack) {
float re = stack[0].fval;
float im = stack[1].fval;
float complex z = re + im * _Complex_I;
float complex z_out = ctanf(z);
stack[0].fval = crealf(z_out);
stack[1].fval = cimagf(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__cacosh(SPVM_ENV* env, SPVM_VALUE* stack) {
double re = stack[0].dval;
double im = stack[1].dval;
double complex z = re + im * _Complex_I;
double complex z_out = cacosh(z);
stack[0].dval = creal(z_out);
stack[1].dval = cimag(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__cacoshf(SPVM_ENV* env, SPVM_VALUE* stack) {
float re = stack[0].fval;
float im = stack[1].fval;
float complex z = re + im * _Complex_I;
float complex z_out = cacoshf(z);
stack[0].fval = crealf(z_out);
stack[1].fval = cimagf(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__casinh(SPVM_ENV* env, SPVM_VALUE* stack) {
double re = stack[0].dval;
double im = stack[1].dval;
double complex z = re + im * _Complex_I;
double complex z_out = casinh(z);
stack[0].dval = creal(z_out);
stack[1].dval = cimag(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__casinhf(SPVM_ENV* env, SPVM_VALUE* stack) {
float re = stack[0].fval;
float im = stack[1].fval;
float complex z = re + im * _Complex_I;
float complex z_out = casinhf(z);
stack[0].fval = crealf(z_out);
stack[1].fval = cimagf(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__catanh(SPVM_ENV* env, SPVM_VALUE* stack) {
double re = stack[0].dval;
double im = stack[1].dval;
double complex z = re + im * _Complex_I;
double complex z_out = catanh(z);
stack[0].dval = creal(z_out);
stack[1].dval = cimag(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__catanhf(SPVM_ENV* env, SPVM_VALUE* stack) {
float re = stack[0].fval;
float im = stack[1].fval;
float complex z = re + im * _Complex_I;
float complex z_out = catanhf(z);
stack[0].fval = crealf(z_out);
stack[1].fval = cimagf(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__ccosh(SPVM_ENV* env, SPVM_VALUE* stack) {
double re = stack[0].dval;
double im = stack[1].dval;
double complex z = re + im * _Complex_I;
double complex z_out = ccosh(z);
stack[0].dval = creal(z_out);
stack[1].dval = cimag(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__ccoshf(SPVM_ENV* env, SPVM_VALUE* stack) {
float re = stack[0].fval;
float im = stack[1].fval;
float complex z = re + im * _Complex_I;
float complex z_out = ccoshf(z);
stack[0].fval = crealf(z_out);
stack[1].fval = cimagf(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__csinh(SPVM_ENV* env, SPVM_VALUE* stack) {
double re = stack[0].dval;
double im = stack[1].dval;
double complex z = re + im * _Complex_I;
double complex z_out = csinh(z);
stack[0].dval = creal(z_out);
stack[1].dval = cimag(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__csinhf(SPVM_ENV* env, SPVM_VALUE* stack) {
float re = stack[0].fval;
float im = stack[1].fval;
float complex z = re + im * _Complex_I;
float complex z_out = csinhf(z);
stack[0].fval = crealf(z_out);
stack[1].fval = cimagf(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__ctanh(SPVM_ENV* env, SPVM_VALUE* stack) {
double re = stack[0].dval;
double im = stack[1].dval;
double complex z = re + im * _Complex_I;
// In some mac OS, ctanh can't right value, so I calcurate from definition
double complex z_out = csinh(z) / ccosh(z);
stack[0].dval = creal(z_out);
stack[1].dval = cimag(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__ctanhf(SPVM_ENV* env, SPVM_VALUE* stack) {
float re = stack[0].fval;
float im = stack[1].fval;
float complex z = re + im * _Complex_I;
// In some mac OS, ctanh can't right value, so I calcurate from definition
float complex z_out = csinhf(z) / ccoshf(z);
stack[0].fval = crealf(z_out);
stack[1].fval = cimagf(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__cexp(SPVM_ENV* env, SPVM_VALUE* stack) {
double re = stack[0].dval;
double im = stack[1].dval;
double complex z = re + im * _Complex_I;
double complex z_out = cexp(z);
stack[0].dval = creal(z_out);
stack[1].dval = cimag(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__cexpf(SPVM_ENV* env, SPVM_VALUE* stack) {
float re = stack[0].fval;
float im = stack[1].fval;
float complex z = re + im * _Complex_I;
float complex z_out = cexpf(z);
stack[0].fval = crealf(z_out);
stack[1].fval = cimagf(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__clog(SPVM_ENV* env, SPVM_VALUE* stack) {
double re = stack[0].dval;
double im = stack[1].dval;
double complex z = re + im * _Complex_I;
double complex z_out = clog(z);
stack[0].dval = creal(z_out);
stack[1].dval = cimag(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__clogf(SPVM_ENV* env, SPVM_VALUE* stack) {
float re = stack[0].fval;
float im = stack[1].fval;
float complex z = re + im * _Complex_I;
float complex z_out = clogf(z);
stack[0].fval = crealf(z_out);
stack[1].fval = cimagf(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__cabs(SPVM_ENV* env, SPVM_VALUE* stack) {
double re = stack[0].dval;
double im = stack[1].dval;
double complex z = re + im * _Complex_I;
double z_out = cabs(z);
stack[0].dval = z_out;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__cabsf(SPVM_ENV* env, SPVM_VALUE* stack) {
float re = stack[0].fval;
float im = stack[1].fval;
float complex z = re + im * _Complex_I;
float z_out = cabsf(z);
stack[0].fval = z_out;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__cpow(SPVM_ENV* env, SPVM_VALUE* stack) {
double re = stack[0].dval;
double im = stack[1].dval;
double x_pow = stack[2].dval;
double y_pow = stack[3].dval;
double complex z = re + im * _Complex_I;
double complex z_pow = x_pow + y_pow * _Complex_I;
double complex z_out = cpow(z, z_pow);
stack[0].dval = creal(z_out);
stack[1].dval = cimag(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__cpowf(SPVM_ENV* env, SPVM_VALUE* stack) {
float re = stack[0].fval;
float im = stack[1].fval;
float x_pow = stack[2].fval;
float y_pow = stack[3].fval;
float complex z = re + im * _Complex_I;
float complex z_pow = x_pow + y_pow * _Complex_I;
float complex z_out = cpowf(z, z_pow);
stack[0].fval = crealf(z_out);
stack[1].fval = cimagf(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__csqrt(SPVM_ENV* env, SPVM_VALUE* stack) {
double re = stack[0].dval;
double im = stack[1].dval;
double complex z = re + im * _Complex_I;
double complex z_out = csqrt(z);
stack[0].dval = creal(z_out);
stack[1].dval = cimag(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__csqrtf(SPVM_ENV* env, SPVM_VALUE* stack) {
float re = stack[0].fval;
float im = stack[1].fval;
float complex z = re + im * _Complex_I;
float complex z_out = csqrtf(z);
stack[0].fval = crealf(z_out);
stack[1].fval = cimagf(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__carg(SPVM_ENV* env, SPVM_VALUE* stack) {
double re = stack[0].dval;
double im = stack[1].dval;
double complex z = re + im * _Complex_I;
double z_out = carg(z);
stack[0].dval = creal(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__cargf(SPVM_ENV* env, SPVM_VALUE* stack) {
float re = stack[0].fval;
float im = stack[1].fval;
float complex z = re + im * _Complex_I;
float z_out = cargf(z);
stack[0].fval = z_out;
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__conj(SPVM_ENV* env, SPVM_VALUE* stack) {
double re = stack[0].dval;
double im = stack[1].dval;
double complex z = re + im * _Complex_I;
double complex z_out = conj(z);
stack[0].dval = creal(z_out);
stack[1].dval = cimag(z_out);
return SPVM_SUCCESS;
}
int32_t SPNATIVE__SPVM__Math__conjf(SPVM_ENV* env, SPVM_VALUE* stack) {
float re = stack[0].fval;
float im = stack[1].fval;
float complex z = re + im * _Complex_I;
float complex z_out = conjf(z);
stack[0].fval = crealf(z_out);
stack[1].fval = cimagf(z_out);
return SPVM_SUCCESS;
}