diff options
author | Marvin Borner | 2024-04-13 20:41:37 +0200 |
---|---|---|
committer | Marvin Borner | 2024-04-13 20:43:31 +0200 |
commit | 97b55f035d883cb1d0985c6f3f64c9490dd17bb9 (patch) | |
tree | 47ba58e68275236c184f8f0ae511d344eb4b5c58 | |
parent | b1062132fc1c2f3fb3b925fb42acc5de7a33f6d3 (diff) |
Started complex numbers
-rw-r--r-- | std/Math/Complex.bruijn | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/std/Math/Complex.bruijn b/std/Math/Complex.bruijn new file mode 100644 index 0000000..f40f876 --- /dev/null +++ b/std/Math/Complex.bruijn @@ -0,0 +1,32 @@ +# ideas by u/DaVinci103 +# MIT License, Copyright (c) 2024 Marvin Borner + +:import std/Combinator . +:import std/Pair . +:import std/Math/Real R + +ι (+0.0r) : (+1.0r) + +# adds two complex numbers +add &[[&[[(R.add 3 1) : (R.add 2 0)]]]] ⧗ Complex → Complex → Complex + +# subtracts two complex numbers +sub &[[&[[(R.sub 3 1) : (R.sub 2 0)]]]] ⧗ Complex → Complex → Complex + +# multiplies two complex numbers +mul &[[&[[p : q]]]] ⧗ Complex → Complex → Complex + p R.sub (R.mul 3 1) (R.mul 2 0) + q R.add (R.mul 3 0) (R.mul 2 1) + +# divides two complex numbers +div &[[&[[p : q]]]] ⧗ Complex → Complex → Complex + p R.div (R.add (R.mul 3 1) (R.mul 2 0)) (R.add (R.mul 1 1) (R.mul 0 0)) + q R.div (R.sub (R.mul 2 1) (R.mul 1 0)) (R.add (R.mul 1 1) (R.mul 0 0)) + +# negates a complex number +negate &[[(R.negate 1) : (R.negate 0)]] ⧗ Complex → Complex + +# inverts a complex number +invert &[[p : q]] + p R.div 1 (R.add (R.mul 1 1) (R.mul 0 0)) + q R.div 0 (R.add (R.mul 1 1) (R.mul 0 0)) |