/* SCCS - %W% - %G% - %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.
////////////////////////////////////////////////////////////////////////////////
// NslDouble3.java
package nslj.src.lang;
public class NslDouble3 extends NslNumeric3 {
public double[][][] _data;
// public String _name;
// boolean visibility = true;
// NslHierarchy module;
public NslDouble3(double[][][] d) {
super();
_data = new double[d.length][d[0].length][d[0][0].length];
set(d);
//_name = null;
}
public NslDouble3(NslNumeric3 n) {
super();
_data = new double[n.getSize1()][n.getSize2()][n.getSize3()];
set(n.getdouble3());
//_name = null;
}
public NslDouble3(int size1, int size2, int size3) {
super();
_data = new double[size1][size2][size3];
//_name = null;
}
public NslDouble3() {
super();
_data=null;
//_name = null;
}
/**
* This constructs a number with specified name
* @param name - name of the variable
*/
public NslDouble3(String name) {
super(name);
_data = null;
//_name = name;
}
public NslDouble3(String name, NslHierarchy curParent) {
super(name,curParent,curParent.nslGetAccess());
_data = null;
//_name = name;
//module = curParent;
//visibility = module.getVisibility();
//module.enableAccess(this);
}
/**
* This constructs a number with specified name
* @param name - name of the variable
* @param size1 - size of the array 1st-Dimension
* @param size2 - size of the array 2nd-Dimension
* @param size3 - size of the array 3rd-Dimension
*/
public NslDouble3(String name, int size1, int size2, int size3) {
super(name);
_data = new double[size1][size2][size3];
//_name = name;
}
public NslDouble3(String name, NslHierarchy curParent, int size1, int size2, int size3) {
super(name,curParent,curParent.nslGetAccess());
_data = new double[size1][size2][size3];
//_name = name;
//module = curParent;
//visibility = module.getVisibility();
//module.enableAccess(this);
}
/**
* This constructs a number with specified name
* @param name - name of the variable
* @param n - initialized values
*/
public NslDouble3(String name, NslHierarchy curParent, NslNumeric3 n) {
super(name,curParent,curParent.nslGetAccess());
_data = new double[n.getSize1()][n.getSize2()][n.getSize3()];
set(n.getdouble3());
//_name = name;
//module = curParent;
//visibility = module.getVisibility();
//module.enableAccess(this);
}
public NslDouble3(String name, NslNumeric3 n) {
super(name);
_data = new double[n.getSize1()][n.getSize2()][n.getSize3()];
set(n.getdouble3());
//_name = name;
}
// 98/8/20 aa
public NslDouble3(String name, double[][][] d) {
super(name);
_data = new double[d.length][d[0].length][d[0][0].length];
set(d);
//_name = name;
}
public void nslMemAlloc(int size1, int size2, int size3) {
_data = new double[size1][size2][size3];
}
// ----------gets---------------------------------------------
public double[][][] get() {
return _data;
}
public double[][] get(int pos1) {
return _data[pos1];
}
public double[] get(int pos1, int pos2) {
return _data[pos1][pos2];
}
public double get(int pos1, int pos2, int pos3) {
return _data[pos1][pos2][pos3];
}
public double get(NslInt0 pos1, NslInt0 pos2, NslInt0 pos3) {
return _data[pos1.get()][pos2.get()][pos3.get()];
}
public double[][][] getdouble3() {
return _data;
}
/**
* @return - the value of this object in java numerical array type
float[][][].
*/
public float[][][] getfloat3() {
float[][][] floatdata;
int i;
int j;
int k;
int size1 = _data.length;
int size2 = _data[0].length;
int size3 = _data[0][0].length;
floatdata = new float[size1][size2][size3];
for (i=0; iint[][][].
*/
public int[][][] getint3() {
int[][][] intdata;
int i;
int j;
int k;
int size1 = _data.length;
int size2 = _data[0].length;
int size3 = _data[0][0].length;
intdata = new int[size1][size2][size3];
for (i=0; ipos1th row and
pos2th column in java numerical type double.
*/
public double[][] getdouble2(int pos1) {
return _data[pos1];
}
/**
* @param pos1 - left most index
* @return the value of the element in pos1th row and
pos2th column in java numerical type float.
*/
public float[][] getfloat2(int pos1) {
int i,j;
int size2 = _data[0].length;
int size3 = _data[0][0].length;
float[][] tmp = new float[size2][size3];
for (i=0; ipos1th row and
pos2th column in java numerical type int.
*/
public int[][] getint2(int pos1) {
int i,j;
int size2 = _data[0].length;
int size3 = _data[0][0].length;
int[][] tmp = new int[size2][size3];
for (i=0; ipos1th row and
pos2th column and pos3th height in java numerical type float.
*/
//
public float getfloat(int pos1, int pos2, int pos3){
return (float)_data[pos1][pos2][pos3];
}
/**
* @param pos1 - left most index
* @param pos2 - second to left most
* @param pos3 - height number
* @return the value of the element in pos1th row and
pos2th column and pos3th height in java numerical type int.
*/
public int getint(int pos1, int pos2, int pos3){
return (int)_data[pos1][pos2][pos3];
}
public NslDouble3 getNslDouble3() {
return this;
}
public NslFloat3 getNslFloat3(){
return (new NslFloat3(getfloat3()));
}
public NslInt3 getNslInt3() {
return (new NslInt3(getint3()));
}
/// getSector
public double[][][] getSector(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;
double[][][] doubledata;
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;
doubledata = new double[length1][length2][length3];
i1 = start1;
i2 = start2;
i3 = start3;
for (j1=0; j1 _data.length)
return;
if (startpos2 > _data[0].length)
return;
if (startpos3 > _data[0][0].length)
return;
if (endpos1 > _data.length)
endpos1 = _data.length;
if (endpos2 > _data[0].length)
endpos2 = _data[0].length;
if (endpos3 > _data[0][0].length)
endpos3 = _data[0][0].length;
for (i1=startpos1, j1=0; i1value)
{
pos1 = i; pos2 = j; pos3 = k;
value = _data[i][j][k];
}
}
}
}
max_elem_pos1.set(pos1);
max_elem_pos2.set(pos2);
max_elem_pos3.set(pos3);
return value;
}
public double max() {
return maxElem(new NslInt0(0), new NslInt0(0), new NslInt0(0));
}
public double minElem(NslInt0 max_elem_pos1, NslInt0 max_elem_pos2, NslInt0 max_elem_pos3) {
double value = java.lang.Double.POSITIVE_INFINITY;
int i, j, k;
int size1 = _data.length;
int size2 = _data[0].length;
int size3 = _data[0][0].length;
int pos1 = -1;
int pos2 = -1;
int pos3 = -1;
for (i=0; i