1 
2 // automatically generated by m4 from headers in proto subdir
3 
4 
5 #ifndef __MATH_H__
6 #define __MATH_H__
7 
8 // THE SELECTED FLOATING POINT PACKAGE MAY NOT SUPPORT ALL LISTED FUNCTIONS
9 
10 #ifndef _FLOAT_T_DEFINED
11 #define _FLOAT_T_DEFINED
12 
13    #ifdef __CLANG
14    typedef float float_t;
15    #endif
16 
17    #ifdef __SDCC
18    typedef float float_t;
19    #endif
20 
21    #ifdef __SCCZ80
22    typedef double float_t;
23    #endif
24 
25 #endif
26 
27 #ifndef _DOUBLE_T_DEFINED
28 #define _DOUBLE_T_DEFINED
29 
30    #ifdef __CLANG
31    typedef float double_t;
32    #endif
33 
34    #ifdef __SDCC
35    typedef float double_t;
36    #endif
37 
38    #ifdef __SCCZ80
39    typedef double double_t;
40    #endif
41 
42 #endif
43 
44 #ifndef _FLOAT16_T_DEFINED
45 #define _FLOAT16_T_DEFINED
46 
47    #ifndef __SCCZ80
48    typedef short _Float16;      /* IEEE-754 half float type */
49    #endif
50 
51 typedef _Float16 half_t;
52 
53 #endif
54 
55 // XSI EXTENSION
56 // temporary : math lib should supply these via func call
57 
58 #define M_E                    2.718281828459
59 #define M_INVLN2               1.442695040889   /* 1 / log(2) */
60 #define M_LOG2E                1.442695040889
61 #define M_IVLN10               0.434294481903  /* 1 / log(10) */
62 #define M_LOG10E               0.434294481903
63 #define M_LOG2_E               0.693147180560
64 #define M_LN2                  0.693147180560
65 #define M_LN10                 2.302585092994
66 #define M_PI                   3.141592653590
67 #define M_TWOPI                6.283185307180
68 #define M_PI_2                 1.570796326795
69 #define M_PI_4                 0.7853981633974
70 #define M_3PI_4                2.3561944901923
71 #define M_SQRTPI               1.7724538509055
72 #define M_1_PI                 0.3183098861838
73 #define M_2_PI                 0.6366197723676
74 #define M_4_PI                 1.2732395447352
75 #define M_1_SQRTPI             0.5641895835478
76 #define M_2_SQRTPI             1.1283791670955
77 #define M_SQRT2                1.4142135623731
78 #define M_SQRT3                1.7320508075689
79 #define M_SQRT1_2              0.7071067811865
80 
81 //
82 
83 #define FLT_EVAL_METHOD        1
84 #define MATH_ERRNO             1
85 #define MATH_ERREXCEPT         2
86 #define math_errhandling       1
87 
88 #ifdef __CLANG
89 
90 #define HUGE_VAL               (1.7014117331E+38)
91 #define HUGE_VALF              (1.7014117331E+38)
92 #define INFINITY               (1.7014117331E+38)
93 
94 #endif
95 
96 #ifdef __SDCC
97 
98 #define HUGE_VAL               (1.7014117331E+38)
99 #define HUGE_VALF              (1.7014117331E+38)
100 #define INFINITY               (1.7014117331E+38)
101 
102 #endif
103 
104 #ifdef __SCCZ80
105 
106 #define HUGE_VAL               (1.7014118346E+38)
107 #define HUGE_VALF              (1.7014118346E+38)
108 #define INFINITY               (1.7014118346E+38)
109 
110 #endif
111 
112 #ifdef __MATH_AM9511
113 
114 #define HUGE_POS_F32            (+9.2e+18)
115 #define TINY_POS_F32            (+2.7e-20)
116 #define HUGE_NEG_F32            (-9.2e+18)
117 #define TINY_NEG_F32            (-2.7e-20)
118 
119 #define MAXL2_F32               (+63.0)
120 #define MINL2_F32               (-64.0)
121 #define MAXLOG_F32              (+43.6657)
122 #define MINLOG_F32              (−45.0)
123 #define MAXL10_F32              (+18.9638)
124 #define MINL10_F32              (−19.5686)
125 
126 #define HUGE_VAL_F32           (0x7F800000)
127 #define INFINITY_POS_F32       (0x7F800000)
128 #define INFINITY_NEG_F32       (0xFF800000)
129 
130 #endif
131 
132 #ifdef __MATH_MATH32
133 
134 #define HUGE_POS_F32           (+3.4028234664E+38)
135 #define TINY_POS_F32           (+1.1754943508E38)
136 #define HUGE_NEG_F32           (-1.7014118346E+38)
137 #define TINY_NEG_F32           (-1.1754943508E-38)
138 
139 #define MAXL2_F32              (+127.999999914)
140 #define MINL2_F32              (-126.0)
141 #define MAXLOG_F32             (+88.722839052)
142 #define MINLOG_F32             (−87.336544751)
143 #define MAXL10_F32             (+38.230809449)
144 #define MINL10_F32             (−37.929779454)
145 
146 #define HUGE_VAL_F32           (0x7F800000)
147 #define INFINITY_POS_F32       (0x7F800000)
148 #define INFINITY_NEG_F32       (0xFF800000)
149 
150 #endif
151 
152 #ifdef __MATH_MATH16
153 
154 #define HUGE_POS_F16            (+6.5504E+4)        /* 0x7BFF */
155 #define TINY_POS_F16            (+6.10352E-5)       /* 0x0400 */
156 #define HUGE_NEG_F16            (-6.5504E+4)        /* 0xFBFF */
157 #define TINY_NEG_F16            (-6.10352E-5)       /* 0x8400 */
158 
159 #define MAXL2_F16               (+15.999)           /* 0x4BFF */
160 #define MINL2_F16               (-14.00)            /* 0xCB00 */
161 #define MAXLOG_F16              (+11.086)           /* 0x498B */
162 #define MINLOG_F16              (-9.700)            /* 0xC8DA */
163 #define MAXL10_F16              (+4.816)            /* 0x44D1 */
164 #define MINL10_F16              (-4.215)            /* 0xC437 */
165 
166 #define HUGE_VAL_F16            (0x7C00)
167 #define INFINITY_POS_F16        (0x7C00)
168 #define INFINITY_NEG_F16        (0xFC00)
169 
170 #endif
171 
172 extern double_t acos(double_t x);
173 
174 
175 extern double_t asin(double_t x);
176 
177 
178 extern double_t atan(double_t x);
179 
180 
181 extern double_t atan2(double_t y,double_t x);
182 
183 
184 
185 extern double_t cos(double_t x);
186 
187 
188 extern double_t sin(double_t x);
189 
190 
191 extern double_t tan(double_t x);
192 
193 
194 
195 extern double_t acosh(double_t x);
196 
197 
198 extern double_t asinh(double_t x);
199 
200 
201 extern double_t atanh(double_t x);
202 
203 
204 
205 extern double_t cosh(double_t x);
206 
207 
208 extern double_t sinh(double_t x);
209 
210 
211 extern double_t tanh(double_t x);
212 
213 
214 
215 extern double_t exp(double_t x);
216 
217 
218 extern double_t exp2(double_t x);
219 
220 
221 extern double_t expm1(double_t x);
222 
223 
224 extern double_t frexp(double_t value,int *exp);
225 
226 
227 extern int ilogb(double_t x);
228 
229 
230 extern double_t ldexp(double_t x,int exp);
231 
232 
233 extern double_t scalbn(double_t x,int n);
234 
235 
236 extern double_t scalbln(double_t x,int n);
237 
238 
239 
240 extern double_t log(double_t x);
241 
242 
243 extern double_t log10(double_t x);
244 
245 
246 extern double_t log1p(double_t x);
247 
248 
249 extern double_t log2(double_t x);
250 
251 
252 extern double_t logb(double_t x);
253 
254 
255 
256 extern double_t fabs(double_t x);
257 
258 
259 extern double_t hypot(double_t x,double_t y);
260 
261 
262 
263 extern double_t pow(double_t x,double_t y);
264 
265 
266 extern double_t sqrt(double_t x);
267 
268 
269 extern double_t cbrt(double_t x);
270 
271 
272 
273 extern double_t erf(double_t x);
274 
275 
276 extern double_t erfc(double_t x);
277 
278 
279 extern double_t lgamma(double_t x);
280 
281 
282 extern double_t tgamma(double_t x);
283 
284 
285 
286 extern double_t ceil(double_t x);
287 
288 
289 extern double_t floor(double_t x);
290 
291 
292 extern double_t nearbyint(double_t x);
293 
294 
295 extern double_t rint(double_t x);
296 
297 
298 extern long lrint(double_t x);
299 
300 
301 extern double_t round(double_t x);
302 
303 
304 extern long lround(double_t x);
305 
306 
307 extern double_t trunc(double_t x);
308 
309 
310 
311 extern double_t modf(double_t value,double_t *iptr);
312 
313 
314 extern double_t fmod(double_t x,double_t y);
315 
316 
317 extern double_t remainder(double_t x,double_t y);
318 
319 
320 extern double_t remquo(double_t x,double_t y,int *quo);
321 
322 
323 
324 extern double_t copysign(double_t x,double_t y);
325 
326 
327 extern double_t nan(const char *tagp);
328 
329 
330 
331 extern double_t nextafter(double_t x,double_t y);
332 
333 
334 extern double_t nexttoward(double_t x,double_t y);
335 
336 
337 
338 extern double_t fdim(double_t x,double_t y);
339 
340 
341 
342 extern double_t fmax(double_t x,double_t y);
343 
344 
345 extern double_t fmin(double_t x,double_t y);
346 
347 
348 
349 extern double_t fma(double_t x,double_t y,double_t z);
350 
351 
352 
353 extern int isgreater(double_t x,double_t y);
354 
355 
356 extern int isgreaterequal(double_t x,double_t y);
357 
358 
359 extern int isless(double_t x,double_t y);
360 
361 
362 extern int islessequal(double_t x,double_t y);
363 
364 
365 extern int islessgreater(double_t x,double_t y);
366 
367 
368 extern int isunordered(double_t x,double_t y);
369 
370 
371 
372 #ifdef __MATH_MATH32
373 
374 extern double_t sqr(double_t x);
375 
376 
377 extern double_t inv(double_t x);
378 
379 
380 extern double_t invsqrt(double_t x);
381 
382 
383 extern double_t div2(double_t x);
384 
385 
386 extern double_t mul2(double_t x);
387 
388 
389 extern double_t mul10u(double_t x);
390 
391 
392 extern double_t exp10(double_t x);
393 
394 
395 extern double_t poly(const float x,const float d[],unsigned int n);
396 
397 
398 
399 #endif
400 
401 #ifdef __MATH_AM9511
402 
403 extern double_t f32_fam9511(double_t x);
404 
405 
406 extern double_t fam9511_f32(double_t x);
407 
408 
409 extern double_t sqr(double_t x);
410 
411 
412 extern double_t div2(double_t x);
413 
414 
415 extern double_t mul2(double_t x);
416 
417 
418 extern double_t mul10u(double_t x);
419 
420 
421 extern double_t exp10(double_t x);
422 
423 
424 
425 #endif
426 
427 #ifdef __MATH_MATH16
428 
429 extern half_t f16_f48(double_t x);
430 
431 
432 extern double_t f48_f16(half_t x);
433 
434 
435 
436 extern half_t f16_f32(float_t x);
437 
438 
439 extern float_t f32_f16(half_t x);
440 
441 
442 
443 extern int16_t i16_f16(half_t x);
444 
445 
446 extern uint16_t u16_f16(half_t x);
447 
448 
449 extern int32_t i32_f16(half_t x);
450 
451 
452 extern uint32_t u32_f16(half_t x);
453 
454 
455 
456 extern half_t f16_i8(int8_t x);
457 
458 
459 extern half_t f16_i16(int16_t x);
460 
461 
462 extern half_t f16_i32(int32_t x);
463 
464 
465 extern half_t f16_u8(uint8_t x);
466 
467 
468 extern half_t f16_u16(uint16_t x);
469 
470 
471 extern half_t f16_u32(uint32_t x);
472 
473 
474 
475 extern half_t addf16(half_t x,half_t y);
476 
477 
478 extern half_t subf16(half_t x,half_t y);
479 
480 
481 extern half_t mulf16(half_t x,half_t y);
482 
483 
484 extern half_t divf16(half_t x,half_t y);
485 
486 
487 
488 extern half_t fmaf16(half_t x,half_t y,half_t z);
489 
490 
491 extern half_t polyf16(half_t x,float_t d[],uint16_t n);
492 
493 
494 extern half_t hypotf16(half_t x,half_t y);
495 
496 
497 
498 extern half_t invf16(half_t x);
499 
500 
501 extern half_t invsqrtf16(half_t x);
502 
503 
504 
505 extern half_t sqrtf16(half_t x);
506 
507 
508 
509 extern half_t div2f16(half_t x);
510 
511 
512 extern half_t mul2f16(half_t x);
513 
514 
515 extern half_t mul10f16(half_t x);
516 
517 
518 extern half_t frexpf16(half_t x,int8_t *pw2);
519 
520 
521 extern half_t ldexpf16(half_t x,int16_t pw2);
522 
523 
524 
525 extern half_t acosf16(half_t x);
526 
527 
528 extern half_t asinf16(half_t x);
529 
530 
531 extern half_t atanf16(half_t x);
532 
533 
534 
535 extern half_t cosf16(half_t x);
536 
537 
538 extern half_t sinf16(half_t x);
539 
540 
541 extern half_t tanf16(half_t x);
542 
543 
544 
545 extern half_t expf16(half_t x);
546 
547 
548 extern half_t exp2f16(half_t x);
549 
550 
551 extern half_t exp10f16(half_t x);
552 
553 
554 extern half_t logf16(half_t x);
555 
556 
557 extern half_t log2f16(half_t x);
558 
559 
560 extern half_t log10f16(half_t x);
561 
562 
563 extern half_t powf16(half_t x,half_t y);
564 
565 
566 
567 extern half_t fabsf16(half_t x);
568 
569 
570 extern half_t negf16(half_t x);
571 
572 
573 extern half_t ceilf16(half_t x);
574 
575 
576 extern half_t floorf16(half_t x);
577 
578 
579 
580 extern int isgreaterf16(half_t x,half_t y);
581 
582 
583 extern int isgreaterequalf16(half_t x,half_t y);
584 
585 
586 extern int islessf16(half_t x,half_t y);
587 
588 
589 extern int islessequalf16(half_t x,half_t y);
590 
591 
592 extern int islessgreaterf16(half_t x,half_t y);
593 
594 
595 extern int isnotequalf16(half_t x,half_t y);
596 
597 
598 extern int isunorderedf16(half_t x,half_t y);
599 
600 
601 
602 #define scalbnf16(x,pw2) ldexpf16(x,pw2)
603 
604 #define truncf16(a) (a>0.?floorf16(a):ceilf16(a))
605 #define roundf16(a) (a>0.?floorf16(a+0.5):ceilf16(a-0.5))
606 #define rintf16(a) ceilf16(a)
607 
608 #endif
609 
610 // NO DISTINCTION BETWEEN FLOAT AND DOUBLE
611 
612 #define acosf        acos
613 #define asinf        asin
614 #define atanf        atan
615 #define atan2f       atan2
616 
617 #define cosf         cos
618 #define sinf         sin
619 #define tanf         tan
620 
621 #define acoshf       acosh
622 #define asinhf       asinh
623 #define atanhf       atanh
624 
625 #define coshf        cosh
626 #define sinhf        sinh
627 #define tanhf        tanh
628 
629 #define expf         exp
630 #define exp2f        exp2
631 #define exp10f       exp10
632 #define expm1f       expm1
633 #define frexpf       frexp
634 #define ilogbf       ilogb
635 #define ldexpf       ldexp
636 
637 #define logf         log
638 #define log2f        log2
639 #define log10f       log10
640 #define log1pf       log1p
641 #define logbf        logb
642 
643 #define scalbnf      scalbn
644 #define scalblnf     scalbln
645 
646 #define fabsf        fabs
647 #define hypotf       hypot
648 
649 #define powf         pow
650 #define sqrtf        sqrt
651 #define cbrtf        cbrt
652 
653 #define erff         erf
654 #define erfcf        erfc
655 #define lgammaf      lgamma
656 #define tgammaf      tgamma
657 
658 #define ceilf        ceil
659 #define floorf       floor
660 #define nearbyintf   nearbyint
661 #define rintf        rint
662 #define lrintf       lrint
663 #define llrintf      llrint
664 #define roundf       round
665 #define lroundf      lround
666 #define llroundf     llround
667 #define truncf       trunc
668 
669 #define modff        modf
670 #define fmodf        fmod
671 #define remainderf   remainder
672 #define remquof      remquo
673 
674 #define copysignf    copysign
675 #define nanf         nan
676 
677 #define nextafterf   nextafter
678 #define nexttowardf  nexttoward
679 
680 #define fdimf        fdim
681 
682 #define fmaxf        fmax
683 #define fminf        fmin
684 
685 #define fmaf         fma
686 
687 #ifdef __MATH_MATH32
688 
689 #define sqrf         sqr
690 #define invf         inv
691 #define invsqrtf     insqrt
692 #define div2f        div2
693 #define mul2f        mul2
694 #define mul10uf      mul10u
695 #define exp10f       exp10
696 #define polyf        poly
697 
698 #endif
699 
700 #ifdef __MATH_AM9511
701 
702 #define sqrf         sqr
703 #define div2f        div2
704 #define mul2f        mul2
705 #define mul10uf      mul10u
706 #define exp10f       exp10
707 
708 #endif
709 
710 #endif
711