@Override public IComplexNumber divi(Number v, IComplexNumber result) { if (this == result) { set(real() / v.doubleValue(), imag()); } else { result.set(result.realComponent().doubleValue() / v.doubleValue(), imaginaryComponent()); } return result; }
/** * Multiply two complex numbers, inplace * * @param c * @param result */ @Override public IComplexNumber muli(IComplexNumber c, IComplexNumber result) { double newR = real() * c.realComponent().doubleValue() - imag() * c.imaginaryComponent().doubleValue(); double newI = real() * c.imaginaryComponent().doubleValue() + imag() * c.realComponent().doubleValue(); result.set(newR, newI); return result; }
/** * Divide two complex numbers, in-place * * @param c * @param result */ @Override public IComplexNumber divi(IComplexNumber c, IComplexNumber result) { double d = c.realComponent().doubleValue() * c.realComponent().doubleValue() + c.imaginaryComponent().doubleValue() * c.imaginaryComponent().doubleValue(); double newR = (real() * c.realComponent().doubleValue() + imag() * c.imaginaryComponent().doubleValue()) / d; double newI = (imag() * c.realComponent().doubleValue() - real() * c.imaginaryComponent().doubleValue()) / d; result.set(newR, newI); return result; }
/** * Add two complex numbers in-place * * @param c * @param result */ @Override public IComplexNumber addi(IComplexNumber c, IComplexNumber result) { if (this == result) { set( real() + c.realComponent().doubleValue(), imag() + result.imaginaryComponent().doubleValue()); } else { result.set( result.realComponent().doubleValue() + c.realComponent().doubleValue(), result.imaginaryComponent().doubleValue() + c.imaginaryComponent().doubleValue()); } return this; }