/* SCCS @(#)NslGetSector.java 1.8 --- 09/01/99 --U% */
// Copyright: Copyright (c) 1997 University of Southern California Brain Project.
// Copyright: This software may be freely copied provided the toplevel
// Copyright: COPYRIGHT file is included with each such copy.
// Copyright: Email nsl@java.usc.edu.
////////////////////////////////////////////////////////////
//
// GetSector routines
//
//
package nslj.src.math;
/**
* Create an array that captures element start to end
* if start is smaller than 0, start is default as 0;
* if end is greater than the length of the array,
* end is default as the length of the array
* @param start - the element number start the capture
* @param end - the element number ends the capture
* @_data - input matrix
* @return a section of the original array
*/
//import java.util.Arrays;
import nslj.src.lang.*;
public final class NslGetSector {
//---------------------------------------------------------
// NslNumerics
//NslDouble1
public static double[] eval(double[] dest, NslDouble1 num, int start, int end) {
double[] _data = num.get();
if (start < 0)
start = 0;
if (end > _data.length)
end = _data.length;
return eval(dest, _data, start, end);
}
//2
public static double[] eval(NslDouble1 num, int start, int end) {
double[] _data = num.get();
if (start < 0)
start = 0;
if (end > _data.length)
end = _data.length;
int length = end-start+1;
return eval(new double[length], _data , start, end);
}
//NslDouble2
public static double[][] eval(double[][] dest, NslDouble2 num, int start1, int start2, int end1, int end2) {
double[][] _data= num.get();
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
return eval(dest,_data,start1,start2,end1,end2);
}
//2
public static double[][] eval(NslDouble2 num, int start1, int start2, int end1, int end2) {
double[][] _data= num.get();
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
int length1 = end1-start1+1;
int length2 = end2-start2+1;
return eval(new double[length1][length2], _data, start1, start2, end1, end2);
}
// NslDouble3
public static double[][][] eval(double[][][] dest, NslDouble3 num, int start1, int start2, int start3, int end1, int end2, int end3) {
double[][][] _data= num.get();
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (start3 < 0)
start3 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
int length1 = end1-start1+1;
int length2 = end2-start2+1;
int length3 = end3-start3+1;
return eval(dest,_data,start1,start2,start3,end1,end2,end3);
}
//2
public static double[][][] eval(NslDouble3 num, int start1, int start2, int start3, int end1, int end2, int end3) {
double[][][] _data= num.get();
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (start3 < 0)
start3 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
int length1 = end1-start1+1;
int length2 = end2-start2+1;
int length3 = end3-start3+1;
return eval(new double[length1][length2][length3],_data,start1,start2,start3,end1,end2,end3);
}
//NslDouble4
public static double[][][][] eval(double[][][][] dest, NslDouble4 num,int start1, int start2, int start3, int start4, int end1, int end2, int end3, int end4) {
double[][][][] _data= num.get();
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (start3 < 0)
start3 = 0;
if (start4 < 0)
start4 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
if (end4 > _data[0][0][0].length)
end4 = _data[0][0][0].length;
int length1 = end1-start1+1;
int length2 = end2-start2+1;
int length3 = end3-start3+1;
int length4 = end4-start4+1;
return eval(dest,_data,start1, start2, start3, start4, end1, end2, end3, end4);
}
//2
public static double[][][][] eval(NslDouble4 num,int start1, int start2, int start3, int start4, int end1, int end2, int end3, int end4) {
double[][][][] _data=num.get();
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (start3 < 0)
start3 = 0;
if (start4 < 0)
start4 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
if (end4 > _data[0][0][0].length)
end4 = _data[0][0][0].length;
int length1 = end1-start1+1;
int length2 = end2-start2+1;
int length3 = end3-start3+1;
int length4 = end4-start4+1;
return eval(new double[length1][length2][length3][length4],_data,start1, start2, start3, start4, end1, end2, end3, end4);
}
//NslFloat1
public static float[] eval(float[] dest, NslFloat1 num, int start, int end) {
float[] _data = num.get();
if (start < 0)
start = 0;
if (end > _data.length)
end = _data.length;
return eval(dest, _data, start, end);
}
//2
public static float[] eval(NslFloat1 num, int start, int end) {
float[] _data = num.get();
if (start < 0)
start = 0;
if (end > _data.length)
end = _data.length;
int length = end-start+1;
return eval(new float[length], _data , start, end);
}
//NslFloat2
public static float[][] eval(float[][] dest, NslFloat2 num, int start1, int start2, int end1, int end2) {
float[][] _data= num.get();
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
return eval(dest,_data,start1,start2,end1,end2);
}
//2
public static float[][] eval(NslFloat2 num, int start1, int start2, int end1, int end2) {
float[][] _data= num.get();
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
int length1 = end1-start1+1;
int length2 = end2-start2+1;
return eval(new float[length1][length2], _data, start1, start2, end1, end2);
}
// NslFloat3
public static float[][][] eval(float[][][] dest, NslFloat3 num, int start1, int start2, int start3, int end1, int end2, int end3) {
float[][][] _data= num.get();
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (start3 < 0)
start3 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
int length1 = end1-start1+1;
int length2 = end2-start2+1;
int length3 = end3-start3+1;
return eval(dest,_data,start1,start2,start3,end1,end2,end3);
}
//2
public static float[][][] eval(NslFloat3 num, int start1, int start2, int start3, int end1, int end2, int end3) {
float[][][] _data= num.get();
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (start3 < 0)
start3 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
int length1 = end1-start1+1;
int length2 = end2-start2+1;
int length3 = end3-start3+1;
return eval(new float[length1][length2][length3],_data,start1,start2,start3,end1,end2,end3);
}
//NslFloat4
public static float[][][][] eval(float[][][][] dest, NslFloat4 num,int start1, int start2, int start3, int start4, int end1, int end2, int end3, int end4) {
float[][][][] _data= num.get();
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (start3 < 0)
start3 = 0;
if (start4 < 0)
start4 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
if (end4 > _data[0][0][0].length)
end4 = _data[0][0][0].length;
int length1 = end1-start1+1;
int length2 = end2-start2+1;
int length3 = end3-start3+1;
int length4 = end4-start4+1;
return eval(dest,_data,start1, start2, start3, start4, end1, end2, end3, end4);
}
//2
public static float[][][][] eval(NslFloat4 num,int start1, int start2, int start3, int start4, int end1, int end2, int end3, int end4) {
float[][][][] _data=num.get();
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (start3 < 0)
start3 = 0;
if (start4 < 0)
start4 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
if (end4 > _data[0][0][0].length)
end4 = _data[0][0][0].length;
int length1 = end1-start1+1;
int length2 = end2-start2+1;
int length3 = end3-start3+1;
int length4 = end4-start4+1;
return eval(new float[length1][length2][length3][length4],_data,start1, start2, start3, start4, end1, end2, end3, end4);
}
//NslBoolean1
public static boolean[] eval(boolean[] dest, NslBoolean1 num, int start, int end) {
boolean[] _data = num.get();
if (start < 0)
start = 0;
if (end > _data.length)
end = _data.length;
return eval(dest, _data, start, end);
}
//2
public static boolean[] eval(NslBoolean1 num, int start, int end) {
boolean[] _data = num.get();
if (start < 0)
start = 0;
if (end > _data.length)
end = _data.length;
int length = end-start+1;
return eval(new boolean[length], _data , start, end);
}
//NslBoolean2
public static boolean[][] eval(boolean[][] dest, NslBoolean2 num, int start1, int start2, int end1, int end2) {
boolean[][] _data= num.get();
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
return eval(dest,_data,start1,start2,end1,end2);
}
//2
public static boolean[][] eval(NslBoolean2 num, int start1, int start2, int end1, int end2) {
boolean[][] _data= num.get();
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
int length1 = end1-start1+1;
int length2 = end2-start2+1;
return eval(new boolean[length1][length2], _data, start1, start2, end1, end2);
}
// NslBoolean3
public static boolean[][][] eval(boolean[][][] dest, NslBoolean3 num, int start1, int start2, int start3, int end1, int end2, int end3) {
boolean[][][] _data= num.get();
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (start3 < 0)
start3 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
int length1 = end1-start1+1;
int length2 = end2-start2+1;
int length3 = end3-start3+1;
return eval(dest,_data,start1,start2,start3,end1,end2,end3);
}
//2
public static boolean[][][] eval(NslBoolean3 num, int start1, int start2, int start3, int end1, int end2, int end3) {
boolean[][][] _data= num.get();
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (start3 < 0)
start3 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
int length1 = end1-start1+1;
int length2 = end2-start2+1;
int length3 = end3-start3+1;
return eval(new boolean[length1][length2][length3],_data,start1,start2,start3,end1,end2,end3);
}
//NslBoolean4
public static boolean[][][][] eval(boolean[][][][] dest, NslBoolean4 num,int start1, int start2, int start3, int start4, int end1, int end2, int end3, int end4) {
boolean[][][][] _data= num.get();
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (start3 < 0)
start3 = 0;
if (start4 < 0)
start4 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
if (end4 > _data[0][0][0].length)
end4 = _data[0][0][0].length;
int length1 = end1-start1+1;
int length2 = end2-start2+1;
int length3 = end3-start3+1;
int length4 = end4-start4+1;
return eval(dest,_data,start1, start2, start3, start4, end1, end2, end3, end4);
}
//2
public static boolean[][][][] eval(NslBoolean4 num,int start1, int start2, int start3, int start4, int end1, int end2, int end3, int end4) {
boolean[][][][] _data=num.get();
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (start3 < 0)
start3 = 0;
if (start4 < 0)
start4 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
if (end4 > _data[0][0][0].length)
end4 = _data[0][0][0].length;
int length1 = end1-start1+1;
int length2 = end2-start2+1;
int length3 = end3-start3+1;
int length4 = end4-start4+1;
return eval(new boolean[length1][length2][length3][length4],_data,start1, start2, start3, start4, end1, end2, end3, end4);
}
//NslInt1
public static int[] eval(int[] dest, NslInt1 num, int start, int end) {
int[] _data = num.get();
if (start < 0)
start = 0;
if (end > _data.length)
end = _data.length;
return eval(dest, _data, start, end);
}
//2
public static int[] eval(NslInt1 num, int start, int end) {
int[] _data = num.get();
if (start < 0)
start = 0;
if (end > _data.length)
end = _data.length;
int length = end-start+1;
return eval(new int[length], _data , start, end);
}
//NslInt2
public static int[][] eval(int[][] dest, NslInt2 num, int start1, int start2, int end1, int end2) {
int[][] _data= num.get();
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
return eval(dest,_data,start1,start2,end1,end2);
}
//2
public static int[][] eval(NslInt2 num, int start1, int start2, int end1, int end2) {
int[][] _data= num.get();
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
int length1 = end1-start1+1;
int length2 = end2-start2+1;
return eval(new int[length1][length2], _data, start1, start2, end1, end2);
}
// NslInt3
public static int[][][] eval(int[][][] dest, NslInt3 num, int start1, int start2, int start3, int end1, int end2, int end3) {
int[][][] _data= num.get();
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (start3 < 0)
start3 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
int length1 = end1-start1+1;
int length2 = end2-start2+1;
int length3 = end3-start3+1;
return eval(dest,_data,start1,start2,start3,end1,end2,end3);
}
//2
public static int[][][] eval(NslInt3 num, int start1, int start2, int start3, int end1, int end2, int end3) {
int[][][] _data= num.get();
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (start3 < 0)
start3 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
int length1 = end1-start1+1;
int length2 = end2-start2+1;
int length3 = end3-start3+1;
return eval(new int[length1][length2][length3],_data,start1,start2,start3,end1,end2,end3);
}
//NslInt4
public static int[][][][] eval(int[][][][] dest, NslInt4 num,int start1, int start2, int start3, int start4, int end1, int end2, int end3, int end4) {
int[][][][] _data= num.get();
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (start3 < 0)
start3 = 0;
if (start4 < 0)
start4 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
if (end4 > _data[0][0][0].length)
end4 = _data[0][0][0].length;
int length1 = end1-start1+1;
int length2 = end2-start2+1;
int length3 = end3-start3+1;
int length4 = end4-start4+1;
return eval(dest,_data,start1, start2, start3, start4, end1, end2, end3, end4);
}
//2
public static int[][][][] eval(NslInt4 num,int start1, int start2, int start3, int start4, int end1, int end2, int end3, int end4) {
int[][][][] _data=num.get();
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (start3 < 0)
start3 = 0;
if (start4 < 0)
start4 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
if (end4 > _data[0][0][0].length)
end4 = _data[0][0][0].length;
int length1 = end1-start1+1;
int length2 = end2-start2+1;
int length3 = end3-start3+1;
int length4 = end4-start4+1;
return eval(new int[length1][length2][length3][length4],_data,start1, start2, start3, start4, end1, end2, end3, end4);
}
//--------------------------------------------------------------
//native 1d double
/**
* Create an array that captures element start to end
* if start is smaller than 0, start is default as 0;
* if end is greater than the length of the array,
* end is default as the length of the array
* @param start - the element number start the capture
* @param end - the element number ends the capture
* @_data - input matrix
* @return a section of the original array
*/
//native 1d double
public static double[] eval(double[] dest, double[] _data,int start, int end) {
int i;
int j;
int length;
if (start < 0) start = 0;
if (end > _data.length)
end = _data.length;
length = end-start+1;
if (dest.length != length) {
dest = new double[length];
}
i = start;
for (j=0; j _data.length)
end = _data.length;
length = end-start+1;
dest = new double[length];
return eval(dest, _data,start, end );
}
//native 2d double
public static double[][] eval(double[][] dest,double[][] _data,int start1, int start2, int end1, int end2) {
int i1;
int i2;
int j1;
int j2;
int length1;
int length2;
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
length1 = end1-start1+1;
length2 = end2-start2+1;
if (dest.length != length1 || dest[0].length != length2) {
dest = new double[length1][length2];
}
i1 = start1;
i2 = start2;
for (j1=0; j1 _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
length1 = end1-start1+1;
length2 = end2-start2+1;
dest = new double[length1][length2];
return eval(dest,_data,start1,start2,end1,end2);
}
// native 3d double
public static double[][][] eval(double[][][] dest, double[][][] _data, int start1, int start2, int start3, int end1, int end2, int end3) {
int i1;
int i2;
int i3;
int j1;
int j2;
int j3;
int length1;
int length2;
int length3;
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (start3 < 0)
start3 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
length1 = end1-start1+1;
length2 = end2-start2+1;
length3 = end3-start3+1;
if (dest.length != length1 || dest[0].length != length2 || dest[0][0].length != length3) {
dest = new double[length1][length2][length3];
}
i1 = start1;
i2 = start2;
i3 = start3;
for (j1=0; j1 _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
length1 = end1-start1+1;
length2 = end2-start2+1;
length3 = end3-start3+1;
dest = new double[length1][length2][length3];
return eval(dest,_data,start1,start2,start3,end1,end2,end3);
}
//native 4d double
public static double[][][][] eval(double[][][][] dest, double[][][][] _data,int start1, int start2, int start3, int start4, int end1, int end2, int end3, int end4) {
int i1;
int i2;
int i3;
int i4;
int j1;
int j2;
int j3;
int j4;
int length1;
int length2;
int length3;
int length4;
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (start3 < 0)
start3 = 0;
if (start4 < 0)
start4 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
if (end4 > _data[0][0][0].length)
end4 = _data[0][0][0].length;
length1 = end1-start1+1;
length2 = end2-start2+1;
length3 = end3-start3+1;
length4 = end4-start4+1;
if (dest.length != length1 || dest[0].length != length2 || dest[0][0].length != length3|| dest[0][0][0].length != length4) {
dest = new double[length1][length2][length3][length4];
}
i1 = start1;
i2 = start2;
i3 = start3;
i4 = start4;
for (j1=0; j1 _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
if (end4 > _data[0][0][0].length)
end4 = _data[0][0][0].length;
length1 = end1-start1+1;
length2 = end2-start2+1;
length3 = end3-start3+1;
length4 = end4-start4+1;
dest = new double[length1][length2][length3][length4];
return eval(dest, _data,start1, start2, start3, start3, end1, end2, end3, end4);
}
//----------------------------------------------------------
// floats
/**
* Create an array that captures element start to end
* if start is smaller than 0, start is default as 0;
* if end is greater than the length of the array,
* end is default as the length of the array
* @param start - the element number start the capture
* @param end - the element number ends the capture
* @_data - input matrix
* @return a section of the original array
*/
//native 1d float
public static float[] eval(float[] dest, float[] _data,int start, int end) {
int i;
int j;
int length;
if (start < 0) start = 0;
if (end > _data.length)
end = _data.length;
length = end-start+1;
if (dest.length != length) {
dest = new float[length];
}
i = start;
for (j=0; j _data.length)
end = _data.length;
length = end-start+1;
dest = new float[length];
return eval(dest, _data,start, end );
}
//native 2d float
public static float[][] eval(float[][] dest,float[][] _data,int start1, int start2, int end1, int end2) {
int i1;
int i2;
int j1;
int j2;
int length1;
int length2;
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
length1 = end1-start1+1;
length2 = end2-start2+1;
if (dest.length != length1 || dest[0].length != length2) {
dest = new float[length1][length2];
}
i1 = start1;
i2 = start2;
for (j1=0; j1 _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
length1 = end1-start1+1;
length2 = end2-start2+1;
dest = new float[length1][length2];
return eval(dest,_data,start1,start2,end1,end2);
}
// native 3d float
public static float[][][] eval(float[][][] dest, float[][][] _data, int start1, int start2, int start3, int end1, int end2, int end3) {
int i1;
int i2;
int i3;
int j1;
int j2;
int j3;
int length1;
int length2;
int length3;
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (start3 < 0)
start3 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
length1 = end1-start1+1;
length2 = end2-start2+1;
length3 = end3-start3+1;
if (dest.length != length1 || dest[0].length != length2 || dest[0][0].length != length3) {
dest = new float[length1][length2][length3];
}
i1 = start1;
i2 = start2;
i3 = start3;
for (j1=0; j1 _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
length1 = end1-start1+1;
length2 = end2-start2+1;
length3 = end3-start3+1;
dest = new float[length1][length2][length3];
return eval(dest,_data,start1,start2,start3,end1,end2,end3);
}
//native 4d float
public static float[][][][] eval(float[][][][] dest, float[][][][] _data,int start1, int start2, int start3, int start4, int end1, int end2, int end3, int end4) {
int i1;
int i2;
int i3;
int i4;
int j1;
int j2;
int j3;
int j4;
int length1;
int length2;
int length3;
int length4;
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (start3 < 0)
start3 = 0;
if (start4 < 0)
start4 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
if (end4 > _data[0][0][0].length)
end4 = _data[0][0][0].length;
length1 = end1-start1+1;
length2 = end2-start2+1;
length3 = end3-start3+1;
length4 = end4-start4+1;
if (dest.length != length1 || dest[0].length != length2 || dest[0][0].length != length3|| dest[0][0][0].length != length4) {
dest = new float[length1][length2][length3][length4];
}
i1 = start1;
i2 = start2;
i3 = start3;
i4 = start4;
for (j1=0; j1 _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
if (end4 > _data[0][0][0].length)
end4 = _data[0][0][0].length;
length1 = end1-start1+1;
length2 = end2-start2+1;
length3 = end3-start3+1;
length4 = end4-start4+1;
dest = new float[length1][length2][length3][length4];
return eval(dest, _data,start1, start2, start3, start3, end1, end2, end3, end4);
}
//----------------------------------------------------------
// ints
/**
* Create an array that captures element start to end
* if start is smaller than 0, start is default as 0;
* if end is greater than the length of the array,
* end is default as the length of the array
* @param start - the element number start the capture
* @param end - the element number ends the capture
* @_data - input matrix
* @return a section of the original array
*/
//native 1d int
public static int[] eval(int[] dest, int[] _data,int start, int end) {
int i;
int j;
int length;
if (start < 0) start = 0;
if (end > _data.length)
end = _data.length;
length = end-start+1;
if (dest.length != length) {
dest = new int[length];
}
i = start;
for (j=0; j _data.length)
end = _data.length;
length = end-start+1;
dest = new int[length];
return eval(dest, _data,start, end );
}
//native 2d int
public static int[][] eval(int[][] dest,int[][] _data,int start1, int start2, int end1, int end2) {
int i1;
int i2;
int j1;
int j2;
int length1;
int length2;
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
length1 = end1-start1+1;
length2 = end2-start2+1;
if (dest.length != length1 || dest[0].length != length2) {
dest = new int[length1][length2];
}
i1 = start1;
i2 = start2;
for (j1=0; j1 _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
length1 = end1-start1+1;
length2 = end2-start2+1;
dest = new int[length1][length2];
return eval(dest,_data,start1,start2,end1,end2);
}
// native 3d int
public static int[][][] eval(int[][][] dest, int[][][] _data, int start1, int start2, int start3, int end1, int end2, int end3) {
int i1;
int i2;
int i3;
int j1;
int j2;
int j3;
int length1;
int length2;
int length3;
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (start3 < 0)
start3 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
length1 = end1-start1+1;
length2 = end2-start2+1;
length3 = end3-start3+1;
if (dest.length != length1 || dest[0].length != length2 || dest[0][0].length != length3) {
dest = new int[length1][length2][length3];
}
i1 = start1;
i2 = start2;
i3 = start3;
for (j1=0; j1 _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
length1 = end1-start1+1;
length2 = end2-start2+1;
length3 = end3-start3+1;
dest = new int[length1][length2][length3];
return eval(dest,_data,start1,start2,start3,end1,end2,end3);
}
//native 4d int
public static int[][][][] eval(int[][][][] dest, int[][][][] _data,int start1, int start2, int start3, int start4, int end1, int end2, int end3, int end4) {
int i1;
int i2;
int i3;
int i4;
int j1;
int j2;
int j3;
int j4;
int length1;
int length2;
int length3;
int length4;
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (start3 < 0)
start3 = 0;
if (start4 < 0)
start4 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
if (end4 > _data[0][0][0].length)
end4 = _data[0][0][0].length;
length1 = end1-start1+1;
length2 = end2-start2+1;
length3 = end3-start3+1;
length4 = end4-start4+1;
if (dest.length != length1 || dest[0].length != length2 || dest[0][0].length != length3|| dest[0][0][0].length != length4) {
dest = new int[length1][length2][length3][length4];
}
i1 = start1;
i2 = start2;
i3 = start3;
i4 = start4;
for (j1=0; j1 _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
if (end4 > _data[0][0][0].length)
end4 = _data[0][0][0].length;
length1 = end1-start1+1;
length2 = end2-start2+1;
length3 = end3-start3+1;
length4 = end4-start4+1;
dest = new int[length1][length2][length3][length4];
return eval(dest, _data,start1, start2, start3, start3, end1, end2, end3, end4);
}
//----------------------------------------------------------
// booleans
/**
* Create an array that captures element start to end
* if start is smaller than 0, start is default as 0;
* if end is greater than the length of the array,
* end is default as the length of the array
* @param start - the element number start the capture
* @param end - the element number ends the capture
* @_data - input matrix
* @return a section of the original array
*/
//native 1d boolean
public static boolean[] eval(boolean[] dest, boolean[] _data,int start, int end) {
int i;
int j;
int length;
if (start < 0) start = 0;
if (end > _data.length)
end = _data.length;
length = end-start+1;
if (dest.length != length) {
dest = new boolean[length];
}
i = start;
for (j=0; j _data.length)
end = _data.length;
length = end-start+1;
dest = new boolean[length];
return eval(dest, _data,start, end );
}
//native 2d boolean
public static boolean[][] eval(boolean[][] dest,boolean[][] _data,int start1, int start2, int end1, int end2) {
int i1;
int i2;
int j1;
int j2;
int length1;
int length2;
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
length1 = end1-start1+1;
length2 = end2-start2+1;
if (dest.length != length1 || dest[0].length != length2) {
dest = new boolean[length1][length2];
}
i1 = start1;
i2 = start2;
for (j1=0; j1 _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
length1 = end1-start1+1;
length2 = end2-start2+1;
dest = new boolean[length1][length2];
return eval(dest,_data,start1,start2,end1,end2);
}
// native 3d boolean
public static boolean[][][] eval(boolean[][][] dest, boolean[][][] _data, int start1, int start2, int start3, int end1, int end2, int end3) {
int i1;
int i2;
int i3;
int j1;
int j2;
int j3;
int length1;
int length2;
int length3;
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (start3 < 0)
start3 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
length1 = end1-start1+1;
length2 = end2-start2+1;
length3 = end3-start3+1;
if (dest.length != length1 || dest[0].length != length2 || dest[0][0].length != length3) {
dest = new boolean[length1][length2][length3];
}
i1 = start1;
i2 = start2;
i3 = start3;
for (j1=0; j1 _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
length1 = end1-start1+1;
length2 = end2-start2+1;
length3 = end3-start3+1;
dest = new boolean[length1][length2][length3];
return eval(dest,_data,start1,start2,start3,end1,end2,end3);
}
//native 4d boolean
public static boolean[][][][] eval(boolean[][][][] dest, boolean[][][][] _data,int start1, int start2, int start3, int start4, int end1, int end2, int end3, int end4) {
int i1;
int i2;
int i3;
int i4;
int j1;
int j2;
int j3;
int j4;
int length1;
int length2;
int length3;
int length4;
if (start1 < 0)
start1 = 0;
if (start2 < 0)
start2 = 0;
if (start3 < 0)
start3 = 0;
if (start4 < 0)
start4 = 0;
if (end1 > _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
if (end4 > _data[0][0][0].length)
end4 = _data[0][0][0].length;
length1 = end1-start1+1;
length2 = end2-start2+1;
length3 = end3-start3+1;
length4 = end4-start4+1;
if (dest.length != length1 || dest[0].length != length2 || dest[0][0].length != length3|| dest[0][0][0].length != length4) {
dest = new boolean[length1][length2][length3][length4];
}
i1 = start1;
i2 = start2;
i3 = start3;
i4 = start4;
for (j1=0; j1 _data.length)
end1 = _data.length;
if (end2 > _data[0].length)
end2 = _data[0].length;
if (end3 > _data[0][0].length)
end3 = _data[0][0].length;
if (end4 > _data[0][0][0].length)
end4 = _data[0][0][0].length;
length1 = end1-start1+1;
length2 = end2-start2+1;
length3 = end3-start3+1;
length4 = end4-start4+1;
dest = new boolean[length1][length2][length3][length4];
return eval(dest, _data,start1, start2, start3, start3, end1, end2, end3, end4);
}
} // end NslGetSector