60 #ifndef UVES_UTILS_POLYNOMIAL_H
61 #define UVES_UTILS_POLYNOMIAL_H
67 #include <uves_propertylist.h>
69 #include <uves_cpl_size.h>
89 const cpl_vector * values,
90 const cpl_vector * sigmas,
94 const cpl_vector * values,
95 const cpl_vector * sigmas,
116 int degree1,
int degree2);
120 double guess,
int multiplicity);
122 double guess,
int multiplicity,
123 int varno,
double x_value);
126 double x2,
int varno);
int uves_polynomial_get_dimension(const polynomial *p)
Get the dimension of a polynomial.
polynomial * uves_polynomial_collapse(const polynomial *p, int varno, double value)
Collapse a polynomial by fixing one variable to a constant.
polynomial * uves_polynomial_fit_1d(const cpl_vector *x_pos, const cpl_vector *values, const cpl_vector *sigmas, int poly_deg, double *mse)
Fit a 1d function with a polynomial.
double uves_polynomial_solve_2d(const polynomial *p, double value, double guess, int multiplicity, int varno, double x_value)
Solve p(x1, x2) = value.
double uves_polynomial_derivative_1d(const polynomial *p, double x)
Evaluate the derivative of a 1d polynomial.
void uves_polynomial_delete(polynomial **p)
Delete a polynomial.
cpl_error_code uves_polynomial_derivative(polynomial *p, int varno)
Calculate the partial derivative of a polynomial.
polynomial * uves_polynomial_add_2d(const polynomial *p1, const polynomial *p2)
Add two polynomials.
polynomial * uves_polynomial_convert_from_table(cpl_table *t)
Convert a table to a polynomial.
cpl_table * uves_polynomial_convert_to_table(const polynomial *p)
Convert a polynomial to a table.
double uves_polynomial_get_coeff_2d(const polynomial *p, int degree1, int degree2)
Get a coefficient of a 2D polynomial.
double uves_polynomial_derivative_2d(const polynomial *p, double x1, double x2, int varno)
Evaluate the partial derivative of a 2d polynomial.
int uves_polynomial_get_degree(const polynomial *p)
Get degree.
polynomial * uves_polynomial_duplicate(const polynomial *p)
Copy a polynomial.
void uves_polynomial_delete_const(const polynomial **p)
Delete a const polynomial.
cpl_error_code uves_polynomial_rescale(polynomial *p, int varno, double scale)
Rescale a polynomial.
polynomial * uves_polynomial_new(const cpl_polynomial *pol)
Create a polynomial.
double uves_polynomial_evaluate_2d(const polynomial *p, double x1, double x2)
Evaluate a 2d polynomial.
double uves_polynomial_evaluate_1d(const polynomial *p, double x)
Evaluate a 1d polynomial.
double uves_polynomial_get_coeff_1d(const polynomial *p, int degree)
Get a coefficient of a 1D polynomial.
void uves_polynomial_dump(const polynomial *p, FILE *stream)
Print a polynomial.
cpl_error_code uves_polynomial_shift(polynomial *p, int varno, double shift)
Shift a polynomial.
polynomial * uves_polynomial_new_zero(int dim)
Create a zero polynomial.
double uves_polynomial_solve_1d(const polynomial *p, double value, double guess, int multiplicity)
Solve p(x) = value.
polynomial * uves_polynomial_fit_2d(const cpl_bivector *xy_pos, const cpl_vector *values, const cpl_vector *sigmas, int poly_deg1, int poly_deg2, double *mse, double *red_chisq, polynomial **variance)
Fit a 2d surface with a polynomial in x and y.