chiark / gitweb /
helixish: better debug
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 29 Nov 2017 19:39:54 +0000 (19:39 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 29 Nov 2017 19:39:54 +0000 (19:39 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
findcurve.c
symbolic.py

index 9277db403c3b8eeb92ff56a83a2915db83aaba1e..d1ffb44b9ef314ba77d86a52557dafaef336a426 100644 (file)
@@ -60,7 +60,7 @@ static double scan1double(void) {
 
 int main(void) {
   double target[N], epsilon;
-  int i;
+  int i, j;
 
   gsl_multiroot_function_fdf function;
   function.f = cb_f;
@@ -91,7 +91,8 @@ int main(void) {
 
       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);
@@ -99,6 +100,15 @@ int main(void) {
     }
 
     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);
     }
index ede36c4985289a1bc6282ed1ce3c334a6e224333..3486f3a85fed15ccc3a05df257eb189964cc53fe 100644 (file)
@@ -230,6 +230,9 @@ def gen_diff(current, smalls):
 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')