28 lines
670 B
Plaintext
28 lines
670 B
Plaintext
Private Function nth_root(y As Double, n As Double)
|
|
Dim eps As Double: eps = 0.00000000000001 '-- relative accuracy
|
|
Dim x As Variant: x = 1
|
|
Do While True
|
|
d = (y / x ^ (n - 1) - x) / n
|
|
x = x + d
|
|
e = eps * x '-- absolute accuracy
|
|
If d > -e And d < e Then
|
|
Exit Do
|
|
End If
|
|
Loop
|
|
Debug.Print y; n; x; y ^ (1 / n)
|
|
End Function
|
|
Public Sub main()
|
|
nth_root 1024, 10
|
|
nth_root 27, 3
|
|
nth_root 2, 2
|
|
nth_root 5642, 125
|
|
nth_root 7, 0.5
|
|
nth_root 4913, 3
|
|
nth_root 8, 3
|
|
nth_root 16, 2
|
|
nth_root 16, 4
|
|
nth_root 125, 3
|
|
nth_root 1000000000, 3
|
|
nth_root 1000000000, 9
|
|
End Sub
|