/************************************************************************* Unsets report *************************************************************************/ private static void unsetlsrep(densesolver.densesolverlsreport r) { r.r2 = -1; r.n = -1; r.k = -1; unset2d(ref r.cx); }
public densesolverlsreport(densesolver.densesolverlsreport obj) { _innerobj = obj; }
/************************************************************************* Unsets report *************************************************************************/ private static void unsetrep(densesolver.densesolverreport r) { r.r1 = -1; r.rinf = -1; }
/************************************************************************* Checks whether solver results indicate singular matrix. Returns True on success. *************************************************************************/ private static bool cmatrixchecksingular(int n, int info, densesolver.densesolverreport rep, complex[] xs) { bool result = new bool(); complex[,] xsm = new complex[0,0]; int i_ = 0; xsm = new complex[n, 1]; for(i_=0; i_<=n-1;i_++) { xsm[i_,0] = xs[i_]; } result = cmatrixchecksingularm(n, 1, info, rep, xsm); return result; }
/************************************************************************* Checks whether solver results indicate singular matrix. Returns True on success. *************************************************************************/ private static bool cmatrixchecksingularm(int n, int m, int info, densesolver.densesolverreport rep, complex[,] xs) { bool result = new bool(); int i = 0; int j = 0; result = true; if( info!=-3 & info!=1 ) { result = false; } else { result = result & !((double)(rep.r1)<(double)(0) | (double)(rep.r1)>(double)(1000*math.machineepsilon)); result = result & !((double)(rep.rinf)<(double)(0) | (double)(rep.rinf)>(double)(1000*math.machineepsilon)); if( info==-3 ) { for(i=0; i<=n-1; i++) { for(j=0; j<=m-1; j++) { result = result & xs[i,j]==0; } } } } return result; }
/************************************************************************* Checks whether solver results are correct solution. Returns True on success. *************************************************************************/ private static bool cmatrixchecksolution(complex[,] xe, int n, double threshold, int info, densesolver.densesolverreport rep, complex[] xs) { bool result = new bool(); complex[,] xsm = new complex[0,0]; int i_ = 0; xsm = new complex[n, 1]; for(i_=0; i_<=n-1;i_++) { xsm[i_,0] = xs[i_]; } result = cmatrixchecksolutionm(xe, n, 1, threshold, info, rep, xsm); return result; }
/************************************************************************* Checks whether solver results are correct solution. Returns True on success. *************************************************************************/ private static bool cmatrixchecksolutionm(complex[,] xe, int n, int m, double threshold, int info, densesolver.densesolverreport rep, complex[,] xs) { bool result = new bool(); int i = 0; int j = 0; result = true; if( info<=0 ) { result = false; } else { result = result & !((double)(rep.r1)<(double)(100*math.machineepsilon) | (double)(rep.r1)>(double)(1+1000*math.machineepsilon)); result = result & !((double)(rep.rinf)<(double)(100*math.machineepsilon) | (double)(rep.rinf)>(double)(1+1000*math.machineepsilon)); for(i=0; i<=n-1; i++) { for(j=0; j<=m-1; j++) { result = result & (double)(math.abscomplex(xe[i,j]-xs[i,j]))<=(double)(threshold); } } } return result; }