[gnumeric] complex_fact: switch to value api.



commit c81f7479bba4477693686c64b3f7fa52893a11f9
Author: Morten Welinder <terra gnome org>
Date:   Fri Feb 12 22:27:42 2016 -0500

    complex_fact: switch to value api.

 plugins/fn-complex/functions.c |    5 ++---
 src/sf-gamma.c                 |   16 ++++++++--------
 src/sf-gamma.h                 |    2 +-
 3 files changed, 11 insertions(+), 12 deletions(-)
---
diff --git a/plugins/fn-complex/functions.c b/plugins/fn-complex/functions.c
index 4673c00..c4eb41d 100644
--- a/plugins/fn-complex/functions.c
+++ b/plugins/fn-complex/functions.c
@@ -1068,14 +1068,13 @@ static GnmFuncHelp const help_imfact[] = {
 static GnmValue *
 gnumeric_imfact (GnmFuncEvalInfo *ei, GnmValue const * const *argv)
 {
-       gnm_complex c, res;
+       gnm_complex c;
        char imunit;
 
        if (value_get_as_complex (argv[0], &c, &imunit))
                return value_new_error_NUM (ei->pos);
 
-       complex_fact (&res, &c);
-       return value_new_complex (&res, imunit);
+       return value_new_complexv (gnm_complex_fact (c), imunit);
 }
 
 /***************************************************************************/
diff --git a/src/sf-gamma.c b/src/sf-gamma.c
index 2081962..952c99c 100644
--- a/src/sf-gamma.c
+++ b/src/sf-gamma.c
@@ -1259,7 +1259,7 @@ complex_gamma (gnm_complex *dst, gnm_complex const *src)
                gnm_complex a, b, mz;
 
                gnm_complex_init (&mz, -src->re, -src->im);
-               complex_fact (&a, &mz);
+               a = gnm_complex_fact (mz);
 
                gnm_complex_init (&b,
                              M_PIgnum * gnm_fmod (src->re, 2),
@@ -1303,19 +1303,19 @@ complex_gamma (gnm_complex *dst, gnm_complex const *src)
 
 /* ------------------------------------------------------------------------- */
 
-void
-complex_fact (gnm_complex *dst, gnm_complex const *src)
+gnm_complex
+gnm_complex_fact (gnm_complex src)
 {
-       if (gnm_complex_real_p (src)) {
-               gnm_complex_init (dst, gnm_fact (src->re), 0);
+       if (gnm_complex_real_p (&src)) {
+               return GNM_CREAL (gnm_fact (src.re));
        } else {
                /*
                 * This formula is valid for all arguments except zero
                 * which we conveniently handled above.
                 */
                gnm_complex gz;
-               complex_gamma (&gz, src);
-               gnm_complex_mul (dst, &gz, src);
+               complex_gamma (&gz, &src);
+               return GNM_CMUL (gz, src);
        }
 }
 
@@ -1333,7 +1333,7 @@ complex_temme_D (gnm_complex *res, gnm_complex const *a, gnm_complex const *z)
        gnm_complex_pow (&t, z, a);
        gnm_complex_exp (&ez, z);
        gnm_complex_div (&t, &t, &ez);
-       complex_fact (&fa, a);
+       fa = gnm_complex_fact (*a);
        gnm_complex_div (res, &t, &fa);
 }
 
diff --git a/src/sf-gamma.h b/src/sf-gamma.h
index 7f6b02f..815b1f1 100644
--- a/src/sf-gamma.h
+++ b/src/sf-gamma.h
@@ -11,7 +11,7 @@ gnm_float gnm_gamma (gnm_float x);
 gnm_float gnm_fact (gnm_float x);
 int       qfactf (gnm_float x, GnmQuad *mant, int *exp2);
 void complex_gamma (gnm_complex *dst, gnm_complex const *src);
-void complex_fact (gnm_complex *dst, gnm_complex const *src);
+gnm_complex gnm_complex_fact (gnm_complex src);
 void complex_igamma (gnm_complex *dst, gnm_complex const  *a, gnm_complex const *z,
                     gboolean lower, gboolean regularized);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]