[gnumeric] Deriv: fix ln.
- From: Morten Welinder <mortenw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] Deriv: fix ln.
- Date: Mon, 28 May 2018 02:14:55 +0000 (UTC)
commit c07b5790ae17fd6cbb2a336293ad1dfc09dcacb0
Author: Morten Welinder <terra gnome org>
Date: Sun May 27 22:14:14 2018 -0400
Deriv: fix ln.
plugins/fn-math/functions.c | 3 ++-
src/expr-deriv.c | 7 ++++--
src/expr.c | 60 +++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 67 insertions(+), 3 deletions(-)
---
diff --git a/plugins/fn-math/functions.c b/plugins/fn-math/functions.c
index b26a6e130..b89626742 100644
--- a/plugins/fn-math/functions.c
+++ b/plugins/fn-math/functions.c
@@ -1315,7 +1315,8 @@ gnumeric_ln (GnmFuncEvalInfo *ei, GnmValue const * const *argv)
}
static GnmExpr const *
-gnumeric_ln_deriv (GnmExpr const *expr, GnmEvalPos const *ep,
+gnumeric_ln_deriv (GnmFunc *func,
+ GnmExpr const *expr, GnmEvalPos const *ep,
GnmExprDeriv *info, gpointer data)
{
GnmExpr const *deriv =
diff --git a/src/expr-deriv.c b/src/expr-deriv.c
index a46af5edb..e7cb07886 100644
--- a/src/expr-deriv.c
+++ b/src/expr-deriv.c
@@ -89,12 +89,12 @@ gnm_expr_deriv_info_get_type (void)
return t;
}
-void
/**
* gnm_expr_deriv_info_set_var:
* @deriv: #GnmExprDeriv
* @var: (transfer none): location of variable
*/
+void
gnm_expr_deriv_info_set_var (GnmExprDeriv *deriv, GnmEvalPos const *var)
{
deriv->var = *var;
@@ -567,8 +567,11 @@ gnm_expr_deriv (GnmExpr const *expr,
gnm_expr_new_funcall1 (fln, gnm_expr_copy (a)), 0);
GnmExpr const *s = madd (t1, 0, t2, 0);
return mmul (expr, 1, s, 0);
- } else
+ } else {
+ gnm_expr_free (da);
+ gnm_expr_free (db);
return NULL;
+ }
COMMON_BINARY_END
}
diff --git a/src/expr.c b/src/expr.c
index 75273409c..7719b7553 100644
--- a/src/expr.c
+++ b/src/expr.c
@@ -89,6 +89,14 @@ gnm_expr_new_constant (GnmValue *v)
/***************************************************************************/
+/**
+ * gnm_expr_new_funcallv: (skip)
+ * @func: #GnmFunc
+ * @argc: argument count
+ * @argv: (array length=argc): transfers everything
+ *
+ * Returns: (transfer full): function call expression.
+ */
static GnmExpr const *
gnm_expr_new_funcallv (GnmFunc *func, int argc, GnmExprConstPtr *argv)
{
@@ -106,6 +114,13 @@ gnm_expr_new_funcallv (GnmFunc *func, int argc, GnmExprConstPtr *argv)
return (GnmExpr *)ans;
}
+/**
+ * gnm_expr_new_funcall: (skip)
+ * @func: #GnmFunc
+ * @args: argument list -- transfers content, not container
+ *
+ * Returns: (transfer full): function call expression.
+ */
GnmExpr const *
gnm_expr_new_funcall (GnmFunc *func, GnmExprList *arg_list)
{
@@ -121,6 +136,13 @@ gnm_expr_new_funcall (GnmFunc *func, GnmExprList *arg_list)
return gnm_expr_new_funcallv (func, argc, argv);
}
+/**
+ * gnm_expr_new_funcall1:
+ * @func: #GnmFunc
+ * @arg0: (transfer full): argument
+ *
+ * Returns: (transfer full): function call expression.
+ */
GnmExpr const *
gnm_expr_new_funcall1 (GnmFunc *func,
GnmExpr const *arg0)
@@ -130,6 +152,14 @@ gnm_expr_new_funcall1 (GnmFunc *func,
return gnm_expr_new_funcallv (func, 1, argv);
}
+/**
+ * gnm_expr_new_funcall2:
+ * @func: #GnmFunc
+ * @arg0: (transfer full): argument
+ * @arg1: (transfer full): argument
+ *
+ * Returns: (transfer full): function call expression.
+ */
GnmExpr const *
gnm_expr_new_funcall2 (GnmFunc *func,
GnmExpr const *arg0,
@@ -141,6 +171,15 @@ gnm_expr_new_funcall2 (GnmFunc *func,
return gnm_expr_new_funcallv (func, 2, argv);
}
+/**
+ * gnm_expr_new_funcall3:
+ * @func: #GnmFunc
+ * @arg0: (transfer full): argument
+ * @arg1: (transfer full): argument
+ * @arg2: (transfer full): argument
+ *
+ * Returns: (transfer full): function call expression.
+ */
GnmExpr const *
gnm_expr_new_funcall3 (GnmFunc *func,
GnmExpr const *arg0,
@@ -154,6 +193,16 @@ gnm_expr_new_funcall3 (GnmFunc *func,
return gnm_expr_new_funcallv (func, 3, argv);
}
+/**
+ * gnm_expr_new_funcall4:
+ * @func: #GnmFunc
+ * @arg0: (transfer full): argument
+ * @arg1: (transfer full): argument
+ * @arg2: (transfer full): argument
+ * @arg3: (transfer full): argument
+ *
+ * Returns: (transfer full): function call expression.
+ */
GnmExpr const *
gnm_expr_new_funcall4 (GnmFunc *func,
GnmExpr const *arg0,
@@ -169,6 +218,17 @@ gnm_expr_new_funcall4 (GnmFunc *func,
return gnm_expr_new_funcallv (func, 4, argv);
}
+/**
+ * gnm_expr_new_funcall5:
+ * @func: #GnmFunc
+ * @arg0: (transfer full): argument
+ * @arg1: (transfer full): argument
+ * @arg2: (transfer full): argument
+ * @arg3: (transfer full): argument
+ * @arg4: (transfer full): argument
+ *
+ * Returns: (transfer full): function call expression.
+ */
GnmExpr const *
gnm_expr_new_funcall5 (GnmFunc *func,
GnmExpr const *arg0,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]