Annotation of gcc/math-convex.h, revision 1.1

1.1     ! root        1: #ifndef __HAVE_MATH_CONVEX__
        !             2: #define __HAVE_MATH_CONVEX__
        !             3: 
        !             4: #define HUGE   8.98846567431157854e+307        /* max double in native mode */
        !             5: 
        !             6: #define HUGE_VAL 8.98846567431157854e+307
        !             7: 
        !             8: #define M_E            2.71828182845904523536
        !             9: #define M_LN10         2.30258509299404568402
        !            10: #define M_LN2          0.69314718055994530942
        !            11: #define M_LOG10E       0.43429448190325182765
        !            12: #define M_LOG2E                1.44269504088896340736
        !            13: #define M_PI           3.14159265358979323846
        !            14: #define M_PI_2         1.57079632679489661923
        !            15: #define M_PI_4         0.78539816339744830962
        !            16: #define M_SQRT1_2      0.70710678118654752440
        !            17: #define M_SQRT2                1.41421356237309504880
        !            18: #define M_1_PI         0.31830988618379067154
        !            19: #define M_2_PI         0.63661977236758134308
        !            20: #define M_2_SQRTPI     1.12837916709551257390
        !            21: 
        !            22: extern __const__ double acos (double);
        !            23: extern __const__ double asin (double);
        !            24: extern __const__ double atan (double);
        !            25: extern __const__ double atan2 (double, double);
        !            26: extern double atof (__const__ char *);
        !            27: extern __const__ double cabs ();
        !            28: extern __const__ double ceil (double);
        !            29: extern __const__ double cos (double);
        !            30: extern __const__ double cosh (double);
        !            31: extern __const__ double dcvtid (double);
        !            32: extern __const__ double exp (double);
        !            33: extern __const__ double fabs (double);
        !            34: extern __const__ double floor (double);
        !            35: extern double frexp (double, int *);
        !            36: extern __const__ double gamma (double);
        !            37: extern __const__ double hypot (double, double);
        !            38: extern __const__ double idcvtd (double);
        !            39: extern __const__ double ircvtr (double);
        !            40: extern __const__ double j0 (double);
        !            41: extern __const__ double j1 (double);
        !            42: extern __const__ double jn (int, double);
        !            43: extern __const__ double ldexp (double, int);
        !            44: extern __const__ double log (double);
        !            45: extern __const__ double log10 (double);
        !            46: extern __const__ double fmod (double, double);
        !            47: extern double modf (double, double *);
        !            48: extern __const__ double pow (double, double);
        !            49: extern __const__ double rcvtir (double);
        !            50: extern __const__ double sacos (double);
        !            51: extern __const__ double sasin (double);
        !            52: extern __const__ double satan (double);
        !            53: extern __const__ double satan2 (double);
        !            54: extern __const__ double scabs ();
        !            55: extern __const__ double scos (double);
        !            56: extern __const__ double scosh (double);
        !            57: extern __const__ double sexp (double);
        !            58: extern __const__ double sfabs (double);
        !            59: extern __const__ double shypot (double, double);
        !            60: extern __const__ double sin (double);
        !            61: extern __const__ double sinh (double);
        !            62: extern __const__ double slog (double);
        !            63: extern __const__ double slog10 (double);
        !            64: extern __const__ double spow (double);
        !            65: extern __const__ double sqrt (double);
        !            66: extern __const__ double ssin (double);
        !            67: extern __const__ double ssinh (double);
        !            68: extern __const__ double ssqrt (double);
        !            69: extern __const__ double stan (double);
        !            70: extern __const__ double stanh (double);
        !            71: extern __const__ double tan (double);
        !            72: extern __const__ double tanh (double);
        !            73: extern __const__ double y0 (double);
        !            74: extern __const__ double y1 (double);
        !            75: extern __const__ double yn (int, double);
        !            76: extern __const__ long int ipow (int, int);
        !            77: extern __const__ long long int lpow (long long int, long long int);
        !            78: 
        !            79: #define fabs(x)                 __builtin_fabs(x)
        !            80: 
        !            81: #ifdef __convex__
        !            82: 
        !            83: #define frexp(x,y)     __inline_frexp(x,y)
        !            84: #define ldexp(x,y)     __inline_ldexp(x,y)
        !            85: 
        !            86: #ifdef __convex_c2__
        !            87: 
        !            88: #define ceil(x)                __inline_ceil (x)
        !            89: #define cos(x)         __inline_cos (x)
        !            90: #define exp(x)         __inline_exp (x)
        !            91: #define floor(x)       __inline_floor (x)
        !            92: #define log(x)         __inline_log (x)
        !            93: #define log10(x)       __inline_log10 (x)
        !            94: #define modf(x,y)      __inline_modf ((x), (y))
        !            95: #define sin(x)         __inline_sin (x)
        !            96: #define sqrt(x)                __inline_sqrt (x)
        !            97: 
        !            98: #endif __convex_c2__
        !            99: 
        !           100: __inline__ static __const__ double __inline_ceil (double x)
        !           101: {
        !           102:   double z;
        !           103:   __asm__ ("frint.d %1,%0" : "=d" (z) : "d" (x));
        !           104:   if (z < x) z += 1.0;
        !           105:   return z;
        !           106: }
        !           107: 
        !           108: __inline__ static __const__ double __inline_cos (double x)
        !           109: {
        !           110:   double z;
        !           111:   __asm__ ("cos.d %0" : "=d" (z) : "0" (x));
        !           112:   return z;
        !           113: }
        !           114: 
        !           115: __inline__ static __const__ double __inline_exp (double x)
        !           116: {
        !           117:   double z;
        !           118:   __asm__ ("exp.d %0" : "=d" (z) : "0" (x));
        !           119:   return z;
        !           120: }
        !           121: 
        !           122: __inline__ static __const__ double __inline_floor (double x)
        !           123: {
        !           124:   double z;
        !           125:   __asm__ ("frint.d %1,%0" : "=d" (z) : "d" (x));
        !           126:   if (z > x) z -= 1.0;
        !           127:   return z;
        !           128: }
        !           129: 
        !           130: __inline__ static __const__ double __inline_frexp (double x, int *np)
        !           131: {
        !           132:   union u {double d; unsigned long long ll;} u;
        !           133:   if ((u.d = x) == 0)
        !           134:     *np = 0;
        !           135:   else
        !           136:     {
        !           137:       *np = ((u.ll >> 52) & 03777) - 02000;
        !           138:       u.ll = (u.ll & 0x800fffffffffffffLL) | ((union u) {0.5}).ll;
        !           139:     }
        !           140:   return u.d;
        !           141: }
        !           142: 
        !           143: __inline__ static __const__ double __inline_ldexp (double x, int n)
        !           144: {
        !           145:   extern int errno;
        !           146:   union {double d; long long ll; unsigned sexp : 12;} u;
        !           147:   if ((u.d = x) != 0)
        !           148:     {
        !           149:       int exp = n + (u.sexp & 03777);
        !           150:       if (exp <= 0)
        !           151:        u.ll = 0, errno = 34;
        !           152:       else if (exp > 03777)
        !           153:        u.ll |= 0x7fffffffffffffffLL, errno = 34;
        !           154:       else
        !           155:        u.ll += (long long) n << 52;
        !           156:     }
        !           157:   return u.d;
        !           158: }
        !           159: 
        !           160: __inline__ static __const__ double __inline_log (double x)
        !           161: {
        !           162:   double z;
        !           163:   __asm__ ("ln.d %0" : "=d" (z) : "0" (x));
        !           164:   return z;
        !           165: }
        !           166: 
        !           167: __inline__ static __const__ double __inline_log10 (double x)
        !           168: {
        !           169:   return M_LOG10E * __inline_log (x);
        !           170: }
        !           171: 
        !           172: __inline__ static __const__ double __inline_modf (double x, double *np)
        !           173: {
        !           174:   double intpart;
        !           175:   __asm__ ("frint.d %1,%0" : "=d" (intpart) : "d" (x));
        !           176:   *np = intpart;
        !           177:   return x - intpart;
        !           178: }
        !           179: 
        !           180: __inline__ static __const__ double __inline_sin (double x)
        !           181: {
        !           182:   double z;
        !           183:   __asm__ ("sin.d %0" : "=d" (z) : "0" (x));
        !           184:   return z;
        !           185: }
        !           186: 
        !           187: __inline__ static __const__ double __inline_sqrt (double x)
        !           188: {
        !           189:   double z;
        !           190:   __asm__ ("sqrt.d %0" : "=d" (z) : "0" (x));
        !           191:   return z;
        !           192: }
        !           193: 
        !           194: #endif __convex__
        !           195: 
        !           196: #endif /* __HAVE_MATH_CONVEX__ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.