![JAR search and dependency download from the Maven repository](/logo.png)
mikera.vectorz.util.IntArrays Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of vectorz Show documentation
Show all versions of vectorz Show documentation
Fast double-precision vector and matrix maths library for Java, supporting N-dimensional numeric arrays.
package mikera.vectorz.util;
import java.util.Arrays;
import java.util.List;
import mikera.util.Rand;
import mikera.vectorz.Tools;
public class 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);
}
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
© 2015 - 2025 Weber Informatics LLC | Privacy Policy