aboutsummaryrefslogtreecommitdiffhomepage
path: root/std/Math/Real.bruijn
diff options
context:
space:
mode:
Diffstat (limited to 'std/Math/Real.bruijn')
-rw-r--r--std/Math/Real.bruijn18
1 files changed, 18 insertions, 0 deletions
diff --git a/std/Math/Real.bruijn b/std/Math/Real.bruijn
index 4b3e7d0..9a4b1bd 100644
--- a/std/Math/Real.bruijn
+++ b/std/Math/Real.bruijn
@@ -139,6 +139,12 @@ sqrt [[y [[[N.=?0 guess go]]] (1 0) 0]] ⧗ Real → Real
guess (+1.0q)
go [Q.div (Q.add 0 (Q.div 2 0)) (+2.0q)] (2 1 N.--0)
+# Newton's/Heron's method, quadratic convergence
+# tex: x_{n+1}=\frac{3x_n+a/(x_n^2)}{4}
+cbrt [[y [[[N.=?0 guess go]]] (1 0) 0]] ⧗ Real → Real
+ guess (+1.0q)
+ go [Q.div (Q.add (Q.mul (+3.0q) 0) (Q.div 2 (Q.mul 0 0))) (+4.0q)] (2 1 N.--0)
+
# hypotenuse
hypot [[sqrt ((0 ⋅ 0) + (1 ⋅ 1))]] ⧗ Real → Real → Real
@@ -164,6 +170,18 @@ hypot [[sqrt ((0 ⋅ 0) + (1 ⋅ 1))]] ⧗ Real → Real → Real
p Q.mul (+2.0q) 2
final [[[[Q.div (Q.pow-n (Q.add 3 2) (+2)) (Q.mul (+4.0q) 1)]]]]
+# golden ratio from direct formula
+φ ++(sqrt (+5.0r)) / (+2.0r)
+
+# conjugate golden ratio
+ψ -(~φ)
+
+# golden ratio from fibonacci convergence
+φ* [(L.index (L.iterate &[[0 : (N.add 1 0)]] ((+0) : (+1))) 0) [[1 : N.--0]]]
+
+# real fibonacci
+fib [((pow φ 0) - (pow ψ 0)) / (sqrt (+5.0r))]
+
# arctan by Taylor expansion, only for |x|<=1
# tex: \sum_{n=0}^\infty(-1)^n \frac{x^{2n+1}}{2n+1}
arctan* [[[L.nth-iterate &[[[[op]]]] start 1] (1 0) [[[[3]]]]]] ⧗ Real → Real