7 #ifdef RUDIMENTS_NAMESPACE
11 RUDIMENTS_INLINE int32_t math::absoluteValue(int32_t j) {
15 RUDIMENTS_INLINE div_t math::divide(int32_t numer, int32_t denom) {
16 return div(numer,denom);
19 RUDIMENTS_INLINE
long math::absoluteValue(
long j) {
23 RUDIMENTS_INLINE ldiv_t math::divide(
long numer,
long denom) {
24 return ldiv(numer,denom);
27 RUDIMENTS_INLINE int64_t math::absoluteValue(int64_t j) {
31 RUDIMENTS_INLINE lldiv_t math::divide(int64_t numer, int64_t denom) {
32 return lldiv(numer,denom);
40 RUDIMENTS_INLINE
bool math::isFinite(
float x) {
44 RUDIMENTS_INLINE
bool math::isNormal(
float x) {
48 RUDIMENTS_INLINE
bool math::isSubNormal(
float x) {
49 return (fpclassify(x)==FP_SUBNORMAL);
52 RUDIMENTS_INLINE
bool math::isNaN(
float x) {
56 RUDIMENTS_INLINE
bool math::isInfinite(
float x) {
60 RUDIMENTS_INLINE
bool math::isGreater(
float x,
float y) {
61 return isgreater(x,y);
64 RUDIMENTS_INLINE
bool math::isGreaterOrEqual(
float x,
float y) {
65 return isgreaterequal(x,y);
68 RUDIMENTS_INLINE
bool math::isLess(
float x,
float y) {
72 RUDIMENTS_INLINE
bool math::isLessOrEqual(
float x,
float y) {
73 return islessequal(x,y);
76 RUDIMENTS_INLINE
bool math::isLessOrGreater(
float x,
float y) {
77 return islessgreater(x,y);
80 RUDIMENTS_INLINE
bool math::areNaN(
float x,
float y) {
81 return isunordered(x,y);
84 RUDIMENTS_INLINE
bool math::isSignBitSet(
float x) {
88 RUDIMENTS_INLINE
float math::arcCosine(
float x) {
92 RUDIMENTS_INLINE
float math::arcSine(
float x) {
96 RUDIMENTS_INLINE
float math::arcTangent(
float x) {
100 RUDIMENTS_INLINE
float math::arcTangent(
float y,
float x) {
104 RUDIMENTS_INLINE
float math::cosine(
float x) {
108 RUDIMENTS_INLINE
float math::sine(
float x) {
112 RUDIMENTS_INLINE
float math::tangent(
float x) {
116 RUDIMENTS_INLINE
float math::hyperbolicArcCosine(
float x) {
120 RUDIMENTS_INLINE
float math::hyperbolicArcSine(
float x) {
124 RUDIMENTS_INLINE
float math::hyperbolicArcTangent(
float x) {
128 RUDIMENTS_INLINE
float math::hyperbolicCosine(
float x) {
132 RUDIMENTS_INLINE
float math::hyperbolicSine(
float x) {
136 RUDIMENTS_INLINE
float math::hyperbolicTangent(
float x) {
140 RUDIMENTS_INLINE
float math::naturalExponent(
float x) {
144 RUDIMENTS_INLINE
float math::normalize(
float x, int32_t *exp) {
145 return frexpf(x,exp);
148 RUDIMENTS_INLINE
float math::naturalLog(
float x) {
152 RUDIMENTS_INLINE
float math::logBase10(
float x) {
156 RUDIMENTS_INLINE
float math::naturalExponentMinusOne(
float x) {
160 RUDIMENTS_INLINE
float math::naturalLogPlusOne(
float x) {
164 RUDIMENTS_INLINE
float math::exponent(
float x) {
168 RUDIMENTS_INLINE
float math::exponentBase2(
float x) {
172 RUDIMENTS_INLINE
float math::logBase2(
float x) {
176 RUDIMENTS_INLINE
float math::power(
float x,
float y) {
180 RUDIMENTS_INLINE
float math::squareRoot(
float x) {
184 RUDIMENTS_INLINE
float math::hypotenuse(
float x,
float y) {
188 RUDIMENTS_INLINE
float math::cubeRoot(
float x) {
192 RUDIMENTS_INLINE
float math::ceiling(
float x) {
196 RUDIMENTS_INLINE
float math::absoluteValue(
float x) {
200 RUDIMENTS_INLINE
float math::floor(
float x) {
204 RUDIMENTS_INLINE
float math::remainder(
float x,
float y) {
208 RUDIMENTS_INLINE
float math::nearbyInteger(
float x) {
209 return nearbyintf(x);
212 RUDIMENTS_INLINE
float math::round(
float x) {
216 RUDIMENTS_INLINE
float math::truncate(
float x) {
220 RUDIMENTS_INLINE
float math::remainder(
float x,
float y, int32_t *quo) {
221 return remquof(x,y,quo);
224 RUDIMENTS_INLINE
long math::roundToLong(
float x) {
228 RUDIMENTS_INLINE int64_t math::roundToLongLong(
float x) {
232 RUDIMENTS_INLINE
long math::roundAwayFromZeroToLong(
float x) {
236 RUDIMENTS_INLINE int64_t math::roundAwayFromZeroToLongLong(
float x) {
240 RUDIMENTS_INLINE
float math::copySignBit(
float x,
float y) {
241 return copysignf(x,y);
244 RUDIMENTS_INLINE
float math::errorFunction(
float x) {
248 RUDIMENTS_INLINE
float math::complementaryErrorFunction(
float x) {
252 RUDIMENTS_INLINE
float math::trueGamma(
float x) {
256 RUDIMENTS_INLINE
float math::naturalLogGamma(
float x) {
260 RUDIMENTS_INLINE
float math::roundInexact(
float x) {
264 RUDIMENTS_INLINE
float math::nextAfter(
float x,
float y) {
265 return nextafterf(x,y);
268 RUDIMENTS_INLINE
float math::nextToward(
float x,
float y) {
269 return nexttowardf(x,y);
272 RUDIMENTS_INLINE
float math::scaleByRadixToPower(
float x,
float n) {
276 RUDIMENTS_INLINE
float math::scaleByRadixToPower(
float x, int32_t n) {
280 RUDIMENTS_INLINE
float math::scaleByRadixToPower(
float x,
long n) {
281 return scalblnf(x,n);
284 RUDIMENTS_INLINE int32_t math::integralExponent(
float x) {
288 RUDIMENTS_INLINE
float math::positiveDifference(
float x,
float y) {
292 RUDIMENTS_INLINE
float math::larger(
float x,
float y) {
296 RUDIMENTS_INLINE
float math::smaller(
float x,
float y) {
300 RUDIMENTS_INLINE
float math::multiplyAndAdd(
float x,
float y,
float z) {
304 RUDIMENTS_INLINE
float math::argument(
float complex z) {
308 RUDIMENTS_INLINE
float complex math::conjugate(
float complex z) {
312 RUDIMENTS_INLINE
float complex math::project(
float complex z) {
316 RUDIMENTS_INLINE
float math::imaginary(
float complex z) {
320 RUDIMENTS_INLINE
float math::real(
float complex z) {
328 RUDIMENTS_INLINE
bool math::isFinite(
double x) {
332 RUDIMENTS_INLINE
bool math::isNormal(
double x) {
336 RUDIMENTS_INLINE
bool math::isSubNormal(
double x) {
337 return (fpclassify(x)==FP_SUBNORMAL);
340 RUDIMENTS_INLINE
bool math::isNaN(
double x) {
344 RUDIMENTS_INLINE
bool math::isInfinite(
double x) {
348 RUDIMENTS_INLINE
bool math::isGreater(
double x,
double y) {
349 return isgreater(x,y);
352 RUDIMENTS_INLINE
bool math::isGreaterOrEqual(
double x,
double y) {
353 return isgreaterequal(x,y);
356 RUDIMENTS_INLINE
bool math::isLess(
double x,
double y) {
360 RUDIMENTS_INLINE
bool math::isLessOrEqual(
double x,
double y) {
361 return islessequal(x,y);
364 RUDIMENTS_INLINE
bool math::isLessOrGreater(
double x,
double y) {
365 return islessgreater(x,y);
368 RUDIMENTS_INLINE
bool math::areNaN(
double x,
double y) {
369 return isunordered(x,y);
372 RUDIMENTS_INLINE
bool math::isSignBitSet(
double x) {
376 RUDIMENTS_INLINE
double math::arcCosine(
double x) {
380 RUDIMENTS_INLINE
double math::arcSine(
double x) {
384 RUDIMENTS_INLINE
double math::arcTangent(
double x) {
388 RUDIMENTS_INLINE
double math::arcTangent(
double y,
double x) {
392 RUDIMENTS_INLINE
double math::cosine(
double x) {
396 RUDIMENTS_INLINE
double math::sine(
double x) {
400 RUDIMENTS_INLINE
double math::tangent(
double x) {
404 RUDIMENTS_INLINE
double math::hyperbolicArcCosine(
double x) {
408 RUDIMENTS_INLINE
double math::hyperbolicArcSine(
double x) {
412 RUDIMENTS_INLINE
double math::hyperbolicArcTangent(
double x) {
416 RUDIMENTS_INLINE
double math::hyperbolicCosine(
double x) {
420 RUDIMENTS_INLINE
double math::hyperbolicSine(
double x) {
424 RUDIMENTS_INLINE
double math::hyperbolicTangent(
double x) {
428 RUDIMENTS_INLINE
double math::naturalExponent(
double x) {
432 RUDIMENTS_INLINE
double math::normalize(
double x, int32_t *exp) {
436 RUDIMENTS_INLINE
double math::naturalLog(
double x) {
440 RUDIMENTS_INLINE
double math::logBase10(
double x) {
444 RUDIMENTS_INLINE
double math::naturalExponentMinusOne(
double x) {
448 RUDIMENTS_INLINE
double math::naturalLogPlusOne(
double x) {
452 RUDIMENTS_INLINE
double math::exponent(
double x) {
456 RUDIMENTS_INLINE
double math::exponentBase2(
double x) {
460 RUDIMENTS_INLINE
double math::logBase2(
double x) {
464 RUDIMENTS_INLINE
double math::power(
double x,
double y) {
468 RUDIMENTS_INLINE
double math::squareRoot(
double x) {
472 RUDIMENTS_INLINE
double math::hypotenuse(
double x,
double y) {
476 RUDIMENTS_INLINE
double math::cubeRoot(
double x) {
480 RUDIMENTS_INLINE
double math::ceiling(
double x) {
484 RUDIMENTS_INLINE
double math::absoluteValue(
double x) {
488 RUDIMENTS_INLINE
double math::floor(
double x) {
492 RUDIMENTS_INLINE
double math::remainder(
double x,
double y) {
496 RUDIMENTS_INLINE
double math::nearbyInteger(
double x) {
500 RUDIMENTS_INLINE
double math::round(
double x) {
504 RUDIMENTS_INLINE
double math::truncate(
double x) {
508 RUDIMENTS_INLINE
double math::remainder(
double x,
double y, int32_t *quo) {
509 return remquo(x,y,quo);
512 RUDIMENTS_INLINE
long math::roundToLong(
double x) {
516 RUDIMENTS_INLINE int64_t math::roundToLongLong(
double x) {
520 RUDIMENTS_INLINE
long math::roundAwayFromZeroToLong(
double x) {
524 RUDIMENTS_INLINE int64_t math::roundAwayFromZeroToLongLong(
double x) {
528 RUDIMENTS_INLINE
double math::copySignBit(
double x,
double y) {
529 return copysign(x,y);
532 RUDIMENTS_INLINE
double math::errorFunction(
double x) {
536 RUDIMENTS_INLINE
double math::complementaryErrorFunction(
double x) {
540 RUDIMENTS_INLINE
double math::trueGamma(
double x) {
544 RUDIMENTS_INLINE
double math::naturalLogGamma(
double x) {
548 RUDIMENTS_INLINE
double math::roundInexact(
double x) {
552 RUDIMENTS_INLINE
double math::nextAfter(
double x,
double y) {
553 return nextafter(x,y);
556 RUDIMENTS_INLINE
double math::nextToward(
double x,
double y) {
557 return nexttoward(x,y);
560 RUDIMENTS_INLINE
double math::scaleByRadixToPower(
double x,
double n) {
564 RUDIMENTS_INLINE
double math::scaleByRadixToPower(
double x, int32_t n) {
568 RUDIMENTS_INLINE
double math::scaleByRadixToPower(
double x,
long n) {
572 RUDIMENTS_INLINE int32_t math::integralExponent(
double x) {
576 RUDIMENTS_INLINE
double math::positiveDifference(
double x,
double y) {
580 RUDIMENTS_INLINE
double math::larger(
double x,
double y) {
584 RUDIMENTS_INLINE
double math::smaller(
double x,
double y) {
588 RUDIMENTS_INLINE
double math::multiplyAndAdd(
double x,
double y,
double z) {
592 RUDIMENTS_INLINE
double math::argument(
double complex z) {
596 RUDIMENTS_INLINE
double complex math::conjugate(
double complex z) {
600 RUDIMENTS_INLINE
double complex math::project(
double complex z) {
604 RUDIMENTS_INLINE
double math::imaginary(
double complex z) {
608 RUDIMENTS_INLINE
double math::real(
double complex z) {
615 RUDIMENTS_INLINE
bool math::isFinite(
long double x) {
619 RUDIMENTS_INLINE
bool math::isNormal(
long double x) {
623 RUDIMENTS_INLINE
bool math::isSubNormal(
long double x) {
624 return (fpclassify(x)==FP_SUBNORMAL);
627 RUDIMENTS_INLINE
bool math::isNaN(
long double x) {
631 RUDIMENTS_INLINE
bool math::isInfinite(
long double x) {
635 RUDIMENTS_INLINE
bool math::isGreater(
long double x,
long double y) {
636 return isgreater(x,y);
639 RUDIMENTS_INLINE
bool math::isGreaterOrEqual(
long double x,
long double y) {
640 return isgreaterequal(x,y);
643 RUDIMENTS_INLINE
bool math::isLess(
long double x,
long double y) {
647 RUDIMENTS_INLINE
bool math::isLessOrEqual(
long double x,
long double y) {
648 return islessequal(x,y);
651 RUDIMENTS_INLINE
bool math::isLessOrGreater(
long double x,
long double y) {
652 return islessgreater(x,y);
655 RUDIMENTS_INLINE
bool math::areNaN(
long double x,
long double y) {
656 return isunordered(x,y);
659 RUDIMENTS_INLINE
bool math::isSignBitSet(
long double x) {
663 RUDIMENTS_INLINE
long double math::arcCosine(
long double x) {
667 RUDIMENTS_INLINE
long double math::arcSine(
long double x) {
671 RUDIMENTS_INLINE
long double math::arcTangent(
long double x) {
675 RUDIMENTS_INLINE
long double math::arcTangent(
long double y,
long double x) {
679 RUDIMENTS_INLINE
long double math::cosine(
long double x) {
683 RUDIMENTS_INLINE
long double math::sine(
long double x) {
687 RUDIMENTS_INLINE
long double math::tangent(
long double x) {
691 RUDIMENTS_INLINE
long double math::hyperbolicArcCosine(
long double x) {
695 RUDIMENTS_INLINE
long double math::hyperbolicArcSine(
long double x) {
699 RUDIMENTS_INLINE
long double math::hyperbolicArcTangent(
long double x) {
703 RUDIMENTS_INLINE
long double math::hyperbolicCosine(
long double x) {
707 RUDIMENTS_INLINE
long double math::hyperbolicSine(
long double x) {
711 RUDIMENTS_INLINE
long double math::hyperbolicTangent(
long double x) {
715 RUDIMENTS_INLINE
long double math::naturalExponent(
long double x) {
719 RUDIMENTS_INLINE
long double math::normalize(
long double x, int32_t *exp) {
720 return frexpl(x,exp);
723 RUDIMENTS_INLINE
long double math::naturalLog(
long double x) {
727 RUDIMENTS_INLINE
long double math::logBase10(
long double x) {
731 RUDIMENTS_INLINE
long double math::naturalExponentMinusOne(
long double x) {
735 RUDIMENTS_INLINE
long double math::naturalLogPlusOne(
long double x) {
739 RUDIMENTS_INLINE
long double math::exponent(
long double x) {
743 RUDIMENTS_INLINE
long double math::exponentBase2(
long double x) {
747 RUDIMENTS_INLINE
long double math::logBase2(
long double x) {
751 RUDIMENTS_INLINE
long double math::power(
long double x,
long double y) {
755 RUDIMENTS_INLINE
long double math::squareRoot(
long double x) {
759 RUDIMENTS_INLINE
long double math::hypotenuse(
long double x,
long double y) {
763 RUDIMENTS_INLINE
long double math::cubeRoot(
long double x) {
767 RUDIMENTS_INLINE
long double math::ceiling(
long double x) {
771 RUDIMENTS_INLINE
long double math::absoluteValue(
long double x) {
775 RUDIMENTS_INLINE
long double math::floor(
long double x) {
779 RUDIMENTS_INLINE
long double math::remainder(
long double x,
long double y) {
783 RUDIMENTS_INLINE
long double math::nearbyInteger(
long double x) {
784 return nearbyintl(x);
787 RUDIMENTS_INLINE
long double math::round(
long double x) {
791 RUDIMENTS_INLINE
long double math::truncate(
long double x) {
795 RUDIMENTS_INLINE
long double math::remainder(
long double x,
796 long double y, int32_t *quo) {
797 return remquol(x,y,quo);
800 RUDIMENTS_INLINE
long math::roundToLong(
long double x) {
804 RUDIMENTS_INLINE int64_t math::roundToLongLong(
long double x) {
808 RUDIMENTS_INLINE
long math::roundAwayFromZeroToLong(
long double x) {
812 RUDIMENTS_INLINE int64_t math::roundAwayFromZeroToLongLong(
long double x) {
816 RUDIMENTS_INLINE
long double math::copySignBit(
long double x,
long double y) {
817 return copysignl(x,y);
820 RUDIMENTS_INLINE
long double math::errorFunction(
long double x) {
824 RUDIMENTS_INLINE
long double math::complementaryErrorFunction(
long double x) {
828 RUDIMENTS_INLINE
long double math::trueGamma(
long double x) {
832 RUDIMENTS_INLINE
long double math::naturalLogGamma(
long double x) {
836 RUDIMENTS_INLINE
long double math::roundInexact(
long double x) {
840 RUDIMENTS_INLINE
long double math::nextAfter(
long double x,
long double y) {
841 return nextafterl(x,y);
844 RUDIMENTS_INLINE
long double math::nextToward(
long double x,
long double y) {
845 return nexttowardl(x,y);
848 RUDIMENTS_INLINE
long double math::scaleByRadixToPower(
long double x,
853 RUDIMENTS_INLINE
long double math::scaleByRadixToPower(
long double x,
858 RUDIMENTS_INLINE
long double math::scaleByRadixToPower(
long double x,
long n) {
859 return scalblnl(x,n);
862 RUDIMENTS_INLINE int32_t math::integralExponent(
long double x) {
866 RUDIMENTS_INLINE
long double math::positiveDifference(
long double x,
871 RUDIMENTS_INLINE
long double math::larger(
long double x,
long double y) {
875 RUDIMENTS_INLINE
long double math::smaller(
long double x,
long double y) {
879 RUDIMENTS_INLINE
long double math::multiplyAndAdd(
long double x,
880 long double y,
long double z) {
884 RUDIMENTS_INLINE
long double math::argument(
long double complex z) {
888 RUDIMENTS_INLINE
long double complex math::conjugate(
long double complex z) {
892 RUDIMENTS_INLINE
long double complex math::project(
long double complex z) {
896 RUDIMENTS_INLINE
long double math::imaginary(
long double complex z) {
900 RUDIMENTS_INLINE
long double math::real(
long double complex z) {
904 RUDIMENTS_INLINE
float math::loadExponent(
float x, int32_t exp) {
905 return ldexpf(x,exp);
908 RUDIMENTS_INLINE
double math::loadExponent(
double x, int32_t exp) {
912 RUDIMENTS_INLINE
long double math::loadExponent(
long double x, int32_t exp) {
913 return ldexpl(x,exp);
916 #ifdef RUDIMENTS_NAMESPACE