立方根の計算
Posted feedbacks - awk
% awk -f cuberoot.awk 8.0 2.0000000000000000 10.0 2.1544346900318931 100.0 4.6415888336127793
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | {
printf("%.16f\n", cube_root($1))
}
function cube_root(r, a,b,d)
{
a = r
while (1) {
b = (r / (a*a) + 2 * a) / 3
d = b - a ; if (d < 0) d = -d
if (d < 5e-13) break
a = b
}
return a
}
|
xが0の時にdivide by zeroになってしまいますね・・・修正します
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | {
printf("%.16f\n", cube_root($1))
}
function cube_root(r, a,b,d)
{
if (r == 0) return 0 ##oops
a = r
while (1) {
b = (r / (a*a) + 2 * a) / 3
d = b - a ; if (d < 0) d = -d
if (d < 5e-13) break
a = b
}
return a
}
|




にしお
#3411()
Rating1/1=1.00
ただし、このお題の趣旨は実数区間での探索なので、 立方根関数があっても使ってはいけません。 指数関数と対数関数も禁止します。
Pythonで表現した入出力の例:
[ reply ]