- gsl_multiroot_fdfsolver_set(solver, &function, startpoint);
-
- int r;
- for (;;) {
- r = gsl_multiroot_fdfsolver_iterate(solver);
- if (r) break;
-
- printf("[");
- for (i=0; i<6; i++) printf(" %.18g,", gsl_vector_get(solver->x, 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_CONTINUE) break;
- }
-
- 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);
- }
+ gsl_rng_set(rng,0);
+
+ gsl_siman_params_t siman_params = {
+ .k = 1.0,
+ .t_initial = 0.5,
+ .mu_t = 1.001,
+ .t_min = epsilon * 1E-3,
+ .iters_fixed_T = 100,
+ .n_tries = 10,
+ .step_size = 0.05,
+ };
+
+ gsl_siman_solve(rng,
+ startpoint,
+ cb_Efunc, cb_step, cb_metric,
+ 0, //cb_print,
+ 0,0,0, sizeof(startpoint), siman_params);
+
+ printcore(startpoint);