/************************************************************************* CG-solver: results. This function must be called after LinCGSolve INPUT PARAMETERS: State - algorithm state OUTPUT PARAMETERS: X - array[N], solution Rep - optimization report: * Rep.TerminationType completetion code: * -5 input matrix is either not positive definite, too large or too small * -4 overflow/underflow during solution (ill conditioned problem) * 1 ||residual||<=EpsF*||b|| * 5 MaxIts steps was taken * 7 rounding errors prevent further progress, best point found is returned * Rep.IterationsCount contains iterations count * NMV countains number of matrix-vector calculations -- ALGLIB -- Copyright 14.11.2011 by Bochkanov Sergey *************************************************************************/ public static void lincgresults(lincgstate state, ref double[] x, lincgreport rep) { int i_ = 0; x = new double[0]; alglib.ap.assert(!state.running, "LinCGResult: you can not get result, because function LinCGIteration has been launched!"); if( alglib.ap.len(x)<state.n ) { x = new double[state.n]; } for(i_=0; i_<=state.n-1;i_++) { x[i_] = state.rx[i_]; } rep.iterationscount = state.repiterationscount; rep.nmv = state.repnmv; rep.terminationtype = state.repterminationtype; rep.r2 = state.r2; }
public override alglib.apobject make_copy() { lincgreport _result = new lincgreport(); _result.iterationscount = iterationscount; _result.nmv = nmv; _result.terminationtype = terminationtype; _result.r2 = r2; return _result; }