31 lines
647 B
Plaintext
31 lines
647 B
Plaintext
@class Complex {
|
|
&[r i] @: {
|
|
^r || r 0
|
|
^i || i 0
|
|
^m +@sq^r @sq^i
|
|
}
|
|
add &o @new Complex[+ ^r o.r + ^i o.i]
|
|
mul &o @new Complex[-* ^r o.r * ^i o.i +* ^r o.i * ^i o.r]
|
|
neg &^ @new Complex[@-^r @-^i]
|
|
inv &^ @new Complex[/ ^r ^m / @-^i ^m]
|
|
toString &^?{
|
|
=^i 0 "{^r}"
|
|
=^r 0 "{^i}i"
|
|
>^i 0 "{^r} + {^i}i"
|
|
"{^r} - {@-^i}i"
|
|
}
|
|
}
|
|
|
|
@vars {
|
|
a @new Complex[5 3]
|
|
b @new Complex[4 3N]
|
|
}
|
|
@each &x !console.log x [
|
|
"({a}) + ({b}) = {!a.add b}"
|
|
"({a}) * ({b}) = {!a.mul b}"
|
|
"-1 * ({b}) = {b.neg.}"
|
|
"({a}) - ({b}) = {!a.add b.neg.}"
|
|
"1 / ({b}) = {b.inv.}"
|
|
"({!a.mul b}) / ({b}) = {`!.mul b.inv. !a.mul b}"
|
|
]
|