func Cbrt(x complex128) complex128 {
z := complex128(1)
var recursive func() complex128
recursive = func() complex128 {
ans := z - (z * z * z - x) / (3 * z * z)
if cmplx.Abs(ans - z) < 0.4 {
return ans
} else {
return recursive()
}
}
return recursive();
}
みたいに、0.4なら終わってくれるけど、それより小さくすると溢れちゃう。