1 /* Generated by Nim Compiler v1.6.2 */
2 #define NIM_INTBITS 64
3 
4 #include "nimbase.h"
5 #include <math.h>
6 #undef LANGUAGE_C
7 #undef MIPSEB
8 #undef MIPSEL
9 #undef PPC
10 #undef R3000
11 #undef R4000
12 #undef i386
13 #undef linux
14 #undef mips
15 #undef near
16 #undef far
17 #undef powerpc
18 #undef unix
19 #define nimfr_(x, y)
20 #define nimln_(x, y)
21 static N_INLINE(NI64, pluspercent___system_712)(NI64 x, NI64 y);
22 static N_INLINE(NI64, starpercent___system_752)(NI64 x, NI64 y);
23 static N_INLINE(NF, toBiggestFloat__system_1705)(NI64 i);
24 static N_INLINE(NF, abs__pureZmath_150)(NF x);
25 static N_INLINE(NI64, minuspercent___system_732)(NI64 x, NI64 y);
N_INLINE(NI64,pluspercent___system_712)26 static N_INLINE(NI64, pluspercent___system_712)(NI64 x, NI64 y) {
27 	NI64 result;
28 	result = (NI64)0;
29 	result = ((NI64) ((NU64)((NU64)(((NU64) (x))) + (NU64)(((NU64) (y))))));
30 	return result;
31 }
N_NIMCALL(NI64,barplusbar___saturate_1)32 N_LIB_PRIVATE N_NIMCALL(NI64, barplusbar___saturate_1)(NI64 a, NI64 b) {
33 	NI64 result;
34 {	result = (NI64)0;
35 	result = pluspercent___system_712(a, b);
36 	{
37 		NIM_BOOL T3_;
38 		T3_ = (NIM_BOOL)0;
39 		T3_ = (IL64(0) <= (NI64)(result ^ a));
40 		if (T3_) goto LA4_;
41 		T3_ = (IL64(0) <= (NI64)(result ^ b));
42 		LA4_: ;
43 		if (!T3_) goto LA5_;
44 		goto BeforeRet_;
45 	}
46 	LA5_: ;
47 	{
48 		NIM_BOOL T9_;
49 		T9_ = (NIM_BOOL)0;
50 		T9_ = (a < IL64(0));
51 		if (T9_) goto LA10_;
52 		T9_ = (b < IL64(0));
53 		LA10_: ;
54 		if (!T9_) goto LA11_;
55 		result = (IL64(-9223372036854775807) - IL64(1));
56 	}
57 	goto LA7_;
58 	LA11_: ;
59 	{
60 		result = IL64(9223372036854775807);
61 	}
62 	LA7_: ;
63 	}BeforeRet_: ;
64 	return result;
65 }
N_INLINE(NI64,starpercent___system_752)66 static N_INLINE(NI64, starpercent___system_752)(NI64 x, NI64 y) {
67 	NI64 result;
68 	result = (NI64)0;
69 	result = ((NI64) ((NU64)((NU64)(((NU64) (x))) * (NU64)(((NU64) (y))))));
70 	return result;
71 }
N_INLINE(NF,toBiggestFloat__system_1705)72 static N_INLINE(NF, toBiggestFloat__system_1705)(NI64 i) {
73 	NF result;
74 	result = (NF)0;
75 	result = ((NF) (i));
76 	return result;
77 }
N_INLINE(NF,abs__pureZmath_150)78 static N_INLINE(NF, abs__pureZmath_150)(NF x) {
79 	NF result;
80 	result = (NF)0;
81 	result = fabs(x);
82 	return result;
83 }
N_NIMCALL(NI64,barstarbar___saturate_52)84 N_LIB_PRIVATE N_NIMCALL(NI64, barstarbar___saturate_52)(NI64 a, NI64 b) {
85 	NI64 result;
86 	NF resAsFloat;
87 	NF floatProd;
88 	NF T1_;
89 {	result = (NI64)0;
90 	resAsFloat = (NF)0;
91 	floatProd = (NF)0;
92 	result = starpercent___system_752(a, b);
93 	floatProd = toBiggestFloat__system_1705(a);
94 	T1_ = (NF)0;
95 	T1_ = toBiggestFloat__system_1705(b);
96 	floatProd = ((NF)(floatProd) * (NF)(T1_));
97 	resAsFloat = toBiggestFloat__system_1705(result);
98 	{
99 		if (!(resAsFloat == floatProd)) goto LA4_;
100 		goto BeforeRet_;
101 	}
102 	LA4_: ;
103 	{
104 		NF T8_;
105 		NF T9_;
106 		T8_ = (NF)0;
107 		T8_ = abs__pureZmath_150(((NF)(resAsFloat) - (NF)(floatProd)));
108 		T9_ = (NF)0;
109 		T9_ = abs__pureZmath_150(floatProd);
110 		if (!(((NF)(32.0) * (NF)(T8_)) <= T9_)) goto LA10_;
111 		goto BeforeRet_;
112 	}
113 	LA10_: ;
114 	{
115 		if (!(0.0 <= floatProd)) goto LA14_;
116 		result = IL64(9223372036854775807);
117 	}
118 	goto LA12_;
119 	LA14_: ;
120 	{
121 		result = (IL64(-9223372036854775807) - IL64(1));
122 	}
123 	LA12_: ;
124 	}BeforeRet_: ;
125 	return result;
126 }
N_INLINE(NI64,minuspercent___system_732)127 static N_INLINE(NI64, minuspercent___system_732)(NI64 x, NI64 y) {
128 	NI64 result;
129 	result = (NI64)0;
130 	result = ((NI64) ((NU64)((NU64)(((NU64) (x))) - (NU64)(((NU64) (y))))));
131 	return result;
132 }
N_NIMCALL(NI64,barminusbar___saturate_13)133 N_LIB_PRIVATE N_NIMCALL(NI64, barminusbar___saturate_13)(NI64 a, NI64 b) {
134 	NI64 result;
135 {	result = (NI64)0;
136 	result = minuspercent___system_732(a, b);
137 	{
138 		NIM_BOOL T3_;
139 		T3_ = (NIM_BOOL)0;
140 		T3_ = (IL64(0) <= (NI64)(result ^ a));
141 		if (T3_) goto LA4_;
142 		T3_ = (IL64(0) <= (NI64)(result ^ (NI64)((NU64) ~(b))));
143 		LA4_: ;
144 		if (!T3_) goto LA5_;
145 		goto BeforeRet_;
146 	}
147 	LA5_: ;
148 	{
149 		if (!(IL64(0) < b)) goto LA9_;
150 		result = (IL64(-9223372036854775807) - IL64(1));
151 	}
152 	goto LA7_;
153 	LA9_: ;
154 	{
155 		result = IL64(9223372036854775807);
156 	}
157 	LA7_: ;
158 	}BeforeRet_: ;
159 	return result;
160 }
161