54 lines
1.4 KiB
Plaintext
54 lines
1.4 KiB
Plaintext
/* REXX ***************************************************************
|
|
* Derived from REXX ... Derived from PL/I with a little "massage"
|
|
* SQRT2= 1.41421356237309505 <- PL/I Result
|
|
* 1.41421356237309504880168872421 <- NetRexx Result 30 digits
|
|
* NAPIER= 2.71828182845904524
|
|
* 2.71828182845904523536028747135
|
|
* PI= 3.14159262280484695
|
|
* 3.14159262280484694855146925223
|
|
* 07.09.2012 Walter Pachl
|
|
* 08.09.2012 Walter Pachl simplified (with the help of a friend)
|
|
**********************************************************************/
|
|
options replace format comments java crossref savelog symbols
|
|
class CFB public
|
|
|
|
properties static
|
|
Numeric Digits 30
|
|
Sqrt2 =1
|
|
napier=2
|
|
pi =3
|
|
a =0
|
|
b =0
|
|
|
|
method main(args = String[]) public static
|
|
Say 'SQRT2='.left(7) calc(sqrt2, 200)
|
|
Say 'NAPIER='.left(7) calc(napier, 200)
|
|
Say 'PI='.left(7) calc(pi, 200)
|
|
Return
|
|
|
|
method get_Coeffs(form,n) public static
|
|
select
|
|
when form=Sqrt2 Then do
|
|
if n > 0 then a = 2; else a = 1
|
|
b = 1
|
|
end
|
|
when form=Napier Then do
|
|
if n > 0 then a = n; else a = 2
|
|
if n > 1 then b = n - 1; else b = 1
|
|
end
|
|
when form=pi Then do
|
|
if n > 0 then a = 6; else a = 3
|
|
b = (2*n - 1)**2
|
|
end
|
|
end
|
|
Return
|
|
|
|
method calc(form,n) public static
|
|
temp=0
|
|
loop ni = n to 1 by -1
|
|
Get_Coeffs(form,ni)
|
|
temp = b/(a + temp)
|
|
end
|
|
Get_Coeffs(form,0)
|
|
return (a + temp)
|