00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #ifndef _HPMATH_H
00038 #define _HPMATH_H
00039
00040
00041
00042 #ifndef _LONGLONG_DEF
00043 typedef unsigned long long ULONGLONG;
00044 typedef long long LONGLONG;
00045 #define _LONGLONG_DEF
00046 #endif
00047
00048
00059 #ifndef min
00060 #define min(a,b) ((a) < (b) ? (a) : (b))
00061 #endif
00062
00063 #ifndef max
00064 #define max(a,b) ((a) > (b) ? (a) : (b))
00065 #endif
00066
00067 #ifndef abs
00068 #define abs(a) ((a) < 0 ? (-a) : (a))
00069 #endif
00070
00071
00072
00073 double ipow(double x, int n);
00074
00075 double i10powx(int n);
00076
00077
00078 double assemble_double(unsigned int sign,unsigned long long mantissa,int exponent);
00079
00080
00081
00082 int _i10pow64(int exp10,unsigned long long *mant);
00083
00084
00085
00086 double square(double x);
00087 double round(double a);
00088
00089
00090
00091
00092
00093 double modf(double x, double *iptr);
00094 double frexp(double x, int *exp);
00095 double scalbn (double x, int n);
00096 double copysign(double x, double y);
00097
00098 double __ieee754_log(double x);
00099 double __ieee754_log10(double x);
00100 double __ieee754_exp(double x);
00101 double __ieee754_pow(double x, double y);
00102 double __ieee754_sqrt(double x);
00103
00104 double __ieee754_asin(double x);
00105 double __ieee754_acos(double x);
00106 double __ieee754_atan2(double y, double x);
00107
00108 double sin(double x);
00109 double cos(double x);
00110 double tan(double x);
00111
00112 double atan(double x);
00113
00114 double floor(double x);
00115 double ceil(double x);
00116
00117
00118 #define log __ieee754_log
00119 #define log10 __ieee754_log10
00120 #define exp __ieee754_exp
00121 #define pow __ieee754_pow
00122 #define sqrt __ieee754_sqrt
00123
00124 #define asin __ieee754_asin //EDIT BY AL, 29th Oct
00125 #define acos __ieee754_acos
00126 #define atan2 __ieee754_atan2
00127
00128 #define log2(x) (log(x) / M_LOG2_E)
00129 #define _fabs(x) ( (x) < 0.0 ? (-x) : (x) )
00130
00131 double fabs(double x);
00132
00133 #define M_E 2.7182818284590452354
00134 #define M_LOG2E 1.4426950408889634074
00135 #define M_LOG10E 0.43429448190325182765
00136 #define M_LN2 0.69314718055994530942
00137 #define M_LN10 2.30258509299404568402
00138 #define M_PI 3.14159265358979323846
00139 #define M_TWOPI (M_PI * 2.0)
00140 #define M_PI_2 1.57079632679489661923
00141 #define M_PI_4 0.78539816339744830962
00142 #define M_3PI_4 2.3561944901923448370E0
00143 #define M_SQRTPI 1.77245385090551602792981
00144 #define M_1_PI 0.31830988618379067154
00145 #define M_2_PI 0.63661977236758134308
00146 #define M_2_SQRTPI 1.12837916709551257390
00147 #define M_SQRT2 1.41421356237309504880
00148 #define M_SQRT1_2 0.70710678118654752440
00149 #define M_LN2LO 1.9082149292705877000E-10
00150 #define M_LN2HI 6.9314718036912381649E-1
00151 #define M_SQRT3 1.73205080756887719000
00152 #define M_IVLN10 0.43429448190325182765
00153 #define M_LOG2_E 0.693147180559945309417
00154 #define M_INVLN2 1.4426950408889633870E0
00155
00156
00157
00158
00178 double random();
00179 double gauss();
00180 double normal(double mu, double sigma);
00181
00182 #define prob(p) ((p) >= 1.0 ? 1 : random() < (p))
00183
00193 int qlog10(double x, double *y);
00194
00195
00196
00202 #define ilog10 qlog10
00203
00212 double dround(double value, int digits);
00213
00214 typedef double (*DFUNC1 ) (double);
00215
00216
00217
00218
00219 double df(int n,DFUNC1 f, double x);
00220
00221
00222 double newton(DFUNC1 f, double x0,double y);
00223 #define MATH_ERR_NEWTON_INVALID -999.666
00224
00225 #endif // _MATH_H
00226
00227