1 #ifndef GNM_EXPR_DERIV_H_
2 #define GNM_EXPR_DERIV_H_
3 
4 G_BEGIN_DECLS
5 
6 #include <gnumeric-fwd.h>
7 #include <expr.h>
8 #include <numbers.h>
9 
10 /* ------------------------------------------------------------------------- */
11 
12 GType gnm_expr_deriv_info_get_type (void);
13 
14 GnmExprDeriv *gnm_expr_deriv_info_new (void);
15 GnmExprDeriv *gnm_expr_deriv_info_ref (GnmExprDeriv *deriv);
16 void gnm_expr_deriv_info_unref (GnmExprDeriv *deriv);
17 
18 void gnm_expr_deriv_info_set_var (GnmExprDeriv *deriv, GnmEvalPos const *var);
19 
20 /* ------------------------------------------------------------------------- */
21 
22 GnmExpr const *gnm_expr_deriv (GnmExpr const *expr,
23 			       GnmEvalPos const *ep,
24 			       GnmExprDeriv *info);
25 
26 
27 GnmExprTop const *gnm_expr_top_deriv (GnmExprTop const *texpr,
28 				      GnmEvalPos const *ep,
29 				      GnmExprDeriv *info);
30 
31 GnmExprTop const *gnm_expr_cell_deriv (GnmCell *y, GnmCell *x);
32 
33 gnm_float gnm_expr_cell_deriv_value (GnmCell *y, GnmCell *x);
34 
35 GnmExpr const *gnm_expr_deriv_chain (GnmExpr const *expr,
36 				     GnmExpr const *deriv,
37 				     GnmEvalPos const *ep,
38 				     GnmExprDeriv *info);
39 
40 GnmExprList *gnm_expr_deriv_collect (GnmExpr const *expr,
41 				     GnmEvalPos const *ep,
42 				     GnmExprDeriv *info);
43 
44 /* ------------------------------------------------------------------------- */
45 
46 void gnm_expr_deriv_shutdown_ (void);
47 
48 /* ------------------------------------------------------------------------- */
49 
50 G_END_DECLS
51 
52 #endif
53