diff options
Diffstat (limited to '')
-rw-r--r-- | stdlib/source/library/lux/math/number/complex.lux | 84 |
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) |