Arithmetic/Complex: Difference between revisions
Content deleted Content added
Line 2,793: | Line 2,793: | ||
=={{header|Oforth}}== |
=={{header|Oforth}}== |
||
<lang Oforth> |
<lang Oforth>Number 100 Class newPriority: Complex(re, im) |
||
Complex method: re |
Complex method: re @re ; |
||
Complex method: im |
Complex method: im @im ; |
||
Complex method: initialize |
Complex method: initialize := im := re ; |
||
Complex method: << |
Complex method: << '(' <<c @re << ',' <<c @im << ')' <<c ; |
||
Integer method: asComplex |
Integer method: asComplex self 0 Complex new ; |
||
Float method: asComplex |
Float method: asComplex self 0 Complex new ; |
||
Complex new(0, 1) Constant new: I |
Complex new(0, 1) Constant new: I |
||
Complex method: ==(c) |
Complex method: ==(c) c re @re == c im @im == and ; |
||
Complex method: norm |
Complex method: norm @re sq @im sq + sqrt ; |
||
Complex method: conj |
Complex method: conj Complex new(@re, @im neg) ; |
||
Complex method: +(c) |
Complex method: +(c) Complex new(c re @re +, c im @im +) ; |
||
Complex method: -(c) |
Complex method: -(c) Complex new(c re @re -, c im @im -) ; |
||
Complex method: *(c) |
Complex method: *(c) Complex new(c re @re * c im @im * -, c re @im * @re c im * + ) ; |
||
Complex method: inv |
Complex method: inv |
||
{ |
|||
| n | |
| n | |
||
@re sq @im sq + asFloat ->n |
@re sq @im sq + asFloat ->n |
||
Complex new(@re n /, @im neg n / ) |
Complex new(@re n /, @im neg n / ) ; |
||
} |
|||
Complex method: /(c) |
Complex method: /(c) c self inv * ;</lang> |
||
Usage : |
Usage : |
||
<lang Oforth>2 3.2 I * + |
<lang Oforth>2 3.2 I * + .cr |
||
Complex new(2, 3) 1.2 + |
Complex new(2, 3) 1.2 + .cr |
||
Complex new(2, 3) 1.2 * |
Complex new(2, 3) 1.2 * .cr |
||
2 Complex new(2, 3) / |
2 Complex new(2, 3) / .cr</lang> |
||
{{out}} |
{{out}} |