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