/** * Construct a (size)-length vector of zeros. * @param field field to which the elements belong * @param size size of the vector */ public ArrayFieldVector(Field<T> field, int size) { this.field = field; data = buildArray(size); Arrays.fill(data, field.getZero()); }
/** * Construct a vector by appending one vector to another vector. * @param v1 first vector (will be put in front of the new vector) * @param v2 second vector (will be put at back of the new vector) */ public ArrayFieldVector(T[] v1, ArrayFieldVector<T> v2) { field = v2.getField(); data = buildArray(v1.length + v2.data.length); System.arraycopy(v1, 0, data, 0, v1.length); System.arraycopy(v2.data, 0, data, v1.length, v2.data.length); }
/** {@inheritDoc} */ public FieldVector<T> append(T in) { final T[] out = buildArray(data.length + 1); System.arraycopy(data, 0, out, 0, data.length); out[data.length] = in; return new ArrayFieldVector<T>(out); }
/** * Construct a vector by appending one vector to another vector. * @param v1 first vector (will be put in front of the new vector) * @param v2 second vector (will be put at back of the new vector) */ public ArrayFieldVector(ArrayFieldVector<T> v1, T[] v2) { field = v1.getField(); data = buildArray(v1.data.length + v2.length); System.arraycopy(v1.data, 0, data, 0, v1.data.length); System.arraycopy(v2, 0, data, v1.data.length, v2.length); }
/** * Construct a vector by appending one vector to another vector. * @param v1 first vector (will be put in front of the new vector) * @param v2 second vector (will be put at back of the new vector) */ public ArrayFieldVector(ArrayFieldVector<T> v1, ArrayFieldVector<T> v2) { field = v1.getField(); data = buildArray(v1.data.length + v2.data.length); System.arraycopy(v1.data, 0, data, 0, v1.data.length); System.arraycopy(v2.data, 0, data, v1.data.length, v2.data.length); }
/** * Construct a vector by appending one vector to another vector. * @param v1 first vector (will be put in front of the new vector) * @param v2 second vector (will be put at back of the new vector) */ public ArrayFieldVector(ArrayFieldVector<T> v1, ArrayFieldVector<T> v2) { field = v1.getField(); data = buildArray(v1.data.length + v2.data.length); System.arraycopy(v1.data, 0, data, 0, v1.data.length); System.arraycopy(v2.data, 0, data, v1.data.length, v2.data.length); }
/** {@inheritDoc} */ public FieldVector<T> mapAdd(T d) { T[] out = buildArray(data.length); for (int i = 0; i < data.length; i++) { out[i] = data[i].add(d); } return new ArrayFieldVector<T>(out); }
/** {@inheritDoc} */ public FieldVector<T> mapDivide(T d) { T[] out = buildArray(data.length); for (int i = 0; i < data.length; i++) { out[i] = data[i].divide(d); } return new ArrayFieldVector<T>(out); }
/** {@inheritDoc} */ public FieldVector<T> mapSubtract(T d) { T[] out = buildArray(data.length); for (int i = 0; i < data.length; i++) { out[i] = data[i].subtract(d); } return new ArrayFieldVector<T>(out); }
/** {@inheritDoc} */ public FieldVector<T> mapMultiply(T d) { T[] out = buildArray(data.length); for (int i = 0; i < data.length; i++) { out[i] = data[i].multiply(d); } return new ArrayFieldVector<T>(out); }
/** {@inheritDoc} */ public FieldVector<T> mapSubtract(T d) { T[] out = buildArray(data.length); for (int i = 0; i < data.length; i++) { out[i] = data[i].subtract(d); } return new ArrayFieldVector<T>(out); }
/** * Construct a vector from another vector, using a deep copy. * @param v vector to copy */ public ArrayFieldVector(FieldVector<T> v) { field = v.getField(); data = buildArray(v.getDimension()); for (int i = 0; i < data.length; ++i) { data[i] = v.getEntry(i); } }
/** {@inheritDoc} */ public FieldVector<T> subtract(T[] v) throws IllegalArgumentException { checkVectorDimensions(v.length); T[] out = buildArray(data.length); for (int i = 0; i < data.length; i++) { out[i] = data[i].subtract(v[i]); } return new ArrayFieldVector<T>(out); }
/** {@inheritDoc} */ public FieldVector<T> mapInv() { T[] out = buildArray(data.length); final T one = field.getOne(); for (int i = 0; i < data.length; i++) { out[i] = one.divide(data[i]); } return new ArrayFieldVector<T>(out); }
/** {@inheritDoc} */ public FieldVector<T> ebeDivide(T[] v) throws IllegalArgumentException { checkVectorDimensions(v.length); T[] out = buildArray(data.length); for (int i = 0; i < data.length; i++) { out[i] = data[i].divide(v[i]); } return new ArrayFieldVector<T>(out); }
/** {@inheritDoc} */ public FieldVector<T> add(T[] v) throws IllegalArgumentException { checkVectorDimensions(v.length); T[] out = buildArray(data.length); for (int i = 0; i < data.length; i++) { out[i] = data[i].add(v[i]); } return new ArrayFieldVector<T>(out); }
/** {@inheritDoc} */ public FieldVector<T> ebeMultiply(T[] v) throws IllegalArgumentException { checkVectorDimensions(v.length); T[] out = buildArray(data.length); for (int i = 0; i < data.length; i++) { out[i] = data[i].multiply(v[i]); } return new ArrayFieldVector<T>(out); }
/** * Construct a vector from another vector, using a deep copy. * @param v vector to copy */ public ArrayFieldVector(FieldVector<T> v) { field = v.getField(); data = buildArray(v.getDimension()); for (int i = 0; i < data.length; ++i) { data[i] = v.getEntry(i); } }
/** {@inheritDoc} */ public FieldVector<T> add(T[] v) throws IllegalArgumentException { checkVectorDimensions(v.length); T[] out = buildArray(data.length); for (int i = 0; i < data.length; i++) { out[i] = data[i].add(v[i]); } return new ArrayFieldVector<T>(out); }
/** {@inheritDoc} */ public FieldVector<T> subtract(FieldVector<T> v) throws IllegalArgumentException { try { return subtract((ArrayFieldVector<T>) v); } catch (ClassCastException cce) { checkVectorDimensions(v); T[] out = buildArray(data.length); for (int i = 0; i < data.length; i++) { out[i] = data[i].subtract(v.getEntry(i)); } return new ArrayFieldVector<T>(out); } }