double find_maximum_point(uint32_t rn, int rank) { poly *p; double max_point; p = poly_from_relation_number(rn, rank); max_point = poly_maximum_point(p, 0.0, 1.0); poly_delete(p); return max_point; }
double find_break_even(uint32_t rn, int rank) { poly *p; double maxima; p = poly_from_relation_number(rn, rank); maxima = poly_maxima(p, 0.0, 1.0); poly_delete(p); return maxima; }
void poly_delete_all(fmpz_poly_t poly, ...) { fmpz_poly_struct *next_poly; va_list args; next_poly = poly; va_start(args, poly); while (next_poly != NULL) { poly_delete(next_poly); next_poly = va_arg(args, fmpz_poly_struct*); } va_end(args); }
void poly_delete_array(fmpz_poly_t **poly_array) { uint32_t i = 0; while(poly_array[i]) { poly_delete(*(poly_array[i])); free(poly_array[i]); i++; } /* avoid double free */ if (i > 1) free(poly_array); }