/**
*
*/
package com.ewjordan.util.objectWrap.test;
import org.apache.commons.math.analysis.MultivariateRealFunction;
import com.ewjordan.util.objectWrap.HasValue;
import com.ewjordan.util.objectWrap.Unwrapped;
class PolynomialFunction implements HasValue, MultivariateRealFunction {
@Unwrapped public double[] coefficients;
public double x;
public PolynomialFunction(double ... coefs) {
coefficients = new double[coefs.length];
System.arraycopy(coefs, 0, coefficients, 0, coefs.length);
}
public double getValue(float input) {
double oldX = x;
x = input;
double res = getValue();
x = oldX;
return res;
}
public double getValue() {
double value = 0.0f;
double pow = 1.0f;
for (int i=coefficients.length-1; i >= 0; --i) {
value += coefficients[i] * pow;
pow *= x;
}
// System.out.println("PF: " + x + " -> " + value);
return value;
}
@Override
public double value(double[] point) throws IllegalArgumentException {
return getValue((float)point[0]);
}
}