summaryrefslogtreecommitdiff
path: root/demos/expr
diff options
context:
space:
mode:
authorKevin Ryde <user42@zip.com.au>2002-03-13 01:01:41 +0100
committerKevin Ryde <user42@zip.com.au>2002-03-13 01:01:41 +0100
commitbc58451ae20213836a17345339e8c6031808b739 (patch)
tree74047dfce4de4e42a5fdd7aa1458b511fe0cb304 /demos/expr
parent75025fd1266360aaf130b94f0a7e3faab18dd6f7 (diff)
downloadgmp-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.c145
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 }
};