/* This C code performs the LOG, LOG10, POW and EXP functions. */ /* These functions are not part of the C196 compiler library. */ /* This is example code, you have to change the include */ /* file directories to match your harddrive path names. */ #pragma model(ex) #pragma farcode #pragma farconst #pragma fardata #pragma db #include #include #include #include #include #include #define E 2.7182818 #define LN_10 2.30258509 double log10 (double x) { return(log(x)/LN_10); } double log (double x) { double w=0.0,y=0.0,z=0.0; unsigned num = 1,dec=0; if(x==1.0) return (0.0); for(dec=0; fabs(x)>=(double)2.0; ++dec) x/=E; x -= 1.0; z=x; y=x; w=1.0; while(y != y+ w) y += (w = (z =- (z*x))/(num += 1)); return(y + dec); } double exp( double x) { register double w,y; register unsigned num; for(w=1.0,y=1.0,num=1; y!=y+w; ++num) y+=(w*=x/num); return (y); } double pow(double x, double y) { if (x<0.0 && fmod(y,2)) return (-exp(y*log(-x))); else return(exp(y*log(fabs(x)))); }