package mikera.vectorz.impl;
import mikera.arrayz.INDArray;
import mikera.vectorz.AVector;
import mikera.vectorz.Op2;
import mikera.vectorz.util.ErrorMessages;
/**
* Base class for joined vectors
*
* Joined vectors are represented as the concatenation of a number of segments.
*
* @author Mike
*
*/
public abstract class AJoinedVector extends ASizedVector {
private static final long serialVersionUID = -1931862469605499077L;
public AJoinedVector(int length) {
super(length);
}
@Override
public abstract int componentCount();
@Override
public abstract AVector getComponent(int k);
/**
* Reconstructs a new joined vector of the same type and shape with the given segments.
*
* The segments must be the same shape as the original segments
*
* @param aVectors
* @return
*/
@Override
public abstract AJoinedVector withComponents(INDArray... segments);
@Override
public boolean isView() {
return true;
}
@Override
public boolean isMutable() {
long n=componentCount();
for (int i=0; i=(offset+length)) {
return;
}
vstart+=vlen;
}
}
@Override
public void copyTo(int offset, double[] dest, int destOffset, int length, int stride) {
long n=componentCount();
int vstart=0;
for (int i=0; i=(offset+length)) {
return;
}
vstart+=vlen;
}
}
@Override
public boolean equals(AVector a) {
if (this==a) return true;
if (length()!=a.length()) return false;
if (a instanceof ADenseArrayVector) {
ADenseArrayVector dav=(ADenseArrayVector)a;
return equalsArray(dav.getArray(),dav.getArrayOffset());
}
long n=componentCount();
int offset=0;
for (int i=0; in) throw new IllegalArgumentException(ErrorMessages.zeroElementReduce(this));
for (; i
Ads help maintain this website.