1 /******************************************************************************\
3 Bibliothèque de manipulation des objets mathématiques MBK.
5 \******************************************************************************/
9 typedef struct mbk_pwl_point
{
10 struct mbk_pwl_point
*PREV
;
11 struct mbk_pwl_point
*NEXT
;
12 double X
; // Point d'abscisse
14 double P
; // Pente sur ce point
15 double O
; // Origine de la pente
16 } mbk_pwl_point_list
;
18 #define LAPLACEDATA(pt,i) ((mbk_laplace_data*) ((pt)->DATA + i * (pt)->SIZE ))
20 mbk_pwl_point_list
* mbk_pwl_alloc_point( void );
21 void mbk_pwl_free_point( mbk_pwl_point_list
*pt
);
22 void mbk_pwl_free_point_list( mbk_pwl_point_list
*head
);
23 void mbk_pwl_free_param_point_list( mbk_pwl_param_point_list
*head
);
24 mbk_pwl
* mbk_pwl_alloc_pwl( int n
);
25 char mbk_pwl_calc_deriv( char (*fn
)(void*, double, double*),
31 char mbk_pwl_fill_point( char (*fn
)(void*, double, double*),
36 mbk_pwl_point_list
*point
38 int mbk_qsort_dbl_cmp( double *x1
, double *x2
);
39 mbk_pwl
* mbk_pwl_create_surface( char (*fn
)(void*, double, double*),
45 mbk_pwl
* mbk_pwl_create_default( char (*fn
)(void*, double, double*),
51 mbk_laplace
* mbk_alloc_laplace( int n
, int size
);
52 mbk_pwl
* mbk_pwl_point_to_pwl( mbk_pwl_point_list
*head
);
53 mbk_pwl_point_list
* mbk_pwl_param_point_to_point(
54 char (*fn
)(void*, double, double* ),
60 long mbk_long_round(double val
);