#include //these four files standard for GENPREC #include //abs (absolute value) #include //log,sqrt,etc #include //use when timing (benchmarking) const int precision=4; const int zmaxsize=51; //51; const int cmaxsize=0; float hfloat; int qqq; #include "genprec.h" //#include "genpnoas.sem" realmp a,aa,b,bb,aaa,bbb,aaaa,bbbb,c,d,e,f,g,h,sum; realmp vec[zmaxsizepad],vec2[zmaxsizepad]; realmp mat[zmaxsizepad][zmaxsizepad],mat2[zmaxsizepad][zmaxsizepad]; char *zwhich; main() {int i; zsuppi(); //this has to be run to do sin,cos,etc. zsupe(); zsuplogsp(); //for exponential function a=1; b=sin(cos(a)); //example of a function of a function cout<<"sin(cos(1)) should be .514395259..."; printmp(b); zmessage="example of a function of a function"; zbreak(); cout<<"sum of integers from 1 to 1000 should be 500,500 "; sum=1; //declaring k[bigenough]. for (i=2;i<1001;i++) sum=sum + i; //Accumulation requires printmp(sum); //no depth--a long line //below shows an example //which requires depth. //Using k[i]= is a mistake. //Need the < to set depthcount. zmessage=" "; zbreak(); b=14; c=b/(1+b); //gets 1+b ok but then... printmp(c); zmessage="should be 14/15=.93333..."; zbreak(); a=-2; b=-3; h=-4; c=h+b; cout<<"should be -7 "; printmp(c); b=a; zmessage="should be -2 "; printmp(b); zbreak(); b=3; a=-a-b; cout<<"-a-b should be -1 when a=-2,b=3 "; //should be -1 printmp(a); a=2; b=3; a=-a-b; cout<<"-a-b should be -5 when a=2,b=3 "; //should be -5 -- ok. printmp(a); zmessage=" "; zbreak(); a=2; b=3; //(a+b)/(aa+bb) + (aaa+bbb)/(aaaa+bbbb) aa=7; //=(2+3)/(7+5) + (11+13)/(15+17) bb=5; //=1.166666666... aaa=11; //and 12/5 + 32/24 = 3.733333 bbb=13; //1.1666666/3.733333 = .3125 aaaa=15; bbbb=17; cout<<"a "; printmp(a); cout<<"b "; printmp(b); c=a+b; cout<<"c=a+b "; printmp(c); c=b+a; cout<<"c=b+a "; printmp(c); d=a-b; e=b/a; f=b/4; g=a*c; h=a*5; cout<<"a-b "; printmp(d); cout<<"b/a "; printmp(e); cout<<"b/int 4 "; printmp(f); cout<<"a*c "; printmp(g); cout<<"a*5 "; printmp(h); h=a*b*aa; cout<<"a*b*aa should be 42 "; //2*3*7 printmp(h); h=a+b+aa; cout<<"a+b+aa should be 12 "; printmp(h); h=(a+b)*(b+aa); cout<<"(a+b)*(b+aa) should be 50 "; printmp(h); h=sqrt(a*a+b*b); cout<<"sqrt(a*a+b*b) should be sqrt(13)=3.605551275 "; printmp(h); h=sin(a); cout<<"sin(2 radians) should be .909297427 "; printmp(h); h=cos(a); cout<<"cos(2 radians) should be -.416146831 "; printmp(h); h=exp(a); cout<<"exp(2) should be 7.389056099 "; printmp(h); h=log(a); cout<<"log(2) should be .693147181 "; printmp(h); h=(a+b)/(aa+bb) + (aaa+bbb)/(aaaa+bbbb); cout<<"should be 1.16666666... "; printmp(h); h=((a+b)/(aa+bb) + (aaa+bbb)/(aaaa+bbbb))/((aa+bb)/(a+b) + (aaaa+bbbb)/(aaa+bbb)); cout<<"should be .3125 "; // less than 20 printmp(h); //requires depthsize more than 10 h=1/h; cout<<"should be 3.2 "; printmp(h); h=4*arctan(a/2); cout<<"should be 4*arctan(1)=pi "; printmp(h); h=6*arcsin(a/4); zmessage="should be 6*arcsin(1/2)=pi "; printmp(h); zbreak(); zinput[precision+1]=2; //2 for +, 0 for - zinput[precision]=4141; //precision=4 above zinput[precision-1]=5926; zinput[precision-2]=5358; zinput[precision-3]=9793; zinput[precision-4]=1; //pi is .3141592653589793 x 10^1 h=zinputtomp(zinput); cout<<"should be pi + 1 "; printmp(h); hfloat=zconmptof(h); //convert that to float--note = here! cout<<"that converted to float "<