diff options
author | Kevin Ryde <user42@zip.com.au> | 2002-03-13 01:01:41 +0100 |
---|---|---|
committer | Kevin Ryde <user42@zip.com.au> | 2002-03-13 01:01:41 +0100 |
commit | bc58451ae20213836a17345339e8c6031808b739 (patch) | |
tree | 74047dfce4de4e42a5fdd7aa1458b511fe0cb304 /demos/expr | |
parent | 75025fd1266360aaf130b94f0a7e3faab18dd6f7 (diff) | |
download | gmp-bc58451ae20213836a17345339e8c6031808b739.tar.gz |
* demos/expr/exprfr.c: More mpfr functions, corrections to agm, cos,
sin, rename log2 constant to loge2 to make room for log2 function.
Diffstat (limited to 'demos/expr')
-rw-r--r-- | demos/expr/exprfr.c | 145 |
1 files changed, 135 insertions, 10 deletions
diff --git a/demos/expr/exprfr.c b/demos/expr/exprfr.c index c3bc308ec..e254dd7d4 100644 --- a/demos/expr/exprfr.c +++ b/demos/expr/exprfr.c @@ -1,6 +1,6 @@ /* mpfr expression evaluation. -Copyright 2000, 2001 Free Software Foundation, Inc. +Copyright 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of the GNU MP Library. @@ -44,9 +44,9 @@ e_mpfr_abs (mpfr_ptr dst, mpfr_srcptr src) } static void -e_mpfr_agm (mpfr_ptr dst, mpfr_srcptr src1, mpfr_srcptr src2) +e_mpfr_acos (mpfr_ptr dst, mpfr_srcptr src) { - mpfr_agm (dst, src1, src2, ROUND); + mpfr_acos (dst, src, ROUND); } static void @@ -55,6 +55,24 @@ e_mpfr_add (mpfr_ptr dst, mpfr_srcptr src1, mpfr_srcptr src2) mpfr_add (dst, src1, src2, ROUND); } +static void +e_mpfr_agm (mpfr_ptr dst, mpfr_srcptr src1, mpfr_srcptr src2) +{ + mpfr_agm (dst, src1, src2, ROUND); +} + +static void +e_mpfr_asin (mpfr_ptr dst, mpfr_srcptr src) +{ + mpfr_asin (dst, src, ROUND); +} + +static void +e_mpfr_atan (mpfr_ptr dst, mpfr_srcptr src) +{ + mpfr_atan (dst, src, ROUND); +} + static int e_mpfr_cmp (mpfr_srcptr x, mpfr_srcptr y) { @@ -62,6 +80,24 @@ e_mpfr_cmp (mpfr_srcptr x, mpfr_srcptr y) } static void +e_mpfr_dim (mpfr_ptr dst, mpfr_srcptr src1, mpfr_srcptr src2) +{ + mpfr_dim (dst, src1, src2, ROUND); +} + +static void +e_mpfr_const_euler (mpfr_ptr dst) +{ + mpfr_const_euler (dst, ROUND); +} + +static void +e_mpfr_fac_ui (mpfr_ptr dst, unsigned long n) +{ + mpfr_fac_ui (dst, n, ROUND); +} + +static void e_mpfr_const_log2 (mpfr_ptr dst) { mpfr_const_log2 (dst, ROUND); @@ -74,6 +110,18 @@ e_mpfr_const_pi (mpfr_ptr dst) } static void +e_mpfr_cos (mpfr_ptr dst, mpfr_srcptr src) +{ + mpfr_cos (dst, src, ROUND); +} + +static void +e_mpfr_cosh (mpfr_ptr dst, mpfr_srcptr src) +{ + mpfr_cosh (dst, src, ROUND); +} + +static void e_mpfr_div (mpfr_ptr dst, mpfr_srcptr src1, mpfr_srcptr src2) { mpfr_div (dst, src1, src2, ROUND); @@ -92,12 +140,48 @@ e_mpfr_exp (mpfr_ptr dst, mpfr_srcptr src) } static void +e_mpfr_expm1 (mpfr_ptr dst, mpfr_srcptr src) +{ + mpfr_expm1 (dst, src, ROUND); +} + +static void +e_mpfr_fma (mpfr_ptr w, mpfr_srcptr x, mpfr_srcptr y, mpfr_srcptr z) +{ + mpfr_fma (w, x, y, z, ROUND); +} + +static void +e_mpfr_hypot (mpfr_ptr dst, mpfr_srcptr src1, mpfr_srcptr src2) +{ + mpfr_hypot (dst, src1, src2, ROUND); +} + +static void e_mpfr_log (mpfr_ptr dst, mpfr_srcptr src) { mpfr_log (dst, src, ROUND); } static void +e_mpfr_log2 (mpfr_ptr dst, mpfr_srcptr src) +{ + mpfr_log2 (dst, src, ROUND); +} + +static void +e_mpfr_log10 (mpfr_ptr dst, mpfr_srcptr src) +{ + mpfr_log10 (dst, src, ROUND); +} + +static void +e_mpfr_log1p (mpfr_ptr dst, mpfr_srcptr src) +{ + mpfr_log1p (dst, src, ROUND); +} + +static void e_mpfr_mul (mpfr_ptr dst, mpfr_srcptr src1, mpfr_srcptr src2) { mpfr_mul (dst, src1, src2, ROUND); @@ -116,11 +200,29 @@ e_mpfr_neg (mpfr_ptr dst, mpfr_srcptr src) } static void +e_mpfr_pow_ui (mpfr_ptr p, mpfr_srcptr b, unsigned long e) +{ + mpfr_pow_ui (p, b, e, ROUND); +} + +static void e_mpfr_reldiff (mpfr_ptr dst, mpfr_srcptr src1, mpfr_srcptr src2) { mpfr_reldiff (dst, src1, src2, ROUND); } +static void +e_mpfr_sin (mpfr_ptr dst, mpfr_srcptr src) +{ + mpfr_sin (dst, src, ROUND); +} + +static void +e_mpfr_sinh (mpfr_ptr dst, mpfr_srcptr src) +{ + mpfr_sinh (dst, src, ROUND); +} + static int e_mpfr_sgn (mpfr_srcptr x) { @@ -140,9 +242,15 @@ e_mpfr_sub (mpfr_ptr dst, mpfr_srcptr src1, mpfr_srcptr src2) } static void -e_mpfr_pow_ui (mpfr_ptr p, mpfr_srcptr b, unsigned long e) +e_mpfr_tan (mpfr_ptr dst, mpfr_srcptr src) { - mpfr_pow_ui (p, b, e, ROUND); + mpfr_tan (dst, src, ROUND); +} + +static void +e_mpfr_tanh (mpfr_ptr dst, mpfr_srcptr src) +{ + mpfr_tanh (dst, src, ROUND); } @@ -185,15 +293,27 @@ static __gmp_const struct mpexpr_operator_t _mpfr_expr_standard_table[] = { { "$", NULL, MPEXPR_TYPE_VARIABLE, 1 }, { "abs", (mpexpr_fun_t) e_mpfr_abs, MPEXPR_TYPE_UNARY }, - { "agm", (mpexpr_fun_t) e_mpfr_agm, MPEXPR_TYPE_UNARY }, + { "acos", (mpexpr_fun_t) e_mpfr_acos, MPEXPR_TYPE_UNARY }, + { "agm", (mpexpr_fun_t) e_mpfr_agm, MPEXPR_TYPE_BINARY }, + { "asin", (mpexpr_fun_t) e_mpfr_asin, MPEXPR_TYPE_UNARY }, + { "atan", (mpexpr_fun_t) e_mpfr_atan, MPEXPR_TYPE_UNARY }, { "ceil", (mpexpr_fun_t) mpfr_ceil, MPEXPR_TYPE_UNARY }, { "cmp", (mpexpr_fun_t) e_mpfr_cmp, MPEXPR_TYPE_I_BINARY }, - { "cos", (mpexpr_fun_t) mpfr_cos, MPEXPR_TYPE_UNARY }, + { "cos", (mpexpr_fun_t) e_mpfr_cos, MPEXPR_TYPE_UNARY }, + { "cosh", (mpexpr_fun_t) e_mpfr_cosh, MPEXPR_TYPE_UNARY }, + { "dim", (mpexpr_fun_t) e_mpfr_dim, MPEXPR_TYPE_BINARY }, { "eq", (mpexpr_fun_t) mpfr_eq, MPEXPR_TYPE_I_TERNARY_UI }, { "exp", (mpexpr_fun_t) e_mpfr_exp, MPEXPR_TYPE_UNARY }, + { "expm1", (mpexpr_fun_t) e_mpfr_expm1, MPEXPR_TYPE_UNARY }, + { "fac", (mpexpr_fun_t) e_mpfr_fac_ui, MPEXPR_TYPE_UNARY_UI }, { "floor", (mpexpr_fun_t) mpfr_floor, MPEXPR_TYPE_UNARY }, + { "fma", (mpexpr_fun_t) e_mpfr_fma, MPEXPR_TYPE_TERNARY }, + { "hypot", (mpexpr_fun_t) e_mpfr_hypot, MPEXPR_TYPE_BINARY }, { "inf_p", (mpexpr_fun_t) mpfr_inf_p, MPEXPR_TYPE_I_UNARY }, { "log", (mpexpr_fun_t) e_mpfr_log, MPEXPR_TYPE_UNARY }, + { "log2", (mpexpr_fun_t) e_mpfr_log2, MPEXPR_TYPE_UNARY }, + { "log10", (mpexpr_fun_t) e_mpfr_log10, MPEXPR_TYPE_UNARY }, + { "log1p", (mpexpr_fun_t) e_mpfr_log1p, MPEXPR_TYPE_UNARY }, { "max", (mpexpr_fun_t) e_mpfr_cmp, MPEXPR_TYPE_MAX | MPEXPR_TYPE_PAIRWISE }, { "min", (mpexpr_fun_t) e_mpfr_cmp, MPEXPR_TYPE_MIN @@ -201,13 +321,18 @@ static __gmp_const struct mpexpr_operator_t _mpfr_expr_standard_table[] = { { "nan_p", (mpexpr_fun_t) mpfr_nan_p, MPEXPR_TYPE_I_UNARY }, { "number_p",(mpexpr_fun_t) mpfr_number_p, MPEXPR_TYPE_I_UNARY }, { "reldiff", (mpexpr_fun_t) e_mpfr_reldiff, MPEXPR_TYPE_BINARY }, + { "round", (mpexpr_fun_t) mpfr_round, MPEXPR_TYPE_UNARY }, { "sgn", (mpexpr_fun_t) e_mpfr_sgn, MPEXPR_TYPE_I_UNARY }, - { "sin", (mpexpr_fun_t) mpfr_sin, MPEXPR_TYPE_UNARY }, + { "sin", (mpexpr_fun_t) e_mpfr_sin, MPEXPR_TYPE_UNARY }, + { "sinh", (mpexpr_fun_t) e_mpfr_sinh, MPEXPR_TYPE_UNARY }, { "sqrt", (mpexpr_fun_t) e_mpfr_sqrt, MPEXPR_TYPE_UNARY }, + { "tan", (mpexpr_fun_t) e_mpfr_tan, MPEXPR_TYPE_UNARY }, + { "tanh", (mpexpr_fun_t) e_mpfr_tanh, MPEXPR_TYPE_UNARY }, { "trunc", (mpexpr_fun_t) mpfr_trunc, MPEXPR_TYPE_UNARY }, - { "log2", (mpexpr_fun_t) e_mpfr_const_log2, MPEXPR_TYPE_CONSTANT }, - { "pi", (mpexpr_fun_t) e_mpfr_const_pi, MPEXPR_TYPE_CONSTANT }, + { "euler", (mpexpr_fun_t) e_mpfr_const_euler, MPEXPR_TYPE_CONSTANT }, + { "loge2", (mpexpr_fun_t) e_mpfr_const_log2, MPEXPR_TYPE_CONSTANT }, + { "pi", (mpexpr_fun_t) e_mpfr_const_pi, MPEXPR_TYPE_CONSTANT }, { NULL } }; |