/********************************************************************/ /* Schroder's Methods A and B for the calculation of square roots. */ /* Reference: "On Infinitely Many Algorithms For Solving Equations" */ /* by Ernst Schroder, Translated by G. W. Stewart. */ /* ---------------------------------------------------------------- */ /* Copyright (C) 1996 by Dann Corbit */ /********************************************************************/ /********************************************************************/ /* This is Schroder's Method(A, Lamda=0, Omega = 1) for x*x - k = 0 */ /********************************************************************/ long double SqrtA01( long double x, long double c ) { return 1. / x * ( x * x + c ) * .5; } /********************************************************************/ /* This is Schroder's Method(B, Lamda=0, Omega = 1) for x*x - k = 0 */ /********************************************************************/ long double SqrtB01( long double x, long double c ) { return 2.0 * x * c / ( x * x + c ); } /********************************************************************/ /* This is Schroder's Method(A, Lamda=0, Omega = 2) for x*x - k = 0 */ /* Schroder's Method(B, Lamda=-1/2, Omega = 1) for x*x - k = 0 and */ /* Schroder's Method(A, Lamda=1/2, Omega = 1) for x*x - k = 0 also */ /* result in exactly the same equation. */ /********************************************************************/ long double SqrtA02( long double x, long double c ) { long double x2 = x * x; return x * ( x2 + 3.0 * c ) / ( 3.0 * x2 + c ); } /********************************************************************/ /* This is Schroder's Method(B, Lamda=0, Omega = 2) for x*x - k = 0 */ /********************************************************************/ long double SqrtB02( long double x, long double c ) { long double x2 = x * x; return 1. / x * c * ( 3.0 * x2 + c ) / ( x2 + 3.0 * c ); } /********************************************************************/ /* This is Schroder's Method(A, Lamda=0, Omega = 3) for x*x - k = 0 */ /********************************************************************/ long double SqrtA03( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; return 1. / x * ( x4 + 6.0 * x2 * c + c * c ) / ( x2 + c ) * .25; } /********************************************************************/ /* This is Schroder's Method(B, Lamda=0, Omega = 3) for x*x - k = 0 */ /********************************************************************/ long double SqrtB03( long double x, long double c ) { long double x2 = x * x; return 4.0 * x * c * ( x2 + c ) / ( x2 * x2 + 6.0 * x2 * c + c * c ); } /********************************************************************/ /* This is Schroder's Method(B, Lamda=1, Omega = 3) for x*x - k = 0 */ /********************************************************************/ long double SqrtBL3( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; long double c2 = c * c; return 1. / x * ( x4 + 6.0 * x2 * c + c2 ) / ( x2 + c ) * 0.25; } /********************************************************************/ /* This is Schroder's Method(A, Lamda=0, Omega = 4) for x*x - k = 0 */ /********************************************************************/ long double SqrtA04( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; long double x2c = x2 * c; long double c2 = c * c; return x * ( x4 + 10.0 * x2c + 5.0 * c2 ) / ( 5.0 * x4 + 10.0 * x2c + c2 ); } /********************************************************************/ /* This is Schroder's Method(B, Lamda=0, Omega = 4) for x*x - k = 0 */ /********************************************************************/ long double SqrtB04( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; long double x2c = x2 * c; long double c2 = c * c; return 1. / x * c * ( 5.0 * x4 + 10.0 * x2c + c2 ) / ( x4 + 10.0 * x2c + 5.0 * c2 ); } /********************************************************************/ /* This is Schroder's Method(A, Lamda=0, Omega = 5) for x*x - k = 0 */ /********************************************************************/ long double SqrtA05( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; long double c2 = c * c; return 1. / x * ( x4 * x2 + 15.0 * x4 * c + 15.0 * x2 * c2 + c2 * c ) / ( 3.0 * x4 + 10.0 * x2 * c + 3.0 * c2 ) * .5; } /********************************************************************/ /* This is Schroder's Method(A, Lamda=1, Omega = 5) for x*x - k = 0 */ /********************************************************************/ long double SqrtAL5( long double x, long double c ) { /* > AL5( 1 ) */ long double x2 = x * x; long double x4 = x2 * x2; long double c2 = c * c; return 2.0 * x * c * ( 3.0 * x4 + 10.0 * x2 * c + 3.0 * c2 ) / ( x4 * x2 + 15.0 * x4 * c + 15.0 * x2 * c2 + c2 * c ); } /********************************************************************/ /* This is Schroder's Method(B, Lamda=0, Omega = 5) for x*x - k = 0 */ /********************************************************************/ long double SqrtB05( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; long double c2 = c * c; return 2.0 * x * c * ( 3.0 * x4 + 10.0 * x2 * c + 3.0 * c2 ) / ( x4 * x2 + 15.0 * x4 * c + 15.0 * x2 * c2 + c2 * c ); } /********************************************************************/ /* This is Schroder's Method(B, Lamda=-1, Omega = 5) for x*x-k = 0 */ /********************************************************************/ long double SqrtBL5( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; long double c2 = c * c; return 1. / x * ( x4 * x2 + 15.0 * x4 * c + 15.0 * x2 * c2 + c2 * c ) / ( 3.0 * x4 + 10.0 * x2 * c + 3.0 * c2 ) * 0.5; } /********************************************************************/ /* This is Schroder's Method(A, Lamda=0, Omega = 6) for x*x - k = 0 */ /********************************************************************/ long double SqrtA06( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; long double x6 = x4 * x2; long double c2 = c * c; long double c3 = c2 * c; long double x4c = x4 * c; long double x2c2 = x2 * c2; return x * ( x6 + 21.0 * x4c + 35.0 * x2c2 + 7.0 * c3 ) / ( 7.0 * x6 + 35.0 * x4c + 21.0 * x2c2 + c3 ); } /********************************************************************/ /* This is Schroder's Method(B, Lamda=0, Omega = 6) for x*x - k = 0 */ /********************************************************************/ long double SqrtB06( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; long double x6 = x4 * x2; long double c2 = c * c; long double c3 = c2 * c; long double x4c = x4 * c; long double x2c2 = x2 * c2; return 1. / x * c * ( 7.0 * x6 + 35.0 * x4c + 21.0 * x2c2 + c3 ) / ( x6 + 21.0 * x4c + 35.0 * x2c2 + 7.0 * c3 ); } /********************************************************************/ /* This is Schroder's Method(A, Lamda=0, Omega = 7) for x*x - k = 0 */ /********************************************************************/ long double SqrtA07( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; long double x8 = x4 * x4; long double x6 = x4 * x2; long double c2 = c * c; long double c3 = c2 * c; long double c4 = c2 * c2; return 1. / x * ( x8 + 28.0 * x6 * c + 70.0 * x4 * c2 + 28.0 * x2 * c3 + c4 ) / ( x6 + 7.0 * x4 * c + 7.0 * x2 * c2 + c3 ) * .125; } /********************************************************************/ /* This is Schroder's Method(B, Lamda=0, Omega = 7) for x*x - k = 0 */ /********************************************************************/ long double SqrtB07( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; long double x6 = x4 * x2; long double x8 = x4 * x4; long double c2 = c * c; long double c3 = c2 * c; long double c4 = c2 * c2; return 8.0 * x * c * ( x6 + 7.0 * x4 * c + 7.0 * x2 * c2 + c3 ) / ( x8 + 28.0 * x6 * c + 70.0 * x4 * c2 + 28.0 * x2 * c3 + c4 ); } /********************************************************************/ /* This is Schroder's Method(A, Lamda=0, Omega = 8) for x*x - k = 0 */ /********************************************************************/ long double SqrtA08( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; long double x8 = x4 * x4; long double c2 = c * c; long double c4 = c2 * c2; long double x6c = x4 * x2 * c; long double x4c2 = x4 * c2; long double x2c3 = x2 * c2 * c; return x * ( x8 + 36.0 * x6c + 126.0 * x4c2 + 84.0 * x2c3 + 9.0 * c4 ) / ( 9.0 * x8 + 84.0 * x6c + 126.0 * x4c2 + 36.0 * x2c3 + c4 ); } /********************************************************************/ /* This is Schroder's Method(B, Lamda=0, Omega = 8) for x*x - k = 0 */ /********************************************************************/ long double SqrtB08( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; long double x8 = x4 * x4; long double c2 = c * c; long double c4 = c2 * c2; long double x6c = x4 * x2 * c; long double x4c2 = x4 * c2; long double x2c3 = x2 * c2 * c; return 1. / x * c * ( 9.0 * x8 + 84.0 * x6c + 126.0 * x4c2 + 36.0 * x2c3 + c4 ) / ( x8 + 36.0 * x6c + 126.0 * x4c2 + 84.0 * x2c3 + 9.0 * c4 ); } /********************************************************************/ /* This is Schroder's Method(A, Lamda=0, Omega = 9) for x*x - k = 0 */ /********************************************************************/ long double SqrtA09( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; long double x6 = x4 * x2; long double x8 = x6 * x2; long double c2 = c * c; long double c3 = c2 * c; long double c4 = c3 * c; return 1. / x * ( x8 * x2 + 45.0 * x8 * c + 210.0 * x6 * c2 + 210.0 * x4 * c3 + 45.0 * x2 * c4 + c4 * c ) / ( 5.0 * x8 + 60.0 * x6 * c + 126.0 * x4 * c2 + 60.0 * x2 * c3 + 5.0 * c4 ) * .5; } /********************************************************************/ /* This is Schroder's Method(B, Lamda=0, Omega = 9) for x*x - k = 0 */ /********************************************************************/ long double SqrtB09( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; long double x6 = x4 * x2; long double x8 = x6 * x2; long double c2 = c * c; long double c3 = c2 * c; long double c4 = c2 * c2; return 2.0 * x * c * ( 5.0 * x8 + 60.0 * x6 * c + 126.0 * x4 * c2 + 60.0 * x2 * c3 + 5.0 * c4 ) / ( x8 * x2 + 45.0 * x8 * c + 210.0 * x6 * c2 + 210.0 * x4 * c3 + 45.0 * x2 * c4 + c4 * c ); } /********************************************************************/ /* This is Schroder's Method(A, Lamda=0, Omega =10) for x*x - k = 0 */ /********************************************************************/ long double SqrtA010( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; long double x8 = x4 * x4; long double x10 = x8 * x2; long double x8c = x8 * c; long double c2 = c * c; long double c4 = c2 * c2; long double c5 = c4 * c; long double x6c2 = x4 * x2 * c2; long double x4c3 = x4 * c2 * c; long double x2c4 = x2 * c4; return x * ( x10 + 55.0 * x8c + 330.0 * x6c2 + 462.0 * x4c3 + 165.0 * x2c4 + 11.0 * c5 ) / ( 11.0 * x10 + 165.0 * x8c + 462.0 * x6c2 + 330.0 * x4c3 + 55.0 * x2c4 + c5 ); } /********************************************************************/ /* This is Schroder's Method(B, Lamda=0, Omega =10) for x*x - k = 0 */ /********************************************************************/ long double SqrtB010( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; long double x8 = x4 * x4; long double x10 = x8 * x2; long double x8c = x8 * c; long double c2 = c * c; long double c4 = c2 * c2; long double c5 = c4 * c; long double x6c2 = x4 * x2 * c2; long double x4c3 = x4 * c2 * c; long double x2c4 = x2 * c4; return 1. / x * c * ( 11.0 * x10 + 165.0 * x8c + 462.0 * x6c2 + 330.0 * x4c3 + 55.0 * x2c4 + c5 ) / ( x10 + 55.0 * x8c + 330.0 * x6c2 + 462.0 * x4c3 + 165.0 * x2c4 + 11.0 * c5 ); } /********************************************************************/ /* This is Schroder's Method(A, Lamda=0, Omega =11) for x*x - k = 0 */ /********************************************************************/ long double SqrtA011( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; long double x6 = x4 * x2; long double x8 = x6 * x2; long double x10 = x8 * x2; long double c2 = c * c; long double c3 = c2 * c; long double c4 = c2 * c2; long double c5 = c4 * c; return 1. / x * ( x8 * x4 + 66.0 * x10 * c + 495.0 * x8 * c2 + 924.0 * x6 * c3 + 495.0 * x4 * c4 + 66.0 * x2 * c5 + c4 * c2 ) / ( 3.0 * x10 + 55.0 * x8 * c + 198.0 * x6 * c2 + 198.0 * x4 * c3 + 55.0 * x2 * c4 + 3.0 * c5 ) * .25; } /********************************************************************/ /* This is Schroder's Method(B, Lamda=0, Omega =11) for x*x - k = 0 */ /********************************************************************/ long double SqrtB011( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; long double x6 = x4 * x2; long double x8 = x6 * x2; long double x10 = x8 * x2; long double c2 = c * c; long double c3 = c2 * c; long double c4 = c2 * c2; long double c5 = c4 * c; return 4.0 * x * c * ( 3.0 * x10 + 55.0 * x8 * c + 198.0 * x6 * c2 + 198.0 * x4 * c3 + 55.0 * x2 * c4 + 3.0 * c5 ) / ( x8 * x4 + 66.0 * x10 * c + 495.0 * x8 * c2 + 924.0 * x6 * c3 + 495.0 * x4 * c4 + 66.0 * x2 * c5 + c4 * c2 ); } /********************************************************************/ /* This is Schroder's Method(A, Lamda=0, Omega =12) for x*x - k = 0 */ /********************************************************************/ long double SqrtA012( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; long double x8 = x4 * x4; long double x12 = x8 * x4; long double c2 = c * c; long double c4 = c2 * c2; long double c6 = c4 * c2; long double x2c5 = x2 * c4 * c; long double x4c4 = x4 * c4; long double x6c3 = x4 * x2 * c2 * c; long double x8c2 = x8 * c2; long double x10c = x8 * x2 * c; return x * ( 78.0 * x10c + x12 + 1716.0 * x6c3 + 715.0 * x8c2 + 13.0 * c6 + 1287.0 * x4c4 + 286.0 * x2c5 ) / ( 286.0 * x10c + 13.0 * x12 + 1716.0 * x6c3 + 1287.0 * x8c2 + c6 + 715.0 * x4c4 + 78.0 * x2c5 ); } /********************************************************************/ /* This is Schroder's Method(B, Lamda=0, Omega =12) for x*x - k = 0 */ /********************************************************************/ long double SqrtB012( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; long double x8 = x4 * x4; long double x12 = x8 * x4; long double c2 = c * c; long double c4 = c2 * c2; long double c6 = c4 * c2; long double x2c5 = x2 * c4 * c; long double x4c4 = x4 * c4; long double x6c3 = x4 * x2 * c2 * c; long double x8c2 = x8 * c2; long double x10c = x8 * x2 * c; return 1. / x * c * ( 286.0 * x10c + 13.0 * x12 + 1716.0 * x6c3 + 1287.0 * x8c2 + c6 + 715.0 * x4c4 + 78.0 * x2c5 ) / ( 78.0 * x10c + x12 + 1716.0 * x6c3 + 715.0 * x8c2 + 13.0 * c6 + 1287.0 * x4c4 + 286.0 * x2c5 ); } /********************************************************************/ /* This is Schroder's Method(A, Lamda=0, Omega =13) for x*x - k = 0 */ /********************************************************************/ long double SqrtA013( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; long double x6 = x4 * x2; long double x8 = x4 * x4; long double x12 = x8 * x4; long double x10 = x8 * x2; long double c2 = c * c; long double c3 = c2 * c; long double c4 = c2 * c2; long double c5 = c4 * c; long double c6 = c4 * c2; return 1. / x * ( 91.0 * x12 * c + 1001.0 * x10 * c2 + 3003.0 * x8 * c3 + 3003.0 * x6 * c4 + 1001.0 * x4 * c5 + x8 * x6 + 91.0 * x2 * c6 + c4 * c3 ) / ( 182.0 * x10 * c + 1001.0 * x8 * c2 + 1716.0 * x6 * c3 + 1001.0 * x4 * c4 + 182.0 * x2 * c5 + 7.0 * x12 + 7.0 * c6 ) * .5; } /********************************************************************/ /* This is Schroder's Method(B, Lamda=0, Omega =13) for x*x - k = 0 */ /********************************************************************/ long double SqrtB013( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; long double x6 = x4 * x2; long double x8 = x4 * x4; long double x10 = x8 * x2; long double x12 = x8 * x4; long double c2 = c * c; long double c3 = c2 * c; long double c4 = c2 * c2; long double c5 = c4 * c; long double c6 = c4 * c2; return 2.0 * x * c * ( 7.0 * x12 + 182.0 * x10 * c + 182.0 * x2 * c5 + 1001.0 * x8 * c2 + 1001.0 * x4 * c4 + 1716.0 * x6 * c3 + 7.0 * c6 ) / ( 91.0 * x12 * c + 1001.0 * x10 * c2 + 91.0 * x2 * c6 + 3003.0 * x8 * c3 + 1001.0 * x4 * c5 + 3003.0 * x6 * c4 + c4 * c3 + x8 * x6 ); } /********************************************************************/ /* This is Schroder's Method(A, Lamda=0, Omega =14) for x*x - k = 0 */ /********************************************************************/ long double SqrtA014( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; long double x6 = x4 * x2; long double x8 = x4 * x4; long double x14 = x8 * x6; long double c2 = c * c; long double c3 = c2 * c; long double c4 = c2 * c2; long double c7 = c4 * c3; long double x2c6 = x2 * c4 * c2; long double x4c5 = x4 * c4 * c; long double x6c4 = x6 * c4; long double x8c3 = x8 * c3; long double x10c2 = x8 * x2 * c2; long double x12c = x8 * x4 * c; return x * ( 105.0 * x12c + 1365.0 * x10c2 + 455.0 * x2c6 + 5005.0 * x8c3 + 3003.0 * x4c5 + 6435.0 * x6c4 + 15.0 * c7 + x14 ) / ( 455.0 * x12c + 3003.0 * x10c2 + 105.0 * x2c6 + 6435.0 * x8c3 + 1365.0 * x4c5 + 5005.0 * x6c4 + c7 + 15.0 * x14 ); } /********************************************************************/ /* This is Schroder's Method(B, Lamda=0, Omega =14) for x*x - k = 0 */ /********************************************************************/ long double SqrtB014( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; long double x6 = x4 * x2; long double x8 = x4 * x4; long double x14 = x8 * x6; long double c2 = c * c; long double c3 = c2 * c; long double c4 = c2 * c2; long double c7 = c4 * c3; long double x2c6 = x2 * c4 * c2; long double x4c5 = x4 * c4 * c; long double x6c4 = x6 * c4; long double x8c3 = x8 * c3; long double x10c2 = x8 * x2 * c2; long double x12c = x8 * x4 * c; return 1. / x * c * ( 455.0 * x12c + 3003.0 * x10c2 + 105.0 * x2c6 + 6435.0 * x8c3 + 1365.0 * x4c5 + 5005.0 * x6c4 + c7 + 15.0 * x14 ) / ( 105.0 * x12c + 1365.0 * x10c2 + 455.0 * x2c6 + 5005.0 * x8c3 + 3003.0 * x4c5 + 6435.0 * x6c4 + 15.0 * c7 + x14 ); } /********************************************************************/ /* This is Schroder's Method(A, Lamda=0, Omega =15) for x*x - k = 0 */ /********************************************************************/ long double SqrtA015( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; long double x6 = x4 * x2; long double x8 = x4 * x4; long double x10 = x8 * x2; long double x12 = x8 * x4; long double x14 = x8 * x6; long double x16 = x8 * x8; long double c2 = c * c; long double c3 = c2 * c; long double c4 = c2 * c2; long double c5 = c4 * c; long double c6 = c4 * c2; long double c7 = c4 * c3; long double c8 = c4 * c4; return 1. / x * ( 120.0 * x14 * c + 1820.0 * x12 * c2 + 1820.0 * x4 * c6 + 8008.0 * x10 * c3 + 8008.0 * x6 * c5 + 12870.0 * x8 * c4 + 120.0 * x2 * c7 + x16 + c8 ) / ( 35.0 * x12 * c + 273.0 * x10 * c2 + 35.0 * x2 * c6 + 715.0 * x8 * c3 + 273.0 * x4 * c5 + 715.0 * x6 * c4 + c7 + x14 ) * .0625; } /********************************************************************/ /* This is Schroder's Method(B, Lamda=0, Omega =15) for x*x - k = 0 */ /********************************************************************/ long double SqrtB015( long double x, long double c ) { long double x2 = x * x; long double x4 = x2 * x2; long double x6 = x4 * x2; long double x8 = x4 * x4; long double x10 = x8 * x2; long double x12 = x8 * x4; long double x14 = x8 * x6; long double x16 = x8 * x8; long double c2 = c * c; long double c3 = c2 * c; long double c4 = c2 * c2; long double c5 = c4 * c; long double c6 = c4 * c2; long double c7 = c4 * c3; long double c8 = c4 * c4; return 16.0 * x * c * ( 35.0 * x12 * c + 273.0 * x10 * c2 + 35.0 * x2 * c6 + 715.0 * x8 * c3 + 273.0 * x4 * c5 + 715.0 * x6 * c4 + c7 + x14 ) / ( 120.0 * x14 * c + 1820.0 * x12 * c2 + 1820.0 * x4 * c6 + 8008.0 * x10 * c3 + 8008.0 * x6 * c5 + 12870.0 * x8 * c4 + 120.0 * x2 * c7 + x16 + c8 ); } /********************************************************************/ /* This is Schroder's Method(A, Lamda=0, Omega =16) for x*x - k = 0 */ /********************************************************************/ long double SqrtA016( long double x, long double c ) { long double t1 = x * x; long double t2 = t1 * t1; long double t3 = t2 * t2; long double t5 = c * c; long double t6 = t3 * t2 * t5; long double t8 = t5 * c; long double t9 = t3 * t1 * t8; long double t10 = t5 * t5; long double t11 = t3 * t10; long double t12 = t2 * t1; long double t14 = t12 * t10 * c; long double t16 = t2 * t10 * t5; long double t18 = t1 * t10 * t8; long double t20 = t3 * t12 * c; long double t21 = t10 * t10; long double t22 = t3 * t3; return x * ( 2380.0 * t6 + 12376.0 * t9 + 24310.0 * t11 + 19448.0 * t14 + 6188.0 * t16 + 680.0 * t18 + 136.0 * t20 + 17.0 * t21 + t22 ) / ( 6188.0 * t6 + 19448.0 * t9 + 24310.0 * t11 + 12376.0 * t14 + 2380.0 * t16 + 136.0 * t18 + 680.0 * t20 + t21 + 17.0 * t22 ); } /********************************************************************/ /* This is Schroder's Method(B, Lamda=0, Omega =16) for x*x - k = 0 */ /********************************************************************/ long double SqrtB016( long double x, long double c ) { long double t3 = x * x; long double t4 = t3 * t3; long double t5 = t4 * t4; long double t7 = c * c; long double t8 = t4 * t5 * t7; long double t10 = t7 * c; long double t11 = t5 * t3 * t10; long double t12 = t7 * t7; long double t13 = t5 * t12; long double t14 = t4 * t3; long double t16 = t14 * t12 * c; long double t18 = t4 * t12 * t7; long double t20 = t3 * t12 * t10; long double t22 = t5 * t14 * c; long double t23 = t12 * t12; long double t24 = t5 * t5; return 1. / x * c * ( 6188.0 * t8 + 19448.0 * t11 + 24310.0 * t13 + 12376.0 * t16 + 2380.0 * t18 + 136.0 * t20 + 680.0 * t22 + t23 + 17.0 * t24 ) / ( 2380.0 * t8 + 12376.0 * t11 + 24310.0 * t13 + 19448.0 * t16 + 6188.0 * t18 + 680.0 * t20 + 136.0 * t22 + 17.0 * t23 + t24 ); } /********************************************************************/ /* This is Schroder's Method(A, Lamda=0, Omega =17) for x*x - k = 0 */ /********************************************************************/ long double SqrtA017( long double x, long double c ) { long double t2 = x * x; long double t3 = t2 * t2; long double t4 = t3 * t2; long double t5 = t3 * t3; long double t6 = t5 * t4; long double t7 = c * c; long double t9 = t5 * t3; long double t10 = t7 * c; long double t12 = t5 * t2; long double t13 = t7 * t7; long double t15 = t13 * c; long double t17 = t13 * t7; long double t19 = t13 * t10; long double t21 = t5 * t5; long double t23 = t13 * t13; return 1. / x * ( 3060.0 * t6 * t7 + 18564.0 * t9 * t10 + 43758.0 * t12 * t13 + 43758.0 * t5 * t15 + 18564.0 * t4 * t17 + 3060.0 * t3 * t19 + 153.0 * t21 * c + 153.0 * t2 * t23 + t21 * t2 + t23 * c ) / ( 4284.0 * t9 * t7 + 15912.0 * t12 * t10 + 24310.0 * t5 * t13 + 15912.0 * t4 * t15 + 4284.0 * t3 * t17 + 408.0 * t2 * t19 + 408.0 * t6 * c + 9.0 * t23 + 9.0 * t21 ) * .5; } /********************************************************************/ /* This is Schroder's Method(B, Lamda=0, Omega =17) for x*x - k = 0 */ /********************************************************************/ long double SqrtB017( long double x, long double c ) { long double t2 = x * x; long double t3 = t2 * t2; long double t4 = t3 * t3; long double t5 = t4 * t2; long double t6 = c * c; long double t7 = t6 * c; long double t9 = t6 * t6; long double t11 = t3 * t2; long double t12 = t4 * t11; long double t14 = t4 * t3; long double t16 = t4 * t4; long double t17 = t9 * t6; long double t19 = t9 * c; long double t21 = t9 * t7; long double t23 = t9 * t9; return 2.0 * x * c * ( 15912.0 * t5 * t7 + 24310.0 * t4 * t9 + 408.0 * t12 * c + 4284.0 * t14 * t6 + 9.0 * t16 + 4284.0 * t3 * t17 + 15912.0 * t11 * t19 + 408.0 * t2 * t21 + 9.0 * t23 ) / ( 43758.0 * t5 * t9 + 43758.0 * t4 * t19 + 3060.0 * t12 * t6 + 18564.0 * t14 * t7 + 153.0 * t16 * c + 3060.0 * t3 * t21 + 18564.0 * t11 * t17 + 153.0 * t2 * t23 + t16 * t2 + t23 * c ); } /********************************************************************/ /* This is Schroder's Method(A, Lamda=0, Omega =18) for x*x - k = 0 */ /********************************************************************/ long double SqrtA018( long double x, long double c ) { long double t1 = x * x; long double t2 = t1 * t1; long double t3 = c * c; long double t4 = t3 * c; long double t5 = t3 * t3; long double t7 = t2 * t5 * t4; long double t8 = t2 * t1; long double t10 = t8 * t5 * t3; long double t11 = t2 * t2; long double t13 = t11 * t5 * c; long double t15 = t11 * t2 * t4; long double t16 = t11 * t11; long double t17 = t16 * c; long double t19 = t11 * t8 * t3; long double t21 = t11 * t1 * t5; long double t22 = t5 * t5; long double t23 = t1 * t22; long double t24 = t16 * t1; long double t25 = t22 * c; return x * ( 11628.0 * t7 + 50388.0 * t10 + 92378.0 * t13 + 27132.0 * t15 + 171.0 * t17 + 3876.0 * t19 + 75582.0 * t21 + 969.0 * t23 + t24 + 19.0 * t25 ) / ( 3876.0 * t7 + 27132.0 * t10 + 75582.0 * t13 + 50388.0 * t15 + 969.0 * t17 + 11628.0 * t19 + 92378.0 * t21 + 171.0 * t23 + 19.0 * t24 + t25 ); } /********************************************************************/ /* This is Schroder's Method(B, Lamda=0, Omega =18) for x*x - k = 0 */ /********************************************************************/ long double SqrtB018( long double x, long double c ) { long double t3 = x * x; long double t4 = t3 * t3; long double t5 = t4 * t4; long double t6 = t5 * t5; long double t7 = t6 * t3; long double t8 = t4 * t3; long double t10 = c * c; long double t11 = t5 * t8 * t10; long double t12 = t6 * c; long double t13 = t10 * c; long double t14 = t10 * t10; long double t16 = t4 * t14 * t13; long double t17 = t14 * t14; long double t18 = t3 * t17; long double t20 = t5 * t4 * t13; long double t22 = t5 * t3 * t14; long double t24 = t8 * t14 * t10; long double t26 = t5 * t14 * c; long double t27 = t17 * c; return 1. / x * c * ( 19.0 * t7 + 11628.0 * t11 + 969.0 * t12 + 3876.0 * t16 + 171.0 * t18 + 50388.0 * t20 + 92378.0 * t22 + 27132.0 * t24 + 75582.0 * t26 + t27 ) / ( 171.0 * t12 + 27132.0 * t20 + 3876.0 * t11 + 969.0 * t18 + 19.0 * t27 + 75582.0 * t22 + 92378.0 * t26 + t7 + 11628.0 * t16 + 50388.0 * t24 ); } /********************************************************************/ /* This is Schroder's Method(A, Lamda=0, Omega =19) for x*x - k = 0 */ /********************************************************************/ long double SqrtA019( long double x, long double c ) { long double t2 = x * x; long double t3 = t2 * t2; long double t4 = c * c; long double t5 = t4 * t4; long double t6 = t5 * t5; long double t8 = t3 * t3; long double t9 = t8 * t8; long double t11 = t8 * t2; long double t12 = t5 * c; long double t14 = t8 * t3; long double t16 = t3 * t2; long double t17 = t8 * t16; long double t18 = t4 * c; long double t21 = t9 * t2; long double t23 = t6 * c; long double t25 = t5 * t18; long double t27 = t5 * t4; long double t30 = 4845.0 * t3 * t6 + t9 * t3 + 184756.0 * t11 * t12 + 125970.0 * t14 * t5 + 38760.0 * t17 * t18 + 4845.0 * t9 * t4 + 190.0 * t21 * c + 190.0 * t2 * t23 + 38760.0 * t16 * t25 + 125970.0 * t8 * t27 + t6 * t4; return 1. / x * t30 / ( 285.0 * t2 * t6 + 5.0 * t21 + 41990.0 * t8 * t12 + 41990.0 * t11 * t5 + 19380.0 * t14 * t18 + 3876.0 * t17 * t4 + 285.0 * t9 * c + 5.0 * t23 + 3876.0 * t3 * t25 + 19380.0 * t16 * t27 ) * .25; } /********************************************************************/ /* This is Schroder's Method(B, Lamda=0, Omega =19) for x*x - k = 0 */ /********************************************************************/ long double SqrtB019( long double x, long double c ) { long double t2 = x * x; long double t3 = t2 * t2; long double t4 = t3 * t3; long double t5 = t4 * t4; long double t7 = t5 * t2; long double t8 = c * c; long double t9 = t8 * t8; long double t10 = t9 * t9; long double t11 = t10 * c; long double t12 = t4 * t2; long double t14 = t4 * t3; long double t15 = t8 * c; long double t17 = t3 * t2; long double t18 = t4 * t17; long double t21 = t9 * t15; long double t23 = t9 * t8; long double t25 = t9 * c; long double t39 = t5 * t3 + t10 * t8 + 4845.0 * t5 * t8 + 190.0 * t7 * c + 38760.0 * t18 * t15 + 184756.0 * t12 * t25 + 125970.0 * t14 * t9 + 125970.0 * t4 * t23 + 38760.0 * t17 * t21 + 4845.0 * t3 * t10 + 190.0 * t2 * t11; return 4.0 * x * c * ( 285.0 * t5 * c + 5.0 * t7 + 5.0 * t11 + 41990.0 * t12 * t9 + 19380.0 * t14 * t15 + 3876.0 * t18 * t8 + 285.0 * t2 * t10 + 3876.0 * t3 * t21 + 19380.0 * t17 * t23 + 41990.0 * t4 * t25 ) / t39; } /********************************************************************/ /* This is Schroder's Method(A, Lamda=0, Omega =20) for x*x - k = 0 */ /********************************************************************/ long double SqrtA020( long double x, long double c ) { long double t1 = x * x; long double t2 = t1 * t1; long double t3 = t2 * t2; long double t4 = t3 * t3; long double t5 = t4 * t2; long double t6 = c * c; long double t7 = t6 * t6; long double t8 = t7 * t7; long double t9 = t8 * t6; long double t10 = t4 * t6; long double t12 = t4 * t1 * c; long double t13 = t2 * t1; long double t15 = t6 * c; long double t16 = t3 * t13 * t15; long double t19 = t3 * t1 * t7 * c; long double t21 = t3 * t2 * t7; long double t23 = t3 * t7 * t6; long double t25 = t13 * t7 * t15; long double t26 = t2 * t8; long double t28 = t1 * t8 * c; long double t29 = t5 + 21.0 * t9 + 5985.0 * t10 + 210.0 * t12 + 54264.0 * t16 + 352716.0 * t19 + 203490.0 * t21 + 293930.0 * t23 + 116280.0 * t25 + 20349.0 * t26 + 1330.0 * t28; long double t31 = 21.0 * t5 + t9 + 20349.0 * t10 + 1330.0 * t12 + 116280.0 * t16 + 352716.0 * t19 + 293930.0 * t21 + 203490.0 * t23 + 54264.0 * t25 + 5985.0 * t26 + 210.0 * t28; return x * t29 / t31; } /********************************************************************/ /* This is Schroder's Method(B, Lamda=0, Omega =20) for x*x - k = 0 */ /********************************************************************/ long double SqrtB020( long double x, long double c ) { long double t3 = x * x; long double t4 = t3 * t3; long double t5 = t4 * t4; long double t6 = t5 * t5; long double t7 = c * c; long double t8 = t6 * t7; long double t9 = t4 * t3; long double t11 = t7 * c; long double t12 = t5 * t9 * t11; long double t13 = t7 * t7; long double t14 = t13 * t13; long double t15 = t4 * t14; long double t17 = t5 * t13 * t7; long double t19 = t9 * t13 * t11; long double t21 = t5 * t4 * t13; long double t24 = t5 * t3 * t13 * c; long double t25 = t6 * t4; long double t27 = t6 * t3 * c; long double t29 = t3 * t14 * c; long double t30 = t14 * t7; long double t31 = 20349.0 * t8 + 116280.0 * t12 + 5985.0 * t15 + 203490.0 * t17 + 54264.0 * t19 + 293930.0 * t21 + 352716.0 * t24 + 21.0 * t25 + 1330.0 * t27 + 210.0 * t29 + t30; long double t32 = 54264.0 * t12 + 203490.0 * t21 + 1330.0 * t29 + 116280.0 * t19 + 20349.0 * t15 + 352716.0 * t24 + 293930.0 * t17 + 210.0 * t27 + 5985.0 * t8 + t25 + 21.0 * t30; return 1. / x * c * t31 / t32; }