package cern.jet.math.tdcomplex;

/**
 * Only for performance tuning of compute intensive linear algebraic
 * computations. Constructs functions that return one of
 * 
 * a and b are variables, constant is fixed, but for
 * performance reasons publicly accessible. Intended to be passed to
 * matrix.assign(otherMatrix,function) methods.
 */

public class DComplexPlusMultFirst implements cern.colt.function.tdcomplex.DComplexDComplexDComplexFunction {
    /**
     * Public read/write access to avoid frequent object construction.
     */
    public double[] multiplicator;

    /**
     * Insert the method's description here. Creation date: (8/10/99 19:12:09)
     */
    protected DComplexPlusMultFirst(final double[] multiplicator) {
        this.multiplicator = multiplicator;
    }

    /**
     * Returns the result of the function evaluation.
     */
    public final double[] apply(double[] a, double[] b) {
        double[] z = new double[2];
        z[0] = a[0] * multiplicator[0] - a[1] * multiplicator[1];
        z[1] = a[1] * multiplicator[0] + a[0] * multiplicator[1];
        z[0] += b[0];
        z[1] += b[1];
        return z;
    }

    /**
     * a - b/constant.
     */
    public static DComplexPlusMultFirst minusDiv(final double[] constant) {
        return new DComplexPlusMultFirst(DComplex.neg(DComplex.inv(constant)));
    }

    /**
     * a - b*constant.
     */
    public static DComplexPlusMultFirst minusMult(final double[] constant) {
        return new DComplexPlusMultFirst(DComplex.neg(constant));
    }

    /**
     * a + b/constant.
     */
    public static DComplexPlusMultFirst plusDiv(final double[] constant) {
        return new DComplexPlusMultFirst(DComplex.inv(constant));
    }

    /**
     * a + b*constant.
     */
    public static DComplexPlusMultFirst plusMult(final double[] constant) {
        return new DComplexPlusMultFirst(constant);
    }
}

 

Ads help maintain this website.