import SVDC_j.*; import Blas_j.*; import Blas_j2.*; import java.lang.*; import java.util.*; //import gt2.*; public class gt_util9 extends Object { static double pdv, pdelta; static int pspandim, pds; public gt_util9() { double pdv = 0.0; double pdelta = 0.0; int pspandim = 0; int pds = 0; } public static int gen_norm_variates(int n, int p, double vars[]) { int check =1; double frunif[]; frunif = new double[2]; double r, fac, frnorm[]; frnorm = new double[2]; int np; np=n*p+1; np=np/2; Random rand = new Random(); // System.out.println("n = "+n+" p = "+p); for (int i=0; i0) { frunif[0] = 2.0*rand.nextDouble()-1.0; frunif[1] = 2.0*rand.nextDouble()-1.0; r = frunif[0]*frunif[0] + frunif[1]*frunif[1]; if (r<1) { check = 0; fac = Math.sqrt(-2.0*Math.log(r)/r); frnorm[0] = frunif[0]*fac; frnorm[1] = frunif[1]*fac; } } check = 1; vars[2*i] = (double) (frnorm[0]); // Following one line was added on 10/30/98. if ((2*i+1) <= (n*p-1)) vars[2*i+1] = (double) (frnorm[1]); } return 1; } // Generate two random p dimensional vectors to form new ending basis public static void new_random_basis(double basis[][], int ncols, int ntour_vars, int tour_vars[], int ndim) { // INPUT : ncols, ntour_vars, tour_vars[], ndim // OUTPUT : basis Blas_j2 Bj2; Bj2 = new Blas_j2(); double tmp_basis[]; tmp_basis = new double[ndim*ncols]; gen_norm_variates(ndim,ntour_vars,tmp_basis); // Zero Basis before Filling for (int k=0; k 1) { for (int k=0; k<(ndim-1); k++) { for (int j=k+1; j 1) { for (int i=0; i= tmpf) { tmpf = tau[j]; k = j; } } if (k != i) { tau[k] = tau[i]; tau[i] = tmpf; for (int j=0; j 1.0) { spandim = spandim-1; // System.out.println("kk is "+kk+" Spandim is "+spandim+" tau is "+tau[kk]); } /////////////// I put "//" on lineno 166. } // Generate Principal Directions Blas_j2.mat_mult(u0,uu,v0,ncols,ndim,ndim); for (int ku=0; kundim-spandim-1; kk--) for (int kk=ndim-1; kk>ndim-spandim-1; kk--) { Blas_j2.gram_schmidt(v0[kk], v1[kk], ncols); } // System.out.println(" "); // for (int i=0; i 1.0) tau[i]=1.0; if (tau[i] < -1.0) tau[i]=-1.0; } // Compute Principal Angles for (int kk=0; kk