diff options
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | doc/mpc.texi | 2 | ||||
-rw-r--r-- | src/mul.c | 6 |
3 files changed, 3 insertions, 6 deletions
@@ -2,6 +2,7 @@ Changes in version 1.0: - First release as a GNU package - License change: LGPLv3+ for code, GFDLv1.3+ for documentation - 0^0, which returned (NaN,NaN) previously, now returns (1,+0), + - mpc_mul no longer calls mpc_sqr when the two inputs are the same - Bug fixes: - div and norm now return a value indicating the effective rounding direction, as the other functions. diff --git a/doc/mpc.texi b/doc/mpc.texi index dfa74ec..acb4576 100644 --- a/doc/mpc.texi +++ b/doc/mpc.texi @@ -863,6 +863,8 @@ For @code{mpc_ui_ui_sub}, @var{op1} is @var{re1} + @var{im1}. @deftypefunx int mpc_mul_si (mpc_t @var{rop}, mpc_t @var{op1}, long int @var{op2}, mpc_rnd_t @var{rnd}) @deftypefunx int mpc_mul_fr (mpc_t @var{rop}, mpc_t @var{op1}, mpfr_t @var{op2}, mpc_rnd_t @var{rnd}) Set @var{rop} to @var{op1} times @var{op2} rounded according to @var{rnd}. +Note: for @code{mpc_mul}, in case @var{op1} and @var{op2} have the same value, +use @code{mpc_sqr} for better efficiency. @end deftypefun @deftypefun int mpc_mul_i (mpc_t @var{rop}, mpc_t @var{op}, int @var{sgn}, mpc_rnd_t @var{rnd}) @@ -623,12 +623,6 @@ mpc_mul (mpc_ptr a, mpc_srcptr b, mpc_srcptr c, mpc_rnd_t rnd) if (mpfr_zero_p (mpc_realref (c))) return mul_imag (a, b, c, rnd); - /* Check if b==c and call mpc_sqr in this case, to make sure */ - /* mpc_mul(a,b,b) behaves exactly like mpc_sqr(a,b) concerning */ - /* internal overflows etc. */ - if (mpc_cmp (b, c) == 0) - return mpc_sqr (a, b, rnd); - /* If the real and imaginary part of one argument have a very different */ /* exponent, it is not reasonable to use Karatsuba multiplication. */ if ( SAFE_ABS (mpfr_exp_t, |