operator * method
Returns the product of this Number and the multiplicand
(a Number or num).
This Number is unaffected.
Implementation
@override
Number operator *(dynamic multiplicand) {
// i * i = -1
if (multiplicand is Imaginary) return Number.simplifyType(value * multiplicand.value * -1);
if (multiplicand is num) return Number.simplifyType(Imaginary(value * multiplicand));
if (multiplicand is Real) return Number.simplifyType(Imaginary(multiplicand * value));
if (multiplicand is Complex) {
// ai * (b + ci) = -ac + abi
final real = value * multiplicand.imag.value.toDouble() * -1.0 as Real;
final imag = value * multiplicand.real as Real;
if (imag.toDouble() == 0) return Number.simplifyType(real);
if (real.toDouble() == 0) return Number.simplifyType(Imaginary(imag));
return Number.simplifyType(Complex(real, Imaginary(imag)));
}
return Imaginary(0);
}