Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:24:33

0001 /*
0002  * Copyright (c) 2010, 2011 by
0003  * Ralf Corsepius, Ulm/Germany. All rights reserved.
0004  *
0005  * Permission to use, copy, modify, and distribute this software
0006  * is freely granted, provided that this notice is preserved.
0007  */
0008 
0009 #include <math.h>
0010 #include <stdio.h>
0011 
0012 #ifndef M_PI_2
0013 #define M_PI_2 1.57079632679489661923
0014 #endif
0015 
0016 #ifndef M_PI_4
0017 #define M_PI_4 0.78539816339744830962
0018 #endif
0019 
0020 #define CONCAT(x, y) x ## y
0021 #define XCONCAT(x, y) CONCAT(x, y)
0022 
0023 #define STRINGIFY(x, y) # x # y
0024 #define XSTRINGIFY(x, y) STRINGIFY(x, y)
0025 
0026 #ifdef SUFFIX
0027   #define FUNC(name) XCONCAT(name, SUFFIX)
0028   #define STR(name) XSTRINGIFY(name, SUFFIX)
0029 #else
0030   #define FUNC(name) XCONCAT(name, )
0031   #define STR(name) XSTRINGIFY(name, ) " "
0032 #endif
0033 
0034 extern void FUNC(domath) (void);
0035 
0036 volatile int ia;
0037 
0038 volatile FTYPE fa;
0039 
0040 volatile FTYPE fb;
0041 
0042 volatile FTYPE fc;
0043 
0044 void
0045 FUNC(domath) (void)
0046 {
0047 #ifndef PROVIDE_EMPTY_FUNC
0048   FTYPE f1;
0049   FTYPE f2;
0050 
0051   int i1;
0052 
0053   fa = 0.0;
0054   f1 = FUNC(acos) (fa);
0055   printf( STR(acos) "          : " PRI "\n", f1);
0056 
0057   fa = 0.0;
0058   f1 = FUNC(acosh) (fa);
0059   printf( STR(acosh) "         : " PRI "\n", f1);
0060 
0061   fa = 1.0;
0062   f1 = FUNC(asin) (fa);
0063   printf( STR(asin) "          : " PRI "\n", f1);
0064 
0065   fa = 1.0;
0066   f1 = FUNC(asinh) (fa);
0067   printf( STR(asinh) "         : " PRI "\n", f1);
0068 
0069   fa = M_PI_4;
0070   f1 = FUNC(atan) (fa);
0071   printf( STR(atan) "          : " PRI "\n", f1);
0072 
0073   fa = 2.3;
0074   fb = 2.3;
0075   f1 = FUNC(atan2) (fa, fb);
0076   printf( STR(atan2) "         : " PRI "\n", f1);
0077 
0078   fa = 1.0;
0079   f1 = FUNC(atanh) (fa);
0080   printf( STR(atanh) "         : " PRI "\n", f1);
0081 
0082   fa = 27.0;
0083   f1 = FUNC(cbrt) (fa);
0084   printf( STR(cbrt) "          : " PRI "\n", f1);
0085 
0086   fa = 3.5;
0087   f1 = FUNC(ceil) (fa);
0088   printf( STR(ceil) "          : " PRI "\n", f1);
0089 
0090   fa = 3.5;
0091   fb = -2.5;
0092   f1 = FUNC(copysign) (fa, fb);
0093   printf( STR(copysign) "      : " PRI "\n", f1);
0094 
0095   fa = M_PI_2;
0096   f1 = FUNC(cos) (fa);
0097   printf( STR(cos) "           : " PRI "\n", f1);
0098 
0099   fa = M_PI_2;
0100   f1 = FUNC(cosh) (fa);
0101   printf( STR(cosh) "          : " PRI "\n", f1);
0102 
0103   fa = 42.0;
0104   f1 = FUNC(erf) (fa);
0105   printf( STR(erf) "           : " PRI "\n", f1);
0106 
0107   fa = 42.0;
0108   f1 = FUNC(erfc) (fa);
0109   printf( STR(erfc) "          : " PRI "\n", f1);
0110 
0111   fa = 0.42;
0112   f1 = FUNC(exp) (fa);
0113   printf( STR(exp) "           : " PRI "\n", f1);
0114 
0115   fa = 0.42;
0116   f1 = FUNC(exp2) (fa);
0117   printf( STR(exp2) "          : " PRI "\n", f1);
0118 
0119   fa = 0.00042;
0120   f1 = FUNC(expm1) (fa);
0121   printf( STR(expm1) "         : " PRI "\n", f1);
0122 
0123   fa = -1.123;
0124   f1 = FUNC(fabs) (fa);
0125   printf( STR(fabs) "          : " PRI "\n", f1);
0126 
0127   fa = 1.123;
0128   fb = 1.123;
0129   f1 = FUNC(fdim) (fa, fb);
0130   printf( STR(fdim) "          : " PRI "\n", f1);
0131 
0132   fa = 0.5;
0133   f1 = FUNC(floor) (fa);
0134   printf( STR(floor) "         : " PRI "\n", f1);
0135   fa = -0.5;
0136   f1 = FUNC(floor) (fa);
0137   printf( STR(floor) "         : " PRI "\n", f1);
0138 
0139   fa = 2.1;
0140   fb = 2.2;
0141   fc = 3.01;
0142   f1 = FUNC(fma) (fa, fb, fc);
0143   printf( STR(fma) "           : " PRI "\n", f1);
0144 
0145   fa = -0.42;
0146   fb = 0.42;
0147   f1 = FUNC(fmax) (fa, fb);
0148   printf( STR(fmax) "          : " PRI "\n", f1);
0149 
0150   fa = -0.42;
0151   fb = 0.42;
0152   f1 = FUNC(fmin) (fa, fb);
0153   printf( STR(fmin) "          : " PRI "\n", f1);
0154 
0155   fa = 42.0;
0156   fb = 3.0;
0157   f1 = FUNC(fmod) (fa, fb);
0158   printf( STR(fmod) "          : " PRI "\n", f1);
0159 
0160   /* no type-specific variant */
0161   fa = 1.0;
0162   i1 = fpclassify(fa);
0163   printf( "fpclassify     : %d\n", i1);
0164 
0165   fa = 42.0;
0166   f1 = FUNC(frexp) (fa, &i1);
0167   printf( STR(frexp) "         : " PRI "\n", f1);
0168 
0169   fa = 42.0;
0170   fb = 42.0;
0171   f1 = FUNC(hypot) (fa, fb);
0172   printf( STR(hypot) "         : " PRI "\n", f1);
0173 
0174   fa = 42.0;
0175   i1 = FUNC(ilogb) (fa);
0176   printf( STR(ilogb) "         : %d\n", i1);
0177 
0178   /* no type-specific variant */
0179   fa = 3.0;
0180   i1 = isfinite(fa);
0181   printf( "isfinite       : %d\n", i1);
0182 
0183   /* no type-specific variant */
0184   fa = 3.0;
0185   fb = 3.1;
0186   i1 = isgreater(fa, fb);
0187   printf( "isgreater      : %d\n", i1);
0188 
0189   /* no type-specific variant */
0190   fa = 3.0;
0191   fb = 3.1;
0192   i1 = isgreaterequal(fa, fb);
0193   printf( "isgreaterequal : %d\n", i1);
0194 
0195   /* no type-specific variant */
0196   fa = 3.0;
0197   i1 = isinf(fa);
0198   printf( "isinf          : %d\n", i1);
0199 
0200   /* no type-specific variant */
0201   fa = 3.0;
0202   fb = 3.1;
0203   i1 = isless(fa, fb);
0204   printf( "isless         : %d\n", i1);
0205 
0206   /* no type-specific variant */
0207   fa = 3.0;
0208   fb = 3.1;
0209   i1 = islessequal(fa, fb);
0210   printf( "islessequal    : %d\n", i1);
0211 
0212   /* no type-specific variant */
0213   fa = 3.0;
0214   fb = 3.1;
0215   i1 = islessgreater(fa, fb);
0216   printf( "islessgreater  : %d\n", i1);
0217 
0218   /* no type-specific variant */
0219   fa = 0.0;
0220   i1 = isnan(fa);
0221   printf( "isnan          : %d\n", i1);
0222 
0223   /* no type-specific variant */
0224   fa = 3.0;
0225   i1 = isnormal(fa);
0226   printf( "isnormal       : %d\n", i1);
0227 
0228   /* no type-specific variant */
0229   fa = 1.0;
0230   fb = 2.0;
0231   f1 = isunordered(fa, fb);
0232   printf( "isunordered    : %d\n", i1);
0233 
0234   fa = 1.2;
0235   f1 = FUNC(j0) (fa);
0236   printf( STR(j0) "            : " PRI "\n", f1);
0237 
0238   fa = 1.2;
0239   f1 = FUNC(j1) (fa);
0240   printf( STR(j1) "            : " PRI "\n", f1);
0241 
0242   ia = 2;
0243   fa = 1.2;
0244   f1 = FUNC(jn) (ia, fa);
0245   printf( STR(jn) "            : " PRI "\n", f1);
0246 
0247   fa = 1.2;
0248   ia = 3;
0249   f1 = FUNC(ldexp) (fa, ia);
0250   printf( STR(ldexp) "         : " PRI "\n", f1);
0251 
0252   fa = 42.0;
0253   f1 = FUNC(lgamma) (fa);
0254   printf( STR(lgamma) "        : " PRI "\n", f1);
0255 
0256   fa = -0.5;
0257   f1 = FUNC(llrint) (fa);
0258   printf( STR(llrint) "        : " PRI "\n", f1);
0259   fa = 0.5;
0260   f1 = FUNC(llrint) (fa);
0261   printf( STR(llrint) "        : " PRI "\n", f1);
0262 
0263   fa = -0.5;
0264   f1 = FUNC(llround) (fa);
0265   printf( STR(lround) "        : " PRI "\n", f1);
0266   fa = 0.5;
0267   f1 = FUNC(llround) (fa);
0268   printf( STR(lround) "        : " PRI "\n", f1);
0269 
0270   fa = 42.0;
0271   f1 = FUNC(log) (fa);
0272   printf( STR(log) "           : " PRI "\n", f1);
0273 
0274   fa = 42.0;
0275   f1 = FUNC(log10) (fa);
0276   printf( STR(log10) "         : " PRI "\n", f1);
0277 
0278   fa = 42.0;
0279   f1 = FUNC(log1p) (fa);
0280   printf( STR(log1p) "         : " PRI "\n", f1);
0281 
0282   fa = 42.0;
0283   f1 = FUNC(log2) (fa);
0284   printf( STR(log2) "          : " PRI "\n", f1);
0285 
0286   fa = 42.0;
0287   f1 = FUNC(logb) (fa);
0288   printf( STR(logb) "          : " PRI "\n", f1);
0289 
0290   fa = -0.5;
0291   f1 = FUNC(lrint) (fa);
0292   printf( STR(lrint) "         : " PRI "\n", f1);
0293   fa = 0.5;
0294   f1 = FUNC(lrint) (fa);
0295   printf( STR(lrint) "         : " PRI "\n", f1);
0296 
0297   fa = -0.5;
0298   f1 = FUNC(lround) (fa);
0299   printf( STR(lround) "        : " PRI "\n", f1);
0300   fa = 0.5;
0301   f1 = FUNC(lround) (fa);
0302   printf( STR(lround) "        : " PRI "\n", f1);
0303 
0304   fa = 42.0;
0305   f1 = FUNC(modf) (fa, &f2);
0306   printf( STR(lmodf) "         : " PRI "\n", f1);
0307 
0308   f1 = FUNC(nan) ("");
0309   printf( STR(nan) "           : " PRI "\n", f1);
0310 
0311   fa = 1.5;
0312   f1 = FUNC(nearbyint) (fa);
0313   printf( STR(nearbyint) "     : " PRI "\n", f1);
0314 
0315   fa = 1.5;
0316   fb = 2.0;
0317   f1 = FUNC(nextafter) (fa, fb);
0318   printf( STR(nextafter) "     : " PRI "\n", f1);
0319 
0320   fa = 3.01;
0321   fb = 2.0;
0322   f1 = FUNC(pow) (fa, fb);
0323   printf( STR(pow) "           : " PRI "\n", f1);
0324 
0325   fa = 3.01;
0326   fb = 2.0;
0327   f1 = FUNC(remainder) (fa, fb);
0328   printf( STR(remainder) "     : " PRI "\n", f1);
0329 
0330   fa = 29.0;
0331   fb = 3.0;
0332   f1 = FUNC(remquo) (fa, fb, &i1);
0333   printf( STR(remquo) "        : " PRI "\n", f1);
0334 
0335   fa = 0.5;
0336   f1 = FUNC(rint) (fa);
0337   printf( STR(rint) "          : " PRI "\n", f1);
0338   fa = -0.5;
0339   f1 = FUNC(rint) (fa);
0340   printf( STR(rint) "          : " PRI "\n", f1);
0341 
0342   fa = 0.5;
0343   f1 = FUNC(round) (fa);
0344   printf( STR(round) "         : " PRI "\n", f1);
0345   fa = -0.5;
0346   f1 = FUNC(round) (fa);
0347   printf( STR(round) "         : " PRI "\n", f1);
0348 
0349   fa = 1.2;
0350   ia = 3;
0351   f1 = FUNC(scalbln) (fa, ia);
0352   printf( STR(scalbln) "       : " PRI "\n", f1);
0353 
0354   fa = 1.2;
0355   ia = 3;
0356   f1 = FUNC(scalbn) (fa, ia);
0357   printf( STR(scalbn) "        : " PRI "\n", f1);
0358 
0359   /* no type-specific variant */
0360   fa = 1.0;
0361   i1 = signbit(fa);
0362   printf( "signbit        : %i\n", i1);
0363 
0364   fa = M_PI_4;
0365   f1 = FUNC(sin) (fa);
0366   printf( STR(sin) "           : " PRI "\n", f1);
0367 
0368   fa = M_PI_4;
0369   f1 = FUNC(sinh) (fa);
0370   printf( STR(sinh) "          : " PRI "\n", f1);
0371 
0372   fa = 9.0;
0373   f1 = FUNC(sqrt) (fa);
0374   printf( STR(sqrt) "          : " PRI "\n", f1);
0375 
0376   fa = M_PI_4;
0377   f1 = FUNC(tan) (fa);
0378   printf( STR(tan) "           : " PRI "\n", f1);
0379 
0380   fa = M_PI_4;
0381   f1 = FUNC(tanh) (fa);
0382   printf( STR(tanh) "          : " PRI "\n", f1);
0383 
0384   fa = 2.1;
0385   f1 = FUNC(tgamma) (fa);
0386   printf( STR(tgamma) "        : " PRI "\n", f1);
0387 
0388   fa = 3.5;
0389   f1 = FUNC(trunc) (fa);
0390   printf( STR(trunc) "         : " PRI "\n", f1);
0391 
0392   fa = 1.2;
0393   f1 = FUNC(y0) (fa);
0394   printf( STR(y0) "            : " PRI "\n", f1);
0395 
0396   fa = 1.2;
0397   f1 = FUNC(y1) (fa);
0398   printf( STR(y1) "            : " PRI "\n", f1);
0399 
0400   ia = 3;
0401   fa = 1.2;
0402   f1 = FUNC(yn) (ia, fa);
0403   printf( STR(yn) "            : " PRI "\n", f1);
0404 #endif
0405 }