aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/library/lux/math/number/complex.lux
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--stdlib/source/library/lux/math/number/complex.lux84
1 files changed, 42 insertions, 42 deletions
diff --git a/stdlib/source/library/lux/math/number/complex.lux b/stdlib/source/library/lux/math/number/complex.lux
index 6687bd043..8d040123a 100644
--- a/stdlib/source/library/lux/math/number/complex.lux
+++ b/stdlib/source/library/lux/math/number/complex.lux
@@ -24,13 +24,13 @@
(type: .public Complex
(Record
- {#real Frac
- #imaginary Frac}))
+ [#real Frac
+ #imaginary Frac]))
(syntax: .public (complex [real <code>.any
?imaginary (<>.maybe <code>.any)])
- (in (list (` {#..real (~ real)
- #..imaginary (~ (maybe.else (' +0.0) ?imaginary))}))))
+ (in (list (` [#..real (~ real)
+ #..imaginary (~ (maybe.else (' +0.0) ?imaginary))]))))
(def: .public i
(..complex +0.0 +1.0))
@@ -59,10 +59,10 @@
(template [<name> <op>]
[(def: .public (<name> param input)
(-> Complex Complex Complex)
- {#real (<op> (value@ #real param)
+ [#real (<op> (value@ #real param)
(value@ #real input))
#imaginary (<op> (value@ #imaginary param)
- (value@ #imaginary input))})]
+ (value@ #imaginary input))])]
[+ f.+]
[- f.-]
@@ -89,21 +89,21 @@
(def: .public (*' param input)
(-> Frac Complex Complex)
- {#real (f.* param
+ [#real (f.* param
(value@ #real input))
#imaginary (f.* param
- (value@ #imaginary input))})
+ (value@ #imaginary input))])
(def: .public (* param input)
(-> Complex Complex Complex)
- {#real (f.- (f.* (value@ #imaginary param)
+ [#real (f.- (f.* (value@ #imaginary param)
(value@ #imaginary input))
(f.* (value@ #real param)
(value@ #real input)))
#imaginary (f.+ (f.* (value@ #real param)
(value@ #imaginary input))
(f.* (value@ #imaginary param)
- (value@ #real input)))})
+ (value@ #real input)))])
(def: .public (/ param input)
(-> Complex Complex Complex)
@@ -112,18 +112,18 @@
(f.abs real))
(let [quot (f./ imaginary real)
denom (|> real (f.* quot) (f.+ imaginary))]
- {#real (|> (value@ #real input) (f.* quot) (f.+ (value@ #imaginary input)) (f./ denom))
- #imaginary (|> (value@ #imaginary input) (f.* quot) (f.- (value@ #real input)) (f./ denom))})
+ [#real (|> (value@ #real input) (f.* quot) (f.+ (value@ #imaginary input)) (f./ denom))
+ #imaginary (|> (value@ #imaginary input) (f.* quot) (f.- (value@ #real input)) (f./ denom))])
(let [quot (f./ real imaginary)
denom (|> imaginary (f.* quot) (f.+ real))]
- {#real (|> (value@ #imaginary input) (f.* quot) (f.+ (value@ #real input)) (f./ denom))
- #imaginary (|> (value@ #imaginary input) (f.- (f.* quot (value@ #real input))) (f./ denom))}))))
+ [#real (|> (value@ #imaginary input) (f.* quot) (f.+ (value@ #real input)) (f./ denom))
+ #imaginary (|> (value@ #imaginary input) (f.- (f.* quot (value@ #real input))) (f./ denom))]))))
(def: .public (/' param subject)
(-> Frac Complex Complex)
(let [(^slots [#real #imaginary]) subject]
- {#real (f./ param real)
- #imaginary (f./ param imaginary)}))
+ [#real (f./ param real)
+ #imaginary (f./ param imaginary)]))
(def: .public (% param input)
(-> Complex Complex Complex)
@@ -137,34 +137,34 @@
(def: .public (cos subject)
(-> Complex Complex)
(let [(^slots [#real #imaginary]) subject]
- {#real (f.* (math.cosh imaginary)
+ [#real (f.* (math.cosh imaginary)
(math.cos real))
#imaginary (f.opposite (f.* (math.sinh imaginary)
- (math.sin real)))}))
+ (math.sin real)))]))
(def: .public (cosh subject)
(-> Complex Complex)
(let [(^slots [#real #imaginary]) subject]
- {#real (f.* (math.cos imaginary)
+ [#real (f.* (math.cos imaginary)
(math.cosh real))
#imaginary (f.* (math.sin imaginary)
- (math.sinh real))}))
+ (math.sinh real))]))
(def: .public (sin subject)
(-> Complex Complex)
(let [(^slots [#real #imaginary]) subject]
- {#real (f.* (math.cosh imaginary)
+ [#real (f.* (math.cosh imaginary)
(math.sin real))
#imaginary (f.* (math.sinh imaginary)
- (math.cos real))}))
+ (math.cos real))]))
(def: .public (sinh subject)
(-> Complex Complex)
(let [(^slots [#real #imaginary]) subject]
- {#real (f.* (math.cos imaginary)
+ [#real (f.* (math.cos imaginary)
(math.sinh real))
#imaginary (f.* (math.sin imaginary)
- (math.cosh real))}))
+ (math.cosh real))]))
(def: .public (tan subject)
(-> Complex Complex)
@@ -172,8 +172,8 @@
r2 (f.* +2.0 real)
i2 (f.* +2.0 imaginary)
d (f.+ (math.cos r2) (math.cosh i2))]
- {#real (f./ d (math.sin r2))
- #imaginary (f./ d (math.sinh i2))}))
+ [#real (f./ d (math.sin r2))
+ #imaginary (f./ d (math.sinh i2))]))
(def: .public (tanh subject)
(-> Complex Complex)
@@ -181,8 +181,8 @@
r2 (f.* +2.0 real)
i2 (f.* +2.0 imaginary)
d (f.+ (math.cosh r2) (math.cos i2))]
- {#real (f./ d (math.sinh r2))
- #imaginary (f./ d (math.sin i2))}))
+ [#real (f./ d (math.sinh r2))
+ #imaginary (f./ d (math.sin i2))]))
(def: .public (abs subject)
(-> Complex Frac)
@@ -204,14 +204,14 @@
(-> Complex Complex)
(let [(^slots [#real #imaginary]) subject
r_exp (math.exp real)]
- {#real (f.* r_exp (math.cos imaginary))
- #imaginary (f.* r_exp (math.sin imaginary))}))
+ [#real (f.* r_exp (math.cos imaginary))
+ #imaginary (f.* r_exp (math.sin imaginary))]))
(def: .public (log subject)
(-> Complex Complex)
(let [(^slots [#real #imaginary]) subject]
- {#real (|> subject ..abs math.log)
- #imaginary (math.atan/2 real imaginary)}))
+ [#real (|> subject ..abs math.log)
+ #imaginary (math.atan/2 real imaginary)]))
(template [<name> <type> <op>]
[(def: .public (<name> param input)
@@ -231,12 +231,12 @@
(let [(^slots [#real #imaginary]) input
t (|> input ..abs (f.+ (f.abs real)) (f./ +2.0) (math.pow +0.5))]
(if (f.< +0.0 real)
- {#real (f./ (f.* +2.0 t)
+ [#real (f./ (f.* +2.0 t)
(f.abs imaginary))
- #imaginary (f.* t (..with_sign imaginary +1.0))}
- {#real t
+ #imaginary (f.* t (..with_sign imaginary +1.0))]
+ [#real t
#imaginary (f./ (f.* +2.0 t)
- imaginary)})))
+ imaginary)])))
(def: (root/2-1z input)
(-> Complex Complex)
@@ -249,13 +249,13 @@
(let [q (f./ imaginary real)
scale (f./ (|> real (f.* q) (f.+ imaginary))
+1.0)]
- {#real (f.* q scale)
- #imaginary (f.opposite scale)})
+ [#real (f.* q scale)
+ #imaginary (f.opposite scale)])
(let [q (f./ real imaginary)
scale (f./ (|> imaginary (f.* q) (f.+ real))
+1.0)]
- {#real scale
- #imaginary (|> scale f.opposite (f.* q))})))
+ [#real scale
+ #imaginary (|> scale f.opposite (f.* q))])))
(def: .public (acos input)
(-> Complex Complex)
@@ -301,8 +301,8 @@
(math.cos inner))
imaginary (f.* nth_root_of_abs
(math.sin inner))]
- {#real real
- #imaginary imaginary})))))))
+ [#real real
+ #imaginary imaginary])))))))
(def: .public (approximately? margin_of_error standard value)
(-> Frac Complex Complex Bit)