int main(void) {
double target[N], epsilon;
- int i;
+ int i, j;
gsl_multiroot_function_fdf function;
function.f = cb_f;
printf("[");
for (i=0; i<6; i++) printf(" %.18g,", gsl_vector_get(solver->x, i));
- for (i=0; i<6; i++) printf(" %.18g,", gsl_vector_get(solver->f, i));
+ for (i=0; i<6; i++) printf(" %.18g,",
+ target[i] + gsl_vector_get(solver->f, i));
printf(" ]\n");
r = gsl_multiroot_test_residual(solver->f, epsilon);
}
if (r) {
+ gsl_matrix *j_dump = gsl_matrix_alloc(N,N);
+ cb_df(solver->x, target, j_dump);
+ fprintf(stderr,"// FC J %35s %35s", "d(Q/)", "d(dQ/)\n");
+ for (i=0; i<6; i++) {
+ fprintf(stderr,"// FC J d /d%-6s ", PARAM_NAMES[i]);
+ for (j=0; j<6; j++)
+ fprintf(stderr," %10.5f,", gsl_matrix_get(j_dump, i, j));
+ fprintf(stderr,"\n");
+ }
fprintf(stderr,"ERROR %s\n",gsl_strerror(r));
exit(-1);
}
def gen_misc():
cprintraw('// AUTOGENERATED - DO NOT EDIT\n')
cprintraw('#define N %d\n' % len(params))
+ cprintraw('static const char *PARAM_NAMES[N]={');
+ for p in params: cprintraw('"%s",' % p)
+ cprintraw('};\n');
def gen_x_extract():
cprint('#define X_EXTRACT')