Merge: private DFAState
[nit.git] / c_src / math.sep.1.c
1 #include "math.sep.0.h"
2 /* method math#Int#rand for (self: Int): Int */
3 long math__Int__rand(long self) {
4 long var /* : Int */;
5 long var1 /* : Int */;
6 var1 = kernel_Int_Int_rand_0(self);
7 var = var1;
8 goto RET_LABEL;
9 RET_LABEL:;
10 return var;
11 }
12 /* method math#Int#rand for (self: Object): Int */
13 long VIRTUAL_math__Int__rand(val* self) {
14 long var /* : Int */;
15 long var1 /* : Int */;
16 long var2 /* : Int */;
17 var2 = ((struct instance_kernel__Int*)self)->value; /* autounbox from Object to Int */;
18 var1 = math__Int__rand(var2);
19 var = var1;
20 RET_LABEL:;
21 return var;
22 }
23 /* method math#Int#bin_and for (self: Int, Int): Int */
24 long math__Int__bin_and(long self, long p0) {
25 long var /* : Int */;
26 long var1 /* : Int */;
27 var1 = kernel_Int_Int_binand_0(self, p0);
28 var = var1;
29 goto RET_LABEL;
30 RET_LABEL:;
31 return var;
32 }
33 /* method math#Int#bin_and for (self: Object, Int): Int */
34 long VIRTUAL_math__Int__bin_and(val* self, long p0) {
35 long var /* : Int */;
36 long var1 /* : Int */;
37 long var2 /* : Int */;
38 var2 = ((struct instance_kernel__Int*)self)->value; /* autounbox from Object to Int */;
39 var1 = math__Int__bin_and(var2, p0);
40 var = var1;
41 RET_LABEL:;
42 return var;
43 }
44 /* method math#Int#bin_or for (self: Int, Int): Int */
45 long math__Int__bin_or(long self, long p0) {
46 long var /* : Int */;
47 long var1 /* : Int */;
48 var1 = kernel_Int_Int_binor_0(self, p0);
49 var = var1;
50 goto RET_LABEL;
51 RET_LABEL:;
52 return var;
53 }
54 /* method math#Int#bin_or for (self: Object, Int): Int */
55 long VIRTUAL_math__Int__bin_or(val* self, long p0) {
56 long var /* : Int */;
57 long var1 /* : Int */;
58 long var2 /* : Int */;
59 var2 = ((struct instance_kernel__Int*)self)->value; /* autounbox from Object to Int */;
60 var1 = math__Int__bin_or(var2, p0);
61 var = var1;
62 RET_LABEL:;
63 return var;
64 }
65 /* method math#Int#bin_xor for (self: Int, Int): Int */
66 long math__Int__bin_xor(long self, long p0) {
67 long var /* : Int */;
68 long var1 /* : Int */;
69 var1 = kernel_Int_Int_binxor_0(self, p0);
70 var = var1;
71 goto RET_LABEL;
72 RET_LABEL:;
73 return var;
74 }
75 /* method math#Int#bin_xor for (self: Object, Int): Int */
76 long VIRTUAL_math__Int__bin_xor(val* self, long p0) {
77 long var /* : Int */;
78 long var1 /* : Int */;
79 long var2 /* : Int */;
80 var2 = ((struct instance_kernel__Int*)self)->value; /* autounbox from Object to Int */;
81 var1 = math__Int__bin_xor(var2, p0);
82 var = var1;
83 RET_LABEL:;
84 return var;
85 }
86 /* method math#Int#sqrt for (self: Int): Int */
87 long math__Int__sqrt(long self) {
88 long var /* : Int */;
89 long var1 /* : Int */;
90 var1 = math___Int_sqrt___impl(self);
91 var = var1;
92 goto RET_LABEL;
93 RET_LABEL:;
94 return var;
95 }
96 /* method math#Int#sqrt for (self: Object): Int */
97 long VIRTUAL_math__Int__sqrt(val* self) {
98 long var /* : Int */;
99 long var1 /* : Int */;
100 long var2 /* : Int */;
101 var2 = ((struct instance_kernel__Int*)self)->value; /* autounbox from Object to Int */;
102 var1 = math__Int__sqrt(var2);
103 var = var1;
104 RET_LABEL:;
105 return var;
106 }
107 /* method math#Float#sqrt for (self: Float): Float */
108 double math__Float__sqrt(double self) {
109 double var /* : Float */;
110 double var1 /* : Float */;
111 var1 = kernel_Float_Float_sqrt_0(self);
112 var = var1;
113 goto RET_LABEL;
114 RET_LABEL:;
115 return var;
116 }
117 /* method math#Float#sqrt for (self: Object): Float */
118 double VIRTUAL_math__Float__sqrt(val* self) {
119 double var /* : Float */;
120 double var1 /* : Float */;
121 double var2 /* : Float */;
122 var2 = ((struct instance_kernel__Float*)self)->value; /* autounbox from Object to Float */;
123 var1 = math__Float__sqrt(var2);
124 var = var1;
125 RET_LABEL:;
126 return var;
127 }
128 /* method math#Float#cos for (self: Float): Float */
129 double math__Float__cos(double self) {
130 double var /* : Float */;
131 double var1 /* : Float */;
132 var1 = kernel_Float_Float_cos_0(self);
133 var = var1;
134 goto RET_LABEL;
135 RET_LABEL:;
136 return var;
137 }
138 /* method math#Float#cos for (self: Object): Float */
139 double VIRTUAL_math__Float__cos(val* self) {
140 double var /* : Float */;
141 double var1 /* : Float */;
142 double var2 /* : Float */;
143 var2 = ((struct instance_kernel__Float*)self)->value; /* autounbox from Object to Float */;
144 var1 = math__Float__cos(var2);
145 var = var1;
146 RET_LABEL:;
147 return var;
148 }
149 /* method math#Float#sin for (self: Float): Float */
150 double math__Float__sin(double self) {
151 double var /* : Float */;
152 double var1 /* : Float */;
153 var1 = kernel_Float_Float_sin_0(self);
154 var = var1;
155 goto RET_LABEL;
156 RET_LABEL:;
157 return var;
158 }
159 /* method math#Float#sin for (self: Object): Float */
160 double VIRTUAL_math__Float__sin(val* self) {
161 double var /* : Float */;
162 double var1 /* : Float */;
163 double var2 /* : Float */;
164 var2 = ((struct instance_kernel__Float*)self)->value; /* autounbox from Object to Float */;
165 var1 = math__Float__sin(var2);
166 var = var1;
167 RET_LABEL:;
168 return var;
169 }
170 /* method math#Float#tan for (self: Float): Float */
171 double math__Float__tan(double self) {
172 double var /* : Float */;
173 double var1 /* : Float */;
174 var1 = kernel_Float_Float_tan_0(self);
175 var = var1;
176 goto RET_LABEL;
177 RET_LABEL:;
178 return var;
179 }
180 /* method math#Float#tan for (self: Object): Float */
181 double VIRTUAL_math__Float__tan(val* self) {
182 double var /* : Float */;
183 double var1 /* : Float */;
184 double var2 /* : Float */;
185 var2 = ((struct instance_kernel__Float*)self)->value; /* autounbox from Object to Float */;
186 var1 = math__Float__tan(var2);
187 var = var1;
188 RET_LABEL:;
189 return var;
190 }
191 /* method math#Float#acos for (self: Float): Float */
192 double math__Float__acos(double self) {
193 double var /* : Float */;
194 double var1 /* : Float */;
195 var1 = kernel_Float_Float_acos_0(self);
196 var = var1;
197 goto RET_LABEL;
198 RET_LABEL:;
199 return var;
200 }
201 /* method math#Float#acos for (self: Object): Float */
202 double VIRTUAL_math__Float__acos(val* self) {
203 double var /* : Float */;
204 double var1 /* : Float */;
205 double var2 /* : Float */;
206 var2 = ((struct instance_kernel__Float*)self)->value; /* autounbox from Object to Float */;
207 var1 = math__Float__acos(var2);
208 var = var1;
209 RET_LABEL:;
210 return var;
211 }
212 /* method math#Float#asin for (self: Float): Float */
213 double math__Float__asin(double self) {
214 double var /* : Float */;
215 double var1 /* : Float */;
216 var1 = kernel_Float_Float_asin_0(self);
217 var = var1;
218 goto RET_LABEL;
219 RET_LABEL:;
220 return var;
221 }
222 /* method math#Float#asin for (self: Object): Float */
223 double VIRTUAL_math__Float__asin(val* self) {
224 double var /* : Float */;
225 double var1 /* : Float */;
226 double var2 /* : Float */;
227 var2 = ((struct instance_kernel__Float*)self)->value; /* autounbox from Object to Float */;
228 var1 = math__Float__asin(var2);
229 var = var1;
230 RET_LABEL:;
231 return var;
232 }
233 /* method math#Float#atan for (self: Float): Float */
234 double math__Float__atan(double self) {
235 double var /* : Float */;
236 double var1 /* : Float */;
237 var1 = kernel_Float_Float_atan_0(self);
238 var = var1;
239 goto RET_LABEL;
240 RET_LABEL:;
241 return var;
242 }
243 /* method math#Float#atan for (self: Object): Float */
244 double VIRTUAL_math__Float__atan(val* self) {
245 double var /* : Float */;
246 double var1 /* : Float */;
247 double var2 /* : Float */;
248 var2 = ((struct instance_kernel__Float*)self)->value; /* autounbox from Object to Float */;
249 var1 = math__Float__atan(var2);
250 var = var1;
251 RET_LABEL:;
252 return var;
253 }
254 /* method math#Float#abs for (self: Float): Float */
255 double math__Float__abs(double self) {
256 double var /* : Float */;
257 double var1 /* : Float */;
258 var1 = math___Float_abs___impl(self);
259 var = var1;
260 goto RET_LABEL;
261 RET_LABEL:;
262 return var;
263 }
264 /* method math#Float#abs for (self: Object): Float */
265 double VIRTUAL_math__Float__abs(val* self) {
266 double var /* : Float */;
267 double var1 /* : Float */;
268 double var2 /* : Float */;
269 var2 = ((struct instance_kernel__Float*)self)->value; /* autounbox from Object to Float */;
270 var1 = math__Float__abs(var2);
271 var = var1;
272 RET_LABEL:;
273 return var;
274 }
275 /* method math#Float#pow for (self: Float, Float): Float */
276 double math__Float__pow(double self, double p0) {
277 double var /* : Float */;
278 double var1 /* : Float */;
279 var1 = kernel_Float_Float_pow_1(self, p0);
280 var = var1;
281 goto RET_LABEL;
282 RET_LABEL:;
283 return var;
284 }
285 /* method math#Float#pow for (self: Object, Float): Float */
286 double VIRTUAL_math__Float__pow(val* self, double p0) {
287 double var /* : Float */;
288 double var1 /* : Float */;
289 double var2 /* : Float */;
290 var2 = ((struct instance_kernel__Float*)self)->value; /* autounbox from Object to Float */;
291 var1 = math__Float__pow(var2, p0);
292 var = var1;
293 RET_LABEL:;
294 return var;
295 }
296 /* method math#Float#log for (self: Float): Float */
297 double math__Float__log(double self) {
298 double var /* : Float */;
299 double var1 /* : Float */;
300 var1 = kernel_Float_Float_log_0(self);
301 var = var1;
302 goto RET_LABEL;
303 RET_LABEL:;
304 return var;
305 }
306 /* method math#Float#log for (self: Object): Float */
307 double VIRTUAL_math__Float__log(val* self) {
308 double var /* : Float */;
309 double var1 /* : Float */;
310 double var2 /* : Float */;
311 var2 = ((struct instance_kernel__Float*)self)->value; /* autounbox from Object to Float */;
312 var1 = math__Float__log(var2);
313 var = var1;
314 RET_LABEL:;
315 return var;
316 }
317 /* method math#Float#exp for (self: Float): Float */
318 double math__Float__exp(double self) {
319 double var /* : Float */;
320 double var1 /* : Float */;
321 var1 = kernel_Float_Float_exp_0(self);
322 var = var1;
323 goto RET_LABEL;
324 RET_LABEL:;
325 return var;
326 }
327 /* method math#Float#exp for (self: Object): Float */
328 double VIRTUAL_math__Float__exp(val* self) {
329 double var /* : Float */;
330 double var1 /* : Float */;
331 double var2 /* : Float */;
332 var2 = ((struct instance_kernel__Float*)self)->value; /* autounbox from Object to Float */;
333 var1 = math__Float__exp(var2);
334 var = var1;
335 RET_LABEL:;
336 return var;
337 }
338 /* method math#Float#rand for (self: Float): Float */
339 double math__Float__rand(double self) {
340 double var /* : Float */;
341 double var1 /* : Float */;
342 var1 = kernel_Float_Float_rand_0(self);
343 var = var1;
344 goto RET_LABEL;
345 RET_LABEL:;
346 return var;
347 }
348 /* method math#Float#rand for (self: Object): Float */
349 double VIRTUAL_math__Float__rand(val* self) {
350 double var /* : Float */;
351 double var1 /* : Float */;
352 double var2 /* : Float */;
353 var2 = ((struct instance_kernel__Float*)self)->value; /* autounbox from Object to Float */;
354 var1 = math__Float__rand(var2);
355 var = var1;
356 RET_LABEL:;
357 return var;
358 }
359 /* method math#Float#hypot_with for (self: Float, Float): Float */
360 double math__Float__hypot_with(double self, double p0) {
361 double var /* : Float */;
362 double var1 /* : Float */;
363 var1 = hypotf(self, p0);
364 var = var1;
365 goto RET_LABEL;
366 RET_LABEL:;
367 return var;
368 }
369 /* method math#Float#hypot_with for (self: Object, Float): Float */
370 double VIRTUAL_math__Float__hypot_with(val* self, double p0) {
371 double var /* : Float */;
372 double var1 /* : Float */;
373 double var2 /* : Float */;
374 var2 = ((struct instance_kernel__Float*)self)->value; /* autounbox from Object to Float */;
375 var1 = math__Float__hypot_with(var2, p0);
376 var = var1;
377 RET_LABEL:;
378 return var;
379 }
380 /* method math#Float#is_nan for (self: Float): Bool */
381 short int math__Float__is_nan(double self) {
382 short int var /* : Bool */;
383 short int var1 /* : Bool */;
384 var1 = isnan(self);
385 var = var1;
386 goto RET_LABEL;
387 RET_LABEL:;
388 return var;
389 }
390 /* method math#Float#is_nan for (self: Object): Bool */
391 short int VIRTUAL_math__Float__is_nan(val* self) {
392 short int var /* : Bool */;
393 short int var1 /* : Bool */;
394 double var2 /* : Float */;
395 var2 = ((struct instance_kernel__Float*)self)->value; /* autounbox from Object to Float */;
396 var1 = math__Float__is_nan(var2);
397 var = var1;
398 RET_LABEL:;
399 return var;
400 }
401 /* method math#Float#is_inf for (self: Float): Int */
402 long math__Float__is_inf(double self) {
403 long var /* : Int */;
404 short int var1 /* : Bool */;
405 double var2 /* : Float */;
406 short int var3 /* : Bool */;
407 short int var5 /* : Bool */;
408 int cltype;
409 int idtype;
410 const char* var_class_name;
411 short int var6 /* : Bool */;
412 long var7 /* : Int */;
413 long var8 /* : Int */;
414 long var10 /* : Int */;
415 long var11 /* : Int */;
416 long var12 /* : Int */;
417 var1 = math__Float__is_inf_extern(self);
418 if (var1){
419 var2 = 0.0;
420 { /* Inline kernel#Float#< (self,var2) */
421 /* Covariant cast for argument 0 (i) <var2:Float> isa OTHER */
422 /* <var2:Float> isa OTHER */
423 var5 = 1; /* easy <var2:Float> isa OTHER*/
424 if (!var5) {
425 var_class_name = type_kernel__Float.name;
426 fprintf(stderr, "Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
427 fprintf(stderr, " (%s:%d)\n", "lib/standard/kernel.nit", 233);
428 show_backtrace(1);
429 }
430 var6 = self < var2;
431 var3 = var6;
432 goto RET_LABEL4;
433 RET_LABEL4:(void)0;
434 }
435 if (var3){
436 var7 = 1;
437 { /* Inline kernel#Int#unary - (var7) */
438 var10 = -var7;
439 var8 = var10;
440 goto RET_LABEL9;
441 RET_LABEL9:(void)0;
442 }
443 var = var8;
444 goto RET_LABEL;
445 } else {
446 }
447 var11 = 1;
448 var = var11;
449 goto RET_LABEL;
450 } else {
451 }
452 var12 = 0;
453 var = var12;
454 goto RET_LABEL;
455 RET_LABEL:;
456 return var;
457 }
458 /* method math#Float#is_inf for (self: Object): Int */
459 long VIRTUAL_math__Float__is_inf(val* self) {
460 long var /* : Int */;
461 long var1 /* : Int */;
462 double var2 /* : Float */;
463 var2 = ((struct instance_kernel__Float*)self)->value; /* autounbox from Object to Float */;
464 var1 = math__Float__is_inf(var2);
465 var = var1;
466 RET_LABEL:;
467 return var;
468 }
469 /* method math#Float#is_inf_extern for (self: Float): Bool */
470 short int math__Float__is_inf_extern(double self) {
471 short int var /* : Bool */;
472 short int var1 /* : Bool */;
473 var1 = isinf(self);
474 var = var1;
475 goto RET_LABEL;
476 RET_LABEL:;
477 return var;
478 }
479 /* method math#Float#is_inf_extern for (self: Object): Bool */
480 short int VIRTUAL_math__Float__is_inf_extern(val* self) {
481 short int var /* : Bool */;
482 short int var1 /* : Bool */;
483 double var2 /* : Float */;
484 var2 = ((struct instance_kernel__Float*)self)->value; /* autounbox from Object to Float */;
485 var1 = math__Float__is_inf_extern(var2);
486 var = var1;
487 RET_LABEL:;
488 return var;
489 }
490 /* method math#Collection#rand for (self: Collection[nullable Object]): nullable Object */
491 val* math__Collection__rand(val* self) {
492 val* var /* : nullable Object */;
493 short int var1 /* : Bool */;
494 long var2 /* : Int */;
495 long var3 /* : Int */;
496 long var_rand_index /* var rand_index: Int */;
497 val* var4 /* : Iterator[nullable Object] */;
498 short int var5 /* : Bool */;
499 val* var6 /* : nullable Object */;
500 val* var_e /* var e: nullable Object */;
501 long var7 /* : Int */;
502 short int var8 /* : Bool */;
503 short int var10 /* : Bool */;
504 long var11 /* : Int */;
505 long var12 /* : Int */;
506 long var14 /* : Int */;
507 var1 = ((short int (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__is_empty]))(self) /* is_empty on <self:Collection[nullable Object]>*/;
508 if (var1){
509 fprintf(stderr, "Runtime error: %s", "Aborted");
510 fprintf(stderr, " (%s:%d)\n", "lib/standard/math.nit", 74);
511 show_backtrace(1);
512 } else {
513 }
514 var2 = ((long (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__length]))(self) /* length on <self:Collection[nullable Object]>*/;
515 var3 = math__Int__rand(var2);
516 var_rand_index = var3;
517 var4 = ((val* (*)(val*))(self->class->vft[COLOR_abstract_collection__Collection__iterator]))(self) /* iterator on <self:Collection[nullable Object]>*/;
518 for(;;) {
519 var5 = ((short int (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var4) /* is_ok on <var4:Iterator[nullable Object]>*/;
520 if(!var5) break;
521 var6 = ((val* (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__item]))(var4) /* item on <var4:Iterator[nullable Object]>*/;
522 var_e = var6;
523 var7 = 0;
524 { /* Inline kernel#Int#== (var_rand_index,var7) */
525 var10 = var_rand_index == var7;
526 var8 = var10;
527 goto RET_LABEL9;
528 RET_LABEL9:(void)0;
529 }
530 if (var8){
531 var = var_e;
532 goto RET_LABEL;
533 } else {
534 }
535 var11 = 1;
536 { /* Inline kernel#Int#- (var_rand_index,var11) */
537 var14 = var_rand_index - var11;
538 var12 = var14;
539 goto RET_LABEL13;
540 RET_LABEL13:(void)0;
541 }
542 var_rand_index = var12;
543 CONTINUE_label: (void)0;
544 ((void (*)(val*))(var4->class->vft[COLOR_abstract_collection__Iterator__next]))(var4) /* next on <var4:Iterator[nullable Object]>*/;
545 }
546 BREAK_label: (void)0;
547 fprintf(stderr, "Runtime error: %s", "Aborted");
548 fprintf(stderr, " (%s:%d)\n", "lib/standard/math.nit", 81);
549 show_backtrace(1);
550 RET_LABEL:;
551 return var;
552 }
553 /* method math#Collection#rand for (self: Object): nullable Object */
554 val* VIRTUAL_math__Collection__rand(val* self) {
555 val* var /* : nullable Object */;
556 val* var1 /* : nullable Object */;
557 var1 = math__Collection__rand(self);
558 var = var1;
559 RET_LABEL:;
560 return var;
561 }
562 /* method math#Object#atan2 for (self: Object, Float, Float): Float */
563 double math__Object__atan2(val* self, double p0, double p1) {
564 double var /* : Float */;
565 double var1 /* : Float */;
566 var1 = kernel_Any_Any_atan2_2(self, p0, p1);
567 var = var1;
568 goto RET_LABEL;
569 RET_LABEL:;
570 return var;
571 }
572 /* method math#Object#atan2 for (self: Object, Float, Float): Float */
573 double VIRTUAL_math__Object__atan2(val* self, double p0, double p1) {
574 double var /* : Float */;
575 double var1 /* : Float */;
576 var1 = math__Object__atan2(self, p0, p1);
577 var = var1;
578 RET_LABEL:;
579 return var;
580 }
581 /* method math#Object#pi for (self: Object): Float */
582 double math__Object__pi(val* self) {
583 double var /* : Float */;
584 double var1 /* : Float */;
585 var1 = kernel_Any_Any_pi_0(self);
586 var = var1;
587 goto RET_LABEL;
588 RET_LABEL:;
589 return var;
590 }
591 /* method math#Object#pi for (self: Object): Float */
592 double VIRTUAL_math__Object__pi(val* self) {
593 double var /* : Float */;
594 double var1 /* : Float */;
595 var1 = math__Object__pi(self);
596 var = var1;
597 RET_LABEL:;
598 return var;
599 }
600 /* method math#Object#srand_from for (self: Object, Int) */
601 void math__Object__srand_from(val* self, long p0) {
602 kernel_Any_Any_srand_from_1(self, p0);
603 RET_LABEL:;
604 }
605 /* method math#Object#srand_from for (self: Object, Int) */
606 void VIRTUAL_math__Object__srand_from(val* self, long p0) {
607 math__Object__srand_from(self, p0);
608 RET_LABEL:;
609 }
610 /* method math#Object#srand for (self: Object) */
611 void math__Object__srand(val* self) {
612 kernel_Any_Any_srand_0(self);
613 RET_LABEL:;
614 }
615 /* method math#Object#srand for (self: Object) */
616 void VIRTUAL_math__Object__srand(val* self) {
617 math__Object__srand(self);
618 RET_LABEL:;
619 }