123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702 |
- REDUCE 3.6, 15-Jul-95, patched to 6 Mar 96 ...
- % Test of Math Package.
- % Author: Stanley L. Kameny <stan%valley.uucp@rand.org>.
- % 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 <<write " ",i,"->",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
- <<write " ",sind(i*90+45)/a," ", cosd (i*90+45)/a;terpri()>>
- 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 <<write sin(!!pii2*i/6.0)/a(i)," "; terpr(i,3)>>
- 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
- <<write tand float i*cotd float i," "; terpr(i,25)>>;
- 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
- <<write secd float i**2-tand float i**2," "; terpr(i,25)>>
- 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
- <<write cscd float i**2-cotd float i**2," "; terpr(i,25)>>
- 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 (asind(0.1*i)+acosd(0.1*i))/90," "; terpr(i,5)>>;
- write "sin and cos";terpri();
- for i:=-10:10 do
- <<write (acos(0.1*i)+asin(0.1*i))/!!pii2," "; terpr(i,5)>>
- 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
- <<x:=tand float i; write (atand x+acotd x)/90," "; terpr(i,50)>>;
- terpri();
- write "tan, atan and acot";terpri();
- for i:=-80 step 10 until 80 do
- <<x:= tan (!!pii2*i/90.0); write (atan x+acot x)/!!pii2," ";
- terpr(i,50)>>
- 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
- <<write " ",i,"->",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
- <<write " ",i,"->",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
- <<write " ",i,"->",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
- <<write " ",i,"->",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
- <<write " ",i,"->",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
- <<write" ",i,"->",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
- <<write " ",exp (b(i)+b(j))/exp(b(i))/exp(b(j));
- terpr(x:=x+1,5)>>
- 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 " ",sqrt(exp(0.2*i))/exp(0.1*i); terpr(i,5)>>;
- write "cubes"; terpri();
- for i:=-10:10 do
- <<write " ",cbrt(exp(0.3*i))/exp(0.1*i); terpr(i,5)>>
- 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
- <<write if i=0 then "0/0" else (log exp float i)/i," "; terpr(i,5)>>
- 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 if j neq 0 then log10 float expt(10.0,j)/j
- else "zero"," ";
- terpr(j,5)>>;
- write "large i=2**j where j:=0:6"; terpri();
- for j:=0:5 do
- <<write (log10 float expt(10.0,2**j))/2**j," "; terpr(j,5)>>;
- terpri();
- write "noninteger values of i=j/10.0 where j:=1:20";terpri();
- for j:=1:20 do
- <<i:=j/10.0; write (log10 float expt(10,i))/i," ";
- terpr(j,5)>>
- 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
- <<write expt(float x,i)*expt(float x,-i)," "; terpr(j:=j+1,5)>>
- 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
- <<k:=(2*i-1.0)/(8*i+1); write rexpt(-8,k)/rexpt(8,k)," ";
- terpr(j:=j+1,5)>>;
- write "even numerator. ideal result 1.0"; terpri();
- for i:=1:10 do
- <<k:=(2.0*i)/(8*i+1); write rexpt(-8,k)/rexpt(8,k)," ";
- terpr(j:=j+1,5)>>
- 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
- <<x:=x+1; write logb(float i,float j)/logb(float i,1.0/j)," ";
- terpr(x,5)>>
- 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
- <<write log (i*j*0.01)/(log (i*0.1)+log(j*0.1))," ";
- terpr(x:=x+1,5)>>
- 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
- <<x:= 5.0*i;s:=sqrt(x:=x*(expt(x/3,i))); write s*s/x," ";
- terpr(i,5)>>
- 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
- <<x:= 5.0*i; if i neq 0 then s:= cbrt(x:=x*(expt(x/3,i)));
- write if i=0 then 1 else s*s*s/x," "; terpr(i,5)>>
- 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
- <<x:=ln float i$ write (sinh x+cosh x)/exp x," "$ terpr(i,5)>>
- 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
- <<x:=ln float i$ write(cosh x-sinh x)*exp x," "$ terpr(i,5)>>
- 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
- <<x:=ln float i$write(cosh x)**2-(sinh x)**2," "; terpr(i,5)>>
- 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
- <<x:=ln(i*0.1);
- write if i=10 then 1 else tanh x*cosh x/sinh x," ";
- terpr(i,5)>>
- 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
- <<x:=ln(i*0.1); write if i=10 then 1 else tanh x*coth x," ";
- terpr(i,5)>>
- 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
- <<x:=ln(i*0.1); write sech x*cosh x," "; terpr(i,5)>>
- 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
- <<x:=ln(i*0.1); write if i=10 then 1 else csch x*sinh x," ";
- terpr(i,5)>>
- 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
- <<x:=ln(i*0.1); write if i=10 then 1 else asinh sinh x/x," ";
- terpr(i,5)>>
- 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
- <<x:=ln(1+i*0.05); write acosh cosh x/x," "; terpr(i,5)>>
- 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
- <<x:=1+i/25.0; write (cosh acosh x)/x," "; terpr(i,5)>>
- 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
- <<x:=ln(i*0.1); write if i=10 then 1 else (atanh tanh x)/x," ";
- terpr(i,5)>>
- 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
- <<x:=ln(i*0.1); write if i=10 then 1 else (acoth coth x)/x," ";
- terpr(i,5)>>
- 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
- <<x:=ln(1+i*0.05); write (asech sech x)/x," "; terpr(i,5)>>
- 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
- <<x:=ln(i*0.1); write if i=10 then 1 else (acsch csch x)/x," ";
- terpr(i,5)>>
- 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
|