Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 574746
Collapse All | Expand All

(-)a/src/plugins/fits/non_linear.h (-30 / +38 lines)
Lines 177-213 Link Here
177
            }
177
            }
178
            iIterations++;
178
            iIterations++;
179
          } while( iStatus == GSL_CONTINUE && iIterations < MAX_NUM_ITERATIONS );
179
          } while( iStatus == GSL_CONTINUE && iIterations < MAX_NUM_ITERATIONS );
180
          gsl_multifit_covar( pSolver->J, 0.0, pMatrixCovariance );
180
            
181
181
            
182
          //
182
          gsl_matrix *J = gsl_matrix_alloc(pSolver->fdf->n, pSolver->fdf->p);
183
          // determine the fitted values...
183
          if (J != NULL) {
184
          //
184
              gsl_multifit_fdfsolver_jac(pSolver, J);
185
          for( i=0; i<NUM_PARAMS; i++ ) {
185
                
186
            dXInitial[i] = gsl_vector_get( pSolver->x, i );
186
              gsl_multifit_covar( J, 0.0, pMatrixCovariance );
187
          }
187
188
188
              //
189
          for( i=0; i<iLength; i++ ) {
189
              // determine the fitted values...
190
            vectorOutYFitted->value()[i] = function_calculate( pInputX[i], dXInitial );
190
              //
191
            vectorOutYResiduals->value()[i] = pInputY[i] - vectorOutYFitted->value()[i];
191
              for( i=0; i<NUM_PARAMS; i++ ) {
192
                dXInitial[i] = gsl_vector_get( pSolver->x, i );
193
              }
194
195
              for( i=0; i<iLength; i++ ) {
196
                vectorOutYFitted->value()[i] = function_calculate( pInputX[i], dXInitial );
197
                vectorOutYResiduals->value()[i] = pInputY[i] - vectorOutYFitted->value()[i];
198
              }
199
200
              //
201
              // fill in the parameter values and covariance matrix...
202
              //
203
              for( i=0; i<NUM_PARAMS; i++ ) {
204
                vectorOutYParameters->value()[i] = gsl_vector_get( pSolver->x, i );
205
                for( j=0; j<NUM_PARAMS; j++ ) {
206
                  vectorOutYCovariance->value()[(i*NUM_PARAMS)+j] = gsl_matrix_get( pMatrixCovariance, i, j );
207
                }
208
              }
209
210
              //
211
              // determine the value of chi^2/nu
212
              //
213
              scalarOutChi->setValue(gsl_blas_dnrm2( pSolver->f ));
214
215
              bReturn = true;
216
              
217
              gsl_matrix_free( J );
192
          }
218
          }
193
194
          //
195
          // fill in the parameter values and covariance matrix...
196
          //
197
          for( i=0; i<NUM_PARAMS; i++ ) {
198
            vectorOutYParameters->value()[i] = gsl_vector_get( pSolver->x, i );
199
            for( j=0; j<NUM_PARAMS; j++ ) {
200
              vectorOutYCovariance->value()[(i*NUM_PARAMS)+j] = gsl_matrix_get( pMatrixCovariance, i, j );
201
            }
202
          }
203
204
          //
205
          // determine the value of chi^2/nu
206
          //
207
          scalarOutChi->setValue(gsl_blas_dnrm2( pSolver->f ));
208
209
          bReturn = true;
210
211
          gsl_matrix_free( pMatrixCovariance );
219
          gsl_matrix_free( pMatrixCovariance );
212
        }
220
        }
213
        gsl_multifit_fdfsolver_free( pSolver );
221
        gsl_multifit_fdfsolver_free( pSolver );
(-)a/src/plugins/fits/non_linear_weighted.h (-30 / +36 lines)
Lines 193-229 Link Here
193
          }
193
          }
194
          while( iStatus == GSL_CONTINUE && iIterations < MAX_NUM_ITERATIONS );
194
          while( iStatus == GSL_CONTINUE && iIterations < MAX_NUM_ITERATIONS );
195
195
196
          gsl_multifit_covar( pSolver->J, 0.0, pMatrixCovariance );
196
          gsl_matrix *J = gsl_matrix_alloc(pSolver->fdf->n, pSolver->fdf->p);
197
197
          if (J != NULL) {
198
          //
198
              gsl_multifit_fdfsolver_jac(pSolver, J);
199
          // determine the fitted values...
199
                
200
          //
200
              gsl_multifit_covar( J, 0.0, pMatrixCovariance );
201
          for( i=0; i<NUM_PARAMS; i++ ) {
201
202
            dXInitial[i] = gsl_vector_get( pSolver->x, i );
202
              //
203
          }
203
              // determine the fitted values...
204
204
              //
205
          for( i=0; i<iLength; i++ ) {
205
              for( i=0; i<NUM_PARAMS; i++ ) {
206
            vectorOutYFitted->value()[i] = function_calculate( pInputs[XVALUES][i], dXInitial );
206
                dXInitial[i] = gsl_vector_get( pSolver->x, i );
207
            vectorOutYResiduals->value()[i] = pInputs[YVALUES][i] - vectorOutYFitted->value()[i];
207
              }
208
          }
208
209
209
              for( i=0; i<iLength; i++ ) {
210
          //
210
                vectorOutYFitted->value()[i] = function_calculate( pInputs[XVALUES][i], dXInitial );
211
          // fill in the parameter values and covariance matrix...
211
                vectorOutYResiduals->value()[i] = pInputs[YVALUES][i] - vectorOutYFitted->value()[i];
212
          //
212
              }
213
          for( i=0; i<NUM_PARAMS; i++ ) {
213
214
            vectorOutYParameters->value()[i] = gsl_vector_get( pSolver->x, i );
214
              //
215
            for( j=0; j<NUM_PARAMS; j++ ) {
215
              // fill in the parameter values and covariance matrix...
216
              vectorOutYCovariance->value()[(i*NUM_PARAMS)+j] = gsl_matrix_get( pMatrixCovariance, i, j );
216
              //
217
            }
217
              for( i=0; i<NUM_PARAMS; i++ ) {
218
                vectorOutYParameters->value()[i] = gsl_vector_get( pSolver->x, i );
219
                for( j=0; j<NUM_PARAMS; j++ ) {
220
                  vectorOutYCovariance->value()[(i*NUM_PARAMS)+j] = gsl_matrix_get( pMatrixCovariance, i, j );
221
                }
222
              }
223
224
              //
225
              // determine the value of chi^2/nu
226
              //
227
              scalarOutChi->setValue(gsl_blas_dnrm2( pSolver->f ));
228
229
              bReturn = true;
230
              
231
              gsl_matrix_free( J );
218
          }
232
          }
219
220
          //
221
          // determine the value of chi^2/nu
222
          //
223
          scalarOutChi->setValue(gsl_blas_dnrm2( pSolver->f ));
224
225
          bReturn = true;
226
227
          gsl_matrix_free( pMatrixCovariance );
233
          gsl_matrix_free( pMatrixCovariance );
228
        }
234
        }
229
        gsl_multifit_fdfsolver_free( pSolver );
235
        gsl_multifit_fdfsolver_free( pSolver );

Return to bug 574746