uves_utils_polynomial.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060 #ifndef UVES_UTILS_POLYNOMIAL_H
00061 #define UVES_UTILS_POLYNOMIAL_H
00062
00063
00064
00065
00066
00067 #include <uves_propertylist.h>
00068 #include <cpl.h>
00069
00070
00071
00072
00073
00074 typedef struct _polynomial polynomial ;
00075
00076
00077
00078
00079
00080
00081 polynomial *uves_polynomial_new(const cpl_polynomial *pol);
00082 polynomial *uves_polynomial_new_zero(int dim);
00083 polynomial *uves_polynomial_duplicate(const polynomial *p);
00084
00085
00086 polynomial *uves_polynomial_convert_from_table(cpl_table *t);
00087 polynomial *uves_polynomial_collapse(const polynomial *p, int varno, double value);
00088 polynomial * uves_polynomial_fit_1d(const cpl_vector * x_pos,
00089 const cpl_vector * values,
00090 const cpl_vector * sigmas,
00091 int poly_deg,
00092 double * mse);
00093 polynomial *uves_polynomial_fit_2d(const cpl_bivector * xy_pos,
00094 const cpl_vector * values,
00095 const cpl_vector * sigmas,
00096 int poly_deg1,
00097 int poly_deg2,
00098 double * mse,
00099 double * red_chisq,
00100 polynomial ** variance);
00101
00102 polynomial *uves_polynomial_add_2d(const polynomial *p1, const polynomial *p2);
00103
00104 int uves_polynomial_get_degree(const polynomial *p);
00105
00106 void uves_polynomial_delete(polynomial **p);
00107 void uves_polynomial_delete_const(const polynomial **p);
00108
00109 cpl_table *uves_polynomial_convert_to_table(const polynomial *p);
00110 int uves_polynomial_get_dimension(const polynomial *p);
00111 void uves_polynomial_dump(const polynomial *p, FILE *stream);
00112 cpl_error_code uves_polynomial_shift(polynomial *p, int varno, double shift);
00113 cpl_error_code uves_polynomial_rescale(polynomial *p, int varno, double scale);
00114 double uves_polynomial_get_coeff_1d(const polynomial *p, int degree);
00115 double uves_polynomial_get_coeff_2d(const polynomial *p,
00116 int degree1, int degree2);
00117 double uves_polynomial_evaluate_1d(const polynomial *p, double x);
00118 double uves_polynomial_evaluate_2d(const polynomial *p, double x1, double x2);
00119 double uves_polynomial_solve_1d(const polynomial *p, double value,
00120 double guess, int multiplicity);
00121 double uves_polynomial_solve_2d(const polynomial *p, double value,
00122 double guess, int multiplicity,
00123 int varno, double x_value);
00124 double uves_polynomial_derivative_1d(const polynomial *p, double x);
00125 double uves_polynomial_derivative_2d(const polynomial *p, double x1,
00126 double x2, int varno);
00127 cpl_error_code uves_polynomial_derivative(polynomial *p, int varno);
00128
00129 #endif