@@ -2087,6 +2087,7 @@ int msolve_trace_qq(mpz_param_t *mpz_paramp,
20872087 files ,
20882088 & success );
20892089
2090+
20902091 if (* dim_ptr == 0 && success && * dquot_ptr > 0 && print_gb == 0 ) {
20912092 if (nmod_params [0 ]-> elim -> length - 1 != * dquot_ptr ) {
20922093 for (int i = 0 ; i < nr_vars - 1 ; i ++ ) {
@@ -2105,8 +2106,9 @@ int msolve_trace_qq(mpz_param_t *mpz_paramp,
21052106 free (bs );
21062107 if (gens -> field_char == 0 ) {
21072108 free_basis (& bs_qq );
2109+ /*nmod_params[0] should not be cleaned here (change of primitive
2110+ * element_*/
21082111 }
2109- // here we should clean nmod_params
21102112 free_lucky_primes (& lp );
21112113 free (bad_primes );
21122114 free (lp );
@@ -2117,6 +2119,7 @@ int msolve_trace_qq(mpz_param_t *mpz_paramp,
21172119 free (bnlins );
21182120 free (lineqs_ptr );
21192121 free (squvars );
2122+ free (lmb_ori );
21202123 if (print_gb ) {
21212124 return 0 ;
21222125 }
@@ -2129,13 +2132,13 @@ int msolve_trace_qq(mpz_param_t *mpz_paramp,
21292132 for (long j = 0 ; j <= st -> nvars - 2 ; j ++ ) {
21302133 nmod_poly_set (par -> coords [j ], nmod_params [0 ]-> coords [j ]);
21312134 }
2135+ free_fglm_param (nmod_params [0 ]);
21322136 (* nmod_param ) = par ;
21332137 }
21342138 free (st );
21352139 return 0 ;
21362140 }
21372141 free (st );
2138- free (nmod_params );
21392142 if (* dim_ptr == 1 ) {
21402143 if (info_level ) {
21412144 fprintf (stderr , "Positive dimensional Grobner basis\n" );
@@ -2505,15 +2508,14 @@ int msolve_trace_qq(mpz_param_t *mpz_paramp,
25052508 free_rrec_data (recdata );
25062509 trace_det_clear (trace_det );
25072510
2508-
2509- // here we should clean nmod_params
2510-
25112511 for (i = 0 ; i < st -> nthrds ; ++ i ) {
25122512 if (bs [i ] != NULL ) {
25132513 free_basis (& (bs [i ]));
25142514 }
25152515 free_fglm_bms_data (bdata_bms [i ]);
25162516 free_fglm_data (bdata_fglm [i ]);
2517+
2518+ free_fglm_param (nmod_params [i ]);
25172519 free (bcfs_extra_nf [i ]);
25182520 free (bexps_extra_nf [i ]);
25192521 free (blens_extra_nf [i ]);
@@ -2530,7 +2532,6 @@ int msolve_trace_qq(mpz_param_t *mpz_paramp,
25302532 free (leadmons_ori [i ]);
25312533 free (leadmons_current [i ]);
25322534 /* free_trace(&btrace[i]); */
2533- free (nmod_params [i ]);
25342535
25352536 free (blinvars [i ]);
25362537 free (lineqs_ptr [i ]);
@@ -2545,6 +2546,7 @@ int msolve_trace_qq(mpz_param_t *mpz_paramp,
25452546 free (leadmons_ori );
25462547 free (leadmons_current );
25472548 free (nmod_params );
2549+ free (lmb_ori );
25482550
25492551 free_lucky_primes (& lp );
25502552 free_trace (& (st -> tr ));
@@ -4047,7 +4049,7 @@ int core_msolve(
40474049 print_gb = 2 ;
40484050 }
40494051 b = real_msolve_qq (mpz_paramp ,
4050- & param ,
4052+ paramp ,
40514053 & dim ,
40524054 & dquot ,
40534055 nb_real_roots_ptr ,
@@ -4062,34 +4064,12 @@ int core_msolve(
40624064 return 0 ;
40634065 }
40644066
4065- manage_output (b , dim , dquot , files , gens , param , mpz_paramp , get_param ,
4067+ manage_output (b , dim , dquot , files , gens , ( * paramp ) , mpz_paramp , get_param ,
40664068 nb_real_roots_ptr ,
40674069 real_roots_ptr ,
40684070 real_pts_ptr ,
40694071 info_level );
40704072
4071-
4072- /* if (b == 0 && gens->field_char > 0) { */
4073- /* if(dim == 0){ */
4074- /* if(files->out_file != NULL){ */
4075- /* FILE *ofile = fopen(files->out_file, "a"); */
4076- /* if(dquot == 0){ */
4077- /* fprintf(ofile, "[-1]:\n"); */
4078- /* return 0; */
4079- /* } */
4080- /* display_fglm_param_maple(ofile, param); */
4081- /* fclose(ofile); */
4082- /* } */
4083- /* else{ */
4084- /* if(dquot == 0){ */
4085- /* fprintf(stdout, "[-1]:\n"); */
4086- /* return 0; */
4087- /* } */
4088- /* display_fglm_param_maple(stdout, param); */
4089- /* } */
4090- /* return 0; */
4091- /* } */
4092- /* } */
40934073 if (b == 1 ) {
40944074 free (bld );
40954075 bld = NULL ;
@@ -5080,7 +5060,9 @@ void msolve_julia(
50805060 * rp_var_namesp = rp_var_names ;
50815061
50825062 /* free parametrization */
5083- free (param );
5063+ if (param != NULL && gens -> field_char ){
5064+ free_fglm_param (param );
5065+ }
50845066 mpz_param_clear (mpz_param );
50855067
50865068 * n_real_sols = nb_real_roots ;
0 commit comments