|
DECLARE EXTERNAL FUNCTION SIN
DECLARE EXTERNAL FUNCTION cos
DECLARE EXTERNAL FUNCTION TAN
DECLARE EXTERNAL FUNCTION sn
LET x=1.57
FOR i=2 TO 55
PRINT sn(i,x)
LET x=sn(i,x)
NEXT i
END
EXTERNAL FUNCTION sn(i,x)
DECLARE EXTERNAL FUNCTION cos
DECLARE EXTERNAL FUNCTION SIN
DECLARE EXTERNAL FUNCTION TAN
DEF f(x)=x/PI*x-TAN(x)*x
LET S=i
LET s1=1/10^(i-1)
LET s2=1/10^s
LET t1=x-s1
LET t2=x
FOR x=t1 TO t2 STEP s2
! PRINT f(x)
IF f(x)>1 THEN EXIT FOR
NEXT x
LET sn=x
END FUNCTION
! 1000桁モードで利用する正弦,余弦,正接関数
EXTERNAL FUNCTION sin(x)
DECLARE EXTERNAL FUNCTION cos
IF x<0 THEN
LET sin=-sin(-x)
ELSEIF x>2*PI THEN
LET sin=sin(MOD(x,2*PI))
ELSEIF x>PI THEN
LET sin=-sin(x-PI)
ELSEIF x>PI/2 THEN
LET sin=sin(PI-x)
ELSEIF x>PI/4 THEN
LET sin=cos(PI/2-x)
ELSE ! マクローリン級数による近似
LET y=x
LET n=0
LET t=y
DO
LET y0=y
LET n=n+1
LET t=-t*x^2/((2*n)*(2*n+1))
LET y=y+t
LOOP UNTIL y0=y
LET sin=y
END IF
END FUNCTION
!
EXTERNAL FUNCTION cos(x)
DECLARE EXTERNAL FUNCTION sin
IF x<0 THEN
LET cos=cos(-x)
ELSEIF x>2*PI THEN
LET cos=cos(MOD(x,2*PI))
ELSEIF x>PI THEN
LET cos=-cos(x-PI)
ELSEIF x>PI/2 THEN
LET cos=-cos(PI-x)
ELSEIF x>PI/4 THEN
LET cos=sin(PI/2-x)
ELSE ! マクローリン級数による近似
LET y=1
LET n=0
LET t=y
DO
LET y0=y
LET n=n+1
LET t=-t*x^2/((2*n-1)*(2*n))
LET y=y+t
LOOP UNTIL y0=y
LET cos=y
END IF
END FUNCTION
!
EXTERNAL FUNCTION tan(x)
DECLARE EXTERNAL FUNCTION sin,cos
LET tan=sin(x)/cos(x)
END FUNCTION
1000桁モードで実行するとPI/2になりました。
http://blogs.yahoo.co.jp/donald_stinger
|
|