void symbol_table_clean (struct symtab *symtab) { struct assign *p = symtab->assign_start; while (p) { struct assign *next = p->next; str_free (p->name); toplevel_obj_free (p->value); free (p); p = next; } symtab->assign_start = NULL; str_set_null (symtab->directives->stack); str_set_null (symtab->directives->strategy); str_set_null (symtab->directives->multi_fit); }
void multi_fit_engine_print_fit_results(struct multi_fit_engine *fit, str_t text) { str_t pname; size_t k, j, kp; str_set_null(text); str_init(pname, 16); for(j = 0, kp = 0; j < fit->common_parameters->number; j++, kp++) { fit_param_t *fp = fit->common_parameters->values + j; get_param_name(fp, pname); str_printf_add(text, "COMMON / %9s : %.6g\n", CSTR(pname), gsl_vector_get(fit->results, j)); } for(k = 0; k < fit->samples_number; k++) { for(j = 0; j < fit->private_parameters->number; j++, kp++) { fit_param_t *fp = fit->private_parameters->values + j; get_param_name(fp, pname); str_printf_add(text, "SAMPLE(%02i)/ %9s : %.6g\n", k, CSTR(pname), gsl_vector_get(fit->results, kp)); } } str_append_c(text, "Residual Chi Square by sample:\n", '\n'); for(k = 0; k < fit->samples_number; k++) { double chisq = gsl_vector_get(fit->chisq, k); str_printf_add(text, "ChiSq(%02i): %g\n", k, chisq); } str_free(pname); }