/** * Sets the value of a complex number to a given (r,theta) combination */ public static void setPolar(ComplexType<?> z, double r, double theta) { double x = r * Math.cos(theta); double y = r * Math.sin(theta); z.setComplexNumber(x, y); } }
@Override public ComplexType<?> compute(RealType<?> x, ComplexType<?> output) { output.setComplexNumber(0, x.getRealDouble()); return output; }
@Override public ComplexType<?> compute(RealType<?> x, ComplexType<?> output) { output.setComplexNumber(0, x.getRealDouble()); return output; }
@Override public O compute(I z, O output) { double constant = Math.exp(z.getRealDouble()); double x = constant * Math.cos(z.getImaginaryDouble()); double y = constant * Math.sin(z.getImaginaryDouble()); output.setComplexNumber(x, y); return output; }
@Override public O compute(I z, O output) { double constant = Math.exp(z.getRealDouble()); double x = constant * Math.cos(z.getImaginaryDouble()); double y = constant * Math.sin(z.getImaginaryDouble()); output.setComplexNumber(x, y); return output; }
@Override public O compute(I z, O output) { double x = -z.getRealDouble(); double y = -z.getImaginaryDouble(); output.setComplexNumber(x,y); return output; }
@Override public O compute(I z, O output) { double x = z.getRealDouble(); double y = -z.getImaginaryDouble(); output.setComplexNumber(x, y); return output; }
@Override public O compute(I1 z1, I2 z2, O output) { output.setComplexNumber(z2.getRealDouble(), z2.getImaginaryDouble()); return output; }
@Override public O compute(I z, O output) { double modulus = ComplexHelper.getModulus(z); double argument = ComplexHelper.getArgument(z); double x = Math.log(modulus); double y = ComplexHelper.getPrincipleArgument(argument); output.setComplexNumber(x, y); return output; }
@Override public O compute(I1 z1, I2 z2, O output) { double x = Math.abs(z1.getRealDouble() - z2.getRealDouble()); double y = Math.abs(z1.getImaginaryDouble() - z2.getImaginaryDouble()); output.setComplexNumber(x, y); return output; }
@Override public O compute(I1 z1, I2 z2, O output) { double x = Math.abs(z1.getRealDouble() - z2.getRealDouble()); double y = Math.abs(z1.getImaginaryDouble() - z2.getImaginaryDouble()); output.setComplexNumber(x, y); return output; }
@Override public void compute(long[] point, T output) { dataArray.compute(point, tmp); output.setComplexNumber(tmp.getRealDouble(), tmp.getImaginaryDouble()); }
@Override public void compute(long[] point, T output) { dataArray.compute(point, tmp); output.setComplexNumber(tmp.getRealDouble(), tmp.getImaginaryDouble()); }
@Override public O compute(I1 z1, I2 z2, O output) { double x = z1.getRealDouble() - z2.getRealDouble(); double y = z1.getImaginaryDouble() - z2.getImaginaryDouble(); output.setComplexNumber(x, y); return output; }
private void calcTermAtPoint(long[] oPosition, long[] iPosition, T xyTerm) { spatialFunction.compute(iPosition, funcVal); double val = ((double) oPosition[0]) * iPosition[0] / span[0]; val += ((double) oPosition[1]) * iPosition[1] / span[1]; spatialExponent.setComplexNumber(val, 0); multiplier.compute(MINUS_TWO_PI_I, spatialExponent, constant); exper.compute(constant, expVal); multiplier.compute(funcVal, expVal, xyTerm); } }
private void calcTermAtPoint(long[] oPosition, long[] iPosition, T uvTerm) { freqFunction.compute(iPosition, funcVal); double val = ((double) oPosition[0]) * iPosition[0] / span[0]; val += ((double) oPosition[1]) * iPosition[1] / span[1]; spatialExponent.setComplexNumber(val, 0); multiplier.compute(TWO_PI_I, spatialExponent, constant); exper.compute(constant, expVal); multiplier.compute(funcVal, expVal, uvTerm); } }
@Override public O compute(I1 z1, I2 z2, O output) { double x = (z1.getRealDouble() + z2.getRealDouble()) / 2; double y = (z1.getImaginaryDouble() + z2.getImaginaryDouble()) / 2; output.setComplexNumber(x, y); return output; }
@Override public O compute(I1 z1, I2 z2, O output) { double x = (z1.getRealDouble() + z2.getRealDouble()) / 2; double y = (z1.getImaginaryDouble() + z2.getImaginaryDouble()) / 2; output.setComplexNumber(x, y); return output; }
@Override public void compute(INPUT input, C value) { realFunc1.compute(input, real1); realFunc2.compute(input, real2); value.setComplexNumber(real1.getRealDouble(),real2.getRealDouble()); }
@Override public O compute(I z, O output) { double denom = z.getRealDouble()*z.getRealDouble() + z.getImaginaryDouble()*z.getImaginaryDouble(); double x = z.getRealDouble() / denom; double y = -z.getImaginaryDouble() / denom; output.setComplexNumber(x,y); return output; }