List of usage examples for org.apache.commons.math.complex Complex Complex
public Complex(double real, double imaginary)
From source file:uk.ac.diamond.scisoft.analysis.dataset.ComplexDoubleDataset.java
@Override public Object mean() { if (storedValues == null) { calculateSummaryStats();//from w ww . ja v a 2s.c om } final SummaryStatistics rstats = (SummaryStatistics) storedValues.get("stats-0"); final SummaryStatistics istats = (SummaryStatistics) storedValues.get("stats-1"); return new Complex(rstats.getMean(), istats.getMean()); }
From source file:uk.ac.diamond.scisoft.analysis.dataset.ComplexDoubleDataset.java
@Override public ComplexDoubleDataset ipower(final Object b) { if (b instanceof AbstractDataset) { AbstractDataset bds = (AbstractDataset) b; checkCompatibility(bds);/*from w w w . j a va 2 s.c om*/ IndexIterator it1 = getIterator(); IndexIterator it2 = bds.getIterator(); switch (bds.getDtype()) { case COMPLEX64: case COMPLEX128: while (it1.hasNext() && it2.hasNext()) { final Complex zv = new Complex(bds.getElementDoubleAbs(it2.index), bds.getElementDoubleAbs(it2.index + 1)); final Complex zd = new Complex(data[it1.index], data[it1.index + 1]).pow(zv); data[it1.index] = zd.getReal(); // ADD_CAST data[it1.index + 1] = zd.getImaginary(); // ADD_CAST } break; default: while (it1.hasNext() && it2.hasNext()) { final Complex zv = new Complex(bds.getElementDoubleAbs(it2.index), 0); final Complex zd = new Complex(data[it1.index], data[it1.index + 1]).pow(zv); data[it1.index] = zd.getReal(); // ADD_CAST data[it1.index + 1] = zd.getImaginary(); // ADD_CAST } break; } } else { final Complex zv = new Complex(toReal(b), toImag(b)); IndexIterator it1 = getIterator(); while (it1.hasNext()) { Complex zd = new Complex(data[it1.index], data[it1.index + 1]).pow(zv); data[it1.index] = zd.getReal(); // ADD_CAST data[it1.index + 1] = zd.getImaginary(); // ADD_CAST } } setDirty(); return this; }
From source file:uk.ac.diamond.scisoft.analysis.dataset.ComplexDoubleDataset.java
@Override public double residual(final Object b) { double sum = 0; if (b instanceof AbstractDataset) { AbstractDataset bds = (AbstractDataset) b; checkCompatibility(bds);/*from w w w . j a v a 2 s . c o m*/ IndexIterator it1 = getIterator(); IndexIterator it2 = bds.getIterator(); double comp = 0; switch (bds.getDtype()) { case COMPLEX64: case COMPLEX128: while (it1.hasNext() && it2.hasNext()) { double diff, err, temp; diff = data[it1.index] - bds.getElementDoubleAbs(it2.index); err = diff * diff - comp; temp = sum + err; comp = (temp - sum) - err; sum = temp; diff = data[it1.index + 1] - bds.getElementDoubleAbs(it2.index + 1); err = diff * diff - comp; temp = sum + err; comp = (temp - sum) - err; sum = temp; } break; default: while (it1.hasNext() && it2.hasNext()) { final double diff = data[it1.index] - bds.getElementDoubleAbs(it2.index); final double err = diff * diff - comp; final double temp = sum + err; comp = (temp - sum) - err; sum = temp; } break; } } else { final Complex zv = new Complex(toReal(b), toImag(b)); IndexIterator it1 = getIterator(); double comp = 0; while (it1.hasNext()) { double diff, err, temp; diff = data[it1.index] - zv.getReal(); err = diff * diff - comp; temp = sum + err; comp = (temp - sum) - err; sum = temp; diff = data[it1.index + 1] - zv.getImaginary(); err = diff * diff - comp; temp = sum + err; comp = (temp - sum) - err; sum = temp; } } return sum; }
From source file:uk.ac.diamond.scisoft.analysis.dataset.ComplexDoubleDatasetTest.java
@Test public void testConstructor() { double[] da = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; ComplexDoubleDataset a = new ComplexDoubleDataset(da); assertEquals(AbstractDataset.COMPLEX128, a.getDtype()); assertEquals(2, a.getElementsPerItem()); assertEquals(16, a.getItemsize());/* w w w .ja v a2 s .c om*/ IndexIterator it = a.getIterator(); for (int i = 0; it.hasNext(); i++) { assertEquals(i * 2, a.getElementDoubleAbs(it.index), 1e-5 * i); } ComplexDoubleDataset b = new ComplexDoubleDataset(da, 3, 2); it = b.getIterator(); for (int i = 0; it.hasNext(); i++) { assertEquals(i * 2, b.getElementDoubleAbs(it.index), 1e-5 * i); } List<Complex> list = new ArrayList<Complex>(); list.add(new Complex(0.5, 1.0)); ComplexDoubleDataset z = ComplexDoubleDataset.createFromObject(list); assertEquals(0.5, z.getComplex(0).getReal(), 1e-6); assertEquals(1.0, z.getComplex(0).getImaginary(), 1e-6); AbstractDataset aa = Maths.abs(a); assertEquals(AbstractDataset.FLOAT64, aa.getDtype()); assertEquals(1, aa.getElementsPerItem()); assertEquals(8, aa.getItemsize()); }
From source file:uk.ac.diamond.scisoft.analysis.dataset.ComplexDoubleDatasetTest.java
@Test public void testStats() { AbstractDataset a = AbstractDataset.arange(12, AbstractDataset.COMPLEX128); assertEquals(5.5, ((Complex) a.mean()).getReal(), 1e-6); assertEquals(0., ((Complex) a.mean()).getImaginary(), 1e-6); assertEquals(13., a.variance().doubleValue(), 1e-6); assertEquals(3.6055512754639891, a.stdDeviation().doubleValue(), 1e-6); a.iadd(new Complex(0, 0.5)); assertEquals(5.5, ((Complex) a.mean()).getReal(), 1e-6); assertEquals(0.5, ((Complex) a.mean()).getImaginary(), 1e-6); // assertEquals(13., a.var().doubleValue(), 1e-6); // assertEquals(3.6055512754639891, a.std().doubleValue(), 1e-6); }
From source file:uk.ac.diamond.scisoft.analysis.dataset.ComplexFloatDataset.java
@Override public ComplexFloatDataset ipower(final Object b) { if (b instanceof AbstractDataset) { AbstractDataset bds = (AbstractDataset) b; checkCompatibility(bds);//from www . jav a 2s.com IndexIterator it1 = getIterator(); IndexIterator it2 = bds.getIterator(); switch (bds.getDtype()) { case COMPLEX64: case COMPLEX128: while (it1.hasNext() && it2.hasNext()) { final Complex zv = new Complex(bds.getElementDoubleAbs(it2.index), bds.getElementDoubleAbs(it2.index + 1)); final Complex zd = new Complex(data[it1.index], data[it1.index + 1]).pow(zv); data[it1.index] = (float) zd.getReal(); // ADD_CAST data[it1.index + 1] = (float) zd.getImaginary(); // ADD_CAST } break; default: while (it1.hasNext() && it2.hasNext()) { final Complex zv = new Complex(bds.getElementDoubleAbs(it2.index), 0); final Complex zd = new Complex(data[it1.index], data[it1.index + 1]).pow(zv); data[it1.index] = (float) zd.getReal(); // ADD_CAST data[it1.index + 1] = (float) zd.getImaginary(); // ADD_CAST } break; } } else { final Complex zv = new Complex(toReal(b), toImag(b)); IndexIterator it1 = getIterator(); while (it1.hasNext()) { Complex zd = new Complex(data[it1.index], data[it1.index + 1]).pow(zv); data[it1.index] = (float) zd.getReal(); // ADD_CAST data[it1.index + 1] = (float) zd.getImaginary(); // ADD_CAST } } setDirty(); return this; }
From source file:uk.ac.diamond.scisoft.analysis.dataset.DoubleDataset.java
@Override public DoubleDataset ipower(final Object b) { if (b instanceof AbstractDataset) { // BOOLEAN_OMIT AbstractDataset bds = (AbstractDataset) b; // BOOLEAN_OMIT checkCompatibility(bds); // BOOLEAN_OMIT // BOOLEAN_OMIT IndexIterator it1 = getIterator(); // BOOLEAN_OMIT IndexIterator it2 = bds.getIterator(); // BOOLEAN_OMIT // BOOLEAN_OMIT while (it1.hasNext() && it2.hasNext()) { // BOOLEAN_OMIT final double v = Math.pow(data[it1.index], bds.getElementDoubleAbs(it2.index)); // BOOLEAN_OMIT // if (Double.isInfinite(v) || Double.isNaN(v)) { // INT_ZEROTEST // data[it1.index] = 0; // INT_ZEROTEST // } else { // INT_ZEROTEST data[it1.index] = v; // PRIM_TYPE_LONG // BOOLEAN_OMIT // ADD_CAST // } // INT_ZEROTEST } // BOOLEAN_OMIT } else { // BOOLEAN_OMIT double vr = toReal(b); // BOOLEAN_OMIT double vi = toImag(b); // BOOLEAN_OMIT IndexIterator it1 = getIterator(); // BOOLEAN_OMIT // BOOLEAN_OMIT if (vi == 0.) { // BOOLEAN_OMIT while (it1.hasNext()) { // BOOLEAN_OMIT final double v = Math.pow(data[it1.index], vr); // BOOLEAN_OMIT // if (Double.isInfinite(v) || Double.isNaN(v)) { // INT_ZEROTEST // data[it1.index] = 0; // INT_ZEROTEST // } else { // INT_ZEROTEST data[it1.index] = v; // PRIM_TYPE_LONG // BOOLEAN_OMIT // ADD_CAST // } // INT_ZEROTEST } // BOOLEAN_OMIT } else { // BOOLEAN_OMIT Complex zv = new Complex(vr, vi); // BOOLEAN_OMIT while (it1.hasNext()) { // BOOLEAN_OMIT Complex zd = new Complex(data[it1.index], 0.); // BOOLEAN_OMIT final double v = zd.pow(zv).getReal(); // BOOLEAN_OMIT // if (Double.isInfinite(v) || Double.isNaN(v)) { // INT_ZEROTEST // data[it1.index] = 0; // INT_ZEROTEST // } else { // INT_ZEROTEST data[it1.index] = v; // PRIM_TYPE_LONG // BOOLEAN_OMIT // ADD_CAST // } // INT_ZEROTEST } // BOOLEAN_OMIT } // BOOLEAN_OMIT } // BOOLEAN_OMIT setDirty(); // BOOLEAN_OMIT return this; }
From source file:uk.ac.diamond.scisoft.analysis.dataset.FloatDataset.java
@Override public FloatDataset ipower(final Object b) { if (b instanceof AbstractDataset) { AbstractDataset bds = (AbstractDataset) b; checkCompatibility(bds);//from ww w . j a v a 2 s . c o m // BOOLEAN_OMIT IndexIterator it1 = getIterator(); IndexIterator it2 = bds.getIterator(); // BOOLEAN_OMIT while (it1.hasNext() && it2.hasNext()) { final double v = Math.pow(data[it1.index], bds.getElementDoubleAbs(it2.index)); // if (Double.isInfinite(v) || Double.isNaN(v)) { // INT_ZEROTEST // data[it1.index] = 0; // INT_ZEROTEST // } else { // INT_ZEROTEST data[it1.index] = (float) v; // PRIM_TYPE_LONG // ADD_CAST // } // INT_ZEROTEST } } else { double vr = toReal(b); double vi = toImag(b); IndexIterator it1 = getIterator(); // BOOLEAN_OMIT if (vi == 0.) { while (it1.hasNext()) { final double v = Math.pow(data[it1.index], vr); // if (Double.isInfinite(v) || Double.isNaN(v)) { // INT_ZEROTEST // data[it1.index] = 0; // INT_ZEROTEST // } else { // INT_ZEROTEST data[it1.index] = (float) v; // PRIM_TYPE_LONG // ADD_CAST // } // INT_ZEROTEST } } else { Complex zv = new Complex(vr, vi); while (it1.hasNext()) { Complex zd = new Complex(data[it1.index], 0.); final double v = zd.pow(zv).getReal(); // if (Double.isInfinite(v) || Double.isNaN(v)) { // INT_ZEROTEST // data[it1.index] = 0; // INT_ZEROTEST // } else { // INT_ZEROTEST data[it1.index] = (float) v; // PRIM_TYPE_LONG // ADD_CAST // } // INT_ZEROTEST } } } setDirty(); return this; }
From source file:uk.ac.diamond.scisoft.analysis.dataset.IntegerDataset.java
@Override public IntegerDataset ipower(final Object b) { if (b instanceof AbstractDataset) { AbstractDataset bds = (AbstractDataset) b; checkCompatibility(bds);/*from w w w. j ava2 s . c o m*/ // BOOLEAN_OMIT IndexIterator it1 = getIterator(); IndexIterator it2 = bds.getIterator(); // BOOLEAN_OMIT while (it1.hasNext() && it2.hasNext()) { final double v = Math.pow(data[it1.index], bds.getElementDoubleAbs(it2.index)); if (Double.isInfinite(v) || Double.isNaN(v)) { // INT_ZEROTEST data[it1.index] = 0; // INT_ZEROTEST } else { // INT_ZEROTEST data[it1.index] = (int) (long) v; // PRIM_TYPE_LONG // ADD_CAST } // INT_ZEROTEST } } else { double vr = toReal(b); double vi = toImag(b); IndexIterator it1 = getIterator(); // BOOLEAN_OMIT if (vi == 0.) { while (it1.hasNext()) { final double v = Math.pow(data[it1.index], vr); if (Double.isInfinite(v) || Double.isNaN(v)) { // INT_ZEROTEST data[it1.index] = 0; // INT_ZEROTEST } else { // INT_ZEROTEST data[it1.index] = (int) (long) v; // PRIM_TYPE_LONG // ADD_CAST } // INT_ZEROTEST } } else { Complex zv = new Complex(vr, vi); while (it1.hasNext()) { Complex zd = new Complex(data[it1.index], 0.); final double v = zd.pow(zv).getReal(); if (Double.isInfinite(v) || Double.isNaN(v)) { // INT_ZEROTEST data[it1.index] = 0; // INT_ZEROTEST } else { // INT_ZEROTEST data[it1.index] = (int) (long) v; // PRIM_TYPE_LONG // ADD_CAST } // INT_ZEROTEST } } } setDirty(); return this; }
From source file:uk.ac.diamond.scisoft.analysis.dataset.LongDataset.java
@Override public LongDataset ipower(final Object b) { if (b instanceof AbstractDataset) { AbstractDataset bds = (AbstractDataset) b; checkCompatibility(bds);/*w ww . ja v a 2 s.c o m*/ // BOOLEAN_OMIT IndexIterator it1 = getIterator(); IndexIterator it2 = bds.getIterator(); // BOOLEAN_OMIT while (it1.hasNext() && it2.hasNext()) { final double v = Math.pow(data[it1.index], bds.getElementDoubleAbs(it2.index)); if (Double.isInfinite(v) || Double.isNaN(v)) { // INT_ZEROTEST data[it1.index] = 0; // INT_ZEROTEST } else { // INT_ZEROTEST data[it1.index] = (long) v; // PRIM_TYPE_LONG // ADD_CAST } // INT_ZEROTEST } } else { double vr = toReal(b); double vi = toImag(b); IndexIterator it1 = getIterator(); // BOOLEAN_OMIT if (vi == 0.) { while (it1.hasNext()) { final double v = Math.pow(data[it1.index], vr); if (Double.isInfinite(v) || Double.isNaN(v)) { // INT_ZEROTEST data[it1.index] = 0; // INT_ZEROTEST } else { // INT_ZEROTEST data[it1.index] = (long) v; // PRIM_TYPE_LONG // ADD_CAST } // INT_ZEROTEST } } else { Complex zv = new Complex(vr, vi); while (it1.hasNext()) { Complex zd = new Complex(data[it1.index], 0.); final double v = zd.pow(zv).getReal(); if (Double.isInfinite(v) || Double.isNaN(v)) { // INT_ZEROTEST data[it1.index] = 0; // INT_ZEROTEST } else { // INT_ZEROTEST data[it1.index] = (long) v; // PRIM_TYPE_LONG // ADD_CAST } // INT_ZEROTEST } } } setDirty(); return this; }