package mikera.vectorz.ops;
import mikera.vectorz.AVector;
import mikera.vectorz.Op;
import mikera.vectorz.impl.ADenseArrayVector;
public final class Quadratic extends APolynomialOp {
private final double a;
private final double b;
private final double c;
private Quadratic(double a,double b, double c) {
this.a=a;
this.b=b;
this.c=c;
}
public static Op create(double a,double b, double c) {
if (a==0.0) {
return Linear.create(b,c);
}
if ((a==1.0)&&(b==0.0)&&(c==0.0)) {
return Square.INSTANCE;
}
return new Quadratic(a,b,c);
}
@Override
public final double apply(double x) {
return (a*x*x)+(b*x)+c;
}
@Override
public double applyInverse(double y) {
throw new UnsupportedOperationException();
}
@Override
public void applyTo(AVector v) {
if (v instanceof ADenseArrayVector) {
ADenseArrayVector av=(ADenseArrayVector)v;
applyTo(av.getArray(),av.getArrayOffset(),av.length());
return;
}
int len=v.length();
for (int i=0; i
Ads help maintain this website.