package mikera.vectorz.impl; import mikera.vectorz.AScalar; import mikera.vectorz.AVector; /** * Basic Scalar class containing a single mutable double value * * This is deprecated! Prefer mikera.vectorz.Scalar instead. * Included only for backwards compatibility purposes * * TODO: remove in Vectorz 1.0.0 release * * @author Mike */ @Deprecated public final class DoubleScalar extends AScalar { private static final long serialVersionUID = -8968335296175000888L; public double value; public DoubleScalar(double value) { this.value = value; } public static DoubleScalar create(double value) { return new DoubleScalar(value); } public static DoubleScalar create(AScalar a) { return create(a.get()); } @Override public double get() { return value; } @Override public void set(double value) { this.value = value; } @Override public void abs() { value = Math.abs(value); } @Override public void add(double d) { value += d; } @Override public void sub(double d) { value -= d; } @Override public void add(AScalar s) { value += s.get(); } @Override public void multiply(double factor) { value *= factor; } @Override public void negate() { value = -value; } @Override public void scaleAdd(double factor, double constant) { value = value*factor + constant; } @Override public boolean isView() { return false; } @Override public void getElements(double[] dest, int offset) { dest[offset] = value; } @Override public DoubleScalar exactClone() { return new DoubleScalar(value); } /** * Creates a new Scalar using the elements in the specified vector. * Zero-pads the data as required to define the Scalar * @param data * @param rows * @param columns * @return */ public static DoubleScalar createFromVector(AVector data) { return new DoubleScalar(data.length()>0?data.get(0):0.0); } }