package mikera.vectorz.util;
import java.util.Arrays;
import java.util.List;
import mikera.util.Rand;
import mikera.vectorz.Tools;
public class IntArrays {
private IntArrays(){}
public static final int[] EMPTY_INT_ARRAY=new int[0];
public static int[] of(int... ints) {
return ints;
}
public static int[] create(Object o) {
if (o instanceof List>) {
return create((List>)o);
} else if (o instanceof int[]) {
return ((int[]) o).clone();
} else if (o instanceof double[]) {
return create((double[]) o);
} else if (o instanceof Iterable>) {
return create(Tools.toList((Iterable>) o));
}
throw new IllegalArgumentException("Can't convert to int[]: "+o);
}
/**
* Creates a new int array. Use the default EMPTY_INT_ARRAY if requested size is zero
* @param size
* @return
*/
public static int[] create(int size) {
if (size==0) return EMPTY_INT_ARRAY;
return new int[size];
}
public static int[] create(double[] ls) {
int n=ls.length;
int[] r=new int[n];
for (int i=0; i ls) {
int n=ls.size();
int[] r=new int[n];
for (int i=0; i=0; j--) {
stride[j]=st;
st*=shape[j];
}
return stride;
}
/**
* Tests if two int array scontain equal values.
* @param as
* @param bs
* @return
*/
public static boolean equals(int[] as, int[] bs) {
if (as==bs) return true;
int n=as.length;
if (n!=bs.length) return false;
for (int i=0; i>1;
int mi=data[mid];
if (i==mi) return mid;
if (i20) {
return seekPositionBig(data,i,0,max);
} else {
return seekPositionSmall(data,i, 0, max);
}
}
private static int seekPositionBig(int[] data, int x, int min, int max) {
int lx=data[min];
int hx=data[max-1];
if (x<=lx) {
return min;
}
if (x>=hx) {
if (x==hx) return max-1;
return max;
}
while ((min+10)>1; // bisect interval
int mx=data[mid];
if (x==mx) return mid;
if (x20) {
return indexPositionBig(data,x,0,max);
} else {
return indexPositionSmall(data,x, 0, max);
}
}
private static int indexPositionBig(int[] data, int x, int min, int max) {
int lx=data[min];
int hx=data[max-1];
if (x<=lx) {
if (x==lx) return min;
return -1;
}
if (x>=hx) {
if (x==hx) return max-1;
return -1;
}
while ((min+10)>1; // bisect interval
int mx=data[mid];
if (x==mx) return mid;
if (x=shape[i])) return false;
}
return true;
}
public static int[] select(int[] source, int... inds) {
int n=inds.length;
int[] r=new int[n];
for (int i=0; i
Ads help maintain this website.