1 #ifndef GNM_EXPR_DERIV_H_
2 #define GNM_EXPR_DERIV_H_
9 /* ------------------------------------------------------------------------- */
11 typedef struct GnmExprDeriv_ GnmExprDeriv
;
13 GnmExprDeriv
*gnm_expr_deriv_info_new (void);
14 void gnm_expr_deriv_info_free (GnmExprDeriv
*deriv
);
16 void gnm_expr_deriv_info_set_var (GnmExprDeriv
*deriv
, GnmEvalPos
const *var
);
18 /* ------------------------------------------------------------------------- */
20 GnmExpr
const *gnm_expr_deriv (GnmExpr
const *expr
,
25 GnmExprTop
const *gnm_expr_top_deriv (GnmExprTop
const *texpr
,
29 GnmExprTop
const *gnm_expr_cell_deriv (GnmCell
*y
, GnmCell
*x
);
31 gnm_float
gnm_expr_cell_deriv_value (GnmCell
*y
, GnmCell
*x
);
33 /* ------------------------------------------------------------------------- */
35 GnmExprList
*gnm_expr_deriv_collect (GnmExpr
const *expr
,
39 typedef GnmExpr
const * (*GnmExprDerivHandler
) (GnmExpr
const *expr
,
43 GNM_EXPR_DERIV_NO_CHAIN
= 0x0,
44 GNM_EXPR_DERIV_CHAIN
= 0x1
47 void gnm_expr_deriv_install_handler (GnmFunc
*func
, GnmExprDerivHandler h
,
48 GnmExprDerivFlags flags
);
49 void gnm_expr_deriv_uninstall_handler (GnmFunc
*func
);
50 void _gnm_expr_deriv_shutdown (void);
52 /* ------------------------------------------------------------------------- */