Public Static voidMain (string[] args) {LongStart =System.currenttimemillis (); Doubletarget=9876543212345d; Doubleresult =sqrt (target); System.out.println ("Sqrt Time:" + (System.currenttimemillis ()-start) + ", Result:" +result); Start=System.currenttimemillis (); Result=sqrtbybisection (target, 0); System.out.println ("Sqrtbybisection Time:" + (System.currenttimemillis ()-start) + ", Result:" +result); Start=System.currenttimemillis (); Result= Sqrtbynewton (target, 0); System.out.println ("Sqrtbynewton Time:" + (System.currenttimemillis ()-start) + ", Result:" +result); } //Newton Iterative Method Public Static DoubleSqrtbynewton (DoubleTargetDoubleEPS) { DoubleXa=TARGET,XB; Do{Xb=Xa; Xa= (XA+TARGET/XA)/2; } while(FABSF (XA,XB) >EPS); returnXa; } //the dichotomy accuracy refers to the difference between the two-time mid value Public Static DoubleSqrtbybisection (DoubleTargetDoubleEPS) { Doublemin=1,max=Target; DoubleMid = (Min+max)/2; DoubleAnmid; Do { if(mid*mid>target) {Max=mid; }Else{min=mid; } Anmid=mid; Mid= (max+min)/2; } while(FABSF (Anmid,mid) >EPS); returnmid; } Public Static DoublesqrtDoubled) { DoubleA = 0.1; DoubleX1,x2=0; while(a*a<=d) {a+=0.1; } x1=A; for(inti = 0; I < 10; i++) {X2=D; X2/=x1;//x2 = x2/x1;x2+=X1; X2/=2; X1=x2; } returnx2; } Public Static DoubleFABSF (DoubleADoubleb) { if(a>b) { returnA-b; }Else returnB-A; }
Java implementation of open square root algorithm