@@ -1,701 +1,701 @@ -REDUCE 3.6, 15-Jul-95, patched to 6 Mar 96 ... - - -% Test of Math Package. - -% Author: Stanley L. Kameny . - -% Copyright (c) 1987, 1988, 1989, 1991 Stanley L. Kameny. -% All Rights Reserved. - -%********************************************************************* -%** -%** This math package will compute the floating point values of ** -%** the usual elementary functions, namely: ** -%** sin asin sind asind sinh asinh ** -%** cos acos cosd acosd cosh acosh ** -%** tan atan tand atand tanh atanh ** -%** cot acot cotd acotd coth acoth ** -%** sec asec secd asecd sech asech ** -%** csc acsc cscd acscd csch acsch ** -%** atan2 atan2d ** -%** exp ln sqrt ** -%** expt log cbrt ** -%** logb hypot ** -%** log10 floor ** -%** ceiling ** -%** round ** -%** ** -%** All functions are computed to the accuracy of the floating- ** -%** point precision of the system set up at the time. ** -%** ** -%********************************************************************* -%** File #1===Trig Function Tests=== -%** Trig functions are tested in both degrees and radians modes. -%********************************************************************* - -symbolic; - - -nil - - -math!!label; - - -"Math package mod 1.7, 1 May 93" - - -symbolic procedure terpr(i,j); if remainder(i,j)=0 then terpri()$ - - - -on rounded; - - -nil - % We need !!plumin, etc. - -% #1: sind**2+cosd**2 test: ideal answers 1.0 for all args. - - for i:=0:45 do <",sind float i**2+cosd float i**2; - terpr(i,4)>>; - - 0->1.0 - 1->1.0 2->1.0 3->1.0 4->1.0 - 5->1.0 6->1.0 7->1.0 8->1.0 - 9->1.0 10->1.0 11->1.0 12->1.0 - 13->1.0 14->1.0 15->1.0 16->1.0 - 17->1.0 18->1.0 19->1.0 20->1.0 - 21->1.0 22->1.0 23->1.0 24->1.0 - 25->1.0 26->1.0 27->1.0 28->1.0 - 29->1.0 30->1.0 31->1.0 32->1.0 - 33->1.0 34->1.0 35->1.0 36->1.0 - 37->1.0 38->1.0 39->1.0 40->1.0 - 41->1.0 42->1.0 43->1.0 44->1.0 - 45->1.0 -nil - - -% #2: quadrant test of sind, cosd: proper answers + +,+ -,- -,- +. - -begin scalar a; - a:= sind 45.0; - for i:= 0.0:3.0 do - <> - end$ - - 1.0 1.0 - 1.0 -1.0 - -1.0 -1.0 - -1.0 1.0 - - -% #3: scaling test: all values should be 1 exactly. - -begin scalar a; a:= cosd 60.0; -% for i:= -10.0:10.0 do write fix(cosd(60+i*360)/a)," " - for i:= -10.0:10.0 do write round(cosd(60+i*360)/a)," " - end$ - -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 - -% #4: test of radians -> degrees evaluation: ideal values 1.0. - -array a(6)$ - - - -begin - for i:=1:6 do a(i):=sind(15.0*i); - for i:=1:6 do <> - end$ - -1.0 1.0 1.0 -1.0 1.0 1.0 - - -% #5: test of tand*cotd: ideal values 1.0. - -begin - for i:=5 step 5 until 85 do - <>; - terpri() - end$ - -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 - - -% #6: test of secd**2-tand**2: ideal values 1.0. - -begin - for i:=5 step 5 until 85 do - <> - end$ - -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -0.99999999999999 1.0 - -% #7: test of cscd**2-cotd**2: ideal values 1.0. - -begin - for i:=5 step 5 until 85 do - <> - end$ - -1.0 0.99999999999999 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 - -% #8: test of asind+acosd: ideal values 1.0. - -begin write "sind and cosd"; terpri(); - for i:=-10:10 do - <>; - write "sin and cos";terpri(); - for i:=-10:10 do - <> - end$ - -sind and cosd -1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -sin and cos -1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 - - -% #9: test of atand+acotd: ideal values 1.0. - -begin scalar x; write "tand, atand and acotd"; terpri(); - for i:=-80 step 10 until 80 do - <>; - terpri(); - write "tan, atan and acot";terpri(); - for i:=-80 step 10 until 80 do - <> - end$ - -tand, atand and acotd -1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 -tan, atan and acot -1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 - -% #10: test of atand tand: ideal values i for i:=-9:89. - -begin - for i:=-9:89 do - <",if i=0 then 1.0 else atand tand float i; - terpr(i,4)>> - end$ - - -9->-9.0 -8->-8.0 - -7->-7.0 -6->-6.0 -5->-5.0 -4->-4.0 - -3->-3.0 -2->-2.0 -1->-1.0 0->1.0 - 1->1.0 2->2.0 3->3.0 4->4.0 - 5->5.0 6->6.0 7->7.0 8->8.0 - 9->9.0 10->10.0 11->11.0 12->12.0 - 13->13.0 14->14.0 15->15.0 16->16.0 - 17->17.0 18->18.0 19->19.0 20->20.0 - 21->21.0 22->22.0 23->23.0 24->24.0 - 25->25.0 26->26.0 27->27.0 28->28.0 - 29->29.0 30->30.0 31->31.0 32->32.0 - 33->33.0 34->34.0 35->35.0 36->36.0 - 37->37.0 38->38.0 39->39.0 40->40.0 - 41->41.0 42->42.0 43->43.0 44->44.0 - 45->45.0 46->46.0 47->47.0 48->48.0 - 49->49.0 50->50.0 51->51.0 52->52.0 - 53->53.0 54->54.0 55->55.0 56->56.0 - 57->57.0 58->58.0 59->59.0 60->60.0 - 61->61.0 62->62.0 63->63.0 64->64.0 - 65->65.0 66->66.0 67->67.0 68->68.0 - 69->69.0 70->70.0 71->71.0 72->72.0 - 73->73.0 74->74.0 75->75.0 76->76.0 - 77->77.0 78->78.0 79->79.0 80->80.0 - 81->81.0 82->82.0 83->83.0 84->84.0 - 85->85.0 86->86.0 87->87.0 88->88.0 - 89->89.0 - -% #11: test of acot cotd: ideal values 10*i for i:=1:17. - -begin - for i:=10 step 10 until 170 do - <",acotd cotd i; terpr(i,40)>>; terpri();terpri() end$ - - 10->10.0 20->20.0 30->30.0 40->40.0 - 50->50.0 60->60.0 70->70.0 80->80.0 - 90->90.0 100->100.0 110->110.0 120->120.0 - 130->130.0 140->140.0 150->150.0 160->160.0 - 170->170.0 - - - -% #12: test of asind sind: ideal values 10*i for i:=-9:9. - -begin - for i:=-90 step 10 until 90 do - <",asind sind float i; terpr(i,40)>> - end$ - - -90->-90.0 -80->-80.0 - -70->-70.0 -60->-60.0 -50->-50.0 -40->-40.0 - -30->-30.0 -20->-20.0 -10->-10.0 0->0.0e+000 - 10->10.0 20->20.0 30->30.0 40->40.0 - 50->50.0 60->60.0 70->70.0 80->80.0 - 90->90.0 - -% #13: test of acosd cosd: ideal values 10*i for i:=1:18. - -begin - for i:=10 step 10 until 180 do - <",acosd cosd float i; terpr(i,40)>> - end$ - - 10->10.0 20->20.0 30->30.0 40->40.0 - 50->50.0 60->60.0 70->70.0 80->80.0 - 90->90.0 100->100.0 110->110.0 120->120.0 - 130->130.0 140->140.0 150->150.0 160->160.0 - 170->170.0 180->180.0 - -% #14: test of acscd cscd: ideal values 10*i for i:=-9:9, except -% error for i=0. - -begin - for i:=-90 step 10 until 90 do - <",if i=0 then "error" else acscd cscd float i; - terpr(i,40)>> - end$ - - -90->-90.0 -80->-80.0 - -70->-70.0 -60->-60.0 -50->-50.0 -40->-40.0 - -30->-30.0 -20->-20.0 -10->-10.0 0->error - 10->10.0 20->20.0 30->30.0 40->40.0 - 50->50.0 60->60.0 70->70.0 80->80.0 - 90->90.0 - -% #15: test of asecd secd: ideal values 10*i for i :=0:18. except -% error for i=9. - -begin - for i:=0 step 10 until 180 do - <",if i=90 then "error" else asecd secd float i; - terpr(i,40)>> - end$ - - 0->0.0e+000 - 10->10.0 20->20.0 30->30.0 40->40.0 - 50->50.0 60->60.0 70->70.0 80->80.0 - 90->error 100->100.0 110->110.0 120->120.0 - 130->130.0 140->140.0 150->150.0 160->160.0 - 170->170.0 180->180.0 - -%********************************************************************* -%** ===Exp,Log,Sqrt,Cbrt, and Expt Function tests=== -%********************************************************************* - -% #16: test of properties of exp function: ideal results 1.0. - -array b(5)$ - - - -begin scalar x; x:=0; - write "multiplicative property";terpri(); - for i:=0:5 do b(i):=1+i/6.0; for i:=0:5 do for j:=i:5 do - <> - end$ - -multiplicative property - 1.0 1.0 1.0 1.0 1.0 - 1.0 1.0 1.0 1.0 1.0 - 1.0 1.0 1.0 1.0 1.0 - 1.0 1.0 1.0 1.0 1.0 - 1.0 - -% #17: various properties of exp: ideal results 1.0. - -begin write "inverse property"$ terpri()$ - for i:=1:5 do write " ",exp(b(i))*exp(-b(i));terpri(); - write "squares"; terpri(); - for i:=-10:10 do - <>; - write "cubes"; terpri(); - for i:=-10:10 do - <> - end$ - -inverse property - 1.0 1.0 1.0 1.0 1.0 -squares - 1.0 - 1.0 1.0 1.0 1.0 1.0 - 1.0 1.0 1.0 1.0 1.0 - 1.0 1.0 1.0 1.0 1.0 - 1.0 1.0 1.0 1.0 1.0 -cubes - 1.0 - 1.0 1.0 1.0 1.0 1.0 - 1.0 1.0 1.0 1.0 1.0 - 1.0 1.0 1.0 1.0 1.0 - 1.0 1.0 1.0 1.0 1.0 - - -% #18: test of log exp: ideal results 1.0. - -begin for i:=-5:5 do - <> - end$ - -1.0 -1.0 1.0 1.0 1.0 0/0 -1.0 1.0 1.0 1.0 1.0 - - -% #19: test of log10 expt(10.0,i): ideal results 1.0. - -begin scalar i; write "small values i:=-5:5"; terpri(); - for j:=-5:5 do - <>; - write "large i=2**j where j:=0:6"; terpri(); - for j:=0:5 do - <>; - terpri(); - write "noninteger values of i=j/10.0 where j:=1:20";terpri(); - for j:=1:20 do - <> - end$ - -small values i:=-5:5 -1.0 -1.0 1.0 1.0 1.0 zero -1.0 1.0 1.0 1.0 1.0 -large i=2**j where j:=0:6 -1.0 -1.0 1.0 1.0 1.0 1.0 - -noninteger values of i=j/10.0 where j:=1:20 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 - - -% #20: test of properties of expt(x,i)*(expt(x,-i). ideal result 1.0. - -begin integer j; - for x:=2:6 do for i:=2:6 do - <> - end$ - -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 - - -% #21: test of expt(-x,i)/expt(x,i) for fractional i. - -begin integer j,k; write "odd numerator. ideal result -1.0"; terpri(); - for i:=1:10 do - <>; - write "even numerator. ideal result 1.0"; terpri(); - for i:=1:10 do - <> - end$ - -odd numerator. ideal result -1.0 --1.0 -1.0 -1.0 -1.0 -1.0 --1.0 -1.0 -1.0 -1.0 -1.0 -even numerator. ideal result 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 - - -% #22: test of properties of ln or log or logb: -% inverse argument: ideal result -1.0. - -begin integer x; - for i:=2:5 do for j:= 2:10 do - <> - end$ - --1.0 -1.0 -1.0 -1.0 -1.0 --1.0 -1.0 -1.0 -1.0 -1.0 --1.0 -1.0 -1.0 -1.0 -1.0 --1.0 -1.0 -1.0 -1.0 -1.0 --1.0 -1.0 -1.0 -1.0 -1.0 --1.0 -1.0 -1.0 -1.0 -1.0 --1.0 -1.0 -1.0 -1.0 -1.0 --1.0 - -% #23: test of log(a*b) = log a+log b: ideal result 1.0. - -begin integer x; - for i:=1:5 do for j:=i:5 do - <> - end$ - -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 - - -% #24:test of sqrt x*sqrt x/x for x:=5i*(5i/3)**i where i:=1:20 -% (test values strictly arbitrary): ideal results 1.0. - -begin scalar x,s; - for i:=1:20 do - <> - end$ - -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 - - -% #25: test of cbrt x**3/x for x:=5i*(5i/3)**i where i:=-9:10 -% (test values strictly arbitrary):ideal results 1.0. - -begin scalar x,s; - for i:=-9:10 do - <> - end$ - -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 - - -%********************************************************************* -%** ===Hyperbolic Function Tests=== -%********************************************************************* - -% #26: test of sinh x+ cosh x= exp x: ideal results 1.0. - -begin scalar x; - for i:=1:10 do - <> - end$ - -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 - - -% #27: test of cosh x-sinh x= exp(-x): ideal results 1.0. - -begin scalar x; - for i:=1:10 do - <> - end$ - -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 - - -% #28: test of (cosh x)**2-(sinh x)**2: ideal results 1.0. - -begin scalar x$ - for i:=1:10 do - <> - end$ - -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 - - -% #29: test of tanh*cosh/sinh: ideal results 1.0. - -begin scalar x; - for i:=1:20 do - <> - end$ - -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 - - -% #30: test of tanh*coth: ideal results 1.0. - -begin scalar x; - for i:=1:20 do - <> - end$ - -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 - - -% #31: test of sech*cosh: ideal results 1.0. - -begin scalar x; - for i:=1:20 do - <> - end$ - -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 - - -% #32: test of csch*sinh: ideal results 1.0. - -begin scalar x; - for i:=1:20 do - <> - end$ - -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 - - -% #33: test of asinh sinh: ideal results 1.0. - -begin scalar x; for i:=1:20 do - <> - end$ - -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 - - -% #34: test of acosh cosh: ideal results 1.0. However, acosh x -% loses accuracy as x -> 1 since d/dx cosh x -> 0. - -begin scalar x; - for i:=1:20 do - <> - end$ - -1.0 1.0 0.99999999999999 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 - - -% #35: test of cosh acosh:ideal results 1.0. - -begin scalar x; - for i:=1:50 do - <> - end$ - -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 - - -% #36: test of atanh tanh: ideal results 1.0. - -begin scalar x; - for i:=1:20 do - <> - end$ - -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 - - -% #37: test of acoth coth: ideal results 1.0. - -begin scalar x; - for i:=1:20 do - <> - end$ - -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 - - -% #38: test of asech sech: ideal results 1.0. However, asech x -% loses accuracy as x -> 1 since d/dx sech x -> 0. - -begin scalar x; - for i:=1:20 do - <> - end$ - -1.0 1.0 0.99999999999999 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 - - -% #39: test of acsch csch: ideal results 1.0. - -begin scalar x; - for i:=1:20 do - <> - end$ - -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1 -1.0 1.0 1.0 1.0 1.0 -1.0 1.0 1.0 1.0 1.0 - - -% End of Test. - -end; -(TIME: math 329 329) - -nil +REDUCE 3.6, 15-Jul-95, patched to 6 Mar 96 ... + + +% Test of Math Package. + +% Author: Stanley L. Kameny . + +% Copyright (c) 1987, 1988, 1989, 1991 Stanley L. Kameny. +% All Rights Reserved. + +%********************************************************************* +%** +%** This math package will compute the floating point values of ** +%** the usual elementary functions, namely: ** +%** sin asin sind asind sinh asinh ** +%** cos acos cosd acosd cosh acosh ** +%** tan atan tand atand tanh atanh ** +%** cot acot cotd acotd coth acoth ** +%** sec asec secd asecd sech asech ** +%** csc acsc cscd acscd csch acsch ** +%** atan2 atan2d ** +%** exp ln sqrt ** +%** expt log cbrt ** +%** logb hypot ** +%** log10 floor ** +%** ceiling ** +%** round ** +%** ** +%** All functions are computed to the accuracy of the floating- ** +%** point precision of the system set up at the time. ** +%** ** +%********************************************************************* +%** File #1===Trig Function Tests=== +%** Trig functions are tested in both degrees and radians modes. +%********************************************************************* + +symbolic; + + +nil + + +math!!label; + + +"Math package mod 1.7, 1 May 93" + + +symbolic procedure terpr(i,j); if remainder(i,j)=0 then terpri()$ + + + +on rounded; + + +nil + % We need !!plumin, etc. + +% #1: sind**2+cosd**2 test: ideal answers 1.0 for all args. + + for i:=0:45 do <",sind float i**2+cosd float i**2; + terpr(i,4)>>; + + 0->1.0 + 1->1.0 2->1.0 3->1.0 4->1.0 + 5->1.0 6->1.0 7->1.0 8->1.0 + 9->1.0 10->1.0 11->1.0 12->1.0 + 13->1.0 14->1.0 15->1.0 16->1.0 + 17->1.0 18->1.0 19->1.0 20->1.0 + 21->1.0 22->1.0 23->1.0 24->1.0 + 25->1.0 26->1.0 27->1.0 28->1.0 + 29->1.0 30->1.0 31->1.0 32->1.0 + 33->1.0 34->1.0 35->1.0 36->1.0 + 37->1.0 38->1.0 39->1.0 40->1.0 + 41->1.0 42->1.0 43->1.0 44->1.0 + 45->1.0 +nil + + +% #2: quadrant test of sind, cosd: proper answers + +,+ -,- -,- +. + +begin scalar a; + a:= sind 45.0; + for i:= 0.0:3.0 do + <> + end$ + + 1.0 1.0 + 1.0 -1.0 + -1.0 -1.0 + -1.0 1.0 + + +% #3: scaling test: all values should be 1 exactly. + +begin scalar a; a:= cosd 60.0; +% for i:= -10.0:10.0 do write fix(cosd(60+i*360)/a)," " + for i:= -10.0:10.0 do write round(cosd(60+i*360)/a)," " + end$ + +1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 + +% #4: test of radians -> degrees evaluation: ideal values 1.0. + +array a(6)$ + + + +begin + for i:=1:6 do a(i):=sind(15.0*i); + for i:=1:6 do <> + end$ + +1.0 1.0 1.0 +1.0 1.0 1.0 + + +% #5: test of tand*cotd: ideal values 1.0. + +begin + for i:=5 step 5 until 85 do + <>; + terpri() + end$ + +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 + + +% #6: test of secd**2-tand**2: ideal values 1.0. + +begin + for i:=5 step 5 until 85 do + <> + end$ + +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +0.99999999999999 1.0 + +% #7: test of cscd**2-cotd**2: ideal values 1.0. + +begin + for i:=5 step 5 until 85 do + <> + end$ + +1.0 0.99999999999999 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 + +% #8: test of asind+acosd: ideal values 1.0. + +begin write "sind and cosd"; terpri(); + for i:=-10:10 do + <>; + write "sin and cos";terpri(); + for i:=-10:10 do + <> + end$ + +sind and cosd +1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +sin and cos +1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 + + +% #9: test of atand+acotd: ideal values 1.0. + +begin scalar x; write "tand, atand and acotd"; terpri(); + for i:=-80 step 10 until 80 do + <>; + terpri(); + write "tan, atan and acot";terpri(); + for i:=-80 step 10 until 80 do + <> + end$ + +tand, atand and acotd +1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 +tan, atan and acot +1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 + +% #10: test of atand tand: ideal values i for i:=-9:89. + +begin + for i:=-9:89 do + <",if i=0 then 1.0 else atand tand float i; + terpr(i,4)>> + end$ + + -9->-9.0 -8->-8.0 + -7->-7.0 -6->-6.0 -5->-5.0 -4->-4.0 + -3->-3.0 -2->-2.0 -1->-1.0 0->1.0 + 1->1.0 2->2.0 3->3.0 4->4.0 + 5->5.0 6->6.0 7->7.0 8->8.0 + 9->9.0 10->10.0 11->11.0 12->12.0 + 13->13.0 14->14.0 15->15.0 16->16.0 + 17->17.0 18->18.0 19->19.0 20->20.0 + 21->21.0 22->22.0 23->23.0 24->24.0 + 25->25.0 26->26.0 27->27.0 28->28.0 + 29->29.0 30->30.0 31->31.0 32->32.0 + 33->33.0 34->34.0 35->35.0 36->36.0 + 37->37.0 38->38.0 39->39.0 40->40.0 + 41->41.0 42->42.0 43->43.0 44->44.0 + 45->45.0 46->46.0 47->47.0 48->48.0 + 49->49.0 50->50.0 51->51.0 52->52.0 + 53->53.0 54->54.0 55->55.0 56->56.0 + 57->57.0 58->58.0 59->59.0 60->60.0 + 61->61.0 62->62.0 63->63.0 64->64.0 + 65->65.0 66->66.0 67->67.0 68->68.0 + 69->69.0 70->70.0 71->71.0 72->72.0 + 73->73.0 74->74.0 75->75.0 76->76.0 + 77->77.0 78->78.0 79->79.0 80->80.0 + 81->81.0 82->82.0 83->83.0 84->84.0 + 85->85.0 86->86.0 87->87.0 88->88.0 + 89->89.0 + +% #11: test of acot cotd: ideal values 10*i for i:=1:17. + +begin + for i:=10 step 10 until 170 do + <",acotd cotd i; terpr(i,40)>>; terpri();terpri() end$ + + 10->10.0 20->20.0 30->30.0 40->40.0 + 50->50.0 60->60.0 70->70.0 80->80.0 + 90->90.0 100->100.0 110->110.0 120->120.0 + 130->130.0 140->140.0 150->150.0 160->160.0 + 170->170.0 + + + +% #12: test of asind sind: ideal values 10*i for i:=-9:9. + +begin + for i:=-90 step 10 until 90 do + <",asind sind float i; terpr(i,40)>> + end$ + + -90->-90.0 -80->-80.0 + -70->-70.0 -60->-60.0 -50->-50.0 -40->-40.0 + -30->-30.0 -20->-20.0 -10->-10.0 0->0.0e+000 + 10->10.0 20->20.0 30->30.0 40->40.0 + 50->50.0 60->60.0 70->70.0 80->80.0 + 90->90.0 + +% #13: test of acosd cosd: ideal values 10*i for i:=1:18. + +begin + for i:=10 step 10 until 180 do + <",acosd cosd float i; terpr(i,40)>> + end$ + + 10->10.0 20->20.0 30->30.0 40->40.0 + 50->50.0 60->60.0 70->70.0 80->80.0 + 90->90.0 100->100.0 110->110.0 120->120.0 + 130->130.0 140->140.0 150->150.0 160->160.0 + 170->170.0 180->180.0 + +% #14: test of acscd cscd: ideal values 10*i for i:=-9:9, except +% error for i=0. + +begin + for i:=-90 step 10 until 90 do + <",if i=0 then "error" else acscd cscd float i; + terpr(i,40)>> + end$ + + -90->-90.0 -80->-80.0 + -70->-70.0 -60->-60.0 -50->-50.0 -40->-40.0 + -30->-30.0 -20->-20.0 -10->-10.0 0->error + 10->10.0 20->20.0 30->30.0 40->40.0 + 50->50.0 60->60.0 70->70.0 80->80.0 + 90->90.0 + +% #15: test of asecd secd: ideal values 10*i for i :=0:18. except +% error for i=9. + +begin + for i:=0 step 10 until 180 do + <",if i=90 then "error" else asecd secd float i; + terpr(i,40)>> + end$ + + 0->0.0e+000 + 10->10.0 20->20.0 30->30.0 40->40.0 + 50->50.0 60->60.0 70->70.0 80->80.0 + 90->error 100->100.0 110->110.0 120->120.0 + 130->130.0 140->140.0 150->150.0 160->160.0 + 170->170.0 180->180.0 + +%********************************************************************* +%** ===Exp,Log,Sqrt,Cbrt, and Expt Function tests=== +%********************************************************************* + +% #16: test of properties of exp function: ideal results 1.0. + +array b(5)$ + + + +begin scalar x; x:=0; + write "multiplicative property";terpri(); + for i:=0:5 do b(i):=1+i/6.0; for i:=0:5 do for j:=i:5 do + <> + end$ + +multiplicative property + 1.0 1.0 1.0 1.0 1.0 + 1.0 1.0 1.0 1.0 1.0 + 1.0 1.0 1.0 1.0 1.0 + 1.0 1.0 1.0 1.0 1.0 + 1.0 + +% #17: various properties of exp: ideal results 1.0. + +begin write "inverse property"$ terpri()$ + for i:=1:5 do write " ",exp(b(i))*exp(-b(i));terpri(); + write "squares"; terpri(); + for i:=-10:10 do + <>; + write "cubes"; terpri(); + for i:=-10:10 do + <> + end$ + +inverse property + 1.0 1.0 1.0 1.0 1.0 +squares + 1.0 + 1.0 1.0 1.0 1.0 1.0 + 1.0 1.0 1.0 1.0 1.0 + 1.0 1.0 1.0 1.0 1.0 + 1.0 1.0 1.0 1.0 1.0 +cubes + 1.0 + 1.0 1.0 1.0 1.0 1.0 + 1.0 1.0 1.0 1.0 1.0 + 1.0 1.0 1.0 1.0 1.0 + 1.0 1.0 1.0 1.0 1.0 + + +% #18: test of log exp: ideal results 1.0. + +begin for i:=-5:5 do + <> + end$ + +1.0 +1.0 1.0 1.0 1.0 0/0 +1.0 1.0 1.0 1.0 1.0 + + +% #19: test of log10 expt(10.0,i): ideal results 1.0. + +begin scalar i; write "small values i:=-5:5"; terpri(); + for j:=-5:5 do + <>; + write "large i=2**j where j:=0:6"; terpri(); + for j:=0:5 do + <>; + terpri(); + write "noninteger values of i=j/10.0 where j:=1:20";terpri(); + for j:=1:20 do + <> + end$ + +small values i:=-5:5 +1.0 +1.0 1.0 1.0 1.0 zero +1.0 1.0 1.0 1.0 1.0 +large i=2**j where j:=0:6 +1.0 +1.0 1.0 1.0 1.0 1.0 + +noninteger values of i=j/10.0 where j:=1:20 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 + + +% #20: test of properties of expt(x,i)*(expt(x,-i). ideal result 1.0. + +begin integer j; + for x:=2:6 do for i:=2:6 do + <> + end$ + +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 + + +% #21: test of expt(-x,i)/expt(x,i) for fractional i. + +begin integer j,k; write "odd numerator. ideal result -1.0"; terpri(); + for i:=1:10 do + <>; + write "even numerator. ideal result 1.0"; terpri(); + for i:=1:10 do + <> + end$ + +odd numerator. ideal result -1.0 +-1.0 -1.0 -1.0 -1.0 -1.0 +-1.0 -1.0 -1.0 -1.0 -1.0 +even numerator. ideal result 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 + + +% #22: test of properties of ln or log or logb: +% inverse argument: ideal result -1.0. + +begin integer x; + for i:=2:5 do for j:= 2:10 do + <> + end$ + +-1.0 -1.0 -1.0 -1.0 -1.0 +-1.0 -1.0 -1.0 -1.0 -1.0 +-1.0 -1.0 -1.0 -1.0 -1.0 +-1.0 -1.0 -1.0 -1.0 -1.0 +-1.0 -1.0 -1.0 -1.0 -1.0 +-1.0 -1.0 -1.0 -1.0 -1.0 +-1.0 -1.0 -1.0 -1.0 -1.0 +-1.0 + +% #23: test of log(a*b) = log a+log b: ideal result 1.0. + +begin integer x; + for i:=1:5 do for j:=i:5 do + <> + end$ + +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 + + +% #24:test of sqrt x*sqrt x/x for x:=5i*(5i/3)**i where i:=1:20 +% (test values strictly arbitrary): ideal results 1.0. + +begin scalar x,s; + for i:=1:20 do + <> + end$ + +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 + + +% #25: test of cbrt x**3/x for x:=5i*(5i/3)**i where i:=-9:10 +% (test values strictly arbitrary):ideal results 1.0. + +begin scalar x,s; + for i:=-9:10 do + <> + end$ + +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 + + +%********************************************************************* +%** ===Hyperbolic Function Tests=== +%********************************************************************* + +% #26: test of sinh x+ cosh x= exp x: ideal results 1.0. + +begin scalar x; + for i:=1:10 do + <> + end$ + +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 + + +% #27: test of cosh x-sinh x= exp(-x): ideal results 1.0. + +begin scalar x; + for i:=1:10 do + <> + end$ + +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 + + +% #28: test of (cosh x)**2-(sinh x)**2: ideal results 1.0. + +begin scalar x$ + for i:=1:10 do + <> + end$ + +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 + + +% #29: test of tanh*cosh/sinh: ideal results 1.0. + +begin scalar x; + for i:=1:20 do + <> + end$ + +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 + + +% #30: test of tanh*coth: ideal results 1.0. + +begin scalar x; + for i:=1:20 do + <> + end$ + +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 + + +% #31: test of sech*cosh: ideal results 1.0. + +begin scalar x; + for i:=1:20 do + <> + end$ + +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 + + +% #32: test of csch*sinh: ideal results 1.0. + +begin scalar x; + for i:=1:20 do + <> + end$ + +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 + + +% #33: test of asinh sinh: ideal results 1.0. + +begin scalar x; for i:=1:20 do + <> + end$ + +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 + + +% #34: test of acosh cosh: ideal results 1.0. However, acosh x +% loses accuracy as x -> 1 since d/dx cosh x -> 0. + +begin scalar x; + for i:=1:20 do + <> + end$ + +1.0 1.0 0.99999999999999 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 + + +% #35: test of cosh acosh:ideal results 1.0. + +begin scalar x; + for i:=1:50 do + <> + end$ + +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 + + +% #36: test of atanh tanh: ideal results 1.0. + +begin scalar x; + for i:=1:20 do + <> + end$ + +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 + + +% #37: test of acoth coth: ideal results 1.0. + +begin scalar x; + for i:=1:20 do + <> + end$ + +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 + + +% #38: test of asech sech: ideal results 1.0. However, asech x +% loses accuracy as x -> 1 since d/dx sech x -> 0. + +begin scalar x; + for i:=1:20 do + <> + end$ + +1.0 1.0 0.99999999999999 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 + + +% #39: test of acsch csch: ideal results 1.0. + +begin scalar x; + for i:=1:20 do + <> + end$ + +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1 +1.0 1.0 1.0 1.0 1.0 +1.0 1.0 1.0 1.0 1.0 + + +% End of Test. + +end; +(TIME: math 329 329) + +nil