#include "NFloat.h" #include "conio.h" void test0(){//定数確認 NFloat X; printf("\n\n■ 定数確認"); printf("\n π 真値 = 3.14159 26535 89793 23846 26433 83279 50288 …"); NFprint("\n π ",PAI,35); NFprintHx("\n Hexa ",PAI); printf("\n\n *** ネイピア数"); printf("\n e 真値 = 2.71828 18284 59045 23536 02874 71352 66249"); NFprint("\n e ",NAPIER,35); NFprintHx("\n Hexa ",NAPIER); printf("\n\n log 2 真値 =0.693147 18055 99453 09417 23212 1458 …"); NFprint("\n log 2 ",LOG2,35); NFprintHx("\n Hexa ",LOG2); printf("\n\n ■ 最大最小"); NFpmax(X) ;NFprint("\n\n 正の絶対値最大 : ",X,35); NFprintHx("\n Hexa ",X); NFmmax(X) ;NFprint("\n\n 負の絶対値最大 : ",X,35); NFprintHx("\n Hexa ",X); NFpmin(X) ;NFprint("\n\n 正規化可能最小 : ",X,35); NFprintHx("\n Hexa ",X); NFintMax(X);NFprint("\n\n 整数最大値 : ",X,10); NFprintHx("\n Hexa ",X); NFintMin(X);NFprint("\n\n 整数負の絶対値最大: ",X,10); NFprintHx("\n Hexa ",X); NFintTo(X,65536); NFprint("\n\n 0x10000の値 : ",X,10); NFprintHx("\n Hexa ",X); } void dspGraph(NFloat X){ char Str[42];NFloat XX, C20,EP; NFintTo(C20,20);NFstring(EP,"0.5"); NFcopy(XX,X); for(int i=1;i<40;i++) Str[i]='・'; Str[0]=Str[20]=Str[40]='|';Str[10]=Str[30]='+';Str[41]=0; NFmlt(XX, X, C20); NFadd(XX, XX, C20);NFadd(XX, XX, EP); int id=NFtoInt(XX); if(id<0)id=0; if(id>40) id=40; Str[id]='*'; printf("\t %s", Str); } void test1(){// sin テスト NFloat C2,C12, DP, dA, A, RS;NFintTo(C2,2); NFintTo(C12,12); NAmlt(DP,PAI,C2);NAdiv(dA,PAI,C12);NFcopy(A,DP); NFloat DPP; NAmlt(DPP,DP,C2);NAmlt(DPP,DPP,C2); NFminus(A); NFmlt(A,A,C2); NFmlt(A,A,C2); printf("\n\n ■ Sin Test\n A sin A" "\n--------------------------------"); while(NFcmp(A,DPP)<=0){ sin(RS,A);NFprint("\n",A);NFprint("\t",RS); dspGraph(RS); NFadd(A,A,dA); } NFcopy(A,DP);NFminus(A); printf("\n\n ■ Cos Test\n A cos A" "\n--------------------------------"); while(NFcmp(A,DP)<=0){ cos(RS,A);NFprint("\n",A);NFprint("\t",RS); dspGraph(RS); NFadd(A,A,dA); } } void test2(){// log printf("\n\n ■ Log Test\n"); NFloat X, R; NFloat C1, C10, C0_1; NFintTo(C1,1);NFintTo(C10,10);NAdiv(C0_1,C1,C10); log(R, C1) ; NFprint("\n log 1 ", R); log(R, NAPIER) ; NFprint("\n log e ", R); NAmlt(X,NAPIER,NAPIER); log(R, X) ; NFprint("\n log e ^2 ", R); NAdiv(X,C1,NAPIER) ; log(R, X) ; NFprint("\n log 1/e ", R); NFclear(X); printf("\n\n ** Log関数(0.1〜10.0) 0.1 刻み\n\n "); for(int i=1;i<=100;i++){ NAadd(X,X,C0_1); log(R, X); NFprint("", R); if((i % 5)==0) printf("\n ");else printf("\t"); } } void test3(){// exp NFloat C2, C10,dA;NFintTo(C2,2);NFintTo(C10,10); NFloat DT,DE,X,R; NFintTo(DT,5); NAdiv(DT,DT,C2);NFcopy(DE,DT); NFsetFlag(DT,true); NFloat dx; NFintTo(dx,1); NAdiv(dx,dx, C10); printf("\n\n ■ Exp Test\n A R=exp A log(R)      誤差" "\n-----------------------------------------------------------------------"); while(NFcmp(DT,DE)<=0){ exp(X,DT);log(R,X); NFsub(dA,DT,R); NFprint("\n",DT); NFprint("\t",X);NFprint("\t",R);NFprint("\t",dA); NFadd(DT,DT,dx); } } void test4(){ NFloat C2,C12, DP, dA, A, R,X;NFintTo(C2,2); NFintTo(C12,12); NFloat C0_1,C1,C10; NFintTo(C1,1);NFintTo(C10,10);NAdiv(C0_1,C1,C10); NAmlt(DP,PAI,C2);NAdiv(dA,PAI,C12);NFcopy(A,DP); NFloat DPP; NAmlt(DPP,DP,C2);NAmlt(DPP,DPP,C2); printf("\n\n ■ Atanの確認" "\n X Y=Atan(X) tan(Y) 誤差" "\n-------------------------------------------------------------"); NFintTo(X,-2); while(NFcmp(X,C2)<0){ Atan(R,X); tan(DP,R); NFsub(dA,DP,X); NFprint("\n",X); NFprint("\t",R);NFprint("\t",DP);NFprint("\t",dA); NFadd(X,X,C0_1); } } void test5(){ NFloat C2,C12, DP, dA, R,X;NFintTo(C2,2); NFintTo(C12,12); NFloat C0_1,C1,C10, C0_01; NFintTo(C1,1);NFintTo(C10,10); NAdiv(C0_1,C1,C10); NFstring(C0_01, "0.01"); printf("\n\n ■ Sqrtの確認" "\n X Y=sqrt(X) Y*Y 誤差" "\n-----------------------------------------------------------"); NFintTo(X,0);NFloat C5; NFintTo(C5,3); while(NFcmp(X,C0_1)<=0){ sqrt(R,X);NFmlt(DP,R,R);NFsub(dA,DP,X); NFprint("\n",X); NFprint("\t",R,10);NFprint("\t",DP);NFprint("\t",dA); NFadd(X,X,C0_01); } NFcopy(X,C0_1);NFadd(X,X,C0_1);printf("\n"); while(NFcmp(X,C2)<=0){ sqrt(R,X);NFmlt(DP,R,R);NFsub(dA,DP,X); NFprint("\n",X); NFprint("\t",R,10);NFprint("\t",DP);NFprint("\t",dA); NFadd(X,X,C0_1); } NFintTo(X,3);printf("\n"); while(NFcmp(X,C10)<=0){ sqrt(R,X);NFmlt(DP,R,R);NFsub(dA,DP,X); NFprint("\n",X); NFprint("\t",R,10);NFprint("\t",DP);NFprint("\t",dA); NFadd(X,X,C1); } NFloat C1000;NFintTo(C1000,1000); NFintTo(X,50000);printf("\n"); for(int i=1;i<20;i++){ sqrt(R,X);NFmlt(DP,R,R);NFsub(dA,DP,X); NFprint("\n",X); NFprint("\t",R,10);NFprint("\t",DP);NFprint("\t",dA); NFadd(X,X,C1000); } printf("\n\n ■ Sqrt2の確認" "\n X Y=sqrt(X) Y*Y 誤差" "\n-----------------------------------------------------------"); NFintTo(X,0); while(NFcmp(X,C0_1)<=0){ sqrt2(R,X);NFmlt(DP,R,R);NFsub(dA,DP,X); NFprint("\n",X); NFprint("\t",R,10);NFprint("\t",DP);NFprint("\t",dA); NFadd(X,X,C0_01); } NFcopy(X,C0_1);NFadd(X,X,C0_1);printf("\n"); while(NFcmp(X,C2)<=0){ sqrt2(R,X);NFmlt(DP,R,R);NFsub(dA,DP,X); NFprint("\n",X); NFprint("\t",R,10);NFprint("\t",DP);NFprint("\t",dA); NFadd(X,X,C0_1); } NFintTo(X,3);printf("\n"); while(NFcmp(X,C10)<=0){ sqrt2(R,X);NFmlt(DP,R,R);NFsub(dA,DP,X); NFprint("\n",X); NFprint("\t",R,10);NFprint("\t",DP);NFprint("\t",dA); NFadd(X,X,C1); } NFintTo(X,50000);printf("\n"); for(int i=1;i<20;i++){ sqrt2(R,X);NFmlt(DP,R,R);NFsub(dA,DP,X); NFprint("\n",X); NFprint("\t",R,10);NFprint("\t",DP);NFprint("\t",dA); NFadd(X,X,C1000); } } void test6(){ NFloat C2,C12, X;NFintTo(C2,2); NFintTo(C12,12); NFloat C0_1,C1,C10; NFintTo(C1,1);NFintTo(C10,10);NAdiv(C0_1,C1,C10); NFloat C1000;NFintTo(C1000,1000); printf("\n\n ■ pow確認"); NFloat C3; NFintTo(C3,3); NFloat C4; NFintTo(C4,4); NFloat C5; NFintTo(C5,5); pow(X,C1000,C10) ; NFprint("\n 1000^10 = ",X); pow(X,C4,C2) ; NFprint("\n 4^2 = ",X); pow(X,C4,C3) ; NFprint("\n 4^3 = ",X); pow(X,C4,C4) ; NFprint("\n 4^4 = ",X); pow(X,C4,C5) ; NFprint("\n 4^5 = ",X); pow(X,C4,C1000) ; NFprint("\n 4^1000 = ",X); pow(X,C0_1,C2) ; NFprint("\n 0.1^2 = ",X); pow(X,C0_1,C3) ; NFprint("\n 0.1^3 = ",X); pow(X,C0_1,C4) ; NFprint("\n 0.1^4 = ",X); pow(X,C0_1,C5) ; NFprint("\n 0.1^5 = ",X); pow(X,C0_1,C1000); NFprint("\n 0.1^1000 = ",X); } void test7(){ NFloat X; printf("\n\n ■変換テスト"); printf("\n(1) SFloat to NFloat"); SFloat SDT; SDT.DT.INT=0x7F800000; printf("\n Hexa %08X ",SDT.DT.INT ); NFSFloat(X, SDT);NFprint("\n single to = ",X, 10); NFprintHx("\n Hexa ", X); printf("\n\n(2) NFloat to SFloat"); NFstring(X,"-10.5");NFprint("\n NFloat = ",X,10); NFprintHx("\n Hexa ",X); SFloat Z; Z =NFtoSFloat(X); printf("\n Single = %08X", Z.DT.INT); printf("\n\n(3) NFloat to Integer"); NFstring(X,"-10.5");NFprint("\n NFloat = ",X,10); int Y=NFtoInt(X); printf("\n Integer %d (%08X)",Y,Y); char Str[156]; NFtoString(X, Str, 6, true); printf("\n\n toString Test -10.5 → %s", Str); NFstring(X,"123456.2345"); NFtoString(X, Str, 6, true); printf("\n\n toString Test 123456.2345 → %s", Str); NFstring(X,"-123456.2345"); NFtoString(X, Str, 6, true); printf("\n\n toString Test -123456.2345 → %s", Str); NFstring(X,"-1234567890123.2345"); NFtoString(X, Str, 6, true); printf("\n\n toString Test -1234567890123.2345 → %s", Str); NFstring(X,"-1234567890123.20345"); NFtoString(X, Str, 6, false); printf("\n\n toString Test -1234567890123.20345 → %s", Str); printf("\n\n ■SFloat演算テスト"); SFloat R,A,B; A=NFstring("1.57078");B=NFstring("2"); NFtoExpStr(A,Str);printf("\n A = %s", Str); NFtoExpStr(B,Str);printf(" B = %s\n", Str); void (*NFfun2)(NFloat x,NFloat y,NFloat z); void (*NFfun1)(NFloat x,NFloat y); NFfun2=NFadd ; R = NFcallSF(NFfun2, A, B); NFtoExpStr(R ,Str);printf("\n A + B = %s", Str); NFfun2=NFsub ; R = NFcallSF(NFfun2, A, B); NFtoExpStr(R ,Str);printf("\n A - B = %s", Str); NFfun2=NFmlt ; R = NFcallSF(NFfun2, A, B); NFtoExpStr(R ,Str);printf("\n A * B = %s", Str); NFfun2=NFdiv ; R = NFcallSF(NFfun2, A, B); NFtoExpStr(R ,Str);printf("\n A / B = %s", Str); NFfun1=NFminus; R = NFcallSF(NFfun1, A ); NFtoExpStr(R ,Str);printf("\n - A = %s", Str); NFfun1=sin ; R = NFcallSF(NFfun1, A ); NFtoExpStr(R ,Str);printf("\n sin(A)= %s", Str); } void test8(){//10^n確認 NFloat X, C1,C10; NFintTo(C1,1);NFintTo(C10,10); NFcopy(X,C1);printf("\n\n ■10^n 整数"); for(int i=1; i<=20;i++){ NAmlt(X,X,C10); printf("\n ** 1E+%03d :",i);NFprintHx(X); } NFcopy(X,C1);printf("\n\n ■0.1^n"); for(int i=1; i<=20;i++){ NAdiv(X,X,C10); printf("\n ** 1E-%03d :",i);NFprintHx(X); } } void test9(){ char Str[512]; NFloat X; printf("\n\n ■ 極限テスト"); NFintTo(X,0x80000000);NFprint("\n\n 整数最小 = ", X, 10); NFprintHx("\n Hexa ", X); NFintTo(X,0x80000001);NFprint("\n\n 整数最小 + 1 = ", X, 10); NFprintHx("\n Hexa ", X); NFintTo(X,0x7FFFFFFF);NFprint("\n\n 整数最大 = ", X, 10); NFprintHx("\n Hexa ", X); NFintTo(X,0x80000000);NFprint("\n\n 負絶対値最大 = ", X, 10); NFprintHx("\n Hexa ", X); NFintTo(X,0x80000001);NFprint("\n\n 負絶対値最大+1 = ", X, 10); NFprintHx("\n Hexa ",X); NFintTo(X,-1);NFprint("\n\n -1 = ", X,10); NFprintHx("\n Hexa ", X); int EX=NFtoAbsInt(X); printf("\n EX= %d %08X",EX,EX); printf("\n\n PowerStart"); int D=0xB000; NFpowMini(X, NAPIER, D); NFtoExpStr(X,Str,10,true); printf("\n\n E^%d(%08X) = %s",D, D, Str); NFprintHx("\n Hexa ", X); printf("\n\n *** 以下、オーバフローするはず"); D=0xC000; NFpowMini(X, NAPIER, D); NFtoExpStr(X,Str,10,true); printf("\n E^%d(%08X) = %s",D, D, Str); NFprintHx("\n Hexa ", X); } void dspGamma(NFloat X){ char Str[42];NFloat XX, C2,C20,C10,MC20,EP,C120; NFintTo(C2,2);NFintTo(C10,10);NFintTo(C20,20);NFintTo(C120,120); NFstring(EP,"0.5"); NFcopy(MC20,C20); NFsetFlag(MC20,1); NFcopy(XX,X); for(int i=1;i<40;i++) Str[i]='・'; Str[0]=Str[20]=Str[40]=Str[10]=Str[30]='|';Str[41]=0; if(NFcmp(X,MC20)>=0 && NFcmp(X,C120)<=0 ){ NFdiv(XX, X, C2); NFadd(XX, XX, C10);NFadd(XX, XX, EP); int id=NFtoInt(XX); if(id>=0 && id<=40) Str[id]='*'; } printf("\t %s", Str); } void test10(){ printf("\n ■ ガンマ関数"); NFloat XM,X,DX,XE,LG,LLG,ER; NFstring(XM,"-1.5"); gamma(X,XM);NFprint("\n Γ(-1.5) =",X); NFstring(XM,"-0.5"); gamma(X,XM);NFprint("\n Γ(-0.5) =",X); NFstring(XM," 0.5"); gamma(X,XM);NFprint("\n Γ( 0.5) =",X); NFstring(XM," 1.5"); gamma(X,XM);NFprint("\n Γ( 1.5) =",X); NFstring(XM," 2.5"); gamma(X,XM);NFprint("\n Γ( 2.5) =",X); NFstring(XM," 3.5"); gamma(X,XM);NFprint("\n Γ( 3.5) =",X); NFstring(XM," 4.0"); gamma(X,XM);NFprint("\n Γ( 4.0) =",X); printf("\n\n X Y = Γ(x) Z=logGamma(X) log(Y) Z - log(Y) " "\n--------------------------------------------------------------------------"); NFstring(XM,"-2.0"); NFstring(DX,"0.1");NFstring(XE,"6"); while(NFcmp(XM,XE)<0){ gamma(X,XM); logGamma(LG,XM); log(LLG,X);NFsub(ER, LG,LLG); NFprint("\n", XM);NFprint("\t", X); NFprint("\t", LG); NFprint("\t", LLG); NFprint("\t", ER); NFadd(XM,XM,DX); } printf("\n\n X Y = Γ(x) " "\n----------------------------------"); NFstring(XM,"-2.0"); NFstring(DX,"0.1");NFstring(XE,"6"); while(NFcmp(XM,XE)<0){ gamma(X,XM);NFprint("\n", XM);NFprint("\t", X); dspGamma( X); NFadd(XM,XM,DX); } } void test11(){ NFloat C1, X,E, ED; NFintTo(C1,1); printf("\n\n ■ 機械 ε"); NFmachineE(ED);NFprint("\n Machine ε = ", ED); NFprintHx("\n Hexa ", ED); NAdiv(E,C1,ED);NFprint("\n 1/ε = ", E) ; NFprintHx("\n Hexa ", E); NAmlt(X,E,ED) ;NFprint("\n 1/ε*ε = ", X) ; NFprintHx("\n Hexa ", X); } void dspCosh(NFloat X){ char Str[42];NFloat XX, C10,EP; NFintTo(C10,10);NFstring(EP,"0.5"); NFcopy(XX,X); for(int i=1;i<40;i++) Str[i]='・'; Str[0]=Str[20]=Str[40]='|';Str[10]=Str[30]='+';Str[41]=0; NFmlt(XX, X, C10); NFadd(XX, XX, EP); int id=NFtoInt(XX); if(id>=0 && id<=40) Str[id]='*'; printf("\t %s", Str); } void dspSinh(NFloat X){ char Str[42];NFloat XX, C20,C5, EP;NFintTo(C5,5); NFintTo(C20,20);NFstring(EP,"0.5"); NFcopy(XX,X); for(int i=1;i<40;i++) Str[i]='・'; Str[0]=Str[20]=Str[40]='|';Str[10]=Str[30]='+';Str[41]=0; NFcopy(XX, X); NFadd(XX, XX, C20);NFadd(XX, XX, EP); int id=NFtoInt(XX); if(id>=0 && id<=40) Str[id]='*'; printf("\t %s", Str); } void dspTanh(NFloat X){ char Str[42];NFloat XX, C20,C5, EP;NFintTo(C5,5); NFintTo(C20,20);NFstring(EP,"0.5"); NFcopy(XX,X); for(int i=1;i<40;i++) Str[i]='・'; Str[0]=Str[20]=Str[40]='|';Str[10]=Str[30]='+';Str[41]=0; NFmlt(XX, X,C20); NFadd(XX, XX, C20);NFadd(XX, XX, EP); int id=NFtoInt(XX); if(id>=0 && id<=40) Str[id]='*'; printf("\t %s", Str); } void test12(){// cosh テスト NFloat C2,C4, MC2, D, DP, R;NFintTo(C2,2);NFintTo(C4,4); NFminus(MC2,C2); NFcopy(D,MC2);NFstring(DP,"0.1"); printf("\n\n ■ Cosh Test\n A cosh A" "\n--------------------------------"); while(NFcmp(D,C2)<=0){ cosh(R, D); NFprint("\n ", D);NFprint("\t",R); NFadd(D,D,DP);dspCosh(R); } printf("\n\n ■ Sinh Test\n A sinh A" "\n--------------------------------"); NFmlt(D,MC2,C2);NFstring(DP,"0.2"); while(NFcmp(D,C4)<=0){ sinh(R, D); NFprint("\n ", D);NFprint("\t",R); NFadd(D,D,DP);dspSinh(R); } printf("\n\n ■ Tanh Test\n A tanh A" "\n--------------------------------"); NFmlt(D,MC2,C2);NFstring(DP,"0.2"); while(NFcmp(D,C4)<=0){ tanh(R, D); NFprint("\n ", D);NFprint("\t",R); NFadd(D,D,DP);dspTanh(R); } } void test13(){ NFloat C2,C12, DP, dA, A, R,X;NFintTo(C2,2); NFintTo(C12,12); NFloat C0_1,C1,C10; NFintTo(C1,1);NFintTo(C10,10);NAdiv(C0_1,C1,C10); NAmlt(DP,PAI,C2);NAdiv(dA,PAI,C12);NFcopy(A,DP); NFloat DPP; NAmlt(DPP,DP,C2);NAmlt(DPP,DPP,C2); printf("\n\n ■ Asinの確認" "\n X Y=Asin(X) sin(Y) 誤差" "\n-------------------------------------------------------------"); NFintTo(X,-1);//NFadd(X,X,C0_1); while(NFcmp(X,C1)<0){ Asin(R,X); sin(DP,R); NFsub(dA,DP,X); NFprint("\n",X); NFprint("\t",R);NFprint("\t",DP);NFprint("\t",dA); NFadd(X,X,C0_1); } printf("\n\n ■ Acosの確認" "\n X Y=Acos(X) cos(Y) 誤差" "\n-------------------------------------------------------------"); NFloat MC1; NFintTo(MC1,-1); for(int i = -10;i<=10;i++){ NFloat ii; NFintTo(ii,i); NFmlt(X,C0_1,ii); Acos(R,X); cos(DP,R); NFsub(dA,DP,X); NFprint("\n",X); NFprint("\t",R);NFprint("\t",DP);NFprint("\t",dA); } printf("\n\n ■ Asin2の確認" "\n X Y=Asin2(X) sin(Y) 誤差" "\n-------------------------------------------------------------"); NFintTo(X,-1);//NFadd(X,X,C0_1); while(NFcmp(X,C1)<0){ Asin2(R,X); sin(DP,R); NFsub(dA,DP,X); NFprint("\n",X); NFprint("\t",R);NFprint("\t",DP);NFprint("\t",dA); NFadd(X,X,C0_1); } } void test14(){ char Str[512];NFloat X, XM, C1, C4096,rC4096; NFpmin(XM); NFintTo(C1,1); NFintTo(C4096,4096);NAdiv(rC4096,C1,C4096); printf("\n Check %08X", 16386); NFtoExpStr(XM,Str,10,true); printf("\n r(正の最小の値)= %s",Str); printf("\n Hexa ");NFprintHx(XM); NAdiv(X,C1,XM); NFtoExpStr(X,Str,10,true) ; printf("\n 1/r = %s",Str); printf("\n Hexa ");NFprintHx(X); NFtoExpStr(rC4096,Str,10,true) ; printf("\n 1/4096 = %s",Str); printf("\n Hexa ");NFprintHx(rC4096); NAdiv(X,rC4096,XM); NFtoExpStr(X,Str,10,true) ; printf("\n 1/4096/r = %s",Str); printf("\n Hexa ");NFprintHx(X); } void promptMsg(){ printf("\n-------------------------------------" "-----------------------------------------"); printf("\n 0:定数/1:sin,cos/2:log/3:exp/4:Atan/" "5:Sqrt/6:Pow/7:変換/8:10^n/9:極限/\n" " a:ガンマ関数/b:機械ε/c:双曲線関数/d:Asin,Acos/e:その他/f:mySqrt\n"); printf("*上記,テスト番号を入力してください>"); } void promptEnd(){ printf("\n-------------------------------------" "-----------------------------------------"); } int mySqrt(NFloat S, NFloat X){ if(NFgetFlag(X)){printf("\n mySqrt Error"); return true;} NFloat C2,SS,T1,T2; NFintTo(S,1);NFintTo(C2,2); for(int i=0;i<500;i++){ NFcopy(SS,S);NAdiv(T1,X,S);NAadd(T2,T1,S); NAdiv(S,T2,C2); if(NAcmp(S,SS)==0)break; } return false; } void test15(){ NFloat C2,C12, DP, dA, R,X;NFintTo(C2,2); NFintTo(C12,12); NFloat C0_1,C1,C10, C0_01; NFintTo(C1,1);NFintTo(C10,10); NAdiv(C0_1,C1,C10); NFstring(C0_01, "0.01"); printf("\n\n ■ mySqrtの確認" "\n X Y=sqrt(X) Y*Y 誤差" "\n-----------------------------------------------------------"); NFintTo(X,0);NFloat C5; NFintTo(C5,3); while(NFcmp(X,C0_1)<=0){ mySqrt(R,X);NFmlt(DP,R,R);NFsub(dA,DP,X); NFprint("\n",X); NFprint("\t",R,10);NFprint("\t",DP);NFprint("\t",dA); NFadd(X,X,C0_01); } NFcopy(X,C0_1);NFadd(X,X,C0_1);printf("\n"); while(NFcmp(X,C2)<=0){ mySqrt(R,X);NFmlt(DP,R,R);NFsub(dA,DP,X); NFprint("\n",X); NFprint("\t",R,10);NFprint("\t",DP);NFprint("\t",dA); NFadd(X,X,C0_1); } NFintTo(X,3);printf("\n"); while(NFcmp(X,C10)<=0){ mySqrt(R,X);NFmlt(DP,R,R);NFsub(dA,DP,X); NFprint("\n",X); NFprint("\t",R,10);NFprint("\t",DP);NFprint("\t",dA); NFadd(X,X,C1); } NFloat C1000;NFintTo(C1000,1000); NFintTo(X,50000);printf("\n"); for(int i=1;i<20;i++){ mySqrt(R,X);NFmlt(DP,R,R);NFsub(dA,DP,X); NFprint("\n",X); NFprint("\t",R,10);NFprint("\t",DP);NFprint("\t",dA); NFadd(X,X,C1000); } } //-------- (以下テストメイン)--------------------------------------------- int main(){ startNFloat(); promptMsg();int CH=getch(); while(CH!=0x1A){ promptEnd(); if (CH=='0') test0(); else if(CH=='1') test1(); else if(CH=='2') test2(); else if(CH=='3') test3(); else if(CH=='4') test4(); else if(CH=='5') test5(); else if(CH=='6') test6(); else if(CH=='7') test7(); else if(CH=='8') test8(); else if(CH=='9') test9(); else if(CH=='A'||CH=='a') test10(); else if(CH=='B'||CH=='b') test11(); else if(CH=='C'||CH=='c') test12(); else if(CH=='D'||CH=='d') test13(); else if(CH=='E'||CH=='e') test14(); else if(CH=='F'||CH=='f') test15(); promptMsg(); CH=getch(); } return 0; }