csources_v2/c_code/5_1/@m..@slib@spure@smath.nim.c
2022-12-16 10:54:01 +08:00

160 lines
3.5 KiB
C

/* Generated by Nim Compiler v1.9.0 */
#define NIM_INTBITS 32
#include "nimbase.h"
#include <math.h>
#undef LANGUAGE_C
#undef MIPSEB
#undef MIPSEL
#undef PPC
#undef R3000
#undef R4000
#undef i386
#undef linux
#undef mips
#undef near
#undef far
#undef powerpc
#undef unix
#define nimfr_(x, y)
#define nimln_(x, y)
typedef NU8 tyEnum_FloatClass__pPga1yW9b8J9cwNnm9b1aPRnA;
static N_INLINE(NF, abs__pureZmath_154)(NF x);
N_LIB_PRIVATE N_NIMCALL(NI, nextPowerOfTwo__pureZmath_184)(NI x) {
NI result;
result = (NI)0;
result = (NI)(x - ((NI)1));
result = (NI)(result | (NI)((NI32)(result) >> (NU32)(((NI)16))));
result = (NI)(result | (NI)((NI32)(result) >> (NU32)(((NI)8))));
result = (NI)(result | (NI)((NI32)(result) >> (NU32)(((NI)4))));
result = (NI)(result | (NI)((NI32)(result) >> (NU32)(((NI)2))));
result = (NI)(result | (NI)((NI32)(result) >> (NU32)(((NI)1))));
result += (NI)(((NI)1) + (x <= ((NI)0)));
return result;
}
static N_INLINE(NF, abs__pureZmath_154)(NF x) {
NF result;
result = (NF)0;
result = fabs(x);
return result;
}
N_LIB_PRIVATE N_NIMCALL(tyEnum_FloatClass__pPga1yW9b8J9cwNnm9b1aPRnA, classify__pureZmath_151)(NF x) {
tyEnum_FloatClass__pPga1yW9b8J9cwNnm9b1aPRnA result;
{ result = (tyEnum_FloatClass__pPga1yW9b8J9cwNnm9b1aPRnA)0;
{
if (!(x == 0.0)) goto LA3_;
{
if (!(((NF)(1.0) / (NF)(x)) == INF)) goto LA7_;
result = ((tyEnum_FloatClass__pPga1yW9b8J9cwNnm9b1aPRnA)2);
goto BeforeRet_;
}
goto LA5_;
LA7_: ;
{
result = ((tyEnum_FloatClass__pPga1yW9b8J9cwNnm9b1aPRnA)3);
goto BeforeRet_;
}
LA5_: ;
}
LA3_: ;
{
if (!(((NF)(x) * (NF)(0.5)) == x)) goto LA12_;
{
if (!(0.0 < x)) goto LA16_;
result = ((tyEnum_FloatClass__pPga1yW9b8J9cwNnm9b1aPRnA)5);
goto BeforeRet_;
}
goto LA14_;
LA16_: ;
{
result = ((tyEnum_FloatClass__pPga1yW9b8J9cwNnm9b1aPRnA)6);
goto BeforeRet_;
}
LA14_: ;
}
LA12_: ;
{
if (!!((x == x))) goto LA21_;
result = ((tyEnum_FloatClass__pPga1yW9b8J9cwNnm9b1aPRnA)4);
goto BeforeRet_;
}
LA21_: ;
{
NF T25_;
T25_ = (NF)0;
T25_ = abs__pureZmath_154(x);
if (!(T25_ < 2.225073858507201e-308)) goto LA26_;
result = ((tyEnum_FloatClass__pPga1yW9b8J9cwNnm9b1aPRnA)1);
goto BeforeRet_;
}
LA26_: ;
result = ((tyEnum_FloatClass__pPga1yW9b8J9cwNnm9b1aPRnA)0);
goto BeforeRet_;
}BeforeRet_: ;
return result;
}
N_LIB_PRIVATE N_NIMCALL(NF, round__vm_13576)(NF x, NI places) {
NF result;
result = (NF)0;
{
if (!(places == ((NI)0))) goto LA3_;
result = round(x);
}
goto LA1_;
LA3_: ;
{
NF mult;
NF T6_;
mult = pow(10.0, ((NF) (places)));
T6_ = (NF)0;
T6_ = round(((NF)(x) * (NF)(mult)));
result = ((NF)(T6_) / (NF)(mult));
}
LA1_: ;
return result;
}
N_LIB_PRIVATE N_NIMCALL(NI64, floorDiv__pureZtimes_284)(NI64 x, NI64 y) {
NI64 result;
NI64 r;
result = (NI64)0;
result = (NI64)(x / y);
r = (NI64)(x % y);
{
NIM_BOOL T3_;
NIM_BOOL T4_;
NIM_BOOL T7_;
T3_ = (NIM_BOOL)0;
T4_ = (NIM_BOOL)0;
T4_ = (IL64(0) < r);
if (!(T4_)) goto LA5_;
T4_ = (y < IL64(0));
LA5_: ;
T3_ = T4_;
if (T3_) goto LA6_;
T7_ = (NIM_BOOL)0;
T7_ = (r < IL64(0));
if (!(T7_)) goto LA8_;
T7_ = (IL64(0) < y);
LA8_: ;
T3_ = T7_;
LA6_: ;
if (!T3_) goto LA9_;
result -= ((NI)1);
}
LA9_: ;
return result;
}
N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, isPowerOfTwo__pureZmath_181)(NI x) {
NIM_BOOL result;
NIM_BOOL T1_;
{ result = (NIM_BOOL)0;
T1_ = (NIM_BOOL)0;
T1_ = (((NI)0) < x);
if (!(T1_)) goto LA2_;
T1_ = ((NI)(x & (NI)(x - ((NI)1))) == ((NI)0));
LA2_: ;
result = T1_;
goto BeforeRet_;
}BeforeRet_: ;
return result;
}