summaryrefslogtreecommitdiff
path: root/mul.c
Commit message (Collapse)AuthorAgeFilesLines
* + Add function mpfr_print_mantissa_binary, for debugging reason.pelissip2003-12-091-3/+3
| | | | | | | | | | | | + Rename MPFR_ALLOC_SIZE in MPFR_MALLOC_SIZE. + Add conditionnal -DSMALL directive in mpfr-impl.h. + Add new function: sub1sp. Substraction in case of all the ops have the same prec. + Add its test (tsub1sp). + Modify a few the tests to avoid comparing mpfr results with double, for portability reason. git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@2569 280ebfd0-de03-0410-8827-d642c229c3f4
* Remove some warnings and potential errors (Comparaison between signed and ↵pelissip2003-11-211-1/+1
| | | | | | unsigned). git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@2563 280ebfd0-de03-0410-8827-d642c229c3f4
* Optimization of mpfr_mul.pelissip2003-11-191-18/+16
| | | | | | | | Tiny optimization of mpfr_pow (The case y=0 has been put inside the MPFR_ARE_SINGULAR block). Tiny optimisation of mpfr_set_ui. git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@2554 280ebfd0-de03-0410-8827-d642c229c3f4
* * Optimize a few div.c and mul.c.pelissip2003-11-171-5/+6
| | | | | | | | | | | | | * Reorder the tests. * Remove mpfr_round_raw_generic and create 4 new functions which replace it, for efficiency reasons. * Add round_raw_generic.c which is the generic file to create the 4 new functions. * Add new MACRO: MPFR_RNDUTEST_OR_RNDDNOTTEST which is a faster way to check if (rnd_mode==GMP_RNDU && test) || (rnd_mode==GMP_RNDD && !test). * Add new MACRO: MPFR_UNSIGNED_MINUS_MODULO. * Optimize mpfr_can_round_raw. * Some new defines in mpfr.h to increase compatibility with MPFR v2.0.1 and above. git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@2550 280ebfd0-de03-0410-8827-d642c229c3f4
* Some minor optimizations.pelissip2003-11-071-9/+16
| | | | | | | | Optimization of mul.c / sub1.c. Some clean up in the header files. git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@2537 280ebfd0-de03-0410-8827-d642c229c3f4
* Fix some bugs (Use MPFR_ASSERT(1) instead of MPFR_ASSERT(0))pelissip2003-11-051-3/+3
| | | | | | | Optimize swap.c and copysign.c. git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@2536 280ebfd0-de03-0410-8827-d642c229c3f4
* Add a real function for mpfr_sgn (not a call to mpfr_cmp_ui_2exp).pelissip2003-11-051-3/+3
| | | | | | | | | | | Add a test for mpfr_sgn. Change the proto of mpfr_add1 and mpfr_sub1 by removing the last arg. Simplify the logic of the sign in mpfr_sub1. Tiny speed up for cmp/set/sqrt. mpfr-impl auto include all the needed local header files (gmp, gmp-impl, mpfr). git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@2534 280ebfd0-de03-0410-8827-d642c229c3f4
* + Remove MPFR_CLEAR_NAN and MPFR_CLEAR_INF. Only use MPFR_CLEAR_FLAGS.pelissip2003-11-041-3/+1
| | | | | | | | | | | | | | MPFR_SET_INF, MPFR_SET_ZERO and MPFR_SET_ZERO must clear the flags before setting them. + Add a new test in tacosh.c : check Inf / Nan flags. + Use MPFR_IS_SINGULAR in all the remaining files. + Fix the use of MPFR_CLEAR_FLAGS. + mpfr-impl.h auto include gmp.h, gmp-impl.h, mpfr.h and limits.h. + Rename _PROTO to _MPFR_PROTO, and remove _GMP_PROTO. + Add MPFR_INT_SIGN macro. + Encapsulate a few more the sign. git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@2529 280ebfd0-de03-0410-8827-d642c229c3f4
* Use of MPFR_UNLIKELY and MPFR_IS_SINGULAR for fast detection of special ↵pelissip2003-10-281-49/+46
| | | | | | | | | values (Nan, Inf or Zero). Start to encapsulate the sign to be independant of the reprensation (Must be 1 or -1). git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@2525 280ebfd0-de03-0410-8827-d642c229c3f4
* Macros MPFR_EXP_INVALID (invalid exponent value) and MPFR_EXP_CHECKvlefevre2003-05-221-4/+4
| | | | | | | | | | | | added. Code update to use MPFR_GET_EXP and MPFR_SET_EXP instead of MPFR_EXP to allow more bug detection related to special values. Macros MPFR_SET_NAN, MPFR_SET_INF, MPFR_SET_ZERO and MPFR_INIT set the exponent of the number to MPFR_EXP_INVALID if MPFR_EXP_CHECK is defined. Compile with -DMPFR_EXP_CHECK and make check to see the potential problems; currently, 40 of 76 tests fail. git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@2301 280ebfd0-de03-0410-8827-d642c229c3f4
* Suppress some #define and fix symbol names (makes code cleaner):vlefevre2002-12-161-6/+6
| | | | | | | | | | | | | | | | | | | perl -pi -e 's/__mpfr_flags/__gmpfr_flags/g' **/*.{c,h} perl -pi -e 's/__mpfr_emin/__gmpfr_emin/g' **/*.{c,h} perl -pi -e 's/__mpfr_emax/__gmpfr_emax/g' **/*.{c,h} perl -pi -e 's/__mpfr_default_fp_bit_precision/__gmpfr_default_fp_bit_precision/g' **/*.{c,h} perl -pi -e 's/__gmp_default_rounding_mode/__gmpfr_default_rounding_mode/g' **/*.{c,h} perl -pi -e 's/__mpfr_const_log2_prec/__gmpfr_const_log2_prec/g' **/*.{c,h} perl -pi -e 's/__mpfr_const_pi_prec/__gmpfr_const_pi_prec/g' **/*.{c,h} perl -pi -e 's/_mpfr_ceil_log2/__gmpfr_ceil_log2/g' **/*.{c,h} perl -pi -e 's/_mpfr_floor_log2/__gmpfr_floor_log2/g' **/*.{c,h} perl -pi -e 's/_mpfr_ceil_exp2/__gmpfr_ceil_exp2/g' **/*.{c,h} perl -pi -e 's/_mpfr_isqrt/__gmpfr_isqrt/g' **/*.{c,h} perl -pi -e 's/_mpfr_cuberoot/__gmpfr_cuberoot/g' **/*.{c,h} perl -pi -e 's/^#define __gmpfr_.*\n//' *.h git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@2125 280ebfd0-de03-0410-8827-d642c229c3f4
* Re-adding mul.c with fixed permissions.vlefevre2002-07-231-0/+164
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1986 280ebfd0-de03-0410-8827-d642c229c3f4
* Temporarily removing mul.c in order to try to fix its permissions.vlefevre2002-07-231-164/+0
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1985 280ebfd0-de03-0410-8827-d642c229c3f4
* MP_LIMB_T_HIGHBIT -> MPFR_LIMB_HIGHBIT.vlefevre2002-06-261-1/+1
| | | | | | | MPFR is now compatible with GMP 4.1. git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1955 280ebfd0-de03-0410-8827-d642c229c3f4
* Underflow semantics changed (not tested).vlefevre2002-04-231-6/+17
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1910 280ebfd0-de03-0410-8827-d642c229c3f4
* Code simplified due to change in the maximum exponent range.vlefevre2002-04-231-63/+16
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1909 280ebfd0-de03-0410-8827-d642c229c3f4
* COPYING -> COPYING.LIB and GPL re-added.vlefevre2002-04-151-1/+1
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1877 280ebfd0-de03-0410-8827-d642c229c3f4
* COPYING.LIB -> COPYING.vlefevre2002-04-051-1/+1
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1820 280ebfd0-de03-0410-8827-d642c229c3f4
* Copyright line changed.vlefevre2002-03-041-1/+1
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1713 280ebfd0-de03-0410-8827-d642c229c3f4
* Misc bug fixes and code clean-up.vlefevre2002-02-041-1/+1
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1680 280ebfd0-de03-0410-8827-d642c229c3f4
* MPFR_PREC_MAX redefined.vlefevre2002-01-221-4/+5
| | | | | | | | MPFR_INTPREC_MAX defined (internal maximum precision). Some integer overflow detection. git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1666 280ebfd0-de03-0410-8827-d642c229c3f4
* Better sign comparison.vlefevre2001-11-301-1/+1
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1592 280ebfd0-de03-0410-8827-d642c229c3f4
* Minor change.vlefevre2001-11-231-3/+1
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1576 280ebfd0-de03-0410-8827-d642c229c3f4
* mpfr_mul partially rewritten:vlefevre2001-11-231-43/+121
| | | | | | | | | * Integer overflows almost completely avoided. * Now supports signed zeros and overflows. Not tested yet. git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1575 280ebfd0-de03-0410-8827-d642c229c3f4
* removed K&R function headerszimmerma2001-11-161-15/+1
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1548 280ebfd0-de03-0410-8827-d642c229c3f4
* changed Library GPL to Lesser GPLzimmerma2001-11-161-4/+4
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1536 280ebfd0-de03-0410-8827-d642c229c3f4
* 1 -> BITS_PER_MP_LIMBzimmerma2001-11-161-1/+1
| | | | | | | 1 << (BITS_PER_MP_LIMB - 1) -> MP_LIMB_T_HIGHBIT git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1501 280ebfd0-de03-0410-8827-d642c229c3f4
* computation of inexact flag now directly uses mpfr_round_rawzimmerma2001-10-121-16/+4
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1232 280ebfd0-de03-0410-8827-d642c229c3f4
* Parameter added to mpfr_round_raw: pointer to inexact ternary value.vlefevre2001-09-101-1/+1
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1190 280ebfd0-de03-0410-8827-d642c229c3f4
* fixed pb with inexact flag when 'int' and 'mp_limb_t' has different sizeszimmerma2001-04-051-4/+4
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1054 280ebfd0-de03-0410-8827-d642c229c3f4
* tiny bug in inexact value determinationzimmerma2001-03-131-1/+1
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1031 280ebfd0-de03-0410-8827-d642c229c3f4
* mpfr_mul now returns an intzimmerma2001-03-131-39/+85
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@1030 280ebfd0-de03-0410-8827-d642c229c3f4
* changed name of mpfr struct fields: _mp_d -> _mpfr_dzimmerma2000-12-181-1/+2
| | | | | | | | | (to detect conflicts with mpf) fixed a few problems in non-STDC headers moved definitions of mpfr-impl.h to mpfr-test.h and created a real mpfr-impl.h git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@897 280ebfd0-de03-0410-8827-d642c229c3f4
* A few patches.hanrot2000-12-151-5/+9
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@870 280ebfd0-de03-0410-8827-d642c229c3f4
* Permutation of includes to avoid warnings due to careless multiple definitionhanrot2000-12-151-1/+1
| | | | | | | of ULONG_MAX. git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@862 280ebfd0-de03-0410-8827-d642c229c3f4
* Take into account Inf, Nans ; clear the flags of the return variablehanrot2000-12-131-0/+4
| | | | | | | in most function calls. git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@851 280ebfd0-de03-0410-8827-d642c229c3f4
* changed copyright to Free Software Foundationzimmerma2000-12-011-1/+1
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@816 280ebfd0-de03-0410-8827-d642c229c3f4
* Infinis, premiere tentative.hanrot2000-11-211-0/+16
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@793 280ebfd0-de03-0410-8827-d642c229c3f4
* protected all macros: xxx -> MPFR_xxxzimmerma2000-10-261-12/+12
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@786 280ebfd0-de03-0410-8827-d642c229c3f4
* replaced mp_bits_per_limb by BITS_PER_MP_LIMB (constant)zimmerma2000-08-161-6/+6
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@701 280ebfd0-de03-0410-8827-d642c229c3f4
* unsigned char -> mp_rnd_tzimmerma2000-02-111-7/+7
| | | | | | | SIGN -> MPFR_SIGN git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@472 280ebfd0-de03-0410-8827-d642c229c3f4
* removed executable rightszimmerma1999-11-271-2/+0
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@408 280ebfd0-de03-0410-8827-d642c229c3f4
* added copyright noticezimmerma1999-07-301-1/+20
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@364 280ebfd0-de03-0410-8827-d642c229c3f4
* Patch in the case when the low words of the product are zero.hanrot1999-06-291-2/+4
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@212 280ebfd0-de03-0410-8827-d642c229c3f4
* changed arguments of mpfr_round_raw (now uses precision instead of size)zimmerma1999-06-281-1/+1
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@210 280ebfd0-de03-0410-8827-d642c229c3f4
* Prototypes et quelques causes de warnings corriges.hanrot1999-06-251-2/+10
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@205 280ebfd0-de03-0410-8827-d642c229c3f4
* cleaned local variableszimmerma1999-06-231-10/+9
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@133 280ebfd0-de03-0410-8827-d642c229c3f4
* fixed bug found by F. Rouillier: x * Z(2/x) -> 0 [carry from mpfr_round_raw]zimmerma1999-06-221-133/+15
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@130 280ebfd0-de03-0410-8827-d642c229c3f4
* fixed bug: wrong sign when SIGN(a)<0 at beginningzimmerma1999-06-221-1/+1
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@125 280ebfd0-de03-0410-8827-d642c229c3f4
* special cases NaN and 0zimmerma1999-06-181-0/+5
| | | | git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@103 280ebfd0-de03-0410-8827-d642c229c3f4