/************************************************************************* LSQR solver: results. This function must be called after LinLSQRSolve INPUT PARAMETERS: State - algorithm state OUTPUT PARAMETERS: X - array[N], solution Rep - optimization report: * Rep.TerminationType completetion code: * 1 ||Rk||<=EpsB*||B|| * 4 ||A^T*Rk||/(||A||*||Rk||)<=EpsA * 5 MaxIts steps was taken * 7 rounding errors prevent further progress, X contains best point found so far. (sometimes returned on singular systems) * Rep.IterationsCount contains iterations count * NMV countains number of matrix-vector calculations -- ALGLIB -- Copyright 30.11.2011 by Bochkanov Sergey *************************************************************************/ public static void linlsqrresults(linlsqrstate state, ref double[] x, linlsqrreport rep) { int i_ = 0; x = new double[0]; alglib.ap.assert(!state.running, "LinLSQRResult: you can not call this function when LinLSQRIteration is running"); 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; }
public override alglib.apobject make_copy() { linlsqrreport _result = new linlsqrreport(); _result.iterationscount = iterationscount; _result.nmv = nmv; _result.terminationtype = terminationtype; return _result; }