00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #include "fastfunctions.h"
00014
00015 double fastPower(double x, int n)
00016 {
00017 double temp = 0;
00018 switch(n)
00019 {
00020 case 0:
00021 return 1.0;
00022 case 1:
00023 return x;
00024 case 2:
00025 return x*x;
00026 case 3:
00027 return x*x*x;
00028 case 4:
00029 temp = x*x;
00030 return temp * temp;
00031 case 5:
00032 temp = x*x;
00033 return temp * temp * x;
00034 case 6:
00035 temp = x*x*x;
00036 return temp * temp;
00037 default:
00038 return pow(x,n);
00039 }
00040 }
00041
00042 double pythag(double a, double b)
00043 {
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054 double p, r, s, t, u;
00055
00056 t = fabs(a);
00057 u = fabs(b);
00058
00059 p = ((t >= u) ? t : u);
00060 if (p > 0){
00061 r = ((t <= u) ? t : u);
00062 r /= p;
00063 r *= r;
00064 t = 4.0 + r;
00065
00066 while (t > 4.0){
00067 s = r/t;
00068 u = 1.0 + 2.0*s;
00069 p = u*p;
00070 t = s/u;
00071 r *= t*t;
00072 t = 4.0 + r;
00073 }
00074 }
00075
00076 return p;
00077 }