找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 12388|回复: 2
收起左侧

math.h头文件下载

[复制链接]
ID:76127 发表于 2015-4-18 01:29 | 显示全部楼层 |阅读模式
math.h单片机头文件代码最后的复制代码保存到电脑的方式实现下载:一共有2个版本
  1. /* math.h standard header */

  2. /* Copyright 2003-2010 IAR Systems AB. */

  3. #ifndef _MATH

  4. #define _MATH



  5. #ifndef _SYSTEM_BUILD

  6.   #pragma system_include

  7. #endif



  8. #include <ycheck.h>

  9. #include <ymath.h>

  10. #include <xtgmath.h>



  11. _C_STD_BEGIN



  12. #if __AEABI_PORTABILITY_INTERNAL_LEVEL

  13.   #ifndef __AEABI_PORTABLE

  14.     #define __AEABI_PORTABLE

  15.   #endif



  16.   #define HUGE_VAL        _CSTD __aeabi_HUGE_VAL



  17.   #if _DLIB_ADD_C99_SYMBOLS

  18.     #define HUGE_VALF     _CSTD __aeabi_HUGE_VALF

  19.     #define HUGE_VALL     _CSTD __aeabi_HUGE_VALL



  20.     #define INFINITY      _CSTD __aeabi_INFINITY

  21.     #define NAN           _CSTD __aeabi_NAN

  22.   #endif /* _DLIB_ADD_C99_SYMBOLS */

  23. #else /* __AEABI_PORTABILITY_INTERNAL_LEVEL */

  24.   #define HUGE_VAL        (0.Infinity)



  25.   #if _DLIB_ADD_C99_SYMBOLS

  26.     #define HUGE_VALF     ((float) 0.Infinity)

  27.     #define HUGE_VALL     ((long double) 0.Infinity)



  28.     #define INFINITY      ((float) 0.Infinity)

  29.     #define NAN           ((float) 0.NaN)

  30.   #endif /* _DLIB_ADD_C99_SYMBOLS */

  31. #endif /* __AEABI_PORTABILITY_INTERNAL_LEVEL */



  32. #if _DLIB_ADD_C99_SYMBOLS

  33.   typedef float float_t;

  34.   typedef double double_t;

  35. #endif /* _DLIB_ADD_C99_SYMBOLS */





  36. _C_LIB_DECL

  37.                 /* double declarations */

  38. __EFF_NS    __ATTRIBUTES double acos(double);

  39. __EFF_NS    __ATTRIBUTES double asin(double);

  40. __EFF_NS    __ATTRIBUTES double atan(double);

  41. __EFF_NS    __ATTRIBUTES double atan2(double, double);

  42. __EFF_NE    __ATTRIBUTES double ceil(double);

  43. __EFF_NS    __ATTRIBUTES double exp(double);

  44. __EFF_NE    __ATTRIBUTES double fabs(double);

  45. __EFF_NE    __ATTRIBUTES double floor(double);

  46. __EFF_NS    __ATTRIBUTES double fmod(double, double);

  47. __EFF_NENR2 __ATTRIBUTES double frexp(double, int *);

  48. __EFF_NS    __ATTRIBUTES double ldexp(double, int);

  49. __EFF_NENR2 __ATTRIBUTES double modf(double, double *);

  50. __EFF_NS    __ATTRIBUTES double pow(double, double);

  51. __EFF_NS    __ATTRIBUTES double sqrt(double);

  52. __EFF_NS    __ATTRIBUTES double tan(double);

  53. __EFF_NS    __ATTRIBUTES double tanh(double);



  54. __EFF_NS    __ATTRIBUTES double cos(double);

  55. __EFF_NS    __ATTRIBUTES double cosh(double);

  56. __EFF_NS    __ATTRIBUTES double log(double);

  57. __EFF_NS    __ATTRIBUTES double log10(double);

  58. __EFF_NS    __ATTRIBUTES double sin(double);

  59. __EFF_NS    __ATTRIBUTES double sinh(double);



  60. #if _DLIB_ADD_C99_SYMBOLS



  61.                 /* double declarations */

  62.   __EFF_NS    __ATTRIBUTES double acosh(double);

  63.   __EFF_NS    __ATTRIBUTES double asinh(double);

  64.   __EFF_NS    __ATTRIBUTES double atanh(double);

  65.   __EFF_NE    __ATTRIBUTES double cbrt(double);

  66.   __EFF_NE    __ATTRIBUTES double copysign(double, double);

  67.   #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  68.     __EFF_NS    __ATTRIBUTES double erf(double);

  69.     __EFF_NS    __ATTRIBUTES double erfc(double);

  70.     __EFF_NS    __ATTRIBUTES double expm1(double);

  71.   #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */

  72.   __EFF_NS    __ATTRIBUTES double exp2(double);

  73.   __EFF_NE    __ATTRIBUTES double fdim(double, double);

  74.   #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  75.     __EFF_NS    __ATTRIBUTES double fma(double, double, double);

  76.   #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */

  77.   __EFF_NE    __ATTRIBUTES double fmax(double, double);

  78.   __EFF_NE    __ATTRIBUTES double fmin(double, double);

  79.   __EFF_NS    __ATTRIBUTES double hypot(double, double);

  80.   __EFF_NE    __ATTRIBUTES int    ilogb(double);

  81.   #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  82.     __EFF_NS    __ATTRIBUTES double lgamma(double);

  83.   #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */

  84.   #ifdef _LONGLONG

  85.     #pragma language=save

  86.     #pragma language=extended

  87.     __EFF_NS __ATTRIBUTES _Longlong llrint(double);

  88.     __EFF_NS __ATTRIBUTES _Longlong llround(double);

  89.     #pragma language=restore

  90.   #endif /* _LONGLONG */

  91.   __EFF_NS    __ATTRIBUTES double log1p(double);

  92.   __EFF_NS    __ATTRIBUTES double log2(double);

  93.   __EFF_NS    __ATTRIBUTES double logb(double);

  94.   __EFF_NS    __ATTRIBUTES long   lrint(double);

  95.   __EFF_NS    __ATTRIBUTES long   lround(double);

  96.   __EFF_NE    __ATTRIBUTES double nan(const char *);

  97.   __EFF_NS    __ATTRIBUTES double nearbyint(double);

  98.   __EFF_NS    __ATTRIBUTES double nextafter(double, double);

  99.   __EFF_NS    __ATTRIBUTES double nexttoward(double, long double);

  100.   __EFF_NS    __ATTRIBUTES double remainder(double, double);

  101.   __EFF_NS    __ATTRIBUTES double remquo(double, double, int *);

  102.   __EFF_NS    __ATTRIBUTES double rint(double);

  103.   __EFF_NE    __ATTRIBUTES double round(double);

  104.   __EFF_NS    __ATTRIBUTES double scalbn(double, int);

  105.   __EFF_NS    __ATTRIBUTES double scalbln(double, long);

  106.   #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  107.     __EFF_NS    __ATTRIBUTES double tgamma(double);

  108.   #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */

  109.   __EFF_NE    __ATTRIBUTES double trunc(double);



  110.                 /* float declarations */

  111.   __EFF_NS    __ATTRIBUTES float acosf(float);

  112.   __EFF_NS    __ATTRIBUTES float asinf(float);

  113.   __EFF_NS    __ATTRIBUTES float atanf(float);

  114.   __EFF_NS    __ATTRIBUTES float atan2f(float, float);

  115.   __EFF_NE    __ATTRIBUTES float ceilf(float);

  116.   __EFF_NS    __ATTRIBUTES float expf(float);

  117.   __EFF_NE    __ATTRIBUTES float fabsf(float);

  118.   __EFF_NE    __ATTRIBUTES float floorf(float);

  119.   __EFF_NS    __ATTRIBUTES float fmodf(float, float);

  120.   __EFF_NENR2 __ATTRIBUTES float frexpf(float, int *);

  121.   __EFF_NS    __ATTRIBUTES float ldexpf(float, int);

  122.   __EFF_NENR2 __ATTRIBUTES float modff(float, float *);

  123.   __EFF_NS    __ATTRIBUTES float powf(float, float);

  124.   __EFF_NS    __ATTRIBUTES float sqrtf(float);

  125.   __EFF_NS    __ATTRIBUTES float tanf(float);

  126.   __EFF_NS    __ATTRIBUTES float tanhf(float);



  127.   __EFF_NS    __ATTRIBUTES float acoshf(float);

  128.   __EFF_NS    __ATTRIBUTES float asinhf(float);

  129.   __EFF_NS    __ATTRIBUTES float atanhf(float);

  130.   __EFF_NE    __ATTRIBUTES float cbrtf(float);

  131.   __EFF_NE    __ATTRIBUTES float copysignf(float, float);

  132.   #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  133.     __EFF_NS    __ATTRIBUTES float erff(float);

  134.     __EFF_NS    __ATTRIBUTES float erfcf(float);

  135.     __EFF_NS    __ATTRIBUTES float expm1f(float);

  136.   #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */

  137.   __EFF_NS    __ATTRIBUTES float exp2f(float);

  138.   __EFF_NE    __ATTRIBUTES float fdimf(float, float);

  139.   #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  140.     __EFF_NS    __ATTRIBUTES float fmaf(float, float, float);

  141.   #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */

  142.   __EFF_NE    __ATTRIBUTES float fmaxf(float, float);

  143.   __EFF_NE    __ATTRIBUTES float fminf(float, float);

  144.   __EFF_NS    __ATTRIBUTES float hypotf(float, float);

  145.   __EFF_NE    __ATTRIBUTES int   ilogbf(float);

  146.   #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  147.     __EFF_NS    __ATTRIBUTES float lgammaf(float);

  148.   #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */

  149.   #ifdef _LONGLONG

  150.     #pragma language=save

  151.     #pragma language=extended

  152.     __EFF_NS    __ATTRIBUTES _Longlong llrintf(float);

  153.     __EFF_NS    __ATTRIBUTES _Longlong llroundf(float);

  154.     #pragma language=restore

  155.   #endif /* _LONGLONG */

  156.   __EFF_NS    __ATTRIBUTES float log1pf(float);

  157.   __EFF_NS    __ATTRIBUTES float log2f(float);

  158.   __EFF_NS    __ATTRIBUTES float logbf(float);

  159.   __EFF_NS    __ATTRIBUTES long  lrintf(float);

  160.   __EFF_NS    __ATTRIBUTES long  lroundf(float);

  161.   __EFF_NE    __ATTRIBUTES float nanf(const char *);

  162.   __EFF_NS    __ATTRIBUTES float nearbyintf(float);

  163.   __EFF_NS    __ATTRIBUTES float nextafterf(float, float);

  164.   __EFF_NS    __ATTRIBUTES float nexttowardf(float, long double);

  165.   __EFF_NS    __ATTRIBUTES float remainderf(float, float);

  166.   __EFF_NS    __ATTRIBUTES float remquof(float, float, int *);

  167.   __EFF_NS    __ATTRIBUTES float rintf(float);

  168.   __EFF_NE    __ATTRIBUTES float roundf(float);

  169.   __EFF_NS    __ATTRIBUTES float scalbnf(float, int);

  170.   __EFF_NS    __ATTRIBUTES float scalblnf(float, long);

  171.   #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  172.     __EFF_NS    __ATTRIBUTES float tgammaf(float);

  173.   #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */

  174.   __EFF_NE    __ATTRIBUTES float truncf(float);



  175.   __EFF_NS    __ATTRIBUTES float cosf(float);

  176.   __EFF_NS    __ATTRIBUTES float coshf(float);

  177.   __EFF_NS    __ATTRIBUTES float logf(float);

  178.   __EFF_NS    __ATTRIBUTES float log10f(float);

  179.   __EFF_NS    __ATTRIBUTES float sinf(float);

  180.   __EFF_NS    __ATTRIBUTES float sinhf(float);



  181.                 /* long double declarations */

  182.   __EFF_NS    __ATTRIBUTES long double acosl(long double);

  183.   __EFF_NS    __ATTRIBUTES long double asinl(long double);

  184.   __EFF_NS    __ATTRIBUTES long double atanl(long double);

  185.   __EFF_NS    __ATTRIBUTES long double atan2l(long double, long double);

  186.   __EFF_NE    __ATTRIBUTES long double ceill(long double);

  187.   __EFF_NS    __ATTRIBUTES long double expl(long double);

  188.   __EFF_NE    __ATTRIBUTES long double fabsl(long double);

  189.   __EFF_NE    __ATTRIBUTES long double floorl(long double);

  190.   __EFF_NS    __ATTRIBUTES long double fmodl(long double, long double);

  191.   __EFF_NENR2 __ATTRIBUTES long double frexpl(long double, int *);

  192.   __EFF_NS    __ATTRIBUTES long double ldexpl(long double, int);

  193.   __EFF_NENR2 __ATTRIBUTES long double modfl(long double, long double *);

  194.   __EFF_NS    __ATTRIBUTES long double powl(long double, long double);

  195.   __EFF_NS    __ATTRIBUTES long double sqrtl(long double);

  196.   __EFF_NS    __ATTRIBUTES long double tanl(long double);

  197.   __EFF_NS    __ATTRIBUTES long double tanhl(long double);



  198.   __EFF_NS    __ATTRIBUTES long double acoshl(long double);

  199.   __EFF_NS    __ATTRIBUTES long double asinhl(long double);

  200.   __EFF_NS    __ATTRIBUTES long double atanhl(long double);

  201.   __EFF_NE    __ATTRIBUTES long double cbrtl(long double);

  202.   __EFF_NE    __ATTRIBUTES long double copysignl(long double, long double);

  203.   #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  204.     __EFF_NS    __ATTRIBUTES long double erfl(long double);

  205.     __EFF_NS    __ATTRIBUTES long double erfcl(long double);

  206.     __EFF_NS    __ATTRIBUTES long double expm1l(long double);

  207.   #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */

  208.   __EFF_NS    __ATTRIBUTES long double exp2l(long double);

  209.   __EFF_NE    __ATTRIBUTES long double fdiml(long double, long double);

  210.   #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  211.     __EFF_NS    __ATTRIBUTES long double fmal(long double, long double,

  212.                                               long double);

  213.   #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */

  214.   __EFF_NE    __ATTRIBUTES long double fmaxl(long double, long double);

  215.   __EFF_NE    __ATTRIBUTES long double fminl(long double, long double);

  216.   __EFF_NS    __ATTRIBUTES long double hypotl(long double, long double);

  217.   __EFF_NE    __ATTRIBUTES int         ilogbl(long double);

  218.   #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  219.     __EFF_NS    __ATTRIBUTES long double lgammal(long double);

  220.   #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */

  221.   #ifdef _LONGLONG

  222.     #pragma language=save

  223.     #pragma language=extended

  224.     __EFF_NS    __ATTRIBUTES _Longlong llrintl(long double);

  225.     __EFF_NS    __ATTRIBUTES _Longlong llroundl(long double);

  226.     #pragma language=restore

  227.   #endif /* _LONGLONG */

  228.   __EFF_NS    __ATTRIBUTES long double log1pl(long double);

  229.   __EFF_NS    __ATTRIBUTES long double log2l(long double);

  230.   __EFF_NS    __ATTRIBUTES long double logbl(long double);

  231.   __EFF_NS    __ATTRIBUTES long        lrintl(long double);

  232.   __EFF_NS    __ATTRIBUTES long lroundl(long double);

  233.   __EFF_NE    __ATTRIBUTES long double nanl(const char *);

  234.   __EFF_NS    __ATTRIBUTES long double nearbyintl(long double);

  235.   __EFF_NS    __ATTRIBUTES long double nextafterl(long double, long double);

  236.   __EFF_NS    __ATTRIBUTES long double nexttowardl(long double, long double);

  237.   __EFF_NS    __ATTRIBUTES long double remainderl(long double, long double);

  238.   __EFF_NS    __ATTRIBUTES long double remquol(long double, long double, int *);

  239.   __EFF_NS    __ATTRIBUTES long double rintl(long double);

  240.   __EFF_NE    __ATTRIBUTES long double roundl(long double);

  241.   __EFF_NS    __ATTRIBUTES long double scalbnl(long double, int);

  242.   __EFF_NS    __ATTRIBUTES long double scalblnl(long double, long);

  243.   #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  244.     __EFF_NS    __ATTRIBUTES long double tgammal(long double);

  245.   #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */

  246.   __EFF_NE    __ATTRIBUTES long double truncl(long double);



  247.   __EFF_NS    __ATTRIBUTES long double cosl(long double);

  248.   __EFF_NS    __ATTRIBUTES long double coshl(long double);

  249.   __EFF_NS    __ATTRIBUTES long double logl(long double);

  250.   __EFF_NS    __ATTRIBUTES long double log10l(long double);

  251.   __EFF_NS    __ATTRIBUTES long double sinl(long double);

  252.   __EFF_NS    __ATTRIBUTES long double sinhl(long double);

  253. #endif /* _DLIB_ADD_C99_SYMBOLS */



  254. #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH && \

  255.     !defined(_DLIB_DO_NOT_ADD_ACCURATE_FUNCTIONS)

  256.                 /* Accurate versions of certain float functions. */

  257. __EFF_NS __ATTRIBUTES double __iar_tan_accurate(double);

  258. __EFF_NS __ATTRIBUTES double __iar_cos_accurate(double);

  259. __EFF_NS __ATTRIBUTES double __iar_sin_accurate(double);

  260. __EFF_NS __ATTRIBUTES double __iar_pow_accurate(double, double);



  261. __EFF_NS __ATTRIBUTES double __iar_Sin_accurate(double, unsigned int);

  262. __EFF_NS __ATTRIBUTES double __iar_Pow_accurate(double, double, short *pex);

  263. #if _DLIB_ADD_C99_SYMBOLS

  264.   __EFF_NS __ATTRIBUTES float __iar_tan_accuratef(float);

  265.   __EFF_NS __ATTRIBUTES float __iar_cos_accuratef(float);

  266.   __EFF_NS __ATTRIBUTES float __iar_sin_accuratef(float);

  267.   __EFF_NS __ATTRIBUTES float __iar_pow_accuratef(float, float);



  268.   __EFF_NS __ATTRIBUTES float __iar_Sin_accuratef(float, unsigned int);

  269.   __EFF_NS __ATTRIBUTES float __iar_Pow_accuratef(float, float, short *pex);



  270.   __EFF_NS __ATTRIBUTES long double __iar_tan_accuratel(long double);

  271.   __EFF_NS __ATTRIBUTES long double __iar_cos_accuratel(long double);

  272.   __EFF_NS __ATTRIBUTES long double __iar_sin_accuratel(long double);

  273.   __EFF_NS __ATTRIBUTES long double __iar_pow_accuratel(long double,

  274.                                                         long double);



  275.   __EFF_NS __ATTRIBUTES long double __iar_Sin_accuratel(long double,

  276.                                                         unsigned int);

  277.   __EFF_NS __ATTRIBUTES long double __iar_Pow_accuratel(long double,

  278.                                                         long double,

  279.                                                         short *pex);

  280. #endif /* _DLIB_ADD_C99_SYMBOLS */

  281. #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH &&

  282.           !defined(_DLIB_DO_NOT_ADD_ACCURATE_FUNCTIONS) */



  283. #ifndef _DLIB_DO_NOT_ADD_SMALL_FUNCTIONS

  284.                 /* Small versions of certain float functions. */

  285. __EFF_NS __ATTRIBUTES double __iar_cos_small(double);

  286. __EFF_NS __ATTRIBUTES double __iar_exp_small(double);

  287. __EFF_NS __ATTRIBUTES double __iar_log_small(double);

  288. __EFF_NS __ATTRIBUTES double __iar_log10_small(double);

  289. __EFF_NS __ATTRIBUTES double __iar_pow_small(double, double);

  290. __EFF_NS __ATTRIBUTES double __iar_sin_small(double);

  291. __EFF_NS __ATTRIBUTES double __iar_tan_small(double);

  292. #if _DLIB_ADD_C99_SYMBOLS

  293. __EFF_NS __ATTRIBUTES float __iar_cos_smallf(float);

  294. __EFF_NS __ATTRIBUTES float __iar_exp_smallf(float);

  295. __EFF_NS __ATTRIBUTES float __iar_log_smallf(float);

  296. __EFF_NS __ATTRIBUTES float __iar_log10_smallf(float);

  297. __EFF_NS __ATTRIBUTES float __iar_pow_smallf(float, float);

  298. __EFF_NS __ATTRIBUTES float __iar_sin_smallf(float);

  299. __EFF_NS __ATTRIBUTES float __iar_tan_smallf(float);



  300. __EFF_NS __ATTRIBUTES long double __iar_cos_smalll(long double);

  301. __EFF_NS __ATTRIBUTES long double __iar_exp_smalll(long double);

  302. __EFF_NS __ATTRIBUTES long double __iar_log_smalll(long double);

  303. __EFF_NS __ATTRIBUTES long double __iar_log10_smalll(long double);

  304. __EFF_NS __ATTRIBUTES long double __iar_pow_smalll(long double, long double);

  305. __EFF_NS __ATTRIBUTES long double __iar_sin_smalll(long double);

  306. __EFF_NS __ATTRIBUTES long double __iar_tan_smalll(long double);

  307. #endif /* _DLIB_ADD_C99_SYMBOLS */

  308. #endif /* _DLIB_DO_NOT_ADD_SMALL_FUNCTIONS */



  309. _END_C_LIB_DECL



  310. #ifdef __cplusplus

  311.   _EXTERN_CPP

  312.   __EFF_NE    __ATTRIBUTES double abs(double);

  313.   __EFF_NS    __ATTRIBUTES double pow(double, int);



  314.   __EFF_NE    __ATTRIBUTES float abs(float);

  315.   __EFF_NS    __ATTRIBUTES float acos(float);

  316.   __EFF_NS    __ATTRIBUTES float asin(float);

  317.   __EFF_NS    __ATTRIBUTES float atan(float);

  318.   __EFF_NS    __ATTRIBUTES float atan2(float, float);

  319.   __EFF_NE    __ATTRIBUTES float ceil(float);

  320.   __EFF_NS    __ATTRIBUTES float cos(float);

  321.   __EFF_NS    __ATTRIBUTES float cosh(float);

  322.   __EFF_NS    __ATTRIBUTES float exp(float);

  323.   __EFF_NE    __ATTRIBUTES float fabs(float);

  324.   __EFF_NE    __ATTRIBUTES float floor(float);

  325.   __EFF_NS    __ATTRIBUTES float fmod(float, float);

  326.   __EFF_NENR2 __ATTRIBUTES float frexp(float, int *);

  327.   __EFF_NS    __ATTRIBUTES float ldexp(float, int);

  328.   __EFF_NS    __ATTRIBUTES float log(float);

  329.   __EFF_NS    __ATTRIBUTES float log10(float);

  330.   __EFF_NENR2 __ATTRIBUTES float modf(float, float *);

  331.   __EFF_NS    __ATTRIBUTES float pow(float, float);

  332.   __EFF_NS    __ATTRIBUTES float pow(float, int);

  333.   __EFF_NS    __ATTRIBUTES float sin(float);

  334.   __EFF_NS    __ATTRIBUTES float sinh(float);

  335.   __EFF_NS    __ATTRIBUTES float sqrt(float);

  336.   __EFF_NS    __ATTRIBUTES float tan(float);

  337.   __EFF_NS    __ATTRIBUTES float tanh(float);

  338.   __EFF_NS    __ATTRIBUTES float acosh(float);

  339.   __EFF_NS    __ATTRIBUTES float asinh(float);

  340.   __EFF_NS    __ATTRIBUTES float atanh(float);

  341.   __EFF_NE    __ATTRIBUTES float cbrt(float);

  342.   __EFF_NE    __ATTRIBUTES float copysign(float, float);

  343.   #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  344.     __EFF_NS    __ATTRIBUTES float erf(float);

  345.     __EFF_NS    __ATTRIBUTES float erfc(float);

  346.     __EFF_NS    __ATTRIBUTES float expm1(float);

  347.   #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */

  348.   __EFF_NS    __ATTRIBUTES float exp2(float);

  349.   __EFF_NE    __ATTRIBUTES float fdim(float, float);

  350.   #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  351.     __EFF_NS    __ATTRIBUTES float fma(float, float, float);

  352.   #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */

  353.   __EFF_NE    __ATTRIBUTES float fmax(float, float);

  354.   __EFF_NE    __ATTRIBUTES float fmin(float, float);

  355.   __EFF_NS    __ATTRIBUTES float hypot(float, float);

  356.   __EFF_NE    __ATTRIBUTES int   ilogb(float);

  357.   #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  358.     __EFF_NS    __ATTRIBUTES float lgamma(float);

  359.   #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */



  360.   #ifdef _LONGLONG

  361.     #pragma language=save

  362.     #pragma language=extended

  363.     __EFF_NS    __ATTRIBUTES _Longlong llrint(float);

  364.     __EFF_NS    __ATTRIBUTES _Longlong llround(float);

  365.     #pragma language=restore

  366.   #endif /* _LONGLONG */



  367.   __EFF_NS    __ATTRIBUTES float log1p(float);

  368.   __EFF_NS    __ATTRIBUTES float log2(float);

  369.   __EFF_NS    __ATTRIBUTES float logb(float);

  370.   __EFF_NS    __ATTRIBUTES long  lrint(float);

  371.   __EFF_NS    __ATTRIBUTES long  lround(float);

  372.   __EFF_NS    __ATTRIBUTES float nearbyint(float);

  373.   __EFF_NS    __ATTRIBUTES float nextafter(float, float);

  374.   __EFF_NS    __ATTRIBUTES float nexttoward(float, long double);

  375.   __EFF_NS    __ATTRIBUTES float remainder(float, float);

  376.   __EFF_NS    __ATTRIBUTES float remquo(float, float, int *);

  377.   __EFF_NS    __ATTRIBUTES float rint(float);

  378.   __EFF_NE    __ATTRIBUTES float round(float);

  379.   __EFF_NS    __ATTRIBUTES float scalbn(float, int);

  380.   __EFF_NS    __ATTRIBUTES float scalbln(float, long);

  381.   #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  382.     __EFF_NS    __ATTRIBUTES float tgamma(float);

  383.   #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */

  384.   __EFF_NE    __ATTRIBUTES float trunc(float);



  385.   __EFF_NE    __ATTRIBUTES long double abs(long double);

  386.   __EFF_NS    __ATTRIBUTES long double acos(long double);

  387.   __EFF_NS    __ATTRIBUTES long double asin(long double);

  388.   __EFF_NS    __ATTRIBUTES long double atan(long double);

  389.   __EFF_NS    __ATTRIBUTES long double atan2(long double, long double);

  390.   __EFF_NE    __ATTRIBUTES long double ceil(long double);

  391.   __EFF_NS    __ATTRIBUTES long double cos(long double);

  392.   __EFF_NS    __ATTRIBUTES long double cosh(long double);

  393.   __EFF_NS    __ATTRIBUTES long double exp(long double);

  394.   __EFF_NE    __ATTRIBUTES long double fabs(long double);

  395.   __EFF_NE    __ATTRIBUTES long double floor(long double);

  396.   __EFF_NS    __ATTRIBUTES long double fmod(long double, long double);

  397.   __EFF_NENR2 __ATTRIBUTES long double frexp(long double, int *);

  398.   __EFF_NS    __ATTRIBUTES long double ldexp(long double, int);

  399.   __EFF_NS    __ATTRIBUTES long double log(long double);

  400.   __EFF_NS    __ATTRIBUTES long double log10(long double);

  401.   __EFF_NENR2 __ATTRIBUTES long double modf(long double, long double *);

  402.   __EFF_NS    __ATTRIBUTES long double pow(long double, long double);

  403.   __EFF_NS    __ATTRIBUTES long double pow(long double, int);

  404.   __EFF_NS    __ATTRIBUTES long double sin(long double);

  405.   __EFF_NS    __ATTRIBUTES long double sinh(long double);

  406.   __EFF_NS    __ATTRIBUTES long double sqrt(long double);

  407.   __EFF_NS    __ATTRIBUTES long double tan(long double);

  408.   __EFF_NS    __ATTRIBUTES long double tanh(long double);

  409.   __EFF_NS    __ATTRIBUTES long double acosh(long double);

  410.   __EFF_NS    __ATTRIBUTES long double asinh(long double);

  411.   __EFF_NS    __ATTRIBUTES long double atanh(long double);

  412.   __EFF_NE    __ATTRIBUTES long double cbrt(long double);

  413.   __EFF_NE    __ATTRIBUTES long double copysign(long double, long double);

  414.   #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  415.     __EFF_NS    __ATTRIBUTES long double erf(long double);

  416.     __EFF_NS    __ATTRIBUTES long double erfc(long double);

  417.     __EFF_NS    __ATTRIBUTES long double expm1(long double);

  418.   #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */

  419.   __EFF_NS    __ATTRIBUTES long double exp2(long double);

  420.   __EFF_NE    __ATTRIBUTES long double fdim(long double, long double);

  421.   #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  422.     __EFF_NS    __ATTRIBUTES long double fma(long double, long double,

  423.                                              long double);

  424.   #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */

  425.   __EFF_NE    __ATTRIBUTES long double fmax(long double, long double);

  426.   __EFF_NE    __ATTRIBUTES long double fmin(long double, long double);

  427.   __EFF_NS    __ATTRIBUTES long double hypot(long double, long double);

  428.   __EFF_NE    __ATTRIBUTES int         ilogb(long double);

  429.   #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  430.     __EFF_NS    __ATTRIBUTES long double lgamma(long double);

  431.   #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */



  432.   #ifdef _LONGLONG

  433.     #pragma language=save

  434.     #pragma language=extended

  435.     __EFF_NS    __ATTRIBUTES _Longlong llrint(long double);

  436.     __EFF_NS    __ATTRIBUTES _Longlong llround(long double);

  437.     #pragma language=restore

  438.   #endif /* _LONGLONG */



  439.   __EFF_NS    __ATTRIBUTES long double log1p(long double);

  440.   __EFF_NS    __ATTRIBUTES long double log2(long double);

  441.   __EFF_NS    __ATTRIBUTES long double logb(long double);

  442.   __EFF_NS    __ATTRIBUTES long lrint(long double);

  443.   __EFF_NS    __ATTRIBUTES long lround(long double);

  444.   __EFF_NS    __ATTRIBUTES long double nearbyint(long double);

  445.   __EFF_NS    __ATTRIBUTES long double nextafter(long double, long double);

  446.   __EFF_NS    __ATTRIBUTES long double nexttoward(long double, long double);

  447.   __EFF_NS    __ATTRIBUTES long double remainder(long double, long double);

  448.   __EFF_NS    __ATTRIBUTES long double remquo(long double, long double, int *);

  449.   __EFF_NS    __ATTRIBUTES long double rint(long double);

  450.   __EFF_NE    __ATTRIBUTES long double round(long double);

  451.   __EFF_NS    __ATTRIBUTES long double scalbn(long double, int);

  452.   __EFF_NS    __ATTRIBUTES long double scalbln(long double, long);

  453.   #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  454.     __EFF_NS    __ATTRIBUTES long double tgamma(long double);

  455.   #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */

  456.   __EFF_NE    __ATTRIBUTES long double trunc(long double);



  457.   _END_EXTERN_CPP

  458. #endif /* __cplusplus */





  459. #if defined(__cplusplus) && !defined(_NO_DEFINITIONS_IN_HEADER_FILES)

  460.   _EXTERN_CPP

  461.   /* C++ definitions */



  462.     #pragma inline=forced

  463.     inline double abs(double _X)    /* OVERLOADS */

  464.     {       /* return absolute value */

  465.       return (fabs(_X));

  466.     }



  467.     #pragma inline=forced

  468.     inline double pow(double _X, int _Y)

  469.     {       /* raise to integer power */

  470.       unsigned int _N = _Y;

  471.       if (_Y < 0)

  472.         _N = 0 - _N;

  473.      

  474.       for (double _Z = 1; ; _X *= _X)

  475.       {

  476.         if ((_N & 1) != 0)

  477.           _Z *= _X;

  478.         if ((_N >>= 1) == 0)

  479.           return (_Y < 0 ? (_Z == 0.0 ? HUGE_VAL : (double)(1) / _Z) : _Z);

  480.       }

  481.     }



  482.     #pragma inline=forced

  483.     inline float abs(float _X)      /* OVERLOADS */

  484.     {       /* return absolute value */

  485.       return (_F_FUN(fabs)(_F_CAST _X));

  486.     }



  487.     #pragma inline=forced

  488.     inline float acos(float _X)

  489.     {       /* return arccosine */

  490.       return (_F_FUN(acos)(_F_CAST _X));

  491.     }



  492.     #pragma inline=forced

  493.     inline float asin(float _X)

  494.     {       /* return arcsine */

  495.       return (_F_FUN(asin)(_F_CAST _X));

  496.     }



  497.     #pragma inline=forced

  498.     inline float atan(float _X)

  499.     {       /* return arctangent */

  500.       return (_F_FUN(atan)(_F_CAST _X));

  501.     }



  502.     #pragma inline=forced

  503.     inline float atan2(float _Y, float _X)

  504.     {       /* return arctangent */

  505.       return (_F_FUN(atan2)(_F_CAST _Y,_F_CAST  _X));

  506.     }



  507.     #pragma inline=forced

  508.     inline float ceil(float _X)

  509.     {       /* return ceiling */

  510.       return (_F_FUN(ceil)(_F_CAST _X));

  511.     }



  512.     #pragma inline=forced

  513.     inline float cos(float _X)

  514.     {       /* return cosine */

  515.       return (_F_FUN(cos)(_F_CAST _X));

  516.     }



  517.     #pragma inline=forced

  518.     inline float cosh(float _X)

  519.     {       /* return hyperbolic cosine */

  520.       return (_F_FUN(cosh)(_F_CAST _X));

  521.     }



  522.     #pragma inline=forced

  523.     inline float exp(float _X)

  524.     {       /* return exponential */

  525.       return (_F_FUN(exp)(_F_CAST _X));

  526.     }



  527.     #pragma inline=forced

  528.     inline float fabs(float _X)

  529.     {       /* return absolute value */

  530.       return (_F_FUN(fabs)(_F_CAST _X));

  531.     }



  532.     #pragma inline=forced

  533.     inline float floor(float _X)

  534.     {       /* return floor */

  535.       return (_F_FUN(floor)(_F_CAST _X));

  536.     }



  537.     #pragma inline=forced

  538.     inline float fmod(float _X, float _Y)

  539.     {       /* return modulus */

  540.       return (_F_FUN(fmod)(_F_CAST _X,_F_CAST  _Y));

  541.     }



  542.     #pragma inline=forced

  543.     inline float frexp(float _X, int *_Y)

  544.     {       /* unpack exponent */

  545.       return (_F_FUN(frexp)(_F_CAST _X, _Y));

  546.     }



  547.     #pragma inline=forced

  548.     inline float ldexp(float _X, int _Y)

  549.     {       /* pack exponent */

  550.       return (_F_FUN(ldexp)(_F_CAST _X, _Y));

  551.     }



  552.     #pragma inline=forced

  553.     inline float log(float _X)

  554.     {       /* return natural logarithm */

  555.       return (_F_FUN(log)(_F_CAST _X));

  556.     }



  557.     #pragma inline=forced

  558.     inline float log10(float _X)

  559.     {       /* return base-10 logarithm */

  560.       return (_F_FUN(log10)(_F_CAST _X));

  561.     }



  562.     #pragma inline=forced

  563.     inline float modf(float _X, float *_Y)

  564.     {       /* unpack fraction */

  565.       return (_F_FUN(modf)(_F_CAST _X,_F_PTRCAST  _Y));

  566.     }



  567.     #pragma inline=forced

  568.     inline float pow(float _X, float _Y)

  569.     {       /* raise to power */

  570.       return (_F_FUN(pow)(_F_CAST _X,_F_CAST  _Y));

  571.     }



  572.     #pragma inline=forced

  573.     inline float pow(float _X, int _Y)

  574.     {       /* raise to integer power */

  575.     #ifdef _FLOAT_IS_DOUBLE

  576.       return (float) pow((double) _X, _Y);

  577.     #else

  578.       unsigned int _N = _Y;

  579.       if (_Y < 0)

  580.         _N = 0 - _N;



  581.       for (float _Z = 1; ; _X *= _X)

  582.       {

  583.         if ((_N & 1) != 0)

  584.           _Z *= _X;

  585.         if ((_N >>= 1) == 0)

  586.           return _Y < 0 ? (_Z == 0.0F ? (float)HUGE_VAL : (float)(1) / _Z) : _Z;

  587.       }

  588.     #endif /* _FLOAT_IS_DOUBLE */

  589.     }



  590.     #pragma inline=forced

  591.     inline float sin(float _X)

  592.     {       /* return sine */

  593.       return (_F_FUN(sin)(_F_CAST _X));

  594.     }



  595.     #pragma inline=forced

  596.     inline float sinh(float _X)

  597.     {       /* return hyperbolic sine */

  598.       return (_F_FUN(sinh)(_F_CAST _X));

  599.     }



  600.     #pragma inline=forced

  601.     inline float sqrt(float _X)

  602.     {       /* return square root */

  603.       return (_F_FUN(sqrt)(_F_CAST _X));

  604.     }



  605.     #pragma inline=forced

  606.     inline float tan(float _X)

  607.     {       /* return tangent */

  608.       return (_F_FUN(tan)(_F_CAST _X));

  609.     }



  610.     #pragma inline=forced

  611.     inline float tanh(float _X)

  612.     {       /* return hyperbolic tangent */

  613.       return (_F_FUN(tanh)(_F_CAST _X));

  614.     }



  615.     #pragma inline=forced

  616.     inline float acosh(float _Left)

  617.     {       // return hyperbolic arccosine

  618.       return (_F_FUN(acosh)(_F_CAST _Left));

  619.     }



  620.     #pragma inline=forced

  621.     inline float asinh(float _Left)

  622.     {       // return hyperbolic arcsine

  623.       return (_F_FUN(asinh)(_F_CAST _Left));

  624.     }



  625.     #pragma inline=forced

  626.     inline float atanh(float _Left)

  627.     {       // return hyperbolic arctangent

  628.       return (_F_FUN(atanh)(_F_CAST _Left));

  629.     }



  630.     #pragma inline=forced

  631.     inline float cbrt(float _Left)

  632.     {       // return cube root

  633.       return (_F_FUN(cbrt)(_F_CAST _Left));

  634.     }



  635.     #pragma inline=forced

  636.     inline float copysign(float _Left, float _Right)

  637.     {       // return copysign

  638.       return (_F_FUN(copysign)(_F_CAST _Left, _F_CAST _Right));

  639.     }



  640.     #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  641.       #pragma inline=forced

  642.       inline float erf(float _Left)

  643.       {       // return erf

  644.         return (_F_FUN(erf)(_F_CAST _Left));

  645.       }



  646.       #pragma inline=forced

  647.       inline float erfc(float _Left)

  648.       {       // return erfc

  649.         return (_F_FUN(erfc)(_F_CAST _Left));

  650.       }



  651.       #pragma inline=forced

  652.       inline float expm1(float _Left)

  653.       {       // return expml

  654.         return (_F_FUN(expm1)(_F_CAST _Left));

  655.       }

  656.     #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */



  657.     #pragma inline=forced

  658.     inline float exp2(float _Left)

  659.     {       // return exp2

  660.       return (_F_FUN(exp2)(_F_CAST _Left));

  661.     }



  662.     #pragma inline=forced

  663.     inline float fdim(float _Left, float _Right)

  664.     {       // return fdim

  665.       return (_F_FUN(fdim)(_F_CAST _Left, _F_CAST _Right));

  666.     }



  667.     #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  668.       #pragma inline=forced

  669.       inline float fma(float _Left, float _Right, float _Addend)

  670.       {       // return fma

  671.         return (_F_FUN(fma)(_F_CAST _Left, _F_CAST _Right, _F_CAST _Addend));

  672.       }

  673.     #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */



  674.     #pragma inline=forced

  675.     inline float fmax(float _Left, float _Right)

  676.     {       // return fmax

  677.       return (_F_FUN(fmax)(_F_CAST _Left, _F_CAST _Right));

  678.     }



  679.     #pragma inline=forced

  680.     inline float fmin(float _Left, float _Right)

  681.     {       // return fmin

  682.       return (_F_FUN(fmin)(_F_CAST _Left, _F_CAST _Right));

  683.     }



  684.     #pragma inline=forced

  685.     inline float hypot(float _Left, float _Right)

  686.     {       // return hypot

  687.       return (_F_FUN(hypot)(_F_CAST _Left, _F_CAST _Right));

  688.     }



  689.     #pragma inline=forced

  690.     inline int ilogb(float _Left)

  691.     {       // return ilogb

  692.       return (_F_FUN(ilogb)(_F_CAST _Left));

  693.     }



  694.     #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  695.       #pragma inline=forced

  696.       inline float lgamma(float _Left)

  697.       {       // return lgamma

  698.         return (_F_FUN(lgamma)(_F_CAST _Left));

  699.       }

  700.     #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */



  701.     #ifdef _LONGLONG

  702.       #pragma language=save

  703.       #pragma language=extended

  704.       #pragma inline=forced

  705.       inline _Longlong llrint(float _Left)

  706.       {       // return llrint

  707.         return (_F_FUN(llrint)(_F_CAST _Left));

  708.       }



  709.       #pragma inline=forced

  710.       inline _Longlong llround(float _Left)

  711.       {       // return llround

  712.         return (_F_FUN(llround)(_F_CAST _Left));

  713.       }

  714.       #pragma language=restore

  715.     #endif /* _LONGLONG */



  716.     #pragma inline=forced

  717.     inline float log1p(float _Left)

  718.     {       // return loglp

  719.       return (_F_FUN(log1p)(_F_CAST _Left));

  720.     }



  721.     #pragma inline=forced

  722.     inline float log2(float _Left)

  723.     {       // return log2

  724.       return (_F_FUN(log2)(_F_CAST _Left));

  725.     }



  726.     #pragma inline=forced

  727.     inline float logb(float _Left)

  728.     {       // return logb

  729.       return (_F_FUN(logb)(_F_CAST _Left));

  730.     }



  731.     #pragma inline=forced

  732.     inline long lrint(float _Left)

  733.     {       // return lrint

  734.       return (_F_FUN(lrint)(_F_CAST _Left));

  735.     }



  736.     #pragma inline=forced

  737.     inline long lround(float _Left)

  738.     {       // return lround

  739.       return (_F_FUN(lround)(_F_CAST _Left));

  740.     }



  741.     #pragma inline=forced

  742.     inline float nearbyint(float _Left)

  743.     {       // return nearbyint

  744.       return (_F_FUN(nearbyint)(_F_CAST _Left));

  745.     }



  746.     #pragma inline=forced

  747.     inline float nextafter(float _Left, float _Right)

  748.     {       // return nextafter

  749.       return (_F_FUN(nextafter)(_F_CAST _Left, _F_CAST _Right));

  750.     }



  751.     #pragma inline=forced

  752.     inline float nexttoward(float _Left, long double _Right)

  753.     {       // return nexttoward

  754.       return (_F_FUN(nexttoward)(_F_CAST _Left, _F_CAST _Right));

  755.     }



  756.     #pragma inline=forced

  757.     inline float remainder(float _Left, float _Right)

  758.     {       // return remainder

  759.       return (_F_FUN(remainder)(_F_CAST _Left, _F_CAST _Right));

  760.     }



  761.     #pragma inline=forced

  762.     inline float remquo(float _Left, float _Right, int *_Pval)

  763.     {       // return remquo

  764.       return (_F_FUN(remquo)(_F_CAST _Left, _F_CAST _Right, _Pval));

  765.     }



  766.     #pragma inline=forced

  767.     inline float rint(float _Left)

  768.     {       // return rint

  769.       return (_F_FUN(rint)(_F_CAST _Left));

  770.     }



  771.     #pragma inline=forced

  772.     inline float round(float _Left)

  773.     {       // return round

  774.       return (_F_FUN(round)(_F_CAST _Left));

  775.     }



  776.     #pragma inline=forced

  777.     inline float scalbn(float _Left, int _Right)

  778.     {       // return scalbn

  779.       return (_F_FUN(scalbn)(_F_CAST _Left, _Right));

  780.     }



  781.     #pragma inline=forced

  782.     inline float scalbln(float _Left, long _Right)

  783.     {       // return scalbln

  784.       return (_F_FUN(scalbln)(_F_CAST _Left, _Right));

  785.     }



  786.     #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  787.       #pragma inline=forced

  788.       inline float tgamma(float _Left)

  789.       {       // return tgamma

  790.         return (_F_FUN(tgamma)(_F_CAST _Left));

  791.       }

  792.     #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */



  793.     #pragma inline=forced

  794.     inline float trunc(float _Left)

  795.     {       // return trunc

  796.       return (_F_FUN(trunc)(_F_CAST _Left));

  797.     }



  798.     #pragma inline=forced

  799.     inline long double abs(long double _X)  /* OVERLOADS */

  800.     {       /* return absolute value */

  801.       return (_L_FUN(fabs)(_L_CAST _X));

  802.     }



  803.     #pragma inline=forced

  804.     inline long double acos(long double _X)

  805.     {       /* return arccosine */

  806.       return (_L_FUN(acos)(_L_CAST _X));

  807.     }



  808.     #pragma inline=forced

  809.     inline long double asin(long double _X)

  810.     {       /* return arcsine */

  811.       return (_L_FUN(asin)(_L_CAST _X));

  812.     }



  813.     #pragma inline=forced

  814.     inline long double atan(long double _X)

  815.     {       /* return arctangent */

  816.       return (_L_FUN(atan)(_L_CAST _X));

  817.     }



  818.     #pragma inline=forced

  819.     inline long double atan2(long double _Y, long double _X)

  820.     {       /* return arctangent */

  821.       return (_L_FUN(atan2)(_L_CAST _Y, _L_CAST _X));

  822.     }



  823.     #pragma inline=forced

  824.     inline long double ceil(long double _X)

  825.     {       /* return ceiling */

  826.       return (_L_FUN(ceil)(_L_CAST _X));

  827.     }



  828.     #pragma inline=forced

  829.     inline long double cos(long double _X)

  830.     {       /* return cosine */

  831.       return (_L_FUN(cos)(_L_CAST _X));

  832.     }



  833.     #pragma inline=forced

  834.     inline long double cosh(long double _X)

  835.     {       /* return hyperbolic cosine */

  836.       return (_L_FUN(cosh)(_L_CAST _X));

  837.     }



  838.     #pragma inline=forced

  839.     inline long double exp(long double _X)

  840.     {       /* return exponential */

  841.       return (_L_FUN(exp)(_L_CAST _X));

  842.     }



  843.     #pragma inline=forced

  844.     inline long double fabs(long double _X)

  845.     {       /* return absolute value */

  846.       return (_L_FUN(fabs)(_L_CAST _X));

  847.     }



  848.     #pragma inline=forced

  849.     inline long double floor(long double _X)

  850.     {       /* return floor */

  851.       return (_L_FUN(floor)(_L_CAST _X));

  852.     }
复制代码



回复

使用道具 举报

ID:76127 发表于 2015-4-18 01:29 | 显示全部楼层
这里是另一个版本
  1.     #pragma inline=forced

  2.     inline long double fmod(long double _X, long double _Y)

  3.     {       /* return modulus */

  4.       return (_L_FUN(fmod)(_L_CAST _X,_L_CAST _Y));

  5.     }



  6.     #pragma inline=forced

  7.     inline long double frexp(long double _X, int *_Y)

  8.     {       /* unpack exponent */

  9.       return (_L_FUN(frexp)(_L_CAST _X, _Y));

  10.     }



  11.     #pragma inline=forced

  12.     inline long double ldexp(long double _X, int _Y)

  13.     {       /* pack exponent */

  14.       return (_L_FUN(ldexp)(_L_CAST _X, _Y));

  15.     }



  16.     #pragma inline=forced

  17.     inline long double log(long double _X)

  18.     {       /* return natural logarithm */

  19.       return (_L_FUN(log)(_L_CAST _X));

  20.     }



  21.     #pragma inline=forced

  22.     inline long double log10(long double _X)

  23.     {       /* return base-10 logarithm */

  24.       return (_L_FUN(log10)(_L_CAST _X));

  25.     }



  26.     #pragma inline=forced

  27.     inline long double modf(long double _X, long double *_Y)

  28.     {       /* unpack fraction */

  29.       return (_L_FUN(modf)(_L_CAST _X, _L_PTRCAST _Y));

  30.     }



  31.     #pragma inline=forced

  32.     inline long double pow(long double _X, long double _Y)

  33.     {       /* raise to power */

  34.       return (_L_FUN(pow)(_L_CAST _X, _L_CAST _Y));

  35.     }



  36.     #pragma inline=forced

  37.     inline long double pow(long double _X, int _Y)

  38.     {       /* raise to integer power */

  39.     #ifdef _LONG_DOUBLE_IS_DOUBLE

  40.       return (long double) pow((double) _X, _Y);

  41.     #else

  42.       unsigned int _N = _Y;

  43.       if (_Y < 0)

  44.         _N = 0 - _N;

  45.      

  46.       for (long double _Z = 1; ; _X *= _X)

  47.       {

  48.         if ((_N & 1) != 0)

  49.           _Z *= _X;

  50.         if ((_N >>= 1) == 0)

  51.           return _Y < 0

  52.             ? (_Z == 0.0L

  53.                ? (long double)HUGE_VAL

  54.                : (long double)(1) / _Z)

  55.             : _Z;

  56.       }

  57.     #endif /* _LONG_DOUBLE_IS_DOUBLE */

  58.     }



  59.     #pragma inline=forced

  60.     inline long double sin(long double _X)

  61.     {       /* return sine */

  62.       return (_L_FUN(sin)(_L_CAST _X));

  63.     }



  64.     #pragma inline=forced

  65.     inline long double sinh(long double _X)

  66.     {       /* return hyperbolic sine */

  67.       return (_L_FUN(sinh)(_L_CAST _X));

  68.     }



  69.     #pragma inline=forced

  70.     inline long double sqrt(long double _X)

  71.     {       /* return square root */

  72.       return (_L_FUN(sqrt)(_L_CAST _X));

  73.     }



  74.     #pragma inline=forced

  75.     inline long double tan(long double _X)

  76.     {       /* return tangent */

  77.       return (_L_FUN(tan)(_L_CAST _X));

  78.     }



  79.     #pragma inline=forced

  80.     inline long double tanh(long double _X)

  81.     {       /* return hyperbolic tangent */

  82.       return (_L_FUN(tanh)(_L_CAST _X));

  83.     }



  84.     #pragma inline=forced

  85.     inline long double acosh(long double _Left)

  86.     {   // return acosh

  87.       return (_F_FUN(acosh)(_L_CAST _Left));

  88.     }



  89.     #pragma inline=forced

  90.     inline long double asinh(long double _Left)

  91.     {   // return asinh

  92.       return (_F_FUN(asinh)(_L_CAST _Left));

  93.     }



  94.     #pragma inline=forced

  95.     inline long double atanh(long double _Left)

  96.     {       // return atanh

  97.       return (_F_FUN(atanh)(_L_CAST _Left));

  98.     }



  99.     #pragma inline=forced

  100.     inline long double cbrt(long double _Left)

  101.     {       // return cbrt

  102.       return (_F_FUN(cbrt)(_L_CAST _Left));

  103.     }



  104.     #pragma inline=forced

  105.     inline long double copysign(long double _Left, long double _Right)

  106.     {       // return copysign

  107.       return (_F_FUN(copysign)(_L_CAST _Left, _L_CAST _Right));

  108.     }



  109.     #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  110.       #pragma inline=forced

  111.       inline long double erf(long double _Left)

  112.       {       // return erf

  113.         return (_F_FUN(erf)(_L_CAST _Left));

  114.       }



  115.       #pragma inline=forced

  116.       inline long double erfc(long double _Left)

  117.       {       // return erfc

  118.         return (_F_FUN(erfc)(_L_CAST _Left));

  119.       }



  120.       #pragma inline=forced

  121.       inline long double expm1(long double _Left)

  122.       {       // return expml

  123.         return (_F_FUN(expm1)(_L_CAST _Left));

  124.       }

  125.     #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */



  126.     #pragma inline=forced

  127.     inline long double exp2(long double _Left)

  128.     {       // return exp2

  129.       return (_F_FUN(exp2)(_L_CAST _Left));

  130.     }



  131.     #pragma inline=forced

  132.     inline long double fdim(long double _Left, long double _Right)

  133.     {       // return fdim

  134.       return (_F_FUN(fdim)(_L_CAST _Left, _L_CAST _Right));

  135.     }



  136.     #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  137.       #pragma inline=forced

  138.       inline long double fma(long double _Left, long double _Right,

  139.                              long double _Addend)

  140.       {       // return fma

  141.         return (_F_FUN(fma)(_L_CAST _Left, _L_CAST _Right, _L_CAST _Addend));

  142.       }

  143.     #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */



  144.     #pragma inline=forced

  145.     inline long double fmax(long double _Left, long double _Right)

  146.     {       // return fmax

  147.       return (_F_FUN(fmax)(_L_CAST _Left, _L_CAST _Right));

  148.     }



  149.     #pragma inline=forced

  150.     inline long double fmin(long double _Left, long double _Right)

  151.     {       // return fmin

  152.       return (_F_FUN(fmin)(_L_CAST _Left, _L_CAST _Right));

  153.     }



  154.     #pragma inline=forced

  155.     inline long double hypot(long double _Left, long double _Right)

  156.     {       // return hypot

  157.       return (_F_FUN(hypot)(_L_CAST _Left, _L_CAST _Right));

  158.     }



  159.     #pragma inline=forced

  160.     inline int ilogb(long double _Left)

  161.     {       // return ilogb

  162.       return (_F_FUN(ilogb)(_L_CAST _Left));

  163.     }



  164.     #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  165.       #pragma inline=forced

  166.       inline long double lgamma(long double _Left)

  167.       {       // return lgamma

  168.         return (_F_FUN(lgamma)(_L_CAST _Left));

  169.       }

  170.     #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */



  171.     #ifdef _LONGLONG

  172.       #pragma language=save

  173.       #pragma language=extended

  174.       #pragma inline=forced

  175.       inline _Longlong llrint(long double _Left)

  176.       {       // return llrint

  177.         return (_F_FUN(llrint)(_L_CAST _Left));

  178.       }



  179.       #pragma inline=forced

  180.       inline _Longlong llround(long double _Left)

  181.       {       // return llround

  182.         return (_F_FUN(llround)(_L_CAST _Left));

  183.       }

  184.       #pragma language=restore

  185.     #endif /* _LONGLONG */



  186.     #pragma inline=forced

  187.     inline long double log1p(long double _Left)

  188.     {       // return loglp

  189.       return (_F_FUN(log1p)(_L_CAST _Left));

  190.     }



  191.     #pragma inline=forced

  192.     inline long double log2(long double _Left)

  193.     {       // return log2

  194.       return (_F_FUN(log2)(_L_CAST _Left));

  195.     }



  196.     #pragma inline=forced

  197.     inline long double logb(long double _Left)

  198.     {       // return logb

  199.       return (_F_FUN(logb)(_L_CAST _Left));

  200.     }



  201.     #pragma inline=forced

  202.     inline long lrint(long double _Left)

  203.     {       // return lrint

  204.       return (_F_FUN(lrint)(_L_CAST _Left));

  205.     }



  206.     #pragma inline=forced

  207.     inline long lround(long double _Left)

  208.     {       // return lround

  209.       return (_F_FUN(lround)(_L_CAST _Left));

  210.     }



  211.     #pragma inline=forced

  212.     inline long double nearbyint(long double _Left)

  213.     {       // return nearbyint

  214.       return (_F_FUN(nearbyint)(_L_CAST _Left));

  215.     }



  216.     #pragma inline=forced

  217.     inline long double nextafter(long double _Left, long double _Right)

  218.     {       // return nextafter

  219.       return (_F_FUN(nextafter)(_L_CAST _Left, _L_CAST _Right));

  220.     }



  221.     #pragma inline=forced

  222.     inline long double nexttoward(long double _Left, long double _Right)

  223.     {       // return nexttoward

  224.       return (_F_FUN(nexttoward)(_L_CAST _Left, _L_CAST _Right));

  225.     }



  226.     #pragma inline=forced

  227.     inline long double remainder(long double _Left, long double _Right)

  228.     {       // return remainder

  229.       return (_F_FUN(remainder)(_L_CAST _Left, _L_CAST _Right));

  230.     }



  231.     #pragma inline=forced

  232.     inline long double remquo(long double _Left, long double _Right,

  233.                               int *_Pval)

  234.     {       // return remquo

  235.       return (_F_FUN(remquo)(_L_CAST _Left, _L_CAST _Right, _Pval));

  236.     }



  237.     #pragma inline=forced

  238.     inline long double rint(long double _Left)

  239.     {       // return rint

  240.       return (_F_FUN(rint)(_L_CAST _Left));

  241.     }



  242.     #pragma inline=forced

  243.     inline long double round(long double _Left)

  244.     {       // return round

  245.       return (_F_FUN(round)(_L_CAST _Left));

  246.     }



  247.     #pragma inline=forced

  248.     inline long double scalbn(long double _Left, int _Right)

  249.     {       // return scalbn

  250.       return (_F_FUN(scalbn)(_L_CAST _Left, _Right));

  251.     }



  252.     #pragma inline=forced

  253.     inline long double scalbln(long double _Left, long _Right)

  254.     {       // return scalbln

  255.       return (_F_FUN(scalbln)(_L_CAST _Left, _Right));

  256.     }



  257.     #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  258.       #pragma inline=forced

  259.       inline long double tgamma(long double _Left)

  260.       {       // return tgamma

  261.         return (_F_FUN(tgamma)(_L_CAST _Left));

  262.       }

  263.     #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */



  264.     #pragma inline=forced

  265.     inline long double trunc(long double _Left)

  266.     {       // return trunc

  267.       return (_F_FUN(trunc)(_L_CAST _Left));

  268.     }



  269.   _END_EXTERN_CPP

  270. #endif /* defined(__cplusplus) && !defined(_NO_DEFINITIONS_IN_HEADER_FILES) */





  271. #if !defined(_NO_DEFINITIONS_IN_HEADER_FILES) && \

  272.     !__AEABI_PORTABILITY_INTERNAL_LEVEL

  273.                 /* double INLINES, FOR C and C++ */



  274. /* C inline definitions */



  275.   #pragma inline=no_body

  276.   double cos(double _X)

  277.   {       /* return cosine */

  278.     return _D_FNAME(Sin)(_X, 1);

  279.   }



  280.   #pragma inline=no_body

  281.   double cosh(double _X)

  282.   {       /* return hyperbolic cosine */

  283.     return _D_FNAME(Cosh)(_X, 1);

  284.   }



  285.   #pragma inline=no_body

  286.   double log(double _X)

  287.   {       /* return natural logarithm */

  288.     return _D_FNAME(Log)(_X, 0);

  289.   }



  290.   #pragma inline=no_body

  291.   double log10(double _X)

  292.   {       /* return base-10 logarithm */

  293.     return _D_FNAME(Log)(_X, 1);

  294.   }



  295.   #pragma inline=no_body

  296.   double sin(double _X)

  297.   {       /* return sine */

  298.     return _D_FNAME(Sin)(_X, 0);

  299.   }



  300.   #pragma inline=no_body

  301.   double sinh(double _X)

  302.   {       /* return hyperbolic sine */

  303.     return _D_FNAME(Sinh)(_X, 1);

  304.   }





  305.                 /* double INLINES, FOR C99 and C++ */

  306.   #if _DLIB_ADD_C99_SYMBOLS

  307.     #pragma inline=no_body

  308.     double log2(double _Left)

  309.     {   /* return base-2 logarithm */

  310.       return (_D_FNAME(Log)(_Left, -1));

  311.     }



  312.     #pragma inline=no_body

  313.     double nan(const char *s)

  314.     {   /* construct a NaN */

  315.       return (0.Nan);

  316.     }



  317.     #pragma inline=no_body

  318.     double nextafter(double x, double y)

  319.     {   /* compute next value after x going toward y */

  320.       return (nexttoward(x, (long double)y));

  321.     }



  322.     #pragma inline=no_body

  323.     double remainder(double x, double y)

  324.     {   /* compute remainder of x/y */

  325.       return (remquo(x, y, 0));

  326.     }



  327.   #endif /* _DLIB_ADD_C99_SYMBOLS */



  328.                 /* float INLINES, FOR C and C++ */

  329.   #if _DLIB_ADD_C99_SYMBOLS

  330.     #pragma inline=no_body

  331.     float cosf(float _X)

  332.     {       /* return cosine */

  333.       return (_F_FNAME(Sin)(_X, 1));

  334.     }



  335.     #pragma inline=no_body

  336.     float coshf(float _X)

  337.     {       /* return hyperbolic cosine */

  338.       return (_F_FNAME(Cosh)(_X, _F_CAST 1.0F));

  339.     }



  340.     #pragma inline=no_body

  341.     float logf(float _X)

  342.     {       /* return natural logarithm */

  343.       return (_F_FNAME(Log)(_X, 0));

  344.     }



  345.     #pragma inline=no_body

  346.     float log2f(float _Left)

  347.     {       /* return base-2 logarithm */

  348.       return (_F_FNAME(Log)(_Left, -1));

  349.     }



  350.     #pragma inline=no_body

  351.     float log10f(float _X)

  352.     {       /* return base-10 logarithm */

  353.       return (_F_FNAME(Log)(_X, 1));

  354.     }



  355.     #pragma inline=no_body

  356.     float nanf(const char *s)

  357.     {   /* construct a NaN */

  358.       return (0.Nan);

  359.     }



  360.     #pragma inline=no_body

  361.     float nextafterf(float x, float y)

  362.     {   /* compute next value after x going toward y */

  363.       return (nexttowardf(x, (long double)y));

  364.     }



  365.     #pragma inline=no_body

  366.     float remainderf(float x, float y)

  367.     {   /* compute remainder of x/y */

  368.       return (remquof(x, y, 0));

  369.     }



  370.     #pragma inline=no_body

  371.     float sinf(float _X)

  372.     {       /* return sine */

  373.       return (_F_FNAME(Sin)(_X, 0));

  374.     }



  375.     #pragma inline=no_body

  376.     float sinhf(float _X)

  377.     {       /* return hyperbolic sine */

  378.       return (_F_FNAME(Sinh)(_X, _F_CAST 1.0F));

  379.     }

  380.   #endif /* _DLIB_ADD_C99_SYMBOLS */



  381.                 /* long double INLINES, FOR C and C++ */

  382.   #if _DLIB_ADD_C99_SYMBOLS

  383.     #pragma inline=no_body

  384.     long double cosl(long double _X)

  385.     {       /* return cosine */

  386.       return (_L_FNAME(Sin)(_X, 1));

  387.     }



  388.     #pragma inline=no_body

  389.     long double coshl(long double _X)

  390.     {       /* return hyperbolic cosine */

  391.       return (_L_FNAME(Cosh)(_X, _L_CAST 1.0L));

  392.     }



  393.     #pragma inline=no_body

  394.     long double logl(long double _X)

  395.     {       /* return natural logarithm */

  396.       return (_L_FNAME(Log)(_X, 0));

  397.     }



  398.     #pragma inline=no_body

  399.     long double log2l(long double _Left)

  400.     {       /* return base-2 logarithm */

  401.       return (_L_FNAME(Log)(_Left, -1));

  402.     }



  403.     #pragma inline=no_body

  404.     long double log10l(long double _X)

  405.     {       /* return base-10 logarithm */

  406.       return (_L_FNAME(Log)(_X, 1));

  407.     }



  408.     #pragma inline=no_body

  409.     long double nanl(const char *s)

  410.     {   /* construct a NaN */

  411.       return (0.Nan);

  412.     }



  413.     #pragma inline=no_body

  414.     long double nextafterl(long double x, long double y)

  415.     {   /* compute next value after x going toward y */

  416.       return (nexttowardl(x, y));

  417.     }



  418.     #pragma inline=no_body

  419.     long double remainderl(long double x, long double y)

  420.     {   /* compute remainder of x/y */

  421.       return (remquol(x, y, 0));

  422.     }



  423.     #pragma inline=no_body

  424.     long double sinl(long double _X)

  425.     {       /* return sine */

  426.       return (_L_FNAME(Sin)(_X, 0));

  427.     }



  428.     #pragma inline=no_body

  429.     long double sinhl(long double _X)

  430.     {       /* return hyperbolic sine */

  431.       return (_L_FNAME(Sinh)(_X, _L_CAST 1.0L));

  432.     }

  433.   #endif /* _DLIB_ADD_C99_SYMBOLS */



  434. #endif /* !defined(_NO_DEFINITIONS_IN_HEADER_FILES) && \

  435.           !__AEABI_PORTABILITY_INTERNAL_LEVEL */



  436. #if _DLIB_ADD_C99_SYMBOLS



  437.   /* C99 floating point functionality */



  438.   #define FP_INFINITE  _INFCODE

  439.   #define FP_NAN       _NANCODE

  440.   #define FP_NORMAL    _FINITE

  441.   #define FP_SUBNORMAL _DENORM

  442.   #define FP_ZERO      0



  443.   #define _FP_ILOGBNAN __SIGNED_INT_MAX__

  444.   #define _FP_ILOGB0   __SIGNED_INT_MIN__



  445.   #define MATH_ERRNO 1

  446.   #define MATH_ERREXCEPT 2

  447.   #ifndef math_errhandling

  448.     #define math_errhandling MATH_ERRNO

  449.   #endif



  450.   #if _DLIB_FAST_FMA

  451.     #define FP_FAST_FMA  1

  452.     #define FP_FAST_FMAF 1

  453.     #define FP_FAST_FMAL 1

  454.   #endif /* _DLIB_FAST_FMA */



  455.   #define FP_ILOGB0     _FP_ILOGB0

  456.   #define FP_ILOGBNAN   _FP_ILOGBNAN



  457.   /* For generic C99 compare operations */

  458.   #define _FP_LT 1

  459.   #define _FP_EQ 2

  460.   #define _FP_GT 4



  461.   _C_LIB_DECL

  462.   __EFF_NS    __ATTRIBUTES int _D_FNAME(Dcomp)(double, double);

  463.   #ifndef _FLOAT_IS_DOUBLE

  464.     __EFF_NS    __ATTRIBUTES int _F_FNAME(Dcomp)(float, float);

  465.   #endif

  466.   #ifndef _LONG_DOUBLE_IS_DOUBLE

  467.     __EFF_NS    __ATTRIBUTES int _L_FNAME(Dcomp)(long double, long double);

  468.   #endif

  469.   _END_C_LIB_DECL



  470.   #if _HAS_GENERIC_TEMPLATES

  471.     _EXTERN_CPP



  472.     // TEMPLATE FUNCTION _FPCOMP

  473.     inline int _FPCOMP(float _Left, float _Right)

  474.     {   // compare _Left and _Right

  475.       return (_F_FNAME(Dcomp)(_Left, _Right));

  476.     }



  477.     inline int _FPCOMP(double _Left, double _Right)

  478.     {   // compare _Left and _Right

  479.       return (_D_FNAME(Dcomp)(_Left, _Right));

  480.     }



  481.     inline int _FPCOMP(long double _Left, long double _Right)

  482.     {       // compare _Left and _Right

  483.       return (_L_FNAME(Dcomp)(_Left, _Right));

  484.     }



  485.     template<class _T1, class _T2> inline

  486.     int _FPCOMP(_T1 _Left, _T2 _Right)

  487.     {       // compare _Left and _Right

  488.       typedef typename _Combined_type<

  489.         float,

  490.         typename _Real_widened<

  491.           typename _Real_type<_T1>::_Type,

  492.           typename _Real_type<_T2>::_Type>::_Type>::_Type _Tw;

  493.       return (_FPCOMP((_Tw)_Left, (_Tw)_Right));

  494.     }



  495.     // FUNCTION fpclassify

  496.     inline int fpclassify(float _Left)

  497.     {       // classify argument

  498.       return (_F_FNAME(Dtest)(_Left));

  499.     }



  500.     inline int fpclassify(double _Left)

  501.     {       // classify argument

  502.       return (_D_FNAME(Dtest)(_Left));

  503.     }



  504.     inline int fpclassify(long double _Left)

  505.     {       // classify argument

  506.       return (_L_FNAME(Dtest)(_Left));

  507.     }



  508.     // FUNCTION signbit

  509.     inline bool signbit(float _Left)

  510.     {       // test sign bit

  511.       return (_F_FNAME(Dsign)(_Left) != 0);

  512.     }



  513.     inline bool signbit(double _Left)

  514.     {       // test sign bit

  515.       return (_D_FNAME(Dsign)(_Left) != 0);

  516.     }



  517.     inline bool signbit(long double _Left)

  518.     {       // test sign bit

  519.       return (_L_FNAME(Dsign)(_Left) != 0);

  520.     }



  521.     template<class _Ty> inline

  522.     bool isfinite(_Ty _Left)

  523.     {       // test for finite

  524.       return (fpclassify(_Left) <= 0);

  525.     }



  526.     template<class _Ty> inline

  527.     bool isinf(_Ty _Left)

  528.     {       // test for infinite

  529.       return (fpclassify(_Left) == FP_INFINITE);

  530.     }



  531.     template<class _Ty> inline

  532.     bool isnan(_Ty _Left)

  533.     {       // test for NaN

  534.       return (fpclassify(_Left) == FP_NAN);

  535.     }



  536.     template<class _Ty> inline

  537.     bool isnormal(_Ty _Left)

  538.     {       // test for normal

  539.       return (fpclassify(_Left) == FP_NORMAL);

  540.     }



  541.     template<class _Ty1, class _Ty2> inline

  542.     bool isgreater(_Ty1 _Left, _Ty2 _Right)

  543.     {       // test for _Left > _Right

  544.       return ((_FPCOMP(_Left, _Right) & _FP_GT) != 0);

  545.     }



  546.     template<class _Ty1, class _Ty2> inline

  547.     bool isgreaterequal(_Ty1 _Left, _Ty2 _Right)

  548.     {       // test for _Left >= _Right

  549.       return ((_FPCOMP(_Left, _Right) & (_FP_EQ | _FP_GT)) != 0);

  550.     }



  551.     template<class _Ty1, class _Ty2> inline

  552.     bool isless(_Ty1 _Left, _Ty2 _Right)

  553.     {       // test for _Left < _Right

  554.       return ((_FPCOMP(_Left, _Right) & _FP_LT) != 0);

  555.     }



  556.     template<class _Ty1, class _Ty2> inline

  557.     bool islessequal(_Ty1 _Left, _Ty2 _Right)

  558.     {       // test for _Left <= _Right

  559.       return ((_FPCOMP(_Left, _Right) & (_FP_LT | _FP_EQ)) != 0);

  560.     }



  561.     template<class _Ty1, class _Ty2> inline

  562.     bool islessgreater(_Ty1 _Left, _Ty2 _Right)

  563.     {       // test for _Left != _Right

  564.       return ((_FPCOMP(_Left, _Right) & (_FP_LT | _FP_GT)) != 0);

  565.     }



  566.     template<class _Ty1, class _Ty2> inline

  567.     bool isunordered(_Ty1 _Left, _Ty2 _Right)

  568.     {       // test for _Left unorderd w.r.t. _Right

  569.       return (_FPCOMP(_Left, _Right) == 0);

  570.     }



  571.     #define fpclassify(x)                 (_CSTD fpclassify(x))

  572.     #define signbit(x)                    (_CSTD signbit(x))

  573.     #define isfinite(x)                   (_CSTD isfinite(x))

  574.     #define isinf(x)                      (_CSTD isinf(x))

  575.     #define isnan(x)                      (_CSTD isnan(x))

  576.     #define isnormal(x)                   (_CSTD isnormal(x))

  577.     #define isgreater(x, y)               (_CSTD isgreater(x, y))

  578.     #define isgreaterequal(x, y)          (_CSTD isgreaterequal(x, y))

  579.     #define isless(x, y)                  (_CSTD isless(x, y))

  580.     #define islessequal(x, y)             (_CSTD islessequal(x, y))

  581.     #define islessgreater(x, y)           (_CSTD islessgreater(x, y))

  582.     #define isunordered(x, y)             (_CSTD isunordered(x, y))



  583.     _END_EXTERN_CPP



  584.   #else /* _HAS_GENERIC_TEMPLATES */



  585.     #define _CARGI(x, fd, ff, fl) __c99_generic(x,,, fd, ff, fl,,,)(x)

  586.     #define _CARG2I(x, y, fd, ff, fl) __c99_generic(x, y,, fd, ff, fl,,,)(x, y)



  587.     #define _FPCOMP(x, y) _CARG2I(x, y, _D_FNAME(Dcomp), \

  588.                                         _F_FNAME(Dcomp), \

  589.                                         _L_FNAME(Dcomp))

  590.     #define fpclassify(x) _CARGI(x, _D_FNAME(Dtest), \

  591.                                     _F_FNAME(Dtest), \

  592.                                     _L_FNAME(Dtest))

  593.     #define signbit(x)    _CARGI(x, _D_FNAME(Dsign), \

  594.                                     _F_FNAME(Dsign), \

  595.                                     _L_FNAME(Dsign))



  596.     #define isfinite(x)   (fpclassify(x) <= 0)

  597.     #define isinf(x)      (fpclassify(x) == FP_INFINITE)

  598.     #define isnan(x)      (fpclassify(x) == FP_NAN)

  599.     #define isnormal(x)   (fpclassify(x) == FP_NORMAL)



  600.     #define isgreater(x, y)       ((_FPCOMP(x, y) & _FP_GT) != 0)

  601.     #define isgreaterequal(x, y)  ((_FPCOMP(x, y) & (_FP_EQ | _FP_GT)) != 0)

  602.     #define isless(x, y)          ((_FPCOMP(x, y) & _FP_LT) != 0)

  603.     #define islessequal(x, y)     ((_FPCOMP(x, y) & (_FP_LT | _FP_EQ)) != 0)

  604.     #define islessgreater(x, y)   ((_FPCOMP(x, y) & (_FP_LT | _FP_GT)) != 0)

  605.     #define isunordered(x, y)      (_FPCOMP(x, y) == 0)



  606.   #endif /* _HAS_GENERIC_TEMPLATES */



  607.   #pragma inline=no_body

  608.   int _D_FNAME(Dcomp)(double x, double y)

  609.   {

  610.     if (isnan(x) || isnan(y))

  611.     {

  612.       return 0;

  613.     }

  614.     if (x > y)

  615.     {

  616.       return _FP_GT;

  617.     }

  618.     if (x < y)

  619.     {

  620.       return _FP_LT;

  621.     }

  622.     if (x == y)

  623.     {

  624.       return _FP_EQ;

  625.     }

  626.     return 0;

  627.   }



  628.   #ifndef _FLOAT_IS_DOUBLE

  629.     #pragma inline=no_body

  630.     int _F_FNAME(Dcomp)(float x, float y)

  631.     {

  632.       if (isnan(x) || isnan(y))

  633.       {

  634.         return 0;

  635.       }

  636.       if (x > y)

  637.       {

  638.         return _FP_GT;

  639.       }

  640.       if (x < y)

  641.       {

  642.         return _FP_LT;

  643.       }

  644.       if (x == y)

  645.       {

  646.         return _FP_EQ;

  647.       }

  648.       return 0;

  649.     }

  650.   #endif /* _FLOAT_IS_DOUBLE */



  651.   #ifndef _LONG_DOUBLE_IS_DOUBLE

  652.     #pragma inline=no_body

  653.     int _L_FNAME(Dcomp)(long double x, long double y)

  654.     {

  655.       if (isnan(x) || isnan(y))

  656.       {

  657.         return 0;

  658.       }

  659.       if (x > y)

  660.       {

  661.         return _FP_GT;

  662.       }

  663.       if (x < y)

  664.       {

  665.         return _FP_LT;

  666.       }

  667.       if (x == y)

  668.       {

  669.         return _FP_EQ;

  670.       }

  671.       return 0;

  672.     }

  673.   #endif /* _LONG_DOUBLE_IS_DOUBLE */



  674. #endif /* _DLIB_ADD_C99_SYMBOLS */

  675. _C_STD_END



  676.                 /* GENERIC TEMPLATES */

  677. #if _HAS_GENERIC_TEMPLATES

  678.   _EXTERN_CPP

  679.   _C_STD_BEGIN

  680.         _TGEN_RC(acos)  // real or complex generic overloads

  681.         _TGEN_RC(acosh)

  682.         _TGEN_RC(asin)

  683.         _TGEN_RC(asinh)

  684.         _TGEN_RC(atan)

  685.         _TGEN_RC(atanh)

  686.         _TGEN_RC(cos)

  687.         _TGEN_RC(cosh)

  688.         _TGEN_RC(exp)

  689.         _TGEN_RC0(fabs)

  690.         _TGEN_RC(log)

  691.         _TGEN_RC(log10)

  692.         _TGEN_RC2(pow)

  693.         _TGEN_RC(sin)

  694.         _TGEN_RC(sinh)

  695.         _TGEN_RC(sqrt)

  696.         _TGEN_RC(tan)

  697.         _TGEN_RC(tanh)



  698.         _TGEN_R2(atan2) // real generic overloads

  699.         _TGEN_R(cbrt)

  700.         _TGEN_R(ceil)

  701.         _TGEN_R2(copysign)

  702.         #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  703.           _TGEN_R(erf)

  704.           _TGEN_R(erfc)

  705.           _TGEN_R(expm1)

  706.         #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */

  707.         _TGEN_R(exp2)

  708.         _TGEN_R2(fdim)

  709.         _TGEN_R(floor)

  710.         #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  711.           _TGEN_R3(fma)

  712.         #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */

  713.         _TGEN_R2(fmax)

  714.         _TGEN_R2(fmin)

  715.         _TGEN_R2(fmod)

  716.         _TGEN_RX(frexp, int *)

  717.         _TGEN_R2(hypot)

  718.         _TGEN_RI(ilogb, int)

  719.         _TGEN_RX(ldexp, int)

  720.         #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  721.           _TGEN_R(lgamma)

  722.         #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */

  723.         #ifdef _LONGLONG

  724.           #pragma language=save

  725.           #pragma language=extended

  726.           _TGEN_RI(llrint, _Longlong)

  727.           _TGEN_RI(llround, _Longlong)

  728.           #pragma language=restore

  729.         #endif /* _LONGLONG */

  730.         _TGEN_R(log1p)

  731.         _TGEN_R(log2)

  732.         _TGEN_R(logb)

  733.         _TGEN_RI(lrint, long)

  734.         _TGEN_RI(lround, long)

  735.         _TGEN_R(nearbyint)

  736.         _TGEN_R2(nextafter)

  737.         _TGEN_RX(nexttoward, long double)

  738.         _TGEN_R2(remainder)

  739.         _TGEN_R2X(remquo, int *)

  740.         _TGEN_R(rint)

  741.         _TGEN_R(round)

  742.         _TGEN_RX(scalbln, long)

  743.         _TGEN_RX(scalbn, int)

  744.         #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  745.           _TGEN_R(tgamma)

  746.         #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */

  747.         _TGEN_R(trunc)

  748.   _C_STD_END

  749.   _END_EXTERN_CPP

  750. #endif /* _HAS_GENERIC_TEMPLATES */



  751. #endif /* _MATH */





  752. #if defined(_STD_USING) && defined(__cplusplus)

  753.   using _CSTD abs;



  754.   using _CSTD acos; using _CSTD asin;

  755.   using _CSTD atan; using _CSTD atan2; using _CSTD ceil;

  756.   using _CSTD cos; using _CSTD cosh; using _CSTD exp;

  757.   using _CSTD fabs; using _CSTD floor; using _CSTD fmod;

  758.   using _CSTD frexp; using _CSTD ldexp; using _CSTD log;

  759.   using _CSTD log10; using _CSTD modf; using _CSTD pow;

  760.   using _CSTD sin; using _CSTD sinh; using _CSTD sqrt;

  761.   using _CSTD tan; using _CSTD tanh;



  762.   #if _DLIB_ADD_C99_SYMBOLS

  763.     using _CSTD acosf; using _CSTD asinf;

  764.     using _CSTD atanf; using _CSTD atan2f; using _CSTD ceilf;

  765.     using _CSTD cosf; using _CSTD coshf; using _CSTD expf;

  766.     using _CSTD fabsf; using _CSTD floorf; using _CSTD fmodf;

  767.     using _CSTD frexpf; using _CSTD ldexpf; using _CSTD logf;

  768.     using _CSTD log10f; using _CSTD modff; using _CSTD powf;

  769.     using _CSTD sinf; using _CSTD sinhf; using _CSTD sqrtf;

  770.     using _CSTD tanf; using _CSTD tanhf;



  771.     using _CSTD acosl; using _CSTD asinl;

  772.     using _CSTD atanl; using _CSTD atan2l; using _CSTD ceill;

  773.     using _CSTD cosl; using _CSTD coshl; using _CSTD expl;

  774.     using _CSTD fabsl; using _CSTD floorl; using _CSTD fmodl;

  775.     using _CSTD frexpl; using _CSTD ldexpl; using _CSTD logl;

  776.     using _CSTD log10l; using _CSTD modfl; using _CSTD powl;

  777.     using _CSTD sinl; using _CSTD sinhl; using _CSTD sqrtl;

  778.     using _CSTD tanl; using _CSTD tanhl;



  779.     using _CSTD acosh; using _CSTD asinh; using _CSTD atanh;

  780.     using _CSTD cbrt; using _CSTD exp2;

  781.     using _CSTD hypot; using _CSTD ilogb;

  782.     using _CSTD log1p; using _CSTD log2; using _CSTD logb;

  783.     #ifdef _LONGLONG

  784.       using _CSTD llrint; using _CSTD llround;

  785.     #endif /* _LONGLONG */

  786.     using _CSTD lrint; using _CSTD nearbyint;

  787.     using _CSTD rint; using _CSTD lround;

  788.     using _CSTD fdim; using _CSTD fmax; using _CSTD fmin;

  789.     using _CSTD round; using _CSTD trunc;

  790.     using _CSTD remainder; using _CSTD remquo;

  791.     using _CSTD copysign; using _CSTD nan; using _CSTD nextafter;

  792.     using _CSTD scalbn; using _CSTD scalbln; using _CSTD nexttoward;



  793.     using _CSTD acoshf; using _CSTD asinhf; using _CSTD atanhf;

  794.     using _CSTD cbrtf; using _CSTD exp2f;

  795.     using _CSTD hypotf; using _CSTD ilogbf;

  796.     using _CSTD log1pf; using _CSTD log2f; using _CSTD logbf;

  797.     #ifdef _LONGLONG

  798.       using _CSTD llrintf; using _CSTD llroundf;

  799.     #endif /* _LONGLONG*/

  800.     using _CSTD lrintf; using _CSTD nearbyintf;

  801.     using _CSTD rintf; using _CSTD lroundf;

  802.     using _CSTD fdimf; using _CSTD fmaxf; using _CSTD fminf;

  803.     using _CSTD roundf; using _CSTD truncf;

  804.     using _CSTD remainderf; using _CSTD remquof;

  805.     using _CSTD copysignf; using _CSTD nanf;

  806.     using _CSTD nextafterf; using _CSTD scalbnf; using _CSTD scalblnf;

  807.     using _CSTD nexttowardf;



  808.     using _CSTD acoshl; using _CSTD asinhl; using _CSTD atanhl;

  809.     using _CSTD cbrtl; using _CSTD exp2l;

  810.     using _CSTD hypotl; using _CSTD ilogbl;

  811.     using _CSTD log1pl; using _CSTD log2l; using _CSTD logbl;

  812.     #ifdef _LONGLONG

  813.       using _CSTD llrintl; using _CSTD llroundl;

  814.     #endif /* _LONGLONG */

  815.     using _CSTD lrintl; using _CSTD nearbyintl;

  816.     using _CSTD rintl; using _CSTD lroundl;

  817.     using _CSTD fdiml; using _CSTD fmaxl; using _CSTD fminl;

  818.     using _CSTD roundl; using _CSTD truncl;

  819.     using _CSTD remainderl; using _CSTD remquol;

  820.     using _CSTD copysignl; using _CSTD nanl;

  821.     using _CSTD nextafterl; using _CSTD scalbnl; using _CSTD scalblnl;

  822.     using _CSTD nexttowardl;



  823.     using _CSTD float_t; using _CSTD double_t;



  824.     #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH

  825.       using _CSTD erf; using _CSTD erfc;

  826.       using _CSTD erff; using _CSTD erfcf;

  827.       using _CSTD erfl; using _CSTD erfcl;

  828.       using _CSTD expm1; using _CSTD expm1f; using _CSTD expm1l;

  829.       using _CSTD lgamma; using _CSTD lgammaf; using _CSTD lgammal;

  830.       using _CSTD tgamma; using _CSTD tgammaf; using _CSTD tgammal;

  831.       using _CSTD fma; using _CSTD fmaf; using _CSTD fmal;

  832.     #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH */

  833.     #if _HAS_GENERIC_TEMPLATES

  834.       using _CSTD _FPCOMP; using _CSTD fpclassify;

  835.       using _CSTD signbit; using _CSTD isfinite; using _CSTD isinf;

  836.       using _CSTD isnan; using _CSTD isnormal;

  837.       using _CSTD isgreater; using _CSTD isgreaterequal;

  838.       using _CSTD isless; using _CSTD islessequal; using _CSTD islessgreater;

  839.       using _CSTD isunordered;

  840.     #endif /* _HAS_GENERIC_TEMPLATES */

  841.   #endif /* _DLIB_ADD_C99_SYMBOLS */



  842.   #if _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH && \

  843.       !defined(_DLIB_DO_NOT_ADD_ACCURATE_FUNCTIONS)

  844.     using _CSTD __iar_tan_accurate; using _CSTD __iar_cos_accurate;

  845.     using _CSTD __iar_sin_accurate; using _CSTD __iar_pow_accurate;

  846.     using _CSTD __iar_Sin_accurate; using _CSTD __iar_Pow_accurate;

  847.     #if _DLIB_ADD_C99_SYMBOLS

  848.       using _CSTD __iar_tan_accuratef; using _CSTD __iar_cos_accuratef;

  849.       using _CSTD __iar_sin_accuratef; using _CSTD __iar_pow_accuratef;

  850.       using _CSTD __iar_Sin_accuratef; using _CSTD __iar_Pow_accuratef;

  851.       using _CSTD __iar_tan_accuratel; using _CSTD __iar_cos_accuratel;

  852.       using _CSTD __iar_sin_accuratel; using _CSTD __iar_pow_accuratel;

  853.       using _CSTD __iar_Sin_accuratel; using _CSTD __iar_Pow_accuratel;

  854.     #endif /* _DLIB_ADD_C99_SYMBOLS */

  855.   #endif /* _DLIB_ALLOW_LARGE_CONSTANT_TABLES_FOR_MATH &&

  856.             !defined(_DLIB_DO_NOT_ADD_ACCURATE_FUNCTIONS) */



  857.   #ifndef _DLIB_DO_NOT_ADD_SMALL_FUNCTIONS

  858.     using _CSTD __iar_cos_small; using _CSTD __iar_exp_small;

  859.     using _CSTD __iar_log_small; using _CSTD __iar_log10_small;

  860.     using _CSTD __iar_pow_small; using _CSTD __iar_sin_small;

  861.     using _CSTD __iar_tan_small;

  862.     #if _DLIB_ADD_C99_SYMBOLS

  863.       using _CSTD __iar_cos_smallf; using _CSTD __iar_exp_smallf;

  864.       using _CSTD __iar_log_smallf; using _CSTD __iar_log10_smallf;

  865.       using _CSTD __iar_pow_smallf; using _CSTD __iar_sin_smallf;

  866.       using _CSTD __iar_tan_smallf;



  867.       using _CSTD __iar_cos_smalll; using _CSTD __iar_exp_smalll;

  868.       using _CSTD __iar_log_smalll; using _CSTD __iar_log10_smalll;

  869.       using _CSTD __iar_pow_smalll; using _CSTD __iar_sin_smalll;

  870.       using _CSTD __iar_tan_smalll;

  871.     #endif /* _DLIB_ADD_C99_SYMBOLS */

  872.   #endif /* _DLIB_DO_NOT_ADD_SMALL_FUNCTIONS */



  873.   using _CSTD _D_FNAME(Dcomp);

  874.   using _CSTD _F_FNAME(Dcomp);

  875.   using _CSTD _L_FNAME(Dcomp);



  876.   #if __AEABI_PORTABILITY_INTERNAL_LEVEL

  877.     using _CSTD __aeabi_HUGE_VAL;

  878.     #if _DLIB_ADD_C99_SYMBOLS

  879.       using _CSTD __aeabi_HUGE_VALF;

  880.       using _CSTD __aeabi_HUGE_VALL;

  881.       using _CSTD __aeabi_INFINITY;

  882.       using _CSTD __aeabi_NAN;

  883.     #endif /* _DLIB_ADD_C99_SYMBOLS */

  884.   #endif



  885. #endif /* defined(_STD_USING) && defined(__cplusplus) */



  886. /*

  887. * Copyright (c) 1992-2009 by P.J. Plauger.  ALL RIGHTS RESERVED.

  888. * Consult your license regarding permissions and restrictions.

  889. V5.04:0576 */
复制代码
回复

使用道具 举报

ID:288685 发表于 2018-3-7 14:31 | 显示全部楼层
楼主好人
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表