#/*********************************************************** # atan.rb -- µÕ»°³Ñ´Ø¿ô #***********************************************************/ N = 24 PI = 3.14159265358979323846264 LDBL_DIG = 18 def latan( x ) if (x > 1); sgn = 1; x = 1 / x elsif (x < -1); sgn = -1; x = 1 / x else; sgn = 0; end a = 0 N.downto(1) do |i| a = (i * i * x * x) / (2 * i + 1 + a) end if (sgn > 0); return PI / 2 - x / (1 + a) elsif (sgn < 0); return -PI / 2 - x / (1 + a) else; return x / (1 + a); end end printf(" x %-*s º¸¤Îtan\n", LDBL_DIG + 2, "¼«²ÈÀ½atan") for i in -10..10 x = i / 4.0; y = latan(x) printf("%5.2f %*.*f % g\n", x, LDBL_DIG + 2, LDBL_DIG - 1, y, Math::tan(y)) end exit 0