@Override public O compute(I1 z1, I2 z2, O output) { /* optimized version (fewer multiplies) : from mathworld.com seems to exhibit some rounding differences from textbook algorithm double a = z1.getRealDouble(); double b = z1.getImaginaryDouble(); double c = z2.getRealDouble(); double d = z2.getImaginaryDouble(); double ac = a*c; double bd = b*d; double x = ac - bd; double y = (a + b)*(c + d) - ac - bd; */ // textbook version : works double x = z1.getRealDouble() * z2.getRealDouble() - z1.getImaginaryDouble() * z2.getImaginaryDouble(); double y = z1.getImaginaryDouble() * z2.getRealDouble() + z1.getRealDouble() * z2.getImaginaryDouble(); output.setComplexNumber(x, y); return output; }
public static void main(String[] args) { I2 obj = new I2(); obj.getDescription(); obj = new J2(); obj.getDescription(); obj = new K2(); obj.getDescription(); }
@Override public O compute(I1 x1, I2 x2, O output) { output.setReal(x1.getRealDouble() - x2.getRealDouble()); return output; }
@Override public O compute(I1 x1, I2 x2, O output) { double value = (long) x1.getRealDouble() & (long) x2.getRealDouble(); output.setReal(value); return output; }