Annotation of gcc/math-convex.h, revision 1.1.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.