All Downloads are FREE. Search and download functionalities are using the official Maven repository.

mikera.vectorz.util.IntArrays Maven / Gradle / Ivy

Go to download

Fast double-precision vector and matrix maths library for Java, supporting N-dimensional numeric arrays.

There is a newer version: 0.67.0
Show newest version
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