Example usage for org.apache.commons.math.complex Complex Complex

List of usage examples for org.apache.commons.math.complex Complex Complex

Introduction

In this page you can find the example usage for org.apache.commons.math.complex Complex Complex.

Prototype

public Complex(double real, double imaginary) 

Source Link

Document

Create a complex number given the real and imaginary parts.

Usage

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;
}