12020-11-13 Marco Bodrato <bodrato@mail.dm.unipi.it> 2 3 * Version 6.2.1 released. 4 5 * gmp-h.in (__GNU_MP_VERSION_PATCHLEVEL): Bump version info. 6 * Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*): Bump revision info. 7 82020-11-10 Marco Bodrato <bodrato@mail.dm.unipi.it> 9 10 * configure.ac (fat_path): Add bd1, goldmont,silvermont for CPUVEC. 11 * mpn/x86_64/fat/fat.c: Add more CPUs. 12 * mpn/x86/fat/fat.c: Add more CPUs. 13 142020-11-01 Marco Bodrato <bodrato@mail.dm.unipi.it> 15 16 * configure.ac: X86_{,64_}PATTERN: GMP_ASM_COFF_TYPE for all ABIs; 17 * mpn/x86_64/x86_64-defs.m4 (COFF_TYPE): Copy from mpn/x86/x86-defs.m4 18 as suggested by Jeremy Drake. 19 20 * tests/misc/t-locale.c (nl_langinfo): No redefine on __TERMUX__, 21 spotted by Sanselme and Glisse. 22 * configure.ac: Consider *-*-msys as *-*-mingw* (except on arm* | 23 aarch64*), as suggested by Ralph Peterson. 24 * Makefile.am (EXTRA_DIST): Add mini-gmp/ChangeLog. 25 262020-10-30 Marco Bodrato <bodrato@mail.dm.unipi.it> 27 28 * tests/mpf/t-get_d_2exp.c: Test also the case zero. 29 * tests/mpz/t-get_d.c: Likewise. 30 * tests/mpf/t-trunc.c: Use mpf_size. 31 32 * tests/mpf/t-conv.c: Some more tests on zero. 33 342020-10-25 Marco Bodrato <bodrato@mail.dm.unipi.it> 35 36 * configfsf.guess: Updated to version 2020-10-22, from gnulib. 37 382020-10-17 Marco Bodrato <bodrato@mail.dm.unipi.it> 39 40 * tests/devel/Makefile.am: Remove redundancies. 41 42 * tests/mpz/io.c: Test out-of-range bases for mpz_out_str. 43 442020-10-15 Torbjörn Granlund <tg@gmplib.org> 45 46 * configure.ac: Recognise zen3. 47 * config.guess: Recognise zen3. 48 492020-10-14 Marco Bodrato <bodrato@mail.dm.unipi.it> 50 51 * doc/gmp.texi (Number sequences): Remove redundancy. (spotted: TonyMcC) 52 53 * configfsf.sub: Updated to version 2020-10-13, from gnulib. 54 * configfsf.guess: Updated to version 2020-09-19, from gnulib. 55 562020-10-06 Niels Möller <nisse@lysator.liu.se> 57 58 * Makefile.am: Better support for make check-mini-gmp on wine or cygwin. 59 602020-09-22 Torbjörn Granlund <tg@gmplib.org> 61 62 * tests/mpz/t-mul.c: Print GMP_CHECK_FFT. 63 64 * longlong.h (x86 umul_ppmm): Fix typo. 65 662020-09-21 Torbjörn Granlund <tg@gmplib.org> 67 68 * mpz/n_pow_ui.c: Detect and report overflow. 69 702020-07-04 Torbjörn Granlund <tg@gmplib.org> 71 72 * mpn/arm64/bdiv_q_1.asm: Use LEA_HI/LEA_LO 73 * mpn/arm64/invert_limb.asm: Likewise. 74 75 * mpn/arm64/arm64-defs.m4: New file. 76 * mpn/arm64/darwin.m4: New file. 77 * configure.ac: Use arm64/arm64-defs.m4 and arm64/darwin.m4. 78 792020-06-20 Torbjörn Granlund <tg@gmplib.org> 80 81 * longlong.h (add_sssaaaa arm32/arm64): Generalise allowed operands 82 when using adds for sub and subs for add, while disallowing 0. 83 (sub_ddmmss ppc64): Disallow 0 when using addic. Also disallow 84 constants for register-only middle addic operand. 85 (C add_sssaaaa and sub_ddmmss): Use more temps to make operation more 86 well-defined. 87 882020-06-18 Torbjörn Granlund <tg@gmplib.org> 89 90 * tests/devel/gen-test-longlong_h.c: New file. 91 * tests/devel/Makefile.am: Compile and use gen-test-longlong_h.c. 92 932020-06-10 Torbjörn Granlund <tg@gmplib.org> 94 95 * configure.ac: Recognise armcortexa55. 96 972020-05-25 Torbjörn Granlund <tg@gmplib.org> 98 99 * tests/cxx/t-assign.cc: Use reference parameter for 'catch'. 100 * tests/cxx/t-constr.cc: Likewise. 101 * tests/cxx/t-ops2z.cc: Likewise. 102 * tests/cxx/t-rand.cc: Likewise. 103 * tests/cxx/t-do-exceptions-work-at-all-with-this-compiler.cc: Likewise. 104 105 * tune/speed.c: Undo 2020-05-24 _POSIX_C_SOURCE change, it breaks on 106 many broken systems. 107 * tune/freq.c: Likewise. 108 * tune/time.c: Likewise. 109 * tune/tuneup.c: Likewise. 110 111 * tests/devel/try.c: Revert 2020-05-24 changes. 112 1132020-05-21 Torbjörn Granlund <tg@gmplib.org> 114 115 * tune/freq.c (_POSIX_C_SOURCE): Define. 116 117 * tune/tuneup.c (print_define_with_speedup): Fall back from snprintf to 118 sprintf for C90. 119 (_POSIX_C_SOURCE): Define. 120 (max_opsize): Set by #define instead of const size_t to please C90. 121 (n_measurements): Likewise. 122 (speed_mpn_pre_set_str): Adhere to C90 declaration rules. 123 124 * tune/tune-gcd-p.c: Back out 2020-01-10 change to comply to C90. 125 126 * tune/time.c (speed_endtime): Cast printf args to right type. 127 (_POSIX_C_SOURCE): Define. 128 129 * tune/speed.h (CACHE_LINE_SIZE): Do #undef before defining. 130 (SPEED_ROUTINE_MPN_GCD_1): Provide dummy first argument for standard 131 compliance. 132 (SPEED_ROUTINE_MPN_HGCD2): Adhere to C90 declaration rules. 133 134 * tune/speed.c (main): Cast printf args to right type. 135 (_POSIX_C_SOURCE): Define. 136 137 * tests/mpz/reuse.c: Avoid using non-standard function fileno(). 138 * tests/spinner.c: Likewise. 139 140 * tests/mpz/convert.c (str_casecmp): New function. 141 (main): Use it instead of non-standard strcasecmp. 142 143 * tests/misc.c (tests_start): Fall back from snprintf to sprintf for 144 C90. 145 146 * tests/devel/try.c: Avoid getpagesize and use POSIX sysconf instead. 147 (_POSIX_C_SOURCE): Define. 148 149 * mpn/generic/mod_1_1.c: Don't use C++ comments. 150 151 * mpn/generic/get_d.c: Add clarifying parens. 152 1532020-05-18 Torbjörn Granlund <tg@gmplib.org> 154 155 * mpn/generic/toom_interpolate_12pts.c (DO_mpn_addlsh_n): Define only 156 when needed. 157 * mpn/generic/toom_interpolate_16pts.c: Likewise. 158 1592020-05-17 Marco Bodrato <bodrato@mail.dm.unipi.it> 160 161 * mpz/cmp.c: Avoid overflow on int even for huge sizes. 162 * mpq/cmp.c: Likewise. 163 164 * mpn/generic/mul_fft.c (mpn_fft_mul_modF_K): 165 Fully handle carry propagation in basecase multiplication. 166 1672020-05-16 Torbjörn Granlund <tg@gmplib.org> 168 169 * mpn/generic/hgcd2.c (tabp): Combine several undefined tabp 170 variable definitions with a macro. 171 172 * mpn/generic/gcd_22.c: Avoid C99 constructs. 173 1742020-05-12 Torbjörn Granlund <tg@gmplib.org> 175 176 * mpn/generic/compute_powtab.c: Avoid C99 constructs. 177 * mpn/generic/get_str.c: Likewise. 178 * mpn/generic/set_str.c: Likewise. 179 180 * gmp-impl.h (memset): Move ASSERT to before decls. 181 * tests/refmpn.c: Likewise. 182 183 * mpn/generic/hgcd2.c (tabp): Combine several undefined tabp variable 184 definitions with a macro. 185 186 * mpn/generic/strongfibo.c: Avoid defining helper function when unused. 187 188 * mpn/generic/dcpi1_bdiv_q.c (mpn_dcpi1_bdiv_q_n_itch): Disable unused 189 static function. 190 191 * mpz/mul.c: Add some {} to suppress warning. 192 193 * tests/mpn/t-gcd_11.c: Exit main() properly. 194 * tests/mpn/t-gcd_22.c: Likewise. 195 * tests/mpn/t-gcdext_1.c: Likewise. 196 1972020-04-28 Torbjörn Granlund <tg@gmplib.org> 198 199 * tests/mpz/reuse.c (realloc_if_reducing): New function. 200 (INVOKE_RRS, etc): Use realloc_if_reducing. 201 2022020-01-17 Torbjörn Granlund <tg@gmplib.org> 203 204 * Version 6.2.0 released. 205 206 * gmp-h.in (__GNU_MP__): Bump. 207 (__GNU_MP_VERSION,__GNU_MP_VERSION_MINOR,__GNU_MP_VERSION_PATCHLEVEL): 208 Bump version info. 209 * Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*, LIBMP_LT_*): 210 Bump version info. 211 2122020-01-15 Torbjörn Granlund <tg@gmplib.org> 213 214 * mpn/x86_64/bt1/gcd_11.asm: Add missing FUNC_EXIT. 215 2162020-01-10 Torbjörn Granlund <tg@gmplib.org> 217 218 * longlong.h (powerpc): Add clobbers, make formatting cleanups. 219 220 * configure.ac (HAVE_NATIVE): Add mpn_sbpi1_bdiv_r. 221 222 * tune/tune-gcd-p.c (main): Use %zu for size_t printing. 223 224 * configfsf.guess: Update from upstream. 225 226 * mpn/x86/pentium4/sse2/popcount.asm: For simplicity and correctness 227 use LEAL directly. 228 2292020-01-03 Niels Möller <nisse@lysator.liu.se> 230 231 * configure.ac: Delete suggestion to use TESTS_ENVIRONMENT to run 232 wine. It worked only with older versions of automake. 233 2342019-12-23 Torbjörn Granlund <tg@gmplib.org> 235 236 * mpf/mul.c: Rewrite to invoke mpn_sqr when appropriate. 237 2382019-12-08 Marco Bodrato <bodrato@mail.dm.unipi.it> 239 240 * mpz/powm.c: Full normalisation when e=1 & b<0. 241 * tests/mpz/t-powm.c: More tests for the e=1 case. 242 2432019-12-02 Torbjörn Granlund <tg@gmplib.org> 244 245 * mpn/generic/gcd_11.c: Remove check for NATIVE_ implementation. 246 2472019-11-24 Niels Möller <nisse@lysator.liu.se> 248 249 * mpn/generic/gcdext_1.c [USE_ZEROTAB]: Delete code variant for 250 USE_ZEROTAB != 0. Was used in the currently disabled binary 251 gcdext. 252 2532019-11-20 Torbjörn Granlund <tg@gmplib.org> 254 255 * mpn/generic/powm.c (MPN_REDC_1): Prefer mpn_sbpi1_bdiv_r when it is 256 provided. 257 * mpn/generic/sec_powm.c (MPN_REDC_1_SEC): Likewise. 258 2592019-11-17 Torbjörn Granlund <tg@gmplib.org> 260 261 * config.guess: Recognise zen2. 262 * configure.ac: Likewise. 263 264 * mpn/x86_64/bt1/aorsmul_1.asm: Rewrite. 265 * mpn/x86_64/bt1/mul_1.asm: Rewrite. 266 267 * mpn/arm/v6t2/gcd_11.asm: Increase alignment; update x/l table. 268 2692019-11-16 Seth Troisi <sethtroisi@google.com> 270 271 * tune/common.c (speed_mpn_perfect_power_p): New function. 272 (speed_mpn_perfect_power_p): New function. 273 * tune/speed.h: Declare both. 274 * tune/speed.c (routine): Add mpn_perfect_{power,square}_p. 275 276 * tune/common.c (speed_mpz_nextprime): New function. 277 * tune/speed.h: Declare it. 278 * tune/speed.c (routine): Add mpz_nextprime. 279 2802019-11-09 Marco Bodrato <bodrato@mail.dm.unipi.it> 281 282 * tune/speed.c (routine_t): Add R flag to mpz_powm 283 * tune/speed.h (SPEED_ROUTINE_MPZ_POWM): Use R flag as the base. 284 2852019-10-02 Torbjörn Granlund <tg@gmplib.org> 286 287 * configure.ac: Make more path distinctions for the benefit of 288 gmp-mparam.h. 289 2902019-10-01 Torbjörn Granlund <tg@gmplib.org> 291 292 * configure.ac (arm64): Let cortex-a7x look in a57 folder. 293 2942019-10-01 Niels Möller <nisse@lysator.liu.se> 295 296 * mpn/generic/gcdext_1.c (mpn_gcdext_1) [GCDEXT_1_USE_BINARY]: Fix 297 canonicalization condition. 298 2992019-09-30 Niels Möller <nisse@lysator.liu.se> 300 301 * tests/mpn/t-gcdext_1.c: New test. 302 3032019-09-23 Torbjörn Granlund <tg@gmplib.org> 304 305 * mpn/generic/hgcd2.c: Mark added div1 variants as static. 306 307 * tune/tuneup.c, tune/speed.c, tune/speed.h, tune/common.c, 308 tune/Makefile.am: Add measuring of mpn_hgcd2 method 4 and 5. 309 * tune/hgcd2-4.c, tune/hgcd2-5.c: New files. 310 3112019-09-23 Niels Möller <nisse@lysator.liu.se> 312 313 * gmp-impl.h (hgcd2_func_t) [TUNE_PROGRAM_BUILD]: New typedef. 314 (hgcd2_func) [TUNE_PROGRAM_BUILD]: New function pointer. 315 316 * tune/hgcd2.c (mpn_hgcd2): New file, with a redefined function to 317 invoke an implementation via the hgcd2_func function pointer. 318 Initially points to the default implementation in 319 mpn/generic/hgcd2.c. 320 * tune/Makefile.am (tuneup_SOURCES): Add hgcd2.c. 321 322 * tune/tuneup.c (one_method): Return index of selected function. 323 (tune_hgcd2): Set hgcd2_func to point to selected function. So 324 that the later tuning of mpn_hgcd and mpn_gcd uses the right 325 implementation of hgcd2. 326 3272019-09-23 Torbjörn Granlund <tg@gmplib.org> 328 329 * mpn/generic/hgcd2.c: Improve method 4 and 5 by using the division 330 free methods optimistically, detecting errors. Tweak table values. 331 3322019-09-22 Torbjörn Granlund <tg@gmplib.org> 333 334 * mpn/generic/hgcd2.c: Add a 4th and 5th div1 method. 335 3362019-09-18 Torbjörn Granlund <tg@gmplib.org> 337 338 * mpn/generic/hgcd2.c (div1, div2): Rearrange things to allow for asm. 339 (div2): Avoid out-of-specs shift. 340 (div2): Use same variable naming in all variants. 341 3422019-09-16 Niels Möller <nisse@lysator.liu.se> 343 344 * mpn/generic/hgcd2.c (HGCD2_DIV2_METHOD): New define. 345 (div2): Replaced, since the old implementation had lots of poorly 346 predicted and expensive branches. Two new implementaions, selected 347 by HGCD2_DIV2_METHOD. 348 (div2) [HGCD2_DIV2_METHOD == 1]: Calls div1 on the high limbs, 349 with unlikely case handling large quotients. 350 (div2) [HGCD2_DIV2_METHOD == 2]: The previously #if:ed out 351 version. A bitwise division, relying on fast count_leading_zeros, 352 and with fewer branches than the previous code. 353 3542019-09-15 Torbjörn Granlund <tg@gmplib.org> 355 356 * acinclude.m4 (GMP_ASM_X86_ADX): Remove unused. 357 358 * configure.ac (x86): Amend last change. 359 3602019-09-14 Niels Möller <nisse@lysator.liu.se> 361 362 * mpn/generic/hgcd2.c (HGCD2_DIV1_METHOD): Rename, and change 363 default to 3. Updated all usage. 364 (HGCD2_METHOD): ... the old name, deleted. 365 3662019-09-14 Torbjörn Granlund <tg@gmplib.org> 367 368 * configure.ac: Remove obsolete path-triggered invocation of 369 GMP_ASM_X86_ADX and GMP_ASM_X86_MULX. 370 371 * acinclude.m4 (GMP_ASM_X86_MULX): Set X86_ASM_MULX to config.h. 372 * configure.ac (x86): Set x86_have_mulx for relevant CPUs. 373 Use if to conditionally invoke GMP_ASM_X86_MULX. 374 * longlong.h (x86 umul_ppmm): Test also X86_ASM_MULX for when to use 375 mulx variant. 376 3772019-09-13 Niels Möller <nisse@lysator.liu.se> 378 379 * tune/tuneup.c (one_method): New helper function, to measure 380 several functions for a fix size. 381 (tune_hgcd2, tune_div_qr_1, tune_mod_1, tune_jacobi_base): Use it. 382 3832019-09-13 Torbjörn Granlund <tg@gmplib.org> 384 385 * configure.ac (HAVE_HOST_CPU_1): Add many x86_64 CPU types. 386 * longlong.h (x86 umul_ppmm): Fix criterion for when to use mulx. 387 (count_leading_zeros): Use lzcnt for appropriate CPUs. 388 (count_trailing_zeros): Use tzcnt for appropriate CPUs. 389 390 * mpn/generic/hgcd2.c (HGCD2_METHOD=2 div1): Rewrite. 391 3922019-09-09 Torbjörn Granlund <tg@gmplib.org> 393 394 * mpn/generic/mul.c: Call mpn_mul_basecase early when in range. Never 395 call mpn_sqr. 396 397 * mpn/generic/gcd.c: Rewrite tail of function, for n <= 2. 398 3992019-09-08 Torbjörn Granlund <tg@gmplib.org> 400 401 * configure.ac (arm): Select arch armv7ve for a7, a12, a15, and a17, 402 this enables the use of the udiv instruction. 403 404 * mpn/generic/hgcd2.c (disabled div2): Micro-optimise. 405 4062019-09-07 Torbjörn Granlund <tg@gmplib.org> 407 408 * mpn/generic/hgcd2.c (HGCD2_METHOD=3 div1): Micro-optimise. 409 4102019-09-07 Vincent Lefevre <vincent@vinc17.net> 411 412 * acinclude.m4 (GMP_C_DOUBLE_FORMAT): Append EXEEXT for executable. 413 4142019-09-05 Torbjörn Granlund <tg@gmplib.org> 415 416 * mpn/arm64/gcd_22.asm: Rewrite to make better use of Arm conditional 417 execution. 418 * mpn/arm32/gcd_22.asm: Likewise. 419 4202019-09-05 Niels Möller <nisse@lysator.liu.se> 421 422 * mpn/generic/hgcd2.c (div1): Return both r and q as a 423 mp_double_limb_t, replacing the DIV1 macro. 424 (div1) [HGCD2_METHOD == 3]: New implementation handling q <= 7 425 specially and without branches. Based on Torbjörn's mail to the 426 gmp-devel list. 427 * tune/speed.c, tune/speed.h, tune/common.c, tune/Makefile.am: Add 428 corresponding speed support. 429 * tune/hgcd2-3.c: New file. 430 * tune/tuneup.c (print_define_with_speedup): New function, to 431 output a comment with speedup compared to next-best method. 432 (tune_hgcd2): Update tuning. 433 4342019-09-04 Niels Möller <nisse@lysator.liu.se> 435 436 * mpn/generic/hgcd2.c (HGCD2_METHOD): New parameter. 437 (DIV1): New macro, using either the div1 function or plain 438 division, depending on the value of HGCD2_METHOD. 439 (mpn_hgcd2): Use DIV1. 440 * tune/speed.c, tune/speed.h, tune/common.c, tune/Makefile.am: Add 441 measuring of mpn_hgcd2 methods. 442 * tune/hgcd2-1.c, tune/hgcd2-2.c: New files. 443 * tune/tuneup.c: Tune HGCD2_METHOD. 444 445 * tune/speed.h (SPEED_ROUTINE_MPN_HGCD2): New macro. 446 * tune/common.c (speed_mpn_hgcd2): New function. 447 * tune/speed.c (routine): Add mpn_hgcd2. 448 4492019-09-04 Torbjörn Granlund <tg@gmplib.org> 450 451 * mpn/arm/v6t2/gcd_22.asm: New file. 452 * mpn/arm64/gcd_22.asm: New file. 453 * mpn/ia64/gcd_11.asm: New file. 454 4552019-09-01 Torbjörn Granlund <tg@gmplib.org> 456 457 * mpn/x86_64/bt1/gcd_11.asm: Replace grabber with bt1 optimised code. 458 4592019-08-30 Torbjörn Granlund <tg@gmplib.org> 460 461 * mpn/x86_64/bd4/gcd_22.asm: New grabber file. 462 463 * mpn/x86_64/zen/gcd_22.asm: Use coreihwl instead of bd2 gcd_22. 464 465 * mpn/x86_64/bd2/gcd_22.asm: Fix typo in FUNC_ENTRY (currently unused). 466 Avoid a register copy before return. 467 * mpn/x86_64/core2/gcd_22.asm: Likewise. 468 * mpn/x86_64/k10/gcd_22.asm: Likewise. 469 * mpn/x86_64/gcd_22.asm: Likewise. 470 471 * mpn/x86_64/coreihwl/gcd_22.asm: Optimise, now runs well on more CPUs. 472 473 * mpn/x86_64/gcd_11.asm: Remove PROTECT from symbols as they are 474 actually local. 475 * mpn/x86_64/gcd_22.asm: Likewise. 476 4772019-08-25 Torbjörn Granlund <tg@gmplib.org> 478 479 * mpn/x86_64/bd2/gcd_22.asm: Repeat tzcnt for exceptional lowz case. 480 Remove dead code. 481 482 * mpn/powerpc64/mode64/p7/gcd_22.asm: Make logic for determining ABI 483 wrt struct return more robust. 484 * mpn/powerpc64/mode64/p9/gcd_22.asm: Likewise. 485 4862019-08-24 Torbjörn Granlund <tg@gmplib.org> 487 488 * mpn/x86_64/bt1/gcd_11.asm: New grabber. 489 * mpn/x86_64/bt1/gcd_22.asm: New grabber. 490 * mpn/x86_64/bt2/gcd_22.asm: New grabber. 491 492 * mpn/x86_64/atom/gcd_22.asm: Remove stale grabber file. 493 * mpn/x86_64/zen/gcd_22.asm: Grab bd2 instead of hwl code. 494 * mpn/x86_64/bd2/gcd_22.asm: New file. 495 * mpn/x86_64/k8/gcd_22.asm: Remove, rely on top-level code instead. 496 * mpn/x86_64/bt1/gcd_22.asm: Remove. 497 * x86_64/gcd_22.asm: New file, improved version of removed bt1 code. 498 4992019-08-22 Torbjörn Granlund <tg@gmplib.org> 500 501 * mpn/x86_64/coreihwl/gcd_11.asm: Remove as it was never beneficial. 502 503 * mpn/x86_64/bd2/gcd_11.asm: Make sure rdx is zero on return to benefit 504 gcd_22's private calls. Make gcd_11 files more similar in register use. 505 * mpn/x86_64/bd4/gcd_11.asm: Likewise. 506 * mpn/x86_64/core2/gcd_11.asm: Likewise. 507 * mpn/x86_64/gcd_11.asm:: Likewise. 508 5092019-08-22 Niels Möller <nisse@lysator.liu.se> 510 511 From Hugh McMaster: 512 * gmp.pc.in, gmpxx.pc.in: New files. 513 * configure.ac: New output files gmp.pc and gmpxx.pc. 514 * Makefile.am (pkgconfigdir, pkgconfig_DATA): New automake 515 settings, to install gmp.pc and optionally gmpxx.pc for use with 516 pkg-config. 517 5182019-08-21 Torbjörn Granlund <tg@gmplib.org> 519 520 * mpn/x86_64/core2/gcd_22.asm: New file. 521 * mpn/x86_64/k8/gcd_22.asm: New file. 522 * mpn/x86_64/k10/gcd_22.asm: New file. 523 * mpn/x86_64/coreihwl/gcd_22.asm: New file. 524 * mpn/x86_64/bt1/gcd_22.asm: New file. 525 * mpn/x86_64/bd4/gcd_22.asm: New grabber. 526 * mpn/x86_64/zen/gcd_22.asm: New grabber. 527 * mpn/x86_64/atom/gcd_22.asm: New grabber. 528 5292019-08-19 Torbjörn Granlund <tg@gmplib.org> 530 531 * configure.ac: Check for ELFv1 ABI on PowerPC. 532 5332019-08-18 Torbjörn Granlund <tg@gmplib.org> 534 535 * longlong.h (arm32 sub_ddmmss): Define separately for thumb and 536 non-thumb as rsc instruction is missing for thumb. 537 538 * mpn/powerpc64/mode64/p7/gcd_22.asm: New file. 539 * mpn/powerpc64/mode64/p9/gcd_22.asm: New file. 540 5412019-08-17 Torbjörn Granlund <tg@gmplib.org> 542 543 * demos/expr/t-expr.c: #include gmp-impl.h as it includes tests.h. 544 545 * mpn/asm-defs.m4: Add gcd_22. 546 547 * tests/refmpn.c (refmpn_gcd_22): New function. 548 * tests/tests.h: Declare it. 549 550 * tests/t-constants.c: #include gmp-impl.h. 551 * tests/mpf/t-get_d.c: Likewise. 552 5532019-08-17 Niels Möller <nisse@lysator.liu.se> 554 555 * mpn/generic/gcd_22.c (mpn_gcd_22): New implementation with less 556 branches. 557 5582019-08-16 Marco Bodrato <bodrato@mail.dm.unipi.it> 559 560 * mpn/generic/brootinv.c: Shorten computations, using even exponent. 561 * mpn/generic/powlo.c: Avoid copies with a flipflop. 562 5632019-08-16 Niels Möller <nisse@lysator.liu.se> 564 565 Speed support for gcd_22. Calls mpn_gcd_22(al, al, bl, bl), so 566 that B+1 is a common factor. 567 * tune/speed.h (SPEED_ROUTINE_MPN_GCD_22): New macro. 568 * tune/speed.c (routine): Add mpn_gcd_22. 569 * tune/common.c (speed_mpn_gcd_22): New function. 570 571 * mpn/generic/gcd.c (gcd_2): Moved to gcd_22.c below. 572 (mpn_gcd): Adapt for calling gcd_22. 573 * mpn/generic/gcd_22.c (mpn_gcd_22): New file and function. 574 * gmp-impl.h (mp_double_limb_t): New (typedef) struct. 575 * configure.ac (gmp_mpn_functions): Added gcd_22. 576 577 * tests/mpn/t-gcd_22.c: New test. 578 * tests/mpn/Makefile.am (check_PROGRAMS): Add t-gcd_22. 579 * tests/refmpz.c (refmpz_gcd): New function (plain binary gcd). 580 5812019-08-15 Torbjörn Granlund <tg@gmplib.org> 582 583 * mpn/x86_64/zen/gcd_11.asm: Use bd2 instead of bd4 code. 584 5852019-08-13 Torbjörn Granlund <tg@gmplib.org> 586 587 * mpn/x86_64: Add more gcd_11 variants of of x86_64 gcd_11.asm and 588 tweak existing ones. 589 5902019-08-13 Marco Bodrato <bodrato@mail.dm.unipi.it> 591 592 From Seth Troisi: 593 * doc/gmp.texi: Update mpz_millerrabin documentation. 594 595 * mpn/x86_64/bd2/gcd_11.asm: Micro-optimisation. 596 * doc/gmp.texi: Further update in mpz_millerrabin. 597 * tests/misc.c: Silence a warning. 598 * tests/mpz/t-pprime_p.c (const primes): One more prime in the list. 599 * mpz/millerrabin.c: Return 2 for surely prime numbers (BPSW checked). 600 6012019-08-08 Torbjörn Granlund <tg@gmplib.org> 602 603 * mpn/x86/gcd_11.asm: New file. 604 605 * config.sub: Make arm cpu types match what config.guess returns. 606 6072019-08-08 Niels Möller <nisse@lysator.liu.se> 608 609 * tests/refmpn.c (refmpn_gcd_11): New function, based on refmpn_gcd_1. 610 (refmpn_gcd_1): Use it. 611 * tests/mpn/t-gcd_11.c: New file, test mpn_gcd_11. 612 * tests/mpn/Makefile.am (check_PROGRAMS): Add t-gcd_11. 613 6142019-08-07 Torbjörn Granlund <tg@gmplib.org> 615 616 * mpn/alpha/ev67/gcd_11.asm: New file, mostly extracted from gcd_1.asm. 617 * mpn/arm/v5/gcd_11.asm: Likewise. 618 * mpn/arm/v6t2/gcd_11.asm: Likewise. 619 * mpn/arm64/gcd_11.asm: Likewise. 620 * mpn/powerpc64/mode64/gcd_11.asm: Likewise. 621 * mpn/powerpc64/mode64/p7/gcd_11.asm: Likewise. 622 * mpn/powerpc64/mode64/p9/gcd_11.asm: Likewise. 623 * mpn/sparc64/gcd_11.asm: Likewise. 624 * mpn/x86/k7/gcd_11.asm: Likewise. 625 * mpn/x86/p6/gcd_11.asm: Likewise. 626 * mpn/x86_64/bd2/gcd_11.asm: Likewise. 627 * mpn/x86_64/core2/gcd_11.asm: Likewise. 628 * mpn/x86_64/gcd_11.asm: Likewise. 629 * mpn/asm-defs.m4: Add gcd_11. 630 6312019-08-06 Niels Möller <nisse@lysator.liu.se> 632 633 * tune/common.c (speed_mpn_gcd_11): New function. 634 * tune/speed.h (speed_mpn_gcd_11): Declare it. 635 (SPEED_ROUTINE_MPN_GCD_11): New macro. 636 * tune/speed.c (routine): Add mpn_gcd_11. 637 638 * configure.ac (gmp_mpn_functions): Added gcd_11. Also add 639 HAVE_NATIVE_mpn_gcd_11. 640 * mpn/generic/gcd_11.c (mpn_gcd_11): New file and function, 641 extracted from mpn_gcd_1. 642 * gmp-h.in (mpn_gcd_11): Declare it. 643 * mpn/generic/gcd_1.c (mpn_gcd_1): Adapted to call mpn_gcd_11. 644 6452019-08-04 Torbjörn Granlund <tg@gmplib.org> 646 647 * mpn/x86_64/bt2/gcd_1.asm: New grabber file. 648 * mpn/x86_64/zen/gcd_1.asm: Grab from "bd2" directory, was "core2". 649 6502019-08-02 Torbjörn Granlund <tg@gmplib.org> 651 652 * mpn/x86_64/bd2/gcd_1.asm: New file. 653 6542019-08-01 Torbjörn Granlund <tg@gmplib.org> 655 656 * tests/mpf/t-conv.c: Add several more fixed test cases. 657 658 * mpf/set_str.c: Ignore leading zeros including ones after radix point 659 to avoid invalid output formats. 660 6612019-07-30 Torbjörn Granlund <tg@gmplib.org> 662 663 * mpn/powerpc64/mode64/p9/gcd_1.asm: New file. 664 6652019-07-30 Niels Möller <nisse@lysator.liu.se> 666 667 From Seth Troisi: 668 * doc/gmp.texi (Jacobi Symbol): Update algorithm documentation. 669 * tests/mpz/t-jac.c: Comment update. 670 6712019-07-13 Torbjörn Granlund <tg@gmplib.org> 672 673 * configure.ac (arm): Generalise arm a72 pattern to match a73...a79. 674 6752019-07-08 Torbjörn Granlund <tg@gmplib.org> 676 677 * mpn/arm/arm-defs.m4 (ASM_START): Rewrite (fix broken error handling). 678 6792019-07-02 Torbjörn Granlund <tg@gmplib.org> 680 681 * acinclude.m4 (GMP_C_DOUBLE_FORMAT): Compile conftest.c to executable 682 in order to trigger final compile in case of LTO. 683 6842019-06-17 Torbjörn Granlund <tg@gmplib.org> 685 686 * config.guess: Work around upstream configfsf.guess's regression wrt 687 mips vs mips64. 688 6892019-06-14 Torbjörn Granlund <tg@gmplib.org> 690 691 * longlong.h (mips64): Provide r6 asm code as default expression yields 692 libcall. 693 694 * configure.ac (mips64): Use separate paths for r6 and non-r6 as these 695 architectures are mutually incompatible. 696 697 * mpn/mips64/{addmul_1,mul_1,sqr_diagonal,submul_1,umul}.asm: 698 Move into hilo subdir. 699 7002019-05-28 Torbjörn Granlund <tg@gmplib.org> 701 702 * config.sub: Fixes to which cpu types end with a "*". 703 7042019-04-20 Niels Möller <nisse@lysator.liu.se> 705 706 * doc/gmp.texi (References): Link to paper on subquadratic GCD. 707 7082019-04-19 Torbjörn Granlund <tg@gmplib.org> 709 710 * mpn/x86_64/bd1/hamdist.asm: Really make 2017-06-01 change: Use 711 3-operand DEF_OBJECT. 712 713 * mpn/x86_64/invert_limb.asm: Simplify mpn_invert_limb_table ref. 714 715 * mpn/x86_64/x86_64-defs.m4 (LEA): Use rip addressing for non-PIC. 716 7172019-04-17 Niels Möller <nisse@lysator.liu.se> 718 719 * mpn/generic/jacobi.c (mpn_jacobi_n): Use JACOBI_DC_THRESHOLD, 720 not GCD_DC_THRESHOLD. Inconsistency spotted by Seth Troisi. 721 7222019-04-02 Torbjörn Granlund <tg@gmplib.org> 723 724 * mpn/x86_64/fat/fat.c (__gmpn_cpuvec_init): 725 Split out silvermont handling, add handling of goldmont. 726 727 * configure.ac: Setup distinct paths for silvermont and goldmont. 728 (fat_path): Add missing x86_64/goldmont. 729 730 * config.guess: Recognise "Goldmont Plus". 731 7322018-12-09 Torbjörn Granlund <tg@gmplib.org> 733 734 * mpn/generic/mul_fft.c (mpn_fft_add_sub_modF): New function. 735 (mpn_fft_fft, mpn_fft_fftinv): Use it. 736 7372018-11-30 Torbjörn Granlund <tg@gmplib.org> 738 739 * mpn/powerpc64/mode64/p9/gmp-mparam.h: New file. 740 741 * mpn/powerpc64/mode64/p9/add_n_sub_n.asm: New file. 742 7432018-11-28 Torbjörn Granlund <tg@gmplib.org> 744 745 * mpn/powerpc64/mode64/p9/sqr_basecase.asm: New file. 746 * mpn/powerpc64/mode64/p9/mul_1.asm: New file. 747 7482018-11-18 Torbjörn Granlund <tg@gmplib.org> 749 750 * mpn/powerpc64/mode64/p9/mul_basecase.asm: New file. 751 752 * mpn/powerpc64/mode64/p9/addmul_1.asm: Optimise. 753 7542018-11-12 Torbjörn Granlund <tg@gmplib.org> 755 756 * mpn/powerpc64/mode64/p9/aorsmul_1.asm: New file, providing fast 757 submul_1 (and redundant addmul_1). 758 7592018-11-11 Torbjörn Granlund <tg@gmplib.org> 760 761 * mpn/powerpc64/mode64/p9/addmul_1.asm: Tweak for slightly better 762 speed. 763 764 * mpn/powerpc32/powerpc-defs.m4: Define addex. 765 * mpn/powerpc64/mode64/p9/mul_2.asm: Use it. 766 * mpn/powerpc64/mode64/p9/addmul_2.asm: Likewise. 767 7682018-11-08 Torbjörn Granlund <tg@gmplib.org> 769 770 * tests/devel/cnd_aors_n.c: New file. 771 772 * mpn/arm/neon/lorrshift.asm: Declare use of neon insns. 773 * mpn/arm/neon/lshiftc.asm: Likewise + cleanup. 774 775 * tests/devel/Makefile.am (EXTRA_PROGRAMS): Add missing files. 776 777 * mpn/powerpc64/mode64/p9/mul_2.asm: New file. 778 * mpn/powerpc64/mode64/p9/addmul_2.asm: New file. 779 7802018-11-07 Marco Bodrato <bodrato@mail.dm.unipi.it> 781 782 * mpz/lucnum2_ui.c: Use mpn_rsblsh1_n if available. 783 * tests/mpz/t-nextprime.c: Add one more interval. 784 * tests/mpz/t-pprime_p.c (check_fermat_mersenne): New tests. 785 * mpn/generic/mod_1_3.c: typo in a comment. 786 * mpz/nextprime.c: Use tdiv instead of fdiv. 787 788 * mpn/generic/fib2m.c: New file, Fibonacci numbers modulo. 789 * configure.ac (gmp_mpn_functions): Add it. 790 * gmp-impl.h: Declare mpn_fib2m. 791 * tests/mpn/t-fib2m.c: New file, tests for mpn_fib2m. 792 * tests/mpn/Makefile.am (check_PROGRAMS): Add t-fib2m. 793 794 * mpn/generic/mod_34lsub1.c: Initialise c[012] once. 795 * tests/mpz/t-pprime_p.c (check_primes): Two more primes. 796 * tests/mp?: Use TESTS_REPS in many files. 797 798 * mpn/generic/strongfibo.c: New file, Fibonacci primality test. 799 * configure.ac (gmp_mpn_functions): Add it. 800 * gmp-impl.h: Declare mpn_strongfibo. 801 802 * mpz/stronglucas.c: New file, strong Lucas primality test. 803 * Makefile.am (MPZ_OBJECTS): Add it. 804 * mpz/Makefile.am (libmpz_la_SOURCES): Add it. 805 * gmp-impl.h: Declare mpz_stronglucas. 806 807 * mpz/millerrabin.c: Implement BPSW test for primality. 808 8092018-11-07 Torbjörn Granlund <tg@gmplib.org> 810 811 * configure.ac (arm): Support a12 and a17. 812 * config.sub: Generalise arm matching. 813 * config.guess: Recognise additional arm CPUs. 814 815 * mpn/arm/arm-defs.m4 (ASM_START): Provide local definition. 816 8172018-10-30 Torbjörn Granlund <tg@gmplib.org> 818 819 * mpn/arm/v7a/cora17/mod_34lsub1.asm: New file. 820 * mpn/arm/v7a/cora17/gmp-mparam.h: New file. 821 * mpn/arm/v7a/cora17/mul_1.asm: New grabber file. 822 * mpn/arm/v7a/cora17/addmul_1.asm: Likewise. 823 * mpn/arm/v7a/cora17/submul_1.asm: Likewise. 824 8252018-10-18 Marco Bodrato <bodrato@mail.dm.unipi.it> 826 827 * mpn/generic/fib2_ui.c: Simplify the possible -2 case. 828 8292018-07-19 Marco Bodrato <bodrato@mail.dm.unipi.it> 830 831 * mpz/millerrabin.c (mod_eq_m1): New function, equality with -1. 832 * mpz/powm_ui.c: Small optimisations. 833 8342018-07-03 Torbjörn Granlund <tg@gmplib.org> 835 836 * mpn/x86_64/lshift.asm: Remove cnt = 1 special code. 837 838 * mpn/x86_64/silvermont/popcount.asm: Add missing ABI_SUPPORT decls. 839 * mpn/x86_64/silvermont/hamdist.asm: Likewise. 840 * mpn/x86_64/zen/mul_1.asm: Likewise. 841 842 * mpn/x86_64/fastsse/lshift.asm: Support DOS64. 843 * mpn/x86_64/fastsse/lshiftc.asm: Likewise. 844 845 * mpn/x86_64/pentium4/gmp-mparam.h: Retune. 846 8472018-07-01 Torbjörn Granlund <tg@gmplib.org> 848 849 * lshift.asm: Replace with grabber file. 850 * lshiftc.asm: Replace with grabber file. 851 * x86_64/pentium4/addmul_2.asm: New grabber file. 852 * x86_64/pentium4/aorsmul_1.asm: New grabber file. 853 * x86_64/pentium4/mul_1.asm: New grabber file. 854 * x86_64/pentium4/mul_2.asm: New grabber file. 855 * x86_64/pentium4/mul_basecase.asm: New grabber file. 856 * x86_64/pentium4/mullo_basecase.asm: New grabber file. 857 * x86_64/pentium4/redc_1.asm: New grabber file. 858 * x86_64/pentium4/sqr_basecase.asm: New grabber file. 859 8602018-06-13 Niels Möller <nisse@lysator.liu.se> 861 862 * mpn/generic/gcd_1.c (mpn_gcd_1): Delete unused code variant for 863 GCD_1_METHOD == 1, and delete GCD_1_METHOD macro. Simplify the 864 structure of the remaining code variant, without gotos to the 865 mid-loop strip_u_maybe label. 866 8672018-05-30 Torbjörn Granlund <tg@gmplib.org> 868 869 * configure.ac (x86): Provide goldmont specific path. 870 871 * mpn/x86_64/goldmont/gmp-mparam.h: New file. 872 8732018-05-29 Torbjörn Granlund <tg@gmplib.org> 874 875 * configure.ac (x86): Pass more exact arch/tune options for nehalem. 876 8772018-05-28 Niels Möller <nisse@lysator.liu.se> 878 879 * mpn/generic/gcd_1.c (mpn_gcd_1) [USE_ZEROTAB]: Delete unused code 880 variant for USE_ZEROTAB != 0. 881 8822018-05-20 Marco Bodrato <bodrato@mail.dm.unipi.it> 883 884 * bootstrap.c: Define DONT_USE_FLOAT_H before including mini-gmp. 885 8862018-05-14 Marco Bodrato <bodrato@mail.dm.unipi.it> 887 888 * mpn/generic/dcpi1_bdiv_q.c (mpn_dcpi1_bdiv_q_n): Decl. static. 889 (mpn_dcpi1_bdiv_q_n_itch): Declare static. 890 * mpn/generic/dcpi1_divappr_q.c (mpn_dcpi1_divappr_q_n): static. 891 * mpn/generic/matrix22_mul.c (mpn_matrix22_mul_strassen): static. 892 * mpn/generic/mu_div_qr.c (mpn_mu_div_qr_choose_in): static. 893 * mpn/generic/mu_divappr_q.c (mpn_preinv_mu_divappr_q): static. 894 (mpn_mu_divappr_q_choose_in): static. 895 * gmp-impl.h: Remove declaration of previous functions. 896 897 * mpn/generic/get_d.c: Enhance generic code using DBL_MANT_DIG. 898 899 * printf/repl-vsnprintf.c: Better handling floating-point 900 specifiers "EeGgFf" (Thanks Vincent Lefevre). 901 9022018-05-04 Marco Bodrato <bodrato@mail.dm.unipi.it> 903 904 * doc/gmp.texi (mpq_*_str): Document the full base allowed range. 905 * mpq/get_str.c: Make all bases either work or return an error. 906 907 * doc/gmp.texi (Integer Internals): Lazy allocation and read-only. 908 9092018-04-27 Niels Möller <nisse@lysator.liu.se> 910 911 * mpn/generic/div_q.c (mpn_div_q): Replace dead code with ASSERT. 912 Spotted by Paul Zimmermann and Raphaël Rieu-Hleft. 913 914 * tests/mpn/t-div.c (main): Fill quotient area with junk before 915 calling mpn_div_q. 916 9172018-04-26 Marco Bodrato <bodrato@mail.dm.unipi.it> 918 919 * Makefile.am (EXTRA_DIST): Add mini-gmp/mini-mpq.[ch]. 920 9212018-04-23 Marco Bodrato <bodrato@mail.dm.unipi.it> 922 923 * mpn/generic/toom2_sqr.c: Handle the cy=-1 branch slightly faster. 924 * mpn/generic/toom22_mul.c: Likewise. (Thanks Paul and Raphaël!) 925 9262018-04-22 Niels Möller <nisse@lysator.liu.se> 927 928 From Martin Storsjö: 929 * configure.ac (aarch64): Just as on windows/x86_64, "long" still 930 is 32 bit on aarch64. To distinguish between 32-bit and 64-bit 931 ABI, test sizeof(void*) instead of sizeof(long). Use long long for 932 mp_limb_t for mingw targets. 933 * acinclude.m4 (GMP_C_TEST_SIZEOF): Allow '*' in the type name, 934 e.g., void*. 935 9362018-04-18 Marc Glisse <marc.glisse@inria.fr> 937 938 * mpq/clear.c: Handle lazy numerator. 939 * mpq/clears.c: Likewise. 940 * mpq/init.c: Likewise. 941 * mpq/set_si.c: Likewise. 942 * mpq/set_ui.c: Likewise. 943 944 * tests/cxx/t-ops2z.cc: Add parentheses to quiet a warning. 945 9462018-03-28 Torbjörn Granlund <tg@gmplib.org> 947 948 * configure.ac (mips): Recognise "mipsisa64*". 949 9502018-03-23 Torbjörn Granlund <tg@gmplib.org> 951 952 * mpn/generic/sec_powm.c: Remove unused macros. 953 Simplify code for choosing between redc_1 and redc_2. 954 Compute power table with squaring for even powers. 955 9562018-02-28 Marco Bodrato <bodrato@mail.dm.unipi.it> 957 958 * gmpxx.h (__gmp_binary_plus): Special case for mpq + 1. 959 (__gmp_binary_minus): Special case for mpq - 1. 960 (__gmp_binary_equal): Optimised comparison mpq == integer. 961 * tests/cxx/t-ops2qf.cc (checkqf): Some check for +/- 1, +/- 0. 962 9632018-02-18 Marco Bodrato <bodrato@mail.dm.unipi.it> 964 965 * tune/Makefile.am: Disallow parallel make (thanks Vincent Lefevre). 966 * mpq/swap.c: Use *_SWAP_* macros. 967 * mpq/cmp_ui.c: One more little shortcut, comparing fractions to 1. 968 * mpq/get_d.c: Compare (zeros > 0) once, replace tdiv_qr with div_q. 969 * mpq/equal.c: Check size early. 970 971 * printf/obprintf.c: Adda dummy typedef to avoid empty unit. 972 * printf/obvprintf.c: Likewise. 973 * printf/obprntffuns.c: Likewise. 974 * printf/repl-vsnprintf.c: Move #ifdef after #include gmp-impl.h . 975 9762018-02-09 Torbjörn Granlund <tg@gmplib.org> 977 978 * mpn/arm: Really revert 2018-01-04 changes. 979 9802018-02-08 Marco Bodrato <bodrato@mail.dm.unipi.it> 981 982 * printf/snprntffuns.c: Report -1 as an error. 983 * acinclude.m4 (GMP_FUNC_VSNPRINTF): Refuse -1 as return value. 984 985 * mpz/bin_uiui.c (mpz_smallk_bin_uiui): One more shortcut for small k. 986 * gmp-impl.h (popc_limb): Use fewer constants (GMP_LIMB_BITS == 16). 987 * mpz/divegcd.c (mpz_divexact_limb): Use MPN_DIVREM_OR_DIVEXACT_1. 988 * primesieve.c (fill_bitpattern): Use MPN_FILL. 989 9902018-02-01 Marc Glisse <marc.glisse@inria.fr> 991 992 * longlong.h (i586): Remove assert. 993 9942018-01-30 Marco Bodrato <bodrato@mail.dm.unipi.it> 995 996 * mpz/and.c: Rearrange the 3 cases, both <0, both >=0, one and one. 997 * mpz/ior.c: Likewise. 998 * mpz/xor.c: Likewise. 999 1000 * mpz/bin_uiui.c (mul[4-8]): Reduce the number of multiplications. 1001 1002 * printf/doprnt.c: Use __GMP_FREE_FUNC_TYPE. 1003 * printf/doprntf.c: Likewise. 1004 * printf/snprntffuns.c: Likewise, and use size_t instead of int. 1005 10062018-01-15 Marco Bodrato <bodrato@mail.dm.unipi.it> 1007 1008 * tests/mpz/t-bin.c: Extended tests for bin_ui and uint border cases. 1009 10102018-01-10 Torbjörn Granlund <tg@gmplib.org> 1011 1012 * mpn/x86/fat/fat.c (__gmpn_cpuvec_init): Fix old pentium recog. 1013 * config.guess: Likewise. 1014 1015 * mpn/x86/fat/fat.c (__gmpn_cpuvec_init): Add many 64-bit CPUs. 1016 10172018-01-07 Torbjörn Granlund <tg@gmplib.org> 1018 1019 * mpn/arm: Revert last change, it hides a symbol needed for testing. 1020 10212018-01-04 Torbjörn Granlund <tg@gmplib.org> 1022 1023 * bdiv_q_1.asm (binvert_limb_table): Declare as ".hidden". 1024 * v7a/cora8/bdiv_q_1.asm: Likewise. 1025 * dive_1.asm: Likewise. 1026 * v6/dive_1.asm: Likewise. 1027 1028 * mode1o.asm (binvert_limb_table): Remove ".protected", add ".hidden". 1029 * v6/mode1o.asm: Likewise. 1030 10312018-01-02 Torbjörn Granlund <tg@gmplib.org> 1032 1033 * mpn/powerpc64/mode64/divrem_2.asm: Use different rlwinm variant (to 1034 appease clang). 1035 10362018-01-01 Torbjörn Granlund <tg@gmplib.org> 1037 1038 * mpn/powerpc32/powerpc-defs.m4: Define maddld, maddhdu, popcntd, and 1039 divdeu. 1040 * mpn/powerpc64/mode64/p8/invert_limb.asm: Use new insn defs. 1041 * mpn/powerpc64/mode64/p9/addmul_1.asm: Use new insn defs. 1042 * mpn/powerpc64/p7/hamdist.asm: Use new insn defs. 1043 * mpn/powerpc64/p7/popcount.asm: Use new insn defs. 1044 10452017-12-31 Torbjörn Granlund <tg@gmplib.org> 1046 1047 * mpn/powerpc64/mode64/p9/addmul_1.asm: Moved from 1048 mpn/powerpc64/p9/addmul_1.asm. 1049 10502017-12-30 Marco Bodrato <bodrato@mail.dm.unipi.it> 1051 1052 * mpz/bin_ui.c: Rewrite, using Fredrik Johansson's suggestions. 1053 10542017-12-27 Niels Möller <nisse@lysator.liu.se> 1055 1056 * longlong.h (arm32/arm64): Leave COUNT_LEADING_ZEROS_0 undefined, 1057 since we use gcc's __builtin_clzl, which doesn't allow zero inputs. 1058 10592017-12-27 Torbjörn Granlund <tg@gmplib.org> 1060 1061 * mpn/powerpc64/mode64/bdiv_q_1.asm: Use 64-bit cmp for sizes. 1062 1063 * mpn/powerpc64/p9/addmul_1.asm: New file. 1064 1065 * configure.ac: Separate handling of POWER8 and POWER9. 1066 1067 * config.guess: Recognise POWER9 and more variants of POWER8. 1068 Reorder recog code to favour PVR over proc/cpuinfo. 1069 10702017-12-14 Torbjörn Granlund <tg@gmplib.org> 1071 1072 * mpn/x86_64/fastsse/com.asm: Adhere to DOS64 xmm callee-saves rules. 1073 * mpn/x86_64/fastsse/com-palignr.asm: Likewise. 1074 * mpn/x86_64/fastsse/copyd.asm: Likewise. 1075 * mpn/x86_64/fastsse/copyi.asm: Likewise. 1076 * mpn/x86_64/fastsse/lshiftc.asm: Likewise. 1077 * mpn/x86_64/fastsse/sec_tabselect.asm: Likewise. 1078 10792017-12-11 Torbjörn Granlund <tg@gmplib.org> 1080 1081 * mpn/x86_64/bd1/aorrlsh_n.asm: New grabber file. 1082 10832017-12-10 Torbjörn Granlund <tg@gmplib.org> 1084 1085 * mpn/x86_64/bd1/aors_n.asm: New grabber file. 1086 1087 * mpn/x86_64/bd4/aorrlsh_n.asm: New grabber file. 1088 10892017-08-31 Torbjörn Granlund <tg@gmplib.org> 1090 1091 * mpn/sparc32/sparc-defs.m4 (LEA64): Rewrite for both PIC and non-PIC. 1092 1093 * mpn/sparc64/ultrasparct3/cnd_aors_n.asm: Allow arbitrary cnd arg. 1094 10952017-08-29 Torbjörn Granlund <tg@gmplib.org> 1096 1097 * mpn/x86_64/silvermont/gmp-mparam.h: Disable mul_2 and addmul_2. 1098 10992017-08-28 Torbjörn Granlund <tg@gmplib.org> 1100 1101 * mpn/sparc64: Revert 2017-07-23 PIC changes. 1102 1103 * mpn/powerpc32/divrem_2.asm: Avoid bc+ insn form to accommodate clang. 1104 1105 * mpn/generic/sbpi1_bdiv_qr.c: Correct ASSERT. 1106 * mpn/generic/sbpi1_bdiv_q.c: Likewise. 1107 * mpn/generic/sbpi1_bdiv_r.c: Likewise. 1108 11092017-08-18 Torbjörn Granlund <tg@gmplib.org> 1110 1111 * acinclude.m4 (X86_64_PATTERN): Match zen*. 1112 1113 * configure.ac (x86): Support AVX challenged systems for Zen. 1114 11152017-07-24 Torbjörn Granlund <tg@gmplib.org> 1116 1117 * mpn/generic/sbpi1_bdiv_q.c: Add ASSERT for inverse correctness. 1118 * mpn/generic/sbpi1_bdiv_qr.c: Likewise. 1119 1120 * tests/mpn/t-bdiv.c (main): Amend last change. 1121 1122 * tests/devel/try.c (choice_array): Amend 2013-05-03 change to include 1123 more functions. 1124 11252017-07-23 Torbjörn Granlund <tg@gmplib.org> 1126 1127 * mpn/sparc64/gcd_1.asm: Enforce PIC as GNU/Linux toolchain workaround. 1128 * mpn/sparc64/ultrasparct3/bdiv_q_1.asm: Likewise. 1129 * mpn/sparc64/ultrasparct3/dive_1.asm: Likewise. 1130 * mpn/sparc64/ultrasparct3/invert_limb.asm: Likewise. 1131 * mpn/sparc64/ultrasparct3/mode1o.asm: Likewise. 1132 1133 * gmp-impl.h: Reorganise foolshC_ip1 -> foolshC -> foolsh chain to make 1134 it transitive. 1135 11362017-07-23 Niels Möller <nisse@lysator.liu.se> 1137 1138 * longlong.h: Purge definitions of obsolete UMUL_TIME and 1139 UDIV_TIME constants. Also mentioned (but unused) in 1140 mpn/cray/gmp-mparam.h and tune/common.c. 1141 11422017-07-21 Torbjörn Granlund <tg@gmplib.org> 1143 1144 * tests/mpn/t-bdiv.c (main): Test mpn_sbpi1_bdiv_r. 1145 1146 * tune/common.c (speed_mpn_sbpi1_bdiv_r): New function. 1147 * tune/speed.h: Declare it. 1148 (SPEED_ROUTINE_MPN_PI1_BDIV_R): New macro. 1149 * tune/speed.c (routine): Add mpn_sbpi1_bdiv_r. 1150 11512017-07-20 Torbjörn Granlund <tg@gmplib.org> 1152 1153 * configure.ac (gmp_mpn_functions): Add sbpi1_bdiv_r. 1154 1155 * gmp-impl.h (mpn_sbpi1_bdiv_r): Declare. 1156 1157 * mpn/asm-defs.m4 (define_mpn): Add sbpi1_bdiv_q, sbpi1_bdiv_qr, 1158 sbpi1_bdiv_r. 1159 1160 * mpn/generic/sbpi1_bdiv_r.c: New file. 1161 * mpn/x86_64/zen/sbpi1_bdiv_r.asm: New file. 1162 11632017-07-19 Torbjörn Granlund <tg@gmplib.org> 1164 1165 * mpn/x86/p6/sse2/submul_1.asm: Get pentium4 code instead of k6 code 1166 for better speed on modern Intel P6 cores. 1167 11682017-07-02 Torbjörn Granlund <tg@gmplib.org> 1169 1170 * tune/tuneup.c (tune_mullo): For MULLO_BASECASE_THRESHOLD start at 2. 1171 (tune_sqrlo): Likewise. 1172 11732017-06-28 Torbjörn Granlund <tg@gmplib.org> 1174 1175 * tests/Makefile.am tests/*/Makefile.am tune/Makefile.am (AM_LDFLAGS): 1176 Define. (Thanks to Emmanuel Thomé and Vincent Lefevre.) 1177 11782017-06-27 Torbjörn Granlund <tg@gmplib.org> 1179 1180 * mpn/x86_64/zen/sqr_basecase.asm: Expand to use 4 addmul_1 loops. 1181 1182 * mpn/x86_64/x86_64-defs.m4 (sarx): New macro. 1183 11842017-06-26 Torbjörn Granlund <tg@gmplib.org> 1185 1186 * mpn/x86_64/coreibwl/sqr_basecase.asm: Rewrite to do 2x and limb 1187 squaring in main loop. 1188 11892017-06-20 Torbjörn Granlund <tg@gmplib.org> 1190 1191 * mpn/x86_64/atom/cnd_add_n.asm: New grabber file. 1192 * mpn/x86_64/atom/cnd_sub_n.asm: Likewise. 1193 1194 * mpn/x86_64/coreihwl/aorrlsh_n.asm: New grabber file. 1195 11962017-06-16 Torbjörn Granlund <tg@gmplib.org> 1197 1198 * mpn/x86_64/zen/mul_basecase.asm: Do overlapped software pipelining. 1199 1200 * mpn/x86_64/silvermont/mul_basecase.asm: New grabber file. 1201 * mpn/x86_64/silvermont/sqr_basecase.asm: Likewise. 1202 * mpn/x86_64/silvermont/mullo_basecase.asm: Likewise. 1203 12042017-06-14 Torbjörn Granlund <tg@gmplib.org> 1205 1206 * mpn/x86_64/zen/mullo_basecase.asm: New file. 1207 * mpn/x86_64/coreibwl/mullo_basecase.asm: New file. 1208 12092017-06-11 Torbjörn Granlund <tg@gmplib.org> 1210 1211 * mpn/x86_64/popham.asm: Crossjump for code size and mix lead-in insns 1212 for lower overhead. 1213 12142017-06-09 Torbjörn Granlund <tg@gmplib.org> 1215 1216 * configure.ac: Set GMP_NONSTD_ABI protecting against dots in the abi. 1217 (hppa): Remove old GNU/Linux restriction to 32-bit ABI. 1218 12192017-06-07 Torbjörn Granlund <tg@gmplib.org> 1220 1221 * mpn/x86_64/bd1/addmul_2.asm: New file. 1222 12232017-06-06 Torbjörn Granlund <tg@gmplib.org> 1224 1225 * mpn/x86_64/coreihwl/aors_n.asm: New file. 1226 1227 * mpn/x86_64/x86_64-defs.m4 (c4_helper): New macro. 1228 (mulx, shlx, shrx): Use c4_helper. 1229 1230 * mpn/x86_64/zen/mul_basecase.asm: Use 8-bit imm operands for "test". 1231 1232 * mpn/x86_64/zen/aorrlsh1_n.asm: New grabber file. 1233 * mpn/x86_64/zen/sublsh1_n.asm: Likewise. 1234 * mpn/x86_64/zen/aorrlsh_n.asm: New file 1235 12362017-06-04 Torbjörn Granlund <tg@gmplib.org> 1237 1238 * configure.ac: Use bt1/bt2 for bobcat and jaguar dirs. 1239 (fat_path): Add x86_64/bt2. 1240 1241 * mpn/x86_64/fat/fat.c (__gmpn_cpuvec_init): Adapt to bt1/bt2 changes. 1242 Make zen path correspond to non-fat path. 1243 * mpn/x86/fat/fat.c (__gmpn_cpuvec_init): Adapt to bt1/bt2 changes. 1244 1245 * mpn/x86_64/bt2/copyi.asm: New grabber file. 1246 * mpn/x86_64/bt2/copyd.asm: New grabber file. 1247 * mpn/x86_64/bt2/com.asm: New grabber file. 1248 12492017-06-03 Torbjörn Granlund <tg@gmplib.org> 1250 1251 * mpn/x86_64/bd1/popcount.asm: Expand some instructions as .byte 1252 sequences. 1253 * mpn/x86_64/bd1/hamdist.asm: Likewise. 1254 12552017-06-02 Torbjörn Granlund <tg@gmplib.org> 1256 1257 * mpn/x86_64/x86_64-defs.m4 (DEF_OBJECT): Fix quoting (amends recent 1258 change). 1259 (JUMPTABSECT): Get rid of spurious "w". 1260 12612017-06-02 Marc Glisse <marc.glisse@inria.fr> 1262 1263 * gmpxx.h (mpf_class::operator bool): Use mpf_sgn to access _mp_size. 1264 12652017-06-02 Torbjörn Granlund <tg@gmplib.org> 1266 1267 * mpn/x86_64/bd1/popcount.asm: Use both SSE and XOP trickery, and 1268 plain popcnt insn. 1269 * mpn/x86_64/bd1/hamdist.asm: Likewise. 1270 12712017-06-01 Torbjörn Granlund <tg@gmplib.org> 1272 1273 * mpn/x86_64/x86_64-defs.m4 (DEF_OBJECT): Allow 3rd argument defining 1274 section, while making alignment argument non-optional. 1275 1276 * mpn/x86_64/core2/popcount.asm: Use 3-operand DEF_OBJECT. 1277 * mpn/x86_64/core2/hamdist.asm: Likewise. 1278 * mpn/x86_64/bd1/popcount.asm: Likewise. 1279 * mpn/x86_64/bd1/hamdist.asm: Likewise. 1280 1281 * configure.ac (GMP_AVX_NOT_REALLY_AVAILABLE): New m4 define. 1282 * mpn/x86_64/bd1/popcount.asm: Use GMP_AVX_NOT_REALLY_AVAILABLE. 1283 * mpn/x86_64/bd1/hamdist.asm: Likewise. 1284 1285 * mpn/x86_64/silvermont/popcount.asm: Reinstate, grabbing nehalem code. 1286 * mpn/x86_64/silvermont/hamdist.asm: Replace with grabber. 1287 12882017-05-31 Torbjörn Granlund <tg@gmplib.org> 1289 1290 * mpn/x86_64/silvermont/popcount.asm: Remove. 1291 1292 * mpn/x86_64/core2/logops_n.asm: New file. 1293 12942017-05-30 Torbjörn Granlund <tg@gmplib.org> 1295 1296 * mpn/x86_64/coreisbr/popcount.asm: Remove. 1297 12982017-05-29 Torbjörn Granlund <tg@gmplib.org> 1299 1300 * mpn/x86_64/coreinhm/popcount.asm: Replace grabber code with 1301 implementation proper. 1302 * mpn/x86_64/coreinhm/hamdist.asm: Likewise. 1303 * mpn/x86_64/bd1/popcount.asm: Likewise. 1304 * mpn/x86_64/bd1/hamdist.asm: Likewise. 1305 * mpn/x86_64/core2/popcount.asm: Likewise. 1306 * mpn/x86_64/core2/hamdist.asm: New file. 1307 13082017-05-22 Torbjörn Granlund <tg@gmplib.org> 1309 1310 * mpn/x86_64/core2/com.asm: New grabber file. 1311 1312 * mpn/x86_64/core2/lshift.asm: Rewrite. 1313 * mpn/x86_64/core2/rshift.asm: Rewrite. 1314 * mpn/x86_64/core2/lshiftc.asm: Rewrite. 1315 13162017-05-16 Torbjörn Granlund <tg@gmplib.org> 1317 1318 * mpn/x86_64/zen/mul_1.asm: Port to DOS64. 1319 * mpn/x86_64/zen/aorsmul_1.asm: Likewise. 1320 * mpn/x86_64/coreibwl/addmul_1.asm: Likewise. 1321 13222017-05-16 Niels Möller <nisse@lysator.liu.se> 1323 1324 * mpn/generic/divis.c (mpn_divisible_p): Updated the divisibility 1325 test; bdiv now returns R = D rather than R = 0 when D divides a 1326 non-zero U. 1327 1328 * mpn/generic/binvert.c (mpn_binvert): Negate bdiv quotient. 1329 * mpn/generic/divexact.c (mpn_divexact): Likewise. 1330 * mpn/generic/remove.c (mpn_remove): Likewise. 1331 * mpz/bin_uiui.c (mpz_bdiv_bin_uiui): Likewise. 1332 1333 * tests/mpn/t-bdiv.c (check_one): Updated to new convention, 1334 B^{qn} R = U + QD. 1335 1336 * mpn/generic/sbpi1_bdiv_qr.c (mpn_sbpi1_bdiv_qr): Reimplemented, 1337 for new bdiv convention. 1338 * mpn/generic/sbpi1_bdiv_q.c (mpn_sbpi1_bdiv_q): Likewise. 1339 * mpn/generic/dcpi1_bdiv_q.c (mpn_dcpi1_bdiv_q_n) 1340 (mpn_dcpi1_bdiv_q): Adapted to new bdiv convention. 1341 * mpn/generic/dcpi1_bdiv_qr.c (mpn_dcpi1_bdiv_qr_n) 1342 (mpn_dcpi1_bdiv_qr): Likewise. 1343 * mpn/generic/mu_bdiv_qr.c (mpn_mu_bdiv_qr): Adapted to new bdiv 1344 convention, using a wrapper calling the old function. 1345 * mpn/generic/mu_bdiv_q.c (mpn_mu_bdiv_q): Likewise. 1346 13472017-05-03 Torbjörn Granlund <tg@gmplib.org> 1348 1349 * mpn/x86_64/coreisbr/cnd_aors_n.asm: New file. 1350 * mpn/x86_64/coreisbr/cnd_add_n.asm: New file. 1351 1352 * mpn/x86_64/core2/aorsmul_1.asm: Tune. 1353 1354 * mpn/x86_64/silvermont/mul_1.asm: New file, grabbing another asm file. 1355 * mpn/x86_64/silvermont/aorsmul_1.asm: Likewise. 1356 * mpn/x86_64/silvermont/aorrlsh1_n.asm: Likewise. 1357 * mpn/x86_64/silvermont/aorrlsh2_n.asm: Likewise. 1358 * mpn/x86_64/silvermont/lshift.asm: Likewise. 1359 * mpn/x86_64/silvermont/rshift.asm: Likewise. 1360 * mpn/x86_64/silvermont/lshiftc.asm: Likewise. 1361 1362 * mpn/x86_64/zen/mul_basecase.asm: Split outer loop into 4 loops. 1363 13642017-05-02 Torbjörn Granlund <tg@gmplib.org> 1365 1366 * mpn/x86_64/zen/sqr_basecase.asm: Use .byte for encoding all mulx. 1367 Misc tuning. 1368 13692017-04-27 Torbjörn Granlund <tg@gmplib.org> 1370 1371 * mpn/x86_64/zen/sqr_basecase.asm: Rewrite to do 2x and limb squaring 1372 in main loop. 1373 13742017-04-25 Torbjörn Granlund <tg@gmplib.org> 1375 1376 * mpn/x86_64/fat/fat_entry.asm: Allocate correct DOS64 frame. 1377 * mpn/x86_64/divrem_2.asm: Likewise. 1378 * mpn/x86_64/mod_1_2.asm: Likewise. 1379 * mpn/x86_64/mod_1_4.asm: Likewise. 1380 * mpn/x86_64/mod_1_1.asm: Likewise. 1381 13822017-04-23 Torbjörn Granlund <tg@gmplib.org> 1383 1384 * mpn/x86_64/coreisbr/mul_1.asm: Rewrite feed-in code and add mul_1c 1385 entry point. 1386 13872017-04-17 Torbjörn Granlund <tg@gmplib.org> 1388 1389 * mpn/x86_64/fat/fat.c (__gmpn_cpuvec_init): Amend last change. 1390 1391 * mpn/x86_64/zen/mul_basecase.asm: New file. 1392 * mpn/x86_64/zen/sqr_basecase.asm: New file. 1393 13942017-04-16 Torbjörn Granlund <tg@gmplib.org> 1395 1396 * mpn/generic/sqr_basecase.c (addmul_1 variant): Rewrite to compute 1397 in-place and to avoid a re-computation. 1398 1399 * configure.ac: Remove k8, k10 from zen path. 1400 14012017-04-15 Torbjörn Granlund <tg@gmplib.org> 1402 1403 * mpn/x86_64/zen/gmp-mparam.h: New file. 1404 1405 * mpn/x86_64/zen/com.asm: New file, grabbing another asm file. 1406 * mpn/x86_64/zen/copyd.asm: Likewise. 1407 * mpn/x86_64/zen/copyi.asm: Likewise. 1408 * mpn/x86_64/zen/gcd_1.asm: Likewise. 1409 * mpn/x86_64/zen/hamdist.asm: Likewise. 1410 * mpn/x86_64/zen/lshift.asm: Likewise. 1411 * mpn/x86_64/zen/lshiftc.asm: Likewise. 1412 * mpn/x86_64/zen/popcount.asm: Likewise. 1413 * mpn/x86_64/zen/rshift.asm: Likewise. 1414 1415 * config.guess: Recognise AMD zen. 1416 * acinclude.m4 (X86_64_PATTERN): Add zen. 1417 * config.sub: Corresponding changes. 1418 * configure.ac: Corresponding changes. 1419 * mpn/x86_64/fat/fat.c: Corresponding changes. 1420 14212017-03-27 Marco Bodrato <bodrato@mail.dm.unipi.it> 1422 1423 * mpz/oddfac_1.c (limb_apprsqrt): Better approximation. 1424 * mpz/bin_uiui.c (limb_apprsqrt): Likewise. 1425 14262017-03-12 Torbjörn Granlund <tg@gmplib.org> 1427 1428 * tests/mpf/t-get_d_2exp.c (check_data): Rewrite of check_onebit. 1429 14302017-03-08 Marco Bodrato <bodrato@mail.dm.unipi.it> 1431 1432 * mpn/generic/sqrtrem.c: Direct use of sqrtrem2 when n==2. 1433 * mpn/generic/div_qr_2.c (udiv_qr_4by2): Replace add_csaac with add_sssaaaa. 1434 14352017-03-07 Torbjörn Granlund <tg@gmplib.org> 1436 1437 * mpf/get_d_2exp.c: Return negative value for negative input. 1438 14392017-03-06 Torbjörn Granlund <tg@gmplib.org> 1440 1441 * longlong.h (aarch64): Provide asm-free umul_ppmm. 1442 * longlong.h (powerpc64): Enable asm-free umul_ppmm. 1443 14442017-03-04 Torbjörn Granlund <tg@gmplib.org> 1445 1446 * mpn/arm64/sqr_diag_addlsh1.asm: Complete rewrite. 1447 14482017-02-27 Torbjörn Granlund <tg@gmplib.org> 1449 1450 * longlong.h (arm32/arm64): Remove useless comparison to 0 introduced 1451 in last change (spotted by Marco). 1452 14532017-02-26 Marco Bodrato <bodrato@mail.dm.unipi.it> 1454 1455 * mpn/generic/pow_1.c: Use umul_ppmm for a single limb. 1456 14572017-02-25 Torbjörn Granlund <tg@gmplib.org> 1458 1459 * configure.ac: Allow MP_SIZE_T_MAX for thresholds exported to 1460 config.m4. 1461 1462 * mpn/x86_64/gcd_1.asm: Handle BMOD_1_TO_MOD_1_THRESHOLD=MP_SIZE_T_MAX. 1463 Streamline non-reduction path. 1464 * mpn/x86_64/core2/gcd_1.asm: Streamline small operands cases similarly 1465 to top-level code. 1466 14672017-02-24 Torbjörn Granlund <tg@gmplib.org> 1468 1469 * longlong.h (arm32/arm64 add_ssaaaa): Use "subs" for some immediates. 1470 * longlong.h (arm32/arm64 sub_ddmmss): Use "adds" for some immediates. 1471 1472 * mpn/arm64/copyi.asm: Avoid branching on flags. 1473 * mpn/arm64/copyd.asm: Likewise. 1474 1475 * mpn/generic/div_qr_2.c (aarch64 add_sssaaaa): New. 1476 * mpn/generic/div_qr_1n_pi2.c: Same. 1477 * mpn/generic/div_qr_1u_pi2.c: Same. 1478 1479 * mpn/generic/div_qr_2.c (powerpc add_sssaaaa): Fix typo. 1480 * mpn/generic/div_qr_1n_pi2.c: Same. 1481 * mpn/generic/div_qr_1u_pi2.c: Same. 1482 14832017-02-23 Marco Bodrato <bodrato@mail.dm.unipi.it> 1484 1485 * tests/devel/sqrtrem_1_2.c: New exhaustive test for sqrtrem_[12]. 1486 * tests/devel/Makefile.am (EXTRA_PROGRAMS): add it. 1487 14882017-02-23 Torbjörn Granlund <tg@gmplib.org> 1489 1490 * mpn/x86_64/silvermont/gmp-mparam.h: New file. 1491 14922017-02-22 Torbjörn Granlund <tg@gmplib.org> 1493 1494 * mpn/arm64/aorsmul_1.asm: Rewrite. 1495 1496 * mpn/arm64/lshiftc.asm: New file. 1497 14982017-02-21 Torbjörn Granlund <tg@gmplib.org> 1499 1500 * mpn/arm64/lshift.asm: Rewrite. 1501 * mpn/arm64/rshift.asm: Rewrite. 1502 1503 * mpn/arm64/rsh1aors_n.asm: New file. 1504 15052017-02-19 Torbjörn Granlund <tg@gmplib.org> 1506 1507 * mpn/arm64/mul_1.asm: Rewrite. 1508 * mpn/arm64/xgene1/mul_1.asm: Remove. 1509 15102017-02-17 Torbjörn Granlund <tg@gmplib.org> 1511 1512 * mpn/arm64/cora53/cnd_aors_n.asm: Moved from "..". 1513 1514 * mpn/arm64/xgene1/cnd_aors_n.asm: Remove file since default code 1515 performs better. 1516 1517 * mpn/arm64/cnd_aors_n.asm: Rewrite. 1518 1519 * mpn/arm64/logops_n.asm: Rewrite based on new aors_n.asm. 1520 15212017-02-16 Pedro Gimeno <pggimeno@wanadoo.es> 1522 1523 * rand/randmt.c (__gmp_randiset_mt): Set generator functions from 1524 source. 1525 15262017-02-16 Torbjörn Granlund <tg@gmplib.org> 1527 1528 * mpn/arm64/aorsorrlshC_n.asm: New file. 1529 * mpn/arm64/aorsorrlsh2_n.asm: New file. 1530 * mpn/arm64/aorsorrlsh1_n.asm: New file. 1531 1532 * mpn/arm64/xgene1/aors_n.asm: Remove file since default code now 1533 performs similarly. 1534 1535 * mpn/arm64/aors_n.asm: Rewrite to use 4x unrolling. 1536 15372017-02-15 Torbjörn Granlund <tg@gmplib.org> 1538 1539 * mpn/x86_64/silvermont/hamdist.asm: New file, based on k10 code. 1540 1541 * mpn/x86_64/silvermont/popcount.asm: Grab coreisbr/popcount.asm. 1542 15432017-02-14 Torbjörn Granlund <tg@gmplib.org> 1544 1545 * mpn/x86_64/silvermont/aors_n.asm: New file, grabbing coreisbr code. 1546 1547 * mpn/x86_64/atom/aors_n.asm: Replace coreisbr grabbing code with 1548 code based on Marco's x64/atom/aors_n.asm. 1549 15502017-02-12 Torbjörn Granlund <tg@gmplib.org> 1551 1552 * mpn/powerpc64/aix.m4 (AIX): New define. 1553 1554 * mpn/powerpc64/mode64/bdiv_q_1.asm: For AIX, don't jump from 1555 mpn_bdiv_q_1 to middle of mpn_pi1_bdiv_q_1. Streamline. 1556 1557 * mpn/powerpc64/darwin.m4 (LEA): Put code in lea_list instead of in 1558 EPILOGUE_cpu. 1559 (EPILOGUE_cpu): Output lea_list, the zap it. 1560 1561 * mpn/sparc64/ultrasparct3/bdiv_q_1.asm: New file, based on dive_1.asm. 1562 15632017-02-11 Torbjörn Granlund <tg@gmplib.org> 1564 1565 * mpn/arm/v7a/cora8/bdiv_q_1.asm: New file, based on v6/dive_1.asm. 1566 * mpn/arm/v7a/cora9/bdiv_q_1.asm: New file, grabbing cora8 code. 1567 * mpn/arm/v7a/cora15/bdiv_q_1.asm: Likewise. 1568 1569 * mpn/arm64/aors_n.asm: (SETCY, RETVAL): Shorten insn sequences. 1570 * mpn/arm64/cnd_aors_n.asm: Likewise. 1571 * mpn/arm64/xgene1/aors_n.asm: Likewise. 1572 * mpn/arm64/xgene1/cnd_aors_n.asm: Likewise. 1573 1574 * mpn/arm/bdiv_q_1.asm: New file, based on dive_1.asm. 1575 1576 * mpn/generic/bdiv_q_1.c (mpn_bdiv_q_1): Remove odd d special case. 1577 1578 * mpn/powerpc64/mode64/bdiv_q_1.asm: New file. 1579 1580 * mpn/arm64/bdiv_q_1.asm: New file. 1581 15822017-02-10 Torbjörn Granlund <tg@gmplib.org> 1583 1584 * mpn/arm/arm-defs.m4 (EPILOGUE_cpu): Zap lea_list to avoid repetition. 1585 1586 * mpn/x86_64/bdiv_q_1.asm: Rewrite, base on atom/dive_1.asm. 1587 15882017-02-08 Torbjörn Granlund <tg@gmplib.org> 1589 1590 * mpn/generic/compute_powtab.c: Choose mpn_pi1_bdiv_q_1 vs 1591 mpn_divexact_1 more wisely (spotted by Marco). 1592 15932017-02-07 Torbjörn Granlund <tg@gmplib.org> 1594 1595 * tune/tuneup.c (relspeed_div_1_vs_mul_1): Prefer mpn_pi1_bdiv_q_1. 1596 1597 * mpn/generic/compute_powtab.c: Use mpn_pi1_bdiv_q_1/mpn_bdiv_q_1 1598 instead of mpn_divexact_1. 1599 1600 * gen-bases.c (binvert): New function, computing modular inverse and 1601 low zero count. 1602 (header): Print MP_BASES_BIG_BASE_CTZ_10 and 1603 MP_BASES_BIG_BASE_BINVERTED_10. 1604 16052017-02-06 Torbjörn Granlund <tg@gmplib.org> 1606 1607 * mpn/generic/bdiv_q_1.c: Make return value consistent. 1608 1609 * mpn/x86/p6/mmx/gmp-mparam.h (SQR_TOOM2_THRESHOLD): Revert to bogus 1610 value to accommodate p6/sqr_basecase.asm fragility. 1611 16122017-01-29 Marco Bodrato <bodrato@mail.dm.unipi.it> 1613 1614 * mpz/and.c: Simplify branches. 1615 * mpz/ior.c: Likewise. 1616 * mpz/xor.c: Likewise. 1617 1618 * gen-bases.c: In generated file, include just gmp-impl.h, not gmp.h 1619 16202017-01-29 Torbjörn Granlund <tg@gmplib.org> 1621 1622 * configure.ac: Don't check if we got a C99 compiler for now (partially 1623 revert 2017-01-24 change as C++ compilers become rejected). 1624 16252017-01-24 Torbjörn Granlund <tg@gmplib.org> 1626 1627 * mpn/generic/compute_powtab.c: New file, providing mpn_compute_powtab 1628 for both get_str and set_str. 1629 1630 * gmp-impl.h (mpn_str_powtab_alloc): New macro. 1631 (mpn_dc_set_str_powtab_alloc, mpn_dc_get_str_powtab_alloc): Remove. 1632 (mpn_compute_powtab): Declare. 1633 1634 * mpn/generic/set_str.c: Use mpn_compute_powtab. 1635 (mpn_set_str_compute_powtab): Remove. 1636 1637 * mpn/generic/get_str.c: Use mpn_compute_powtab. 1638 (mpn_get_str_compute_powtab): Remove. 1639 (mpn_bc_get_str): New name for mpn_sb_get_str. 1640 1641 * configure.ac (gmp_mpn_functions): Add compute_powtab. 1642 1643 * tune/tuneup.c (speed_mpn_pre_set_str): Call mpn_compute_powtab. 1644 * tune/set_strb.c: Remove mpn_set_str_compute_powtab name mangling. 1645 * tune/set_strs.c: Likewise. 1646 1647 * configure.ac: Invoke AC_PROG_CC_C99 instead of AC_PROG_CC_STDC. 1648 16492017-01-03 Torbjörn Granlund <tg@gmplib.org> 1650 1651 * configure.ac (arm*-*-*): Properly point to cortex-a5 subdir. 1652 16532016-12-31 Torbjörn Granlund <tg@gmplib.org> 1654 1655 * tune/tuneup.c (relspeed_div_1_vs_mul_1): New function. 1656 16572016-12-28 Marco Bodrato <bodrato@mail.dm.unipi.it> 1658 1659 * tune/common.c (speed_mpz_mfac_uiui, speed_mpz_invert): New 1660 functions. 1661 * tune/speed.h: Declare them. 1662 * tune/speed.c (routine): Add mpz_mfac_uiui, mpz_invert. 1663 1664 * tests/mpz/t-primorial_ui.c: Add randomization to the test. 1665 * mpz/tdiv_r.c: Reduce allocation in some corner-case conditions. 1666 * mpz/tdiv_r_2exp.c: Rearrange counting non-zero limbs. 1667 * mpz/tdiv_q.c: Move common code out of some branches. 1668 * mpz/and.c: Alloc only when needed. 1669 * mpz/xor.c: Reorder branches. 1670 * mpz/gcd.c: Reorder branches. 1671 * mpz/pprime_p.c: Save the initial branch of a loop. 1672 * mpn/generic/divrem.c: Save an allocation. 1673 16742016-12-26 Torbjörn Granlund <tg@gmplib.org> 1675 1676 * longlong.h (x86_64 umul_ppmm): Add mulx variant (not automatically 1677 used). 1678 16792016-12-17 Marco Bodrato <bodrato@mail.dm.unipi.it> 1680 1681 * mpz/gcdext.c: Save an allocation if both cofactors are needed. 1682 * mpz/oddfac_1.c: Revision of all ASSERTs. 1683 * tests/mpz/t-invert.c: All elements are invertible in the zero ring. 1684 16852016-12-13 Torbjörn Granlund <tg@gmplib.org> 1686 1687 * longlong.h: Test LONGLONG_STANDALONE in two more places. 1688 16892016-12-07 Torbjörn Granlund <tg@gmplib.org> 1690 1691 * gmp-h.in: Check yet another symbol for FILE. 1692 16932016-12-04 Torbjörn Granlund <tg@gmplib.org> 1694 1695 * tests/mpz/reuse.c: Use mpz_clobber. Split mpz_gcdext macros to avoid 1696 spurious res3 dependency. 1697 1698 * tests/misc.c (mpz_clobber): New function. 1699 17002016-12-03 Niels Möller <nisse@lysator.liu.se> 1701 1702 * doc/gmp.texi (Number Theoretic Functions): Tweak mpz_gcdext 1703 documentation. The first and third argument may be NULL, but not 1704 the second. 1705 17062016-12-02 Niels Möller <nisse@lysator.liu.se> 1707 1708 * tests/mpz/reuse.c (main): Test additional cases of reuse for 1709 mpz_gcd and mpz_gcdext. 1710 17112016-12-01 Torbjörn Granlund <tg@gmplib.org> 1712 1713 * tests/misc.c (seed_from_tod): Make shift well-defined. 1714 17152016-11-29 Torbjörn Granlund <tg@gmplib.org> 1716 1717 * gmp-h.in (__GNU_MP__): Bump. 1718 1719 * mpz/inp_raw.c: Rewrite size computation to avoid overflow. 1720 1721 * mpz/kronsz.c: Use ABS_CAST to avoid undefined code. 1722 17232016-11-27 Marco Bodrato <bodrato@mail.dm.unipi.it> 1724 1725 * mpz/gcd.c, mpz/gcdext.c: Use NEWALLOC. 1726 * mpz/oddfac_1.c: Disable an ASSERT that needs a revision. 1727 17282016-11-27 Torbjörn Granlund <tg@gmplib.org> 1729 1730 * tests/mpz/reuse.c: Rewrite operand randomisation to use fixed ranges. 1731 1732 * tune/time.c (cgt_works_p): Add a missing verbosity check. 1733 1734 * configure.ac: Make udiv_w_sdiv use conditional on enable_assembly. 1735 17362016-11-25 Marc Glisse <marc.glisse@inria.fr> 1737 1738 * mpz/gcdext.c (mpz_gcdext): Allow a first argument of NULL. 1739 * doc/gmp.texi (Number Theoretic Functions): Document it. 1740 * tests/mpz/t-gcd.c (main): Test it. 1741 17422016-11-25 Marc Glisse <marc.glisse@inria.fr> 1743 1744 * tests/cxx/t-ops2z.cc (checkz): Avoid left shift of negative number. 1745 17462016-11-22 Torbjörn Granlund <tg@gmplib.org> 1747 1748 * configure.ac (x86): Define LINUX for GNU/Linux systems. 1749 * mpn/x86_64/fat/fat_entry.asm: Set PRETEND_PIC for GNU/Linux. 1750 17512016-11-21 Torbjörn Granlund <tg@gmplib.org> 1752 1753 * configure.ac (powerpc): Never use -O3. 1754 1755 * acinclude.m4 (mpn_lshift_com optimization 2): Make it well-defined 1756 also for 32-bit systems. 1757 (mpn_lshift_com optimization 2): Free allocated memory. 1758 17592016-11-19 Niels Möller <nisse@lysator.liu.se> 1760 1761 * Makefile.am (check-mini-gmp): Override CFLAGS and CPPFLAGS 1762 instead of the deleted EXTRA_CFLAGS. Set TEST_LIBRARY_PATH, 1763 instead of LD_LIBRARY_PATH and DYLD_LIBRARY_PATH, to avoid getting 1764 gcc linked with an unexpected version of gmp. 1765 17662016-11-18 Niels Möller <nisse@lysator.liu.se> 1767 1768 * Makefile.am (check-mini-gmp): Get CC and EXTRA_CFLAGS right. 1769 17702016-11-17 Torbjörn Granlund <tg@gmplib.org> 1771 1772 * asl.h: Initial support for artificially small limbs. 1773 17742016-11-09 Marco Bodrato <bodrato@mail.dm.unipi.it> 1775 1776 * pz/iset_str.c: Lazy allocation. 1777 17782016-11-01 Torbjörn Granlund <tg@gmplib.org> 1779 1780 * mpn/generic/dive_1.c: Remove a forgotten dummy while-loop. (Spotted 1781 by Peter Barfuss.) 1782 17832016-10-31 Oleg Oshmyan <chortos@inbox.lv> 1784 1785 * gmp-impl.h (x86_64 MPN_IORD_U): Use proper asm constraint. 1786 17872016-10-30 Torbjörn Granlund <tg@gmplib.org> 1788 1789 * mpn/Makefile.am (TARG_DIST): Add riscv. 1790 17912016-10-28 Marc Glisse <marc.glisse@inria.fr> 1792 1793 * gmpxx.h (__gmp_binary_divides): Let 1/q call mpq_inv. 1794 * tests/cxx/t-ops.cc (check_mpq): Test it. 1795 17962016-10-24 Torbjörn Granlund <tg@gmplib.org> 1797 1798 * config.guess: Recognise Itanium Poulson. 1799 18002016-10-15 Torbjörn Granlund <tg@gmplib.org> 1801 1802 * configure.ac (arm*-*-*): Amend last change. 1803 18042016-10-14 Torbjörn Granlund <tg@gmplib.org> 1805 1806 * longlong.h (riscv umul_ppmm): New. 1807 1808 * mpn/riscv/64/aors_n.asm: New file. 1809 * mpn/riscv/64/mul_1.asm: New file. 1810 * mpn/riscv/64/aorsmul_1.asm: New file. 1811 1812 * mpn/generic/addmul_1.c: Rewrite for shallower recurrency. 1813 * mpn/generic/submul_1.c: Likewise. 1814 1815 * configure.ac (riscv-*-*): New. 1816 (arm*-*-*): Rewrite arm support to handle armv8 CPUs in 32-bit mode. 1817 18182016-08-29 Torbjörn Granlund <tg@gmplib.org> 1819 1820 * All C files: Include just gmp-impl.h, make gmp-impl.h grab gmp.h. 1821 1822 * mpf/get_str.c: Use __GMP_ALLOCATE_FUNC_TYPE and friends. 1823 * mpf/inp_str.c: Likewise. 1824 * mpq/get_str.c: Likewise. 1825 * mpz/get_str.c: Likewise. 1826 * mpz/inp_str.c: Likewise. 1827 * scanf/vsscanf.c: Likewise. 1828 * tal-reent.c: Likewise. 1829 18302016-08-24 Vlad Zakharov <vzakhar@synopsys.com> 1831 1832 * longlong.h (arc add_ssaaaa, sub_ddmmss): Replace obsolete 'J' 1833 constraint with 'Cal'. 1834 18352016-08-22 Marc Glisse <marc.glisse@inria.fr> 1836 1837 * longlong.h (umul_ppmm from __umulsidi3): Protect with do ... 1838 while (0). 1839 18402016-06-02 Torbjörn Granlund <tg@gmplib.org> 1841 Vincent Lefevre <vincent@vinc17.net> 1842 1843 * doc/gmp.texi: Various clarifications about variable conventions. 1844 18452016-04-07 Marc Glisse <marc.glisse@inria.fr> 1846 1847 * gmp-h.in (__GMP_NOTHROW): Prefer noexcept to throw(). 1848 (mpz_init, mpz_inits): Mark as __GMP_NOTHROW. 1849 * mpz/init.c, mpz/inits.c: Likewise. 1850 * gmpxx.h (mpz_class): Mark default and move constructors noexcept. 1851 * tests/cxx/t-cxx11.cc: Check noexcept. 1852 18532016-04-02 Torbjörn Granlund <torbjorng@google.com> 1854 1855 * mpf/set_q.c: Rewrite, mainly to use mpn_div_q. 1856 18572016-03-29 Torbjörn Granlund <torbjorng@google.com> 1858 1859 * mpn/x86_64/fat/addmul_2.c: New file. 1860 18612016-03-28 Torbjörn Granlund <torbjorng@google.com> 1862 1863 * mpn/x86_64/addmul_2.asm: Move from here... 1864 * mpn/x86_64/k8/addmul_2.asm: ...to here. 1865 18662016-03-26 Torbjörn Granlund <torbjorng@google.com> 1867 1868 * mpn/arm64/sqr_diag_addlsh1.asm: New file. 1869 18702016-03-25 Torbjörn Granlund <torbjorng@google.com> 1871 1872 * mpn/arm64/xgene1/aors_n.asm: New file. 1873 * mpn/arm64/xgene1/aorsmul_1.asm: New file. 1874 * mpn/arm64/xgene1/cnd_aors_n.asm: New file. 1875 * mpn/arm64/xgene1/gmp-mparam.h: New file. 1876 * mpn/arm64/xgene1/mul_1.asm: New file. 1877 1878 * config.guess: Prefix all arm CPUs with "arm" to accommodate our 1879 matchers. 1880 * configure.ac (arm): Match arm CPUs consistently. 1881 18822016-03-21 Torbjörn Granlund <torbjorng@google.com> 1883 1884 * configure.ac: Support many arm64 processors. 1885 18862016-03-20 Marc Glisse <marc.glisse@inria.fr> 1887 1888 * configure.ac (WANT_ASSEMBLY): Remove. 1889 (NO_ASM): Remove from CFLAGS, add to AC_DEFINE. 1890 * tests/misc.c: Test NO_ASM instead of WANT_ASSEMBLY. 1891 18922016-03-20 Torbjörn Granlund <torbjorng@google.com> 1893 1894 * config.guess (arm*): Handle big.LITTLE CPUs by extracting the 1895 lexically largest id. 1896 * config.guess (arm*): Add many aarch64 CPUs. 1897 * config.guess (main): Corresponding changes. 1898 1899 * mpn/arm/v7a/cora5/gmp-mparam.h: New file. 1900 1901 * configure.ac (arm*): Support cortex-a5 better. 1902 19032016-02-25 Pavel Kopyl <p.kopyl@samsung.com> 1904 1905 * acinclude.m4 (GMP_ASM_UNDERSCORE): Tighten gurkmacka detection. 1906 19072016-01-27 Niels Möller <nisse@lysator.liu.se> 1908 1909 * errno.c (__gmp_exception): Use raise(SIGFPE) when available. 1910 19112016-01-15 Torbjörn Granlund <torbjorng@google.com> 1912 1913 * config.guess (s390): Don't assume /proc/cpuinfo exists. 1914 19152016-01-13 Torbjörn Granlund <torbjorng@google.com> 1916 1917 * config.guess: Reorder and generalise ppc code. 1918 19192016-01-01 Marco Bodrato <bodrato@mail.dm.unipi.it> 1920 1921 * tests/cxx/clocale.c: Do not re-define localeconv for mingw. 1922 * tests/misc/t-locale.c: Likewise (Thanks Alexander). 1923 1924 * primesieve.c: Heal a speed regression on small values. 1925 * mpz/bin_uiui.c (mpz_bdiv_bin_uiui): 2 factors all at once. 1926 (mpz_goetgheluck_bin_uiui): Use STOP/CONT for loops on primesieve. 1927 * mpz/oddfac_1.c: Likewise. 1928 * mpz/primorial_ui.c (LOOP_ON_SIEVE_CONTINUE): Define prime locally. 1929 1930 * gen-fac.c: Use unsigned types for sizes. 1931 1932 * mpn/generic/invert.c: Use MPN_FILL macro. 1933 * mpn/generic/invertappr.c: Likewise. 1934 * mpn/generic/toom53_mul.c: Use _ip1 when available. 1935 19362015-12-28 Marco Bodrato <bodrato@mail.dm.unipi.it> 1937 1938 * mpq/set_str.c: Use __GMP_FREE_FUNC_TYPE. 1939 * tests/mpz/t-nextprime.c: Speedup using swap, and correct type. 1940 19412015-12-26 Torbjörn Granlund <torbjorng@google.com> 1942 1943 * tests/misc.c (tests_start): Assert library version. 1944 19452015-12-19 Marc Glisse <marc.glisse@inria.fr> 1946 1947 * gmp-impl.h (fft_table_nk): Use gmp_uint_least32_t. 1948 * mpn/generic/trialdiv.c (gmp_primes_ptab): Likewise. 1949 19502015-12-14 Torbjörn Granlund <torbjorng@google.com> 1951 1952 * mpn/x86_64/fat/fat.c (gmp_workaround_skylake_cpuid_bug): 1953 New function. 1954 (__gmpn_cpuvec_init): Handle more BMI2 crippled CPUs. 1955 19562015-12-13 Marco Bodrato <bodrato@mail.dm.unipi.it> 1957 1958 * mpf/clears.c, mpf/inits.c, mpq/clears.c, mpq/inits.c, 1959 * mpz/clears.c, mpz/inits.c: Stop supporting empty list. 1960 * tests/arm32call.asm: bx->ret to support thumb-less chips 1961 (thanks Martin Husemann). 1962 19632015-12-13 Torbjörn Granlund <torbjorng@google.com> 1964 1965 * config.sub: Fix spelling of kabylake. 1966 * acinclude.m4: Likewise. 1967 * mpn/x86_64/fat/fat.c: Likewise. 1968 19692015-12-10 Marco Bodrato <bodrato@mail.dm.unipi.it> 1970 1971 * tests/misc/t-printf.c: Test a sequence of '%'. 1972 * printf/doprnt.c: Avoid buffer overread with long long limbs. 1973 1974 * mpn/generic/toom_interpolate_7.c: Use the rsh1 functions, 1975 when available, also for negatives (clearing the carry). 1976 * mpn/generic/toom_interpolate_12.c: Likewise. 1977 * mpn/generic/toom_interpolate_16.c: Likewise. 1978 19792015-12-06 Torbjörn Granlund <torbjorng@google.com> 1980 1981 * configure.ac (arm*): Conditionally define NOTHUMB. 1982 Simplify and generalise. 1983 * mpn/arm/arm-defs.m4 (ret): New macro, conditional on NOTHUMB. 1984 * mpn/arm/*.asm: Use ret. 1985 19862015-12-03 Torbjörn Granlund <torbjorng@google.com> 1987 1988 * config.guess: Work around skylake cpuid bug. 1989 Fix spelling of kabylake. 1990 19912015-12-01 Torbjörn Granlund <torbjorng@google.com> 1992 1993 * mpn/x86_64/coreibwl/mul_basecase.asm: Add FUNC_EXITs. 1994 19952015-11-21 Marco Bodrato <bodrato@mail.dm.unipi.it> 1996 1997 * gmp-impl.h (MPN_TOOM22_MUL_MINSIZE): Consider ToomX2 limits 1998 (thanks Paul). 1999 * tests/mpn/t-toom22.c: Keep on testing small sizes. 2000 * tests/mpz/t-primorial_ui.c: Test a single "large" number. 2001 2002 * tune/common.c (speed_mpz_primorial_ui): New function. 2003 * tune/speed.h: Declare it. 2004 * tune/speed.c (routine): Add mpz_primorial_ui. 2005 2006 * primesieve.c: Use two presieved patterns on 64-bits CPUs. 2007 20082015-11-13 Marco Bodrato <bodrato@mail.dm.unipi.it> 2009 2010 * mpq/init.c: Remove conditional code for __CHECKER__. 2011 * mpq/set.c: Shorten scope of local variables. 2012 * mpq/set_den.c: Likewise. 2013 * mpq/set_num.c: Likewise. 2014 * mpq/set_z.c: Likewise. 2015 2016 * primesieve.c: Fill sieve with a presieved 70bits pattern. 2017 20182015-11-12 Marc Glisse <marc.glisse@inria.fr> 2019 2020 * gmpxx.h (__gmp_fibonacci_function): New class. 2021 (fibonacci, mpz_class::fibonacci): New functions. 2022 (__gmp_fac_function, __gmp_primorial_function): Add braces. 2023 * tests/cxx/t-ops2z.cc: Test fibonacci. 2024 * doc/gmp.texi (C++ Interface Integers): Document fibonacci. 2025 Warn about factorial and primorial of negative numbers. 2026 20272015-11-10 Marc Glisse <marc.glisse@inria.fr> 2028 2029 * gmpxx.h (__gmp_primorial_function): Throw on negative operands. 2030 * tests/cxx/t-ops2z.cc: Test it. 2031 20322015-11-09 Marco Bodrato <bodrato@mail.dm.unipi.it> 2033 2034 * mpz: Experimental, lazy allocation. 2035 20362015-11-09 Marc Glisse <marc.glisse@inria.fr> 2037 2038 * tests/cxx/Makefile.am: Move EXTRA_DIST out of WANT_CXX. 2039 20402015-11-08 Marco Bodrato <bodrato@mail.dm.unipi.it> 2041 2042 * mpz/urandomm.c: Use mpn_zero_p to shorten code. 2043 20442015-11-08 Marc Glisse <marc.glisse@inria.fr> 2045 2046 * gmpxx.h (__gmp_fac_function, __gmp_primorial_function): New classes. 2047 (__GMPP_DECLARE_UNARY_STATIC_MEMFUN, 2048 __GMPNN_DECLARE_UNARY_STATIC_MEMFUN, 2049 __GMPNS_DECLARE_UNARY_STATIC_MEMFUN, 2050 __GMPNU_DECLARE_UNARY_STATIC_MEMFUN, 2051 __GMPND_DECLARE_UNARY_STATIC_MEMFUN, 2052 __GMPN_DECLARE_UNARY_STATIC_MEMFUN, 2053 __GMP_DECLARE_UNARY_STATIC_MEMFUN, __GMPP_DEFINE_UNARY_STATIC_MEMFUN, 2054 __GMPNN_DEFINE_UNARY_STATIC_MEMFUN, 2055 __GMPNS_DEFINE_UNARY_STATIC_MEMFUN, 2056 __GMPNU_DEFINE_UNARY_STATIC_MEMFUN, 2057 __GMPND_DEFINE_UNARY_STATIC_MEMFUN, __GMPN_DEFINE_UNARY_STATIC_MEMFUN, 2058 __GMP_DEFINE_UNARY_STATIC_MEMFUN): New macros. 2059 (factorial, mpz_class::factorial, primorial, mpz_class::primorial): 2060 New functions. 2061 * tests/cxx/t-ops2.cc: Test factorial and primorial. 2062 * tests/cxx/Makefile.am: Move t-ops2 after 2063 t-do-exceptions-work-at-all-with-this-compiler. 2064 * doc/gmp.texi: Document factorial and primorial. 2065 * NEWS: Likewise. 2066 2067 * tests/cxx/t-ops2.cc: Remove and split into ... 2068 * tests/cxx/t-ops2z.cc, tests/cxx/t-ops2qf.cc, tests/cxx/t-ops2f.cc, 2069 tests/cxx/t-ops2.h: New files. 2070 * tests/cxx/Makefile.am: Update for the split. 2071 20722015-11-07 Marc Glisse <marc.glisse@inria.fr> 2073 2074 * gmpxx.h (__GMP_DEFINE_UNARY_FUNCTION_1, 2075 __GMPP_DEFINE_BINARY_FUNCTION_1, __GMPNN_DEFINE_BINARY_FUNCTION_1, 2076 __GMPNS_DEFINE_BINARY_FUNCTION_1, __GMPNU_DEFINE_BINARY_FUNCTION_1, 2077 __GMPND_DEFINE_BINARY_FUNCTION_1, __GMPNLD_DEFINE_BINARY_FUNCTION_1, 2078 __GMPN_DEFINE_BINARY_FUNCTION_1, __GMP_DEFINE_BINARY_FUNCTION_1): 2079 New macros. 2080 (operator~, trunc, floor, ceil, sqrt, operator%, operator&, operator|, 2081 operator^, hypot, gcd, lcm): Use them. 2082 20832015-11-06 Marco Bodrato <bodrato@mail.dm.unipi.it> 2084 2085 * mpz/and.c: Use MPZ_NEWALLOC. 2086 * mpz/ior.c: Remove duplicated branches, add branch hints. 2087 * mpz/xor.c: Likewise, and use NORMALIZE_NOT_ZERO. 2088 2089 * mpz/init.c: Remove conditional code for __CHECKER__. 2090 * mpz/init2.c: Likewise. 2091 * mpz/inits.c: Likewise. 2092 * mpz/iset.c: Likewise. 2093 * mpz/iset_str.c: Likewise. 2094 20952015-11-04 Torbjörn Granlund <torbjorng@google.com> 2096 2097 * mpz/xor.c: Use MPZ_REALLOC. 2098 * mpz/ior.c: Likewise 2099 21002015-11-03 Marco Bodrato <bodrato@mail.dm.unipi.it> 2101 2102 * mpz/xor.c: Use the return value of _mpz_realloc. 2103 * mpz/ior.c: Likewise. 2104 * mpn/generic/sec_div.c: Remove unused var. 2105 21062015-11-01 Torbjörn Granlund <torbjorng@google.com> 2107 2108 * tests/misc.c (seed_from_tod, seed_from_urandom): New functions. 2109 (tests_rand_start): Use them. 2110 21112015-11-01 Marco Bodrato <bodrato@mail.dm.unipi.it> 2112 2113 * Version 6.1.0 released. 2114 2115 * mpz/inits.c [__CHECKER__]: Init limb, not pointer. 2116 * mpz/init.c [__CHECKER__]: Likewise (spotted by Vicente Benjumea). 2117 * tests/mpf/t-pow_ui.c: Use another mpf for the size limit. 2118 21192015-10-30 Torbjörn Granlund <torbjorng@google.com> 2120 2121 * mpf/pow_ui.c: Add log(e) precision bits. 2122 2123 * doc/gmp.texi (Floating-point): Rewrite mpf introduction. 2124 21252015-10-29 Marco Bodrato <bodrato@mail.dm.unipi.it> 2126 2127 * demos/factorize.c: mpz_div_2exp => mpz_tdiv_q_2exp. 2128 * demos/perl/GMP.xs: Likewise. 2129 * tests/mpf/t-pow_ui.c: Use reference value to check the size. 2130 2131 * doc/gmp.texi (Floating-point): Remove "infinite precision" claim. 2132 2133 * gmp-h.in: Update version. 2134 21352015-10-28 Torbjörn Granlund <torbjorng@google.com> 2136 2137 * tests/mpf/t-pow_ui.c: New file. 2138 * tests/mpf/Makefile.am (check_PROGRAMS): Compile it. 2139 2140 * mpf/pow_ui.c: Rewrite for accuracy and performance. 2141 21422015-10-26 Marco Bodrato <bodrato@mail.dm.unipi.it> 2143 2144 * configfsf.guess: Updated to version 2015-10-21, for a typo. 2145 2146 * tests/cxx/t-ops.cc (check_mpq): Compare also with mpz. 2147 (check_mpf): Compare also with mpz and mpq. 2148 21492015-10-25 Torbjörn Granlund <torbjorng@google.com> 2150 2151 * configure.ac: Avoid passing ambiguous -march=skylake. 2152 21532015-10-21 Marco Bodrato <bodrato@mail.dm.unipi.it> 2154 2155 * Version 6.1.0-rc1 published. 2156 2157 * gmp-h.in: Revert version for RC. 2158 21592015-10-20 Torbjörn Granlund <torbjorng@google.com> 2160 2161 * mpn/x86/pentium4/sse2/popcount.asm: Use LEAL. 2162 * mpn/x86/k7/invert_limb.asm: Likewise. 2163 21642015-10-18 Torbjörn Granlund <torbjorng@google.com> 2165 2166 * mpn/arm64/gmp-mparam.h: New file. 2167 21682015-10-18 Marco Bodrato <bodrato@mail.dm.unipi.it> 2169 2170 * Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*): Bump version info. 2171 * gmp-h.in: Bump version. 2172 21732015-10-17 Marco Bodrato <bodrato@mail.dm.unipi.it> 2174 2175 * tests/mpf/t-cmp_si.c: Initialise a variable (only when error arise) 2176 * mpn/generic/toom43_mul.c: Insert parentheses around & expressions. 2177 * mpn/generic/toom52_mul.c: Likewise. 2178 * tests/mpn/t-minvert.c: Remove an unused var. 2179 * tests/mpz/t-cong_2exp.c: Likewise. 2180 21812015-10-16 Hans Wennborg <hwennborg at google.com> 2182 2183 * mpn/generic/div_qr_2.c: Insert parentheses around & expressions. 2184 * mpn/generic/toom44_mul.c: Likewise. 2185 * mpn/generic/toom53_mul.c: Likewise. 2186 * mpn/generic/toom62_mul.c: Likewise. 2187 * tests/mpn/t-bdiv.c: Simplify conditional printing of whitespace. 2188 * tests/mpn/t-div.c: Likewise. 2189 21902015-10-15 Marco Bodrato <bodrato@mail.dm.unipi.it> 2191 2192 * configfsf.sub: Updated to version 2015-08-20, from gnulib. 2193 * configfsf.guess: Updated to version 2015-09-14, from gnulib. 2194 21952015-10-14 Torbjörn Granlund <torbjorng@google.com> 2196 2197 * demos/pexpr.c (main): Clear out a variable. 2198 2199 * mpn/generic/sqrlo_basecase.c: Move things before addmul_1 to reduce 2200 register pressure. 2201 2202 * .hgignore: Add 'compile' and 'test-driver'. 2203 2204 * mpn/generic/mu_bdiv_qr.c (mpn_mu_bdiv_qr_itch): Simplify, add ASSERT. 2205 * mpn/generic/mu_bdiv_q.c (mpn_mu_bdiv_q_itch): Likewise. 2206 2207 * tune/tuneup.c (tune_mu_bdiv): Start at measured BDIV_DC_ thresholds. 2208 22092015-10-13 Marco Bodrato <bodrato@mail.dm.unipi.it> 2210 2211 * mpf/clears.c, mpf/inits.c, mpq/clears.c, mpq/inits.c, 2212 * mpz/clears.c, mpz/inits.c: Keep on supporting empty list. 2213 22142015-10-13 Marc Glisse <marc.glisse@inria.fr> 2215 2216 * gmpxx.h (__GMPP_DEFINE_BINARY_TYPE_FUNCTION): Allow mixed operations. 2217 (__gmp_cmp_function, __gmp_binary_equal, __gmp_binary_less): 2218 Handle mixed operations. 2219 (__gmp_cmp_function): Move before __gmp_binary_equal. 2220 22212015-10-13 Marco Bodrato <bodrato@mail.dm.unipi.it> 2222 2223 * mpf/pow_ui.c: Increased precision of partial results. 2224 22252015-10-12 Torbjörn Granlund <torbjorng@google.com> 2226 2227 * configure.ac: Reject AVX for NetBSD. 2228 22292015-10-11 Torbjörn Granlund <torbjorng@google.com> 2230 2231 * configure.ac (fat_path): Add skylake. 2232 22332015-10-10 Marco Bodrato <bodrato@mail.dm.unipi.it> 2234 2235 * gen-fib.c: Correct the name of the program in error message. 2236 * gen-fac.c: Likewise. 2237 2238 * mpf/get_str.c: Increase precision of base^e computation. 2239 22402015-10-09 Torbjörn Granlund <torbjorng@google.com> 2241 2242 * config.guess: Recognise cabylake and goldmont and more versions of 2243 skylake and silvermont. 2244 * acinclude.m4 (X86_64_PATTERN): Add cabylake and goldmont. 2245 * config.sub: Corresponding changes. 2246 * configure.ac: Corresponding changes. 2247 * mpn/x86_64/fat/fat.c: Corresponding changes. 2248 22492015-09-12 Torbjörn Granlund <torbjorng@google.com> 2250 2251 * mpf/clear.c, mpf/clears.c, mpf/inits.c, mpq/clear.c, mpq/clears.c 2252 * mpq/inits.c, mpz/clear.c, mpz/clears.c, mpz/inits.c: 2253 Streamline, use macros. 2254 22552015-09-27 Marco Bodrato <bodrato@mail.dm.unipi.it> 2256 2257 * mpz/cfdiv_r_2exp.c: Use mpn_neg and MPZ_NEWALLOC. 2258 * mpz/cfdiv_q_2exp.c: Use MPZ_REALLOC return value. 2259 22602015-09-12 Torbjörn Granlund <torbjorng@google.com> 2261 2262 * tests/mpf/t-cmp_si.c (check_data): Set precision reflecting data. 2263 22642015-09-11 Marco Bodrato <bodrato@mail.dm.unipi.it> 2265 2266 * mpf/cmp_z.c: New file implementing mpf_cmp_z. 2267 * mpf/Makefile.am (libmpf_la_SOURCES): Add it. 2268 * Makefile.am (MPF_OBJECTS): Add generate object to libs. 2269 * gmp-h.in: Declare new function. 2270 * tests/mpf/t-cmp_si.c: Test also the new function. 2271 * doc/gmp.texi: Document it. 2272 22732015-09-06 Torbjörn Granlund <torbjorng@google.com> 2274 2275 * Wrap remaining limb allocations in __GMP_ALLOCATE_FUNC_LIMBS. 2276 2277 * mpn/x86/fat/fat.c (fake_cpuid_table): Add missing commas. 2278 * mpn/x86_64/fat/fat.c: Likewise. 2279 2280 * mpn/x86/fat/fat.c (fake_cpuid_table): Improve struct type. 2281 * mpn/x86/fat/fat.c: Likewise. 2282 22832015-09-03 Marco Bodrato <bodrato@mail.dm.unipi.it> 2284 2285 * tests/mpq/t-cmp_z.c (sizes_test): New function, tests sizes. 2286 22872015-09-03 Torbjörn Granlund <torbjorng@google.com> 2288 2289 * acinclude.m4 (GMP_C_HIDDEN_ALIAS): New. 2290 * configure.ac (GMP_C_HIDDEN_ALIAS): Invoke. 2291 22922015-09-01 Marco Bodrato <bodrato@mail.dm.unipi.it> 2293 2294 * mpq/cmp.c (mpq_cmp_numden): Cast to avoid over/underflow. 2295 * tests/mpn/t-toom22.c (MIN_AN): Use defined value. 2296 * tests/mpz/t-fac_ui.c: Check big factorial modulo a larger prime. 2297 * mpn/generic/bsqrtinv.c: Use sqrlo+mullo_n instead of powlo(,,3,,). 2298 * mpq/div.c: Move a branch out of the normal flow. 2299 23002015-08-31 Torbjörn Granlund <torbjorng@google.com> 2301 2302 * mpn/x86/fat/fat.c (fake_cpuid_table): Update similarly to 2303 corresponding x86_64 code. 2304 23052015-08-31 Marco Bodrato <bodrato@mail.dm.unipi.it> 2306 2307 * mpq/cmp.c (mpq_cmp_z): New function to compare mpq with mpz, 2308 asked by Vincent Delecroix for the SageMath project. 2309 * gmp-h.in: Declare it. 2310 * doc/gmp.texi: Document it. 2311 * tests/mpq/t-cmp_z.c: New file to test mpq_cmp_z (from t-cmp.c). 2312 * tests/mpq/Makefile.am (check_PROGRAMS): Add t-cmp_z. 2313 2314 * mpn/generic/powlo.c: Use mpn_sqrlo. 2315 23162015-08-29 Torbjörn Granlund <torbjorng@google.com> 2317 2318 * mpn/x86_64/fat/fat.c (fake_cpuid_table): Add CPU aliases. 2319 23202015-08-25 Marco Bodrato <bodrato@mail.dm.unipi.it> 2321 2322 * configure.ac (AH_VERBATIM): Add HAVE_NATIVE_mpn_mullo_basecase. 2323 * mpn/generic/sqrlo.c (mpn_sqrlo): Use mullo_basecase when faster. 2324 * mpn/generic/sqrlo_basecase.c: More readable #defines. 2325 2326 * tune/tuneup.c (tune_sqrlo): New function to tune sqrlo thresholds. 2327 (all): Call it, after multiplication and FFT. 2328 * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add sqrlo{,_basecase}.c . 2329 * gmp-impl.h: Add all SQRLO_*_THRESHOLD* defs, for tuning and default. 2330 * mpn/generic/sqrlo.c: Remove default threshold definitions. 2331 * mpn/generic/sqrlo_basecase.c: Use SQRLO_DC_THRESHOLD_LIMIT. 2332 * mpn/minithres/gmp-mparam.h: New SQRLO_*_THRESHOLDs. 2333 2334 * tune/tuneup.c (tune_mullo): Set MULLO_MUL_N_THRESHOLD to never 2335 whenever the FFT threshold does not exist. 2336 2337 * mpf/cmp.c: Remove some branches. 2338 23392015-08-25 Torbjörn Granlund <torbjorng@google.com> 2340 2341 * mpn/x86_64/x86_64-defs.m4: Output computed numbers in base-10 instead 2342 of base-16 to avoid bugs on Solaris, FreeBSD, and old NetBSD. 2343 23442015-08-23 Torbjörn Granlund <torbjorng@google.com> 2345 2346 * mpn/x86_64/fat/fat.c (fake_cpuid_table): Add more entries, handle 2347 Broadwell separately. 2348 2349 * configure.ac (fat_path): Add coreibwl. 2350 23512015-08-18 Marco Bodrato <bodrato@mail.dm.unipi.it> 2352 2353 * mpn/generic/rootrem.c (logbased_root): New function. 2354 (mpn_rootrem_internal): Use it to estimate highest 9 bits of the root. 2355 2356 * gmp-impl.h (MPQ_PTR_SWAP, MPQ_SRCPTR_SWAP): New macros. 2357 23582015-08-17 Torbjörn Granlund <torbjorng@google.com> 2359 2360 * acinclude.m4 (X86_64_PATTERN): Add skylake. 2361 * config.guess: Corresponding changes. 2362 * config.sub: Corresponding changes. 2363 * configure.ac: Corresponding changes. 2364 * mpn/x86_64/skylake/gmp-mparam.h: New file. 2365 23662015-08-15 Torbjörn Granlund <torbjorng@google.com> 2367 2368 * mpn/generic/mullo_basecase.c: Provide alternative code, make default. 2369 23702015-08-04 Marco Bodrato <bodrato@mail.dm.unipi.it> 2371 2372 * tests/refmpn.c (refmpn_sqrlo): New function. 2373 * tests/tests.h: Define it. 2374 2375 * mpn/generic/sqrlo.c: New file, new function. 2376 * mpn/generic/sqrlo_basecase.c: New file, new function. 2377 * gmp-impl.h (mpn_sqrlo, mpn_sqrlo_basecase): Declare them. 2378 * configure.ac (gmp_mpn_functions): Add new files. 2379 2380 * tests/mpn/t-sqrlo.c: New file, new test. 2381 * tests/mpn/Makefile.am (check_PROGRAMS): Add new test. 2382 * tests/devel/try.c: Support mpn_sqrlo and mpn_sqrlo_basecase. 2383 2384 * tune/common.c (speed_mpn_sqrlo{,_basecase}): New functions. 2385 * tune/speed.c: Support new functions. 2386 * tune/speed.h (SPEED_ROUTINE_MPN_MULLO_BASECASE): Update. 2387 (SPEED_ROUTINE_MPN_SQRLO): New macro. 2388 2389 * mpn/generic/rootrem.c: Avoid divisions if not needed. 2390 2391 * tests/mpn/t-broot.c: Test also k=1. 2392 * mpz/aorsmul_i.c: Move branches out of main line. 2393 23942015-07-28 Marco Bodrato <bodrato@mail.dm.unipi.it> 2395 2396 * mpn/generic/sqrtrem.c (mpn_dc_sqrt): Support odd sizes. 2397 23982015-07-16 Torbjörn Granlund <torbjorng@google.com> 2399 2400 * tune/speed.c: Remove now redundant MPN_FILL. 2401 2402 * configure.ac (hppa-hpux): Never use O3 optimisation. 2403 24042015-07-09 Torbjörn Granlund <torbjorng@google.com> 2405 2406 * mpn/ia64/add_n_sub_n.asm: Make it work for HP-UX. 2407 * mpn/ia64/addmul_2.asm: Likewise. 2408 * mpn/ia64/aors_n.asm: Likewise. 2409 * mpn/ia64/aorsorrlshC_n.asm: Likewise. 2410 * mpn/ia64/cnd_aors_n.asm: Likewise. 2411 * mpn/ia64/gcd_1.asm: Likewise. 2412 * mpn/ia64/lshiftc.asm: Likewise. 2413 * mpn/ia64/mod_34lsub1.asm: Likewise. 2414 * mpn/ia64/mul_2.asm: Likewise. 2415 * mpn/ia64/sec_tabselect.asm: Likewise. 2416 * mpn/ia64/sqr_diag_addlsh1.asm: Likewise. 2417 24182015-07-01 Marco Bodrato <bodrato@mail.dm.unipi.it> 2419 2420 * gmp-impl.h (MPN_FILL): New macro, generalise MPN_ZERO. 2421 2422 * mpn/generic/sqrtrem.c (mpn_dc_sqrt): New function not computing remainder. 2423 (mpn_dc_sqrtrem): Use tdiv_q instead of divrem, use given scratch space. 2424 (mpn_sqrtrem): Use mpn_dc_sqrt for both even and odd sizes. 2425 24262015-06-24 Torbjörn Granlund <torbjorng@google.com> 2427 2428 * mpn/x86_64/fastsse/com.asm: Disallow zero size operands. 2429 2430 * mpn/x86_64/fastsse/copyi.asm: Suppress looping in basecase code. 2431 24322015-06-23 Marco Bodrato <bodrato@mail.dm.unipi.it> 2433 2434 * mpn/generic/sqrtrem.c (mpn_sqrtrem2): Simplify branches. 2435 (mpn_dc_sqrtrem): Don't compute remainder if not needed. 2436 24372015-06-23 Torbjörn Granlund <torbjorng@google.com> 2438 2439 * gmp-impl.h: Remove K&R stringize support. 2440 * tests/devel/try.c: Likewise. 2441 * tests/t-constants.c: Likewise. 2442 * tests/mpf/t-fits.c: Likewise. 2443 * tests/mpz/t-fits.c: Likewise. 2444 2445 * configure.ac (AC_C_STRINGIZE): Remove. 2446 24472015-06-15 Marco Bodrato <bodrato@mail.dm.unipi.it> 2448 2449 * tests/devel/try.c: Support mpn_sqrt (sqrtrem with remainder = NULL). 2450 * mpn/generic/sqrtrem.c: Reorder branches for single limb operands. 2451 24522015-06-15 Torbjörn Granlund <torbjorng@google.com> 2453 2454 * config.guess: Rewrite code for AVX handling to deal with broken cpuid 2455 states. 2456 24572015-06-11 Torbjörn Granlund <torbjorng@google.com> 2458 2459 * mpn/x86/k7/gcd_1.asm: Align stack for calls. 2460 * mpn/x86/p6/gcd_1.asm: Amend last change: align for PIC and non-PIC. 2461 24622015-06-10 Marco Bodrato <bodrato@mail.dm.unipi.it> 2463 2464 * mpn/generic/sqrtrem.c: Use sqrtrem1 for single limb operands. 2465 2466 * tests/mpz/t-root.c: Check also mpz_root return value. 2467 * mpn/generic/rootrem.c: Shorten first and last loop. 2468 2469 * mpn/generic/toom2_sqr.c: Add some ASSERTs. 2470 * mpn/generic/toom22_mul.c: Likewise. 2471 * tests/mpn/t-toom22.c: stop testing some unsafe (unused) corner cases. 2472 24732015-06-08 Torbjörn Granlund <torbjorng@google.com> 2474 2475 * mpn/x86/p6/gcd_1.asm: Align stack for calls. 2476 24772015-06-06 Torbjörn Granlund <torbjorng@google.com> 2478 2479 * config.sub: Recognise any arm*neon CPU. 2480 * configure.ac (powerpc): Add p8 directory for power8 and later. 2481 * mpn/powerpc64/mode64/p8/invert_limb.asm: New file. 2482 24832015-06-01 Torbjörn Granlund <torbjorng@google.com> 2484 2485 * tune/speed.c (routine): Measure "mpn_sqrt" and "mpn_root", which are 2486 really the corresponding "rem" functions with NULL remainder argument. 2487 2488 * tune/speed.h (SPEED_ROUTINE_MPN_SQRTROOT_CALL): New. 2489 (SPEED_ROUTINE_MPN_SQRTREM, SPEED_ROUTINE_MPN_ROOTREM): Remove. 2490 2491 * tune/common.c (speed_mpn_sqrt, speed_mpn_root): New functions. 2492 (speed_mpn_sqrtrem): Use SPEED_ROUTINE_MPN_SQRTROOT_CALL 2493 (speed_mpn_rootrem): Likewise. 2494 24952015-05-30 Marco Bodrato <bodrato@mail.dm.unipi.it> 2496 2497 * mpf/cmp_ui.c: Use macros, remove branches, correct nails. 2498 * mpf/cmp_si.c: Likewise. 2499 * mpf/int_p.c: Use a simpler loop to ignore zero limbs. 2500 2501 * mpf/sqrt_ui.c: Special case for sqrt(1). 2502 * tests/mpf/t-sqrt_ui.c: Test special cases. 2503 2504 * gmp-h.in: Declare (and inline) mpn_zero_p. 2505 * gmp-impl.h: Remove mpn_zero_p. 2506 * mpn/generic/zero_p: New file to include the function in the library. 2507 * configure.ac (gmp_mpn_functions): Add it. 2508 * doc/gmp.texi: Document it. 2509 2510 * mpz/combit.c: Call mpn_zero_p only if size is not zero. 2511 * mpz/scan1.c: Likewise. 2512 * tests/mpn/t-brootinv.c: Likewise. 2513 * tests/mpn/t-div.c: Likewise. 2514 * tests/mpn/t-minvert.c: Likewise. 2515 25162015-05-28 Niels Möller <nisse@lysator.liu.se> 2517 2518 * doc/gmp.texi (Low-level Functions): Document mpn_divexact_1 and 2519 mpn_cnd_swap (the latter was forgotten for the 2015-02-08 change). 2520 25212015-05-28 Linus Nordberg <linus@nordberg.se> 2522 2523 * configure.ac: Remove double quotes in help strings, make some 2524 clarifications. 2525 25262015-05-24 Marco Bodrato <bodrato@mail.dm.unipi.it> 2527 2528 * mpq/div.c: Reduce memory use. 2529 * tests/mpq/reuse.c: Test also mpq_FUNCTION (x,x,x). 2530 * mpz/swap.c: Use _SWAP macros. 2531 25322015-05-18 Torbjörn Granlund <torbjorng@google.com> 2533 2534 * configure.ac (arm): Let compiler decide about arm vs thumb encoding. 2535 25362015-05-18 Marco Bodrato <bodrato@mail.dm.unipi.it> 2537 2538 * gmp-h.in (mpn_neg): Niels' code using mpn_neg. 2539 * gmp-h.in (mpn_com): Unconditionally declare prototype. 2540 25412015-05-17 Torbjörn Granlund <torbjorng@google.com> 2542 2543 * mpn/arm/v6/sqr_basecase.asm: Rewrite for speed. 2544 25452015-05-16 Torbjörn Granlund <torbjorng@google.com> 2546 2547 * mpn/arm/v6/addmul_2.asm: Rewrite for speed and size. 2548 25492015-05-15 Torbjörn Granlund <torbjorng@google.com> 2550 2551 * mpn/arm/v7a/cora7/gmp-mparam.h: New file. 2552 * mpn/arm/v7a/cora8/gmp-mparam.h: New file. 2553 * configure.ac (arm): Point to new directories. 2554 25552015-05-15 Marco Bodrato <bodrato@mail.dm.unipi.it> 2556 2557 * mpn/generic/invertappr.c: Reduce memory usage. 2558 * gmp-impl.h (mpn_invertappr_itch): Update accordingly. 2559 * tune/tuneup.c (tune_invertappr, tune_invert): Update min_size. 2560 2561 * mpn/generic/mu_div_qr.c: Pass scratch memory to mpn_invertappr. 2562 * mpn/generic/mu_divappr_q.c: Likewise. 2563 25642015-05-12 Felix Janda <felix.janda@posteo.de> 2565 2566 * mpn/powerpc32/elf.m4 (LEA): Adopt to new ABI. 2567 25682015-05-09 Marco Bodrato <bodrato@mail.dm.unipi.it> 2569 2570 * mpn/generic/invertappr.c: Reduce memory usage. 2571 * gmp-impl.h (mpn_invertappr_itch): Update accordingly. 2572 25732015-05-01 Torbjörn Granlund <torbjorng@google.com> 2574 2575 * tune/tuneup.c (all): Make GCD tuning last since it is not robust. 2576 25772015-04-27 Torbjörn Granlund <torbjorng@google.com> 2578 2579 * mpn/x86_64/coreibwl/gmp-mparam.h: New file. 2580 25812015-04-26 Torbjörn Granlund <torbjorng@google.com> 2582 2583 * mpn/x86_64/coreibwl/mul_basecase.asm: New file. 2584 * mpn/x86_64/coreibwl/sqr_basecase.asm: New file. 2585 25862015-04-26 Marco Bodrato <bodrato@mail.dm.unipi.it> 2587 2588 * tune/common.c (speed_mpn_neg, speed_mpz_2fac_ui): New functions. 2589 (speed_mpn_add_1, speed_mpn_add_1_inplace): New functions. 2590 (speed_mpn_sub_1, speed_mpn_sub_1_inplace): New functions. 2591 * tune/speed.h: Declare them all. 2592 * tune/speed.c (routine): Added mpn_neg, mpn_add_1, mpn_sub_1, 2593 mpn_add_1_inplace, mpn_sub_1_inplace, and mpz_2fac_ui. 2594 25952015-04-25 Marco Bodrato <bodrato@mail.dm.unipi.it> 2596 2597 * mpn/generic/invert.c: Split add in the correction test. 2598 * mpn/generic/invertappr.c: Cleanup of loops and branches. 2599 2600 * mpn/generic/hgcd_reduce.c: Use TMP_ALLOC_LIMBS_3. 2601 * mpn/generic/powm.c: Use TMP_ALLOC_LIMBS_2. 2602 * mpn/generic/rootrem.c: Likewise. 2603 * mpn/generic/remove.c: Remove redundant #ifdef. 2604 * mpn/generic/perfpow.c: Likewise. 2605 26062015-04-21 Torbjörn Granlund <torbjorng@google.com> 2607 2608 * printf/sprintffuns.c (gmp_sprintf_final): Remove extra parameters. 2609 2610 * mpn/arm/v6/popham.asm: Add MULFUNC_PROLOGUE. 2611 * mpn/powerpc64/mode64/rsh1aors_n.asm: Likewise. 2612 * mpn/powerpc64/mode64/p6/aorsmul_1.asm: Likewise. 2613 26142015-04-19 Torbjörn Granlund <torbjorng@google.com> 2615 2616 * mpn/x86_64/x86_64-defs.m4 (oplist): Fix typo. 2617 (mulx): Simplify. 2618 (adcx, adox): New defines, using helper function adx. 2619 * mpn/x86_64/coreibwl/mul_1.asm: New file. 2620 * mpn/x86_64/coreibwl/addmul_1.asm: New file. 2621 * configure.ac (x86_64): Put coreibwl in appropriate code path. 2622 2623 * configure.ac (x86_64): Pass more exact Intel CPU options. 2624 26252015-04-13 Torbjörn Granlund <torbjorng@google.com> 2626 2627 * longlong.h (arm): Rewrite. Support thumb2; use gcc builtins for 2628 count_leading_zeros, use accurate code selection critera. 2629 26302015-04-13 Marc Glisse <marc.glisse@inria.fr> 2631 2632 * configure.ac (x86_64): Extend noavx to ABI=64. 2633 26342015-04-10 Torbjörn Granlund <torbjorng@google.com> 2635 2636 * mpn/alpha/ev6/mod_1_4.asm: Use LDGP. 2637 26382015-04-01 Torbjörn Granlund <torbjorng@google.com> 2639 2640 * configure.ac (sparc): Don't use use -xO4, it miscompiles by design. 2641 26422015-03-24 Torbjörn Granlund <torbjorng@google.com> 2643 2644 * mpn/generic/mul_fft.c (mpn_fft_best_k): Don't make pointers `static' 2645 just because they point to static (i.e., file-local) data. 2646 26472015-03-15 Torbjörn Granlund <torbjorng@google.com> 2648 2649 * acinclude.m4 (X86_64_PATTERN): Add CPU code names. 2650 2651 * config.guess: Add more CPUs, use CPU code names. 2652 * config.sub: Corresponding changes. 2653 * configure.ac: Corresponding changes. 2654 26552015-02-21 Niels Möller <nisse@lysator.liu.se> 2656 2657 * gmp-h.in (mpn_divexact_1): New public declaration. 2658 * gmp-impl.h: Moved from here. 2659 26602015-02-08 Niels Möller <nisse@lysator.liu.se> 2661 2662 * doc/gmp.texi (Low-level Functions): Document mpn_cnd_swap. 2663 2664 * mpn/generic/cnd_swap.c (mpn_cnd_swap): New file, moved function 2665 here. Also changed cnd argument type from int to mp_limb_t. 2666 * mpn/generic/sec_invert.c (mpn_cnd_swap): Old location. 2667 * configure.ac: Added cnd_swap. 2668 * gmp-h.in (mpn_cnd_swap): Added prototype. 2669 26702015-01-19 Torbjörn Granlund <torbjorng@google.com> 2671 2672 * configure.ac (arm): Provide architecture specific configs in addition 2673 to implementation specific configs. 2674 2675 * config.guess (arm): Use configfsf.guess's guess as default before 2676 conditionally appending "neon". 2677 26782015-01-08 Torbjörn Granlund <torbjorng@google.com> 2679 2680 * config.guess: Match POWER8 for AIX. 2681 2682 * longlong.h: Add many casts inside assembly input operands, this 2683 insures proper zero extension. 2684 26852014-12-27 Marc Glisse <marc.glisse@inria.fr> 2686 2687 * gmpxx.h (__gmp_unary_expr): Use __gmp_resolve_ref. 2688 (__gmp_expr): New specialization for unary expressions with 2689 a builtin argument. 2690 26912014-12-26 Marc Glisse <marc.glisse@inria.fr> 2692 2693 * gmp-impl.h (tmp_debug_entry_t): Change block to type void*. 2694 26952014-12-22 Torbjörn Granlund <torbjorng@google.com> 2696 2697 * longlong.h (mips64, mips32): Work around one clang bug. 2698 26992014-12-18 Torbjörn Granlund <torbjorng@google.com> 2700 2701 * longlong.h (umul_ppmm): Use input temps in more places. 2702 27032014-12-10 Marc Glisse <marc.glisse@inria.fr> 2704 2705 * tests/cxx/clocale.c (localeconv, nl_langinfo): Match glibc's 2706 prototype in C++. 2707 27082014-12-09 Torbjörn Granlund <torbjorng@google.com> 2709 2710 * configure.ac (powerpc): Remove hardwired -mpowerpc, causes clang 2711 problems. Optionally pass -m32. 2712 27132014-12-08 Marc Glisse <marc.glisse@inria.fr> 2714 2715 * config.guess (ultrasparc*-*-*): Update for T4 and T5. 2716 * config.sub (ultrasparc*-*-*): Update for T5. 2717 * configure.ac (ultrasparc*-*-*): Update for T5. 2718 2719 * longlong.h (sparc64): Define COUNT_LEADING_ZEROS_NEED_CLZ_TAB 2720 with VIS3. 2721 2722 * tests/misc/t-locale.c (localeconv, nl_langinfo): Match glibc's 2723 prototype in C++. 2724 * tests/mpf/t-get_si.c (check_limbdata): Avoid narrowing conversion 2725 from -1 to unsigned inside {}. 2726 27272014-12-02 Torbjörn Granlund <torbjorng@google.com> 2728 2729 * config.guess (arm*-*-*): Redirect stderr. 2730 27312014-11-26 Torbjörn Granlund <torbjorng@google.com> 2732 2733 * configure.ac (arm*-*-*): Optionally pass redundant fpu mode options 2734 in order to placate clang. 2735 2736 * mpn/arm/neon/lshiftc.asm: Avoid insn form missing from clang. 2737 27382014-11-24 Torbjörn Granlund <torbjorng@google.com> 2739 2740 * configure.ac (mips*-*-*): Provide ABI synonyms (for clang pretending 2741 to be gcc). 2742 27432014-11-18 Torbjörn Granlund <torbjorng@google.com> 2744 2745 From Hannes Mehnert: 2746 * config.guess (arm*-*-*): Base guesses on first matching /proc/cpuinfo 2747 line. 2748 27492014-11-17 Torbjörn Granlund <torbjorng@google.com> 2750 2751 * longlong.h (__longlong_h_C): New macro. 2752 (mpn_umul_ppmm, etc): Use it for C++ support. 2753 27542014-11-15 Torbjörn Granlund <torbjorng@google.com> 2755 2756 * tests/mpz/reuse.c: Make function vectors 'static'. 2757 2758 * tests/mpn/logic.c (check_one): Make string variable 'const'. 2759 2760 * tests/mpz/t-perfpow.c (tests): Make 'static'. 2761 2762 * tune/tuneup.c (fftmes): Remove an unused variable. 2763 27642014-11-15 Marc Glisse <marc.glisse@inria.fr> 2765 2766 * tests/amd64check.c (calling_conventions_fenv): Mark as extern "C". 2767 * tests/x86check.c (calling_conventions_fenv): Likewise. 2768 27692014-11-13 Hans Wennborg <hwennborg@google.com> 2770 2771 * mpn/generic/toom_interpolate_8pts.c: Fix operator precedence in 2772 ASSERT. 2773 27742014-11-13 Torbjörn Granlund <torbjorng@google.com> 2775 2776 * tune/speed.h: Add casts for C++ compatibility. 2777 (speed_cyclecounter): Mark as extern "C". 2778 (mpn_mod_1_1p_1, mpn_mod_1_1p_2): Correct prototype. 2779 2780 * tune/tune-gcd-p.c: Add casts for C++ compatibility. 2781 2782 * tune/tuneup.c: Add casts for C++ compatibility. 2783 (mpn_divrem_1_tune, mpn_mod_1_tune): Mark as extern "C". 2784 (INSERT_FFTTAB): Produce sentinels differently to silence compiler. 2785 27862014-11-12 Torbjörn Granlund <torbjorng@google.com> 2787 2788 * gen-psqr.c: Add casts for C++ compatibility. 2789 2790 * tests/misc/t-scanf.c: Include config.h early for HAVE_xxx. 2791 27922014-11-08 Torbjörn Granlund <torbjorng@google.com> 2793 2794 * mpn/x86/x86-defs.m4 (LEA, LEAL): Make sure to put eip stub code in 2795 text segment. 2796 * mpn/x86/darwin.m4: Likewise. 2797 2798 * tune/speed.h (i386 speed_cyclecounter): Remove inline asm code, rely 2799 on external version. 2800 28012014-11-06 Torbjörn Granlund <torbjorng@google.com> 2802 2803 * config.guess: Ignore appended letters such E in POWER8E. 2804 * configure.ac: Supply cflags for power8, power9. 2805 28062014-11-03 Torbjörn Granlund <torbjorng@google.com> 2807 2808 * mpn/powerpc32/addmul_1.asm: Avoid negative stack pointer references. 2809 * mpn/powerpc32/lshift.asm: Likewise. 2810 * mpn/powerpc32/lshiftc.asm: Likewise. 2811 * mpn/powerpc32/p3-p7/aors_n.asm: Likewise. 2812 * mpn/powerpc32/rshift.asm: Likewise. 2813 * mpn/powerpc32/sec_tabselect.asm: Likewise. 2814 * mpn/powerpc32/submul_1.asm: Likewise. 2815 * mpn/powerpc32/vmx/mod_34lsub1.asm: Likewise. 2816 28172014-10-13 Torbjörn Granlund <torbjorng@google.com> 2818 2819 * acinclude.m4 (freebsd hacked gcc): Test for crash-prone FreeBSD gcc. 2820 28212014-10-03 Peter Breitenlohner <peb@mppmu.mpg.de> 2822 2823 * mpn/generic/sec_tabselect.c: Adjust type to silence compiler. 2824 28252014-10-01 Torbjörn Granlund <torbjorng@google.com> 2826 2827 * All Makefile.am: INCLUDES => AM_CPPFLAGS. 2828 2829 * configure.ac (arm64): Set gcc_cflags_maybe to enable Neon (for clang 2830 pretending to be gcc). 2831 28322014-09-24 Marc Glisse <marc.glisse@inria.fr> 2833 2834 * longlong.h (arm64 count_trailing_zeros, count_leading_zeros): Use 2835 gcc's builtins. 2836 (arm64 umul_ppmm): Use macro arguments only once. 2837 28382014-09-22 Marc Glisse <marc.glisse@inria.fr> 2839 2840 * mpn/arm64/lshift.asm: Avoid negative immediates. 2841 * mpn/arm64/rshift.asm: Likewise. 2842 28432014-09-13 Marc Glisse <marc.glisse@inria.fr> 2844 2845 * mpn/generic/div_qr_1n_pi1.c: Honor NO_ASM. 2846 * mpn/generic/div_qr_1n_pi2.c: Likewise. 2847 * mpn/generic/div_qr_1u_pi2.c: Likewise. 2848 * mpn/generic/div_qr_2.c: Likewise. 2849 * mpn/generic/mod_1_1.c: Likewise. 2850 * mpn/generic/redc_2.c: Likewise. 2851 28522014-08-31 Torbjörn Granlund <tege@gmplib.org> 2853 2854 * mpn/arm64/lshift.asm: New file. 2855 * mpn/arm64/rshift.asm: New file. 2856 28572014-09-01 Marco Bodrato <bodrato@mail.dm.unipi.it> 2858 2859 * gmp-impl.h (TMP_ALLOC_LIMBS_3): New macro to allocate 3 blocks. 2860 (mpn_remove): Update declaration with mp_srcptr arguments. 2861 * mpn/generic/remove.c: Use TMP_ALLOC_LIMBS_3. mp_srcptr for args. 2862 2863 * mpn/generic/perfpow.c (pow_equals): TMP_DECL only where needed. 2864 (perfpow): Use TMP_ALLOC_LIMBS_3. 2865 (mpn_perfect_power_p): Skip useless allocations. Use mpn_remove. 2866 * tests/mpz/t-perfpow.c (check_random): Check more perfect powers. 2867 2868 * mpn/generic/divis.c: Use TMP_ALLOC_LIMBS_2. Share a count. 2869 28702014-08-30 Torbjörn Granlund <tege@gmplib.org> 2871 2872 * mpn/arm64/mod_34lsub1.asm: New file. 2873 28742014-08-23 Torbjörn Granlund <tege@gmplib.org> 2875 2876 * mpn/arm64/bdiv_dbm1c.asm: New file. 2877 2878 * mpn/arm64/com.asm: New file. 2879 2880 * mpn/arm64/sec_tabselect.asm: New file. 2881 2882 * mpn/arm64/popcount.asm: New file. 2883 * mpn/arm64/hamdist.asm: New file. 2884 2885 * configure.ac: Put generic arm/neon earlier in path. 2886 28872014-08-14 Marco Bodrato <bodrato@mail.dm.unipi.it> 2888 2889 * mpq/canonicalize.c: Earlier check for negative denominator. 2890 * mpq/set_d.c: Stricter allocation. 2891 28922014-08-03 Torbjörn Granlund <tege@gmplib.org> 2893 2894 * mpn/x86_64/bobcat/mul_1.asm: Fix typo in offset affecting DOS64. 2895 28962014-07-28 Marco Bodrato <bodrato@mail.dm.unipi.it> 2897 2898 * mpn/generic/fib2_ui.c: remove #if HAVE_NATIVE_mpn_rsblsh_n. 2899 * mpz/fib2_ui.c: Use tabulated values, when available. 2900 * mpz/fib_ui.c: #if HAVE_NATIVE_mpn_addlsh1_n, use it. 2901 2902 * mpq/cmp_ui.c: Remove a branch. 2903 * mpq/cmp_si.c: Likewise. 2904 2905 * mpn/generic/toom_interpolate_7pts.c: Replace an in-place add 2906 with add_n + INCR_U. 2907 2908 * tests/mpf/t-fits.c: use ui_sub instead of sub_ui+neg. 2909 29102014-07-27 Torbjörn Granlund <tege@gmplib.org> 2911 2912 * mpn/x86/k7/gcd_1.asm: Use LEAL. 2913 2914 * mpn/x86/x86-defs.m4 (LEAL): New. 2915 (LEA): Append to `load_eip' instead of ASM_END, like darwin.m4. 2916 * mpn/x86/darwin.m4 (LEAL): New. 2917 29182014-07-26 Torbjörn Granlund <tege@gmplib.org> 2919 2920 * mpn/x86/pentium/mode1o.asm: Add Darwin PIC code. 2921 * mpn/x86/pentium/bdiv_q_1.asm: Likewise. 2922 * mpn/x86/pentium/dive_1.asm: Likewise. 2923 * mpn/x86/pentium/popcount.asm: Likewise. 2924 * mpn/x86/pentium/hamdist.asm: Likewise. 2925 * mpn/x86/k6/gcd_1.asm: Likewise. 2926 2927 * mpn/x86: Append ASM_END to many files. 2928 * tests/x86call.asm: Append ASM_END. 2929 2930 * mpn/x86/fat/fat_entry.asm (FAT_ENTRY, FAT_INIT): 2931 Support Darwin. 2932 2933 * mpn/x86/darwin.m4 (ASM_END): New, body from EPILOGUE_cpu. 2934 (EPILOGUE_cpu): Remove. 2935 2936 * mpn/x86/x86-defs.m4 (LEA): Put `mov_eip_' thunks in ASM_END instead 2937 of EPILOGUE_cpu. 2938 29392014-07-05 Niels Möller <nisse@lysator.liu.se> 2940 2941 * doc/gmp.texi (Low-level Functions): Document that scratch need 2942 for mpn_sec_add_1 and mpn_sec_sub_1 are at most n limbs. 2943 (Low-level Functions): Document allowed overlap for mpn_addmul_1 2944 and mpn_submul_1. 2945 29462014-07-02 Torbjörn Granlund <tege@gmplib.org> 2947 2948 * mpn/x86_64/x86_64-defs.m4: Fix quoting. 2949 2950 * mpn/x86_64/atom/redc_1.asm: Enforce proper stack allocation. 2951 * mpn/x86_64/bobcat/redc_1.asm: Likewise. 2952 * mpn/x86_64/core2/divrem_1.asm: Likewise. 2953 * mpn/x86_64/core2/gcd_1.asm: Likewise. 2954 * mpn/x86_64/core2/redc_1.asm: Likewise. 2955 * mpn/x86_64/coreihwl/redc_1.asm: Likewise. 2956 * mpn/x86_64/coreinhm/redc_1.asm: Likewise. 2957 * mpn/x86_64/coreisbr/redc_1.asm: Likewise. 2958 * mpn/x86_64/divrem_1.asm: Likewise. 2959 * mpn/x86_64/divrem_2.asm: Likewise. 2960 * mpn/x86_64/gcd_1.asm: Likewise. 2961 * mpn/x86_64/mod_1_1.asm: Likewise. 2962 * mpn/x86_64/mod_1_2.asm: Likewise. 2963 * mpn/x86_64/mod_1_4.asm: Likewise. 2964 29652014-06-30 Torbjörn Granlund <tege@gmplib.org> 2966 2967 * config.sub: Generalise x86 patterns. 2968 29692014-06-17 Marc Glisse <marc.glisse@inria.fr> 2970 2971 * gmpxx.h (__gmp_gcd_function, __gmp_lcm_function): New classes. 2972 (gcd, lcm): New functions. 2973 * doc/gmp.texi (C++ Interface Integers): Document them. 2974 * tests/cxx/t-ops2.cc (checkz): Test them. 2975 29762014-06-16 Torbjörn Granlund <tege@gmplib.org> 2977 2978 * mpf/mul.c: Postpone TMP_MARK. 2979 2980 * mpn/generic/perfpow.c (perfpow): Combine TMP_ALLOCs. 2981 29822014-06-15 Torbjörn Granlund <tege@gmplib.org> 2983 2984 * tests/refmpn.c (refmpn_mul): Rewrite to avoid O(n) recursion depth. 2985 29862014-06-09 Torbjörn Granlund <tege@gmplib.org> 2987 2988 * mpn/generic/mullo_n.c: Remove default THRESHOLDs. 2989 * gmp-impl.h: Put MULLO THRESHOLDs here. Improve various THRESHOLD 2990 defaults. 2991 29922014-06-08 Torbjörn Granlund <tege@gmplib.org> 2993 2994 * gmp-impl.h (TMP_ALLOC): Decrease limit to about half. 2995 2996 * mpn/generic/toom53_mul.c: Replace many TMP_SALLOC invocations 2997 by a single TMP_ALLOC. 2998 * mpn/generic/toom42_mul.c: Likewise. 2999 3000 * mpn/generic/sec_sqr.c: Don't unconditionally call mpn_sqr_basecase 3001 since it fails for non-cryptographic sizes for some obsolete CPUs. 3002 3003 * mpn/generic/sec_powm.c: Remove own squaring code, instead use 3004 mpn_mul_basecase. 3005 3006 * tests/mpn/logic.c (main): Don't use TMP_SALLOC_LIMBS. 3007 3008 * mpn/generic/dcpi1_div_q.c: Avoid TMP_SALLOC_LIMBS. 3009 * mpn/generic/dcpi1_div_qr.c: Likewise. 3010 30112014-06-08 Marco Bodrato <bodrato@mail.dm.unipi.it> 3012 3013 * mpn/generic/mul.c: Tighter allocation in Toom{2,3}X branches. 3014 30152014-06-06 Torbjörn Granlund <tege@gmplib.org> 3016 3017 * mpn/generic/mul.c: Swap some TMP_SALLOC_LIMBS for TMP_ALLOC_LIMBS 3018 and some TMP_ALLOC_LIMBS for TMP_SALLOC_LIMBS. 3019 30202014-05-31 Marco Bodrato <bodrato@mail.dm.unipi.it> 3021 3022 * mpf/ui_sub.c: Remove buggy code, use a wrapper to mpf_sub. 3023 * tests/mpf/t-sub.c: More corner cases and strict checking. 3024 * mpf/sub.c: Use more mpn_ primitives and macros. 3025 3026 * tests/mpf/t-int_p.c: Test numbers with both integer and 3027 fractionary parts. 3028 3029 * mpf/int_p.c: Delay zero branch and use mpn_zero_p. 3030 * mpf/fits_s.h: No special case for SIZ == 0. 3031 * mpf/fits_u.h: Likewise. 3032 30332014-05-29 Marc Glisse <marc.glisse@inria.fr> 3034 3035 * gmp-h.in: Include <limits.h>. 3036 (__GMP_UINT_MAX, __GMP_ULONG_MAX, __GMP_USHRT_MAX): Remove. 3037 * gmp-impl.h (ULONG_MAX, UINT_MAX, USHRT_MAX, LONG_MAX, INT_MAX, 3038 SHRT_MAX): Remove unnecessary redefinition. 3039 * tests/t-gmpmax.c: Remove file. 3040 * tests/Makefile.am: Remove t-gmpmax. 3041 30422014-05-22 Marco Bodrato <bodrato@mail.dm.unipi.it> 3043 3044 * tests/mpf/t-sub.c (check_data): Test also ui_sub and sub_ui. 3045 30462014-05-20 Marco Bodrato <bodrato@mail.dm.unipi.it> 3047 3048 * gen-fac.c: +1 in the init2 argument before setbit. 3049 * gen-fib.c: Likewise. (Thanks Niels) 3050 * rand/randmts.c: Likewise. 3051 3052 * mpn/generic/invert.c: Remove unused TMP_MARK. 3053 * mpn/generic/invertappr.c: Avoid a branch. 3054 * mpz/millerrabin.c (millerrabin): Consider the rare case n is a power. 3055 30562014-05-15 Marco Bodrato <bodrato@mail.dm.unipi.it> 3057 3058 * gen-fib.c: Use mpz_setbit. 3059 * gen-psqr.c: Skip even numbers when looking for primes. 3060 3061 * mpn/generic/invert.c: Avoid a branch. 3062 * mpn/generic/toom2_sqr.c: Avoid a few branches in the odd case. 3063 * mpn/generic/toom22_mul.c: Likewise. 3064 30652014-05-08 Marc Glisse <marc.glisse@inria.fr> 3066 3067 * gmpxx.h (std::common_type): Remove partial specialization for two 3068 identical expressions. New partial specialization for a single type. 3069 * tests/cxx/t-cxx11.cc: Test it. 3070 30712014-04-14 Niels Möller <nisse@lysator.liu.se> 3072 3073 * doc/gmp.texi (mpz_invert): Clarify behavior in the zero ring. 3074 30752014-04-04 Marc Glisse <marc.glisse@inria.fr> 3076 3077 * longlong.h (i386): Add comment about "cc" clobber. 3078 30792014-04-04 Torbjorn Granlund <tege@gmplib.org> 3080 3081 * acinclude.m4 (X86_64_PATTERN): Generalise patterns to allow "noavx" 3082 suffix. 3083 3084 * mpn/generic/div_qr_1n_pi1.c: Conditionalise ARM asm on !__thumb__. 3085 30862014-04-03 Marc Glisse <marc.glisse@inria.fr> 3087 3088 * mpn/arm64/mul_1.asm, mpn/arm64/gcd_1.asm: Use official b.cond syntax. 3089 * mpn/arm64/invert_limb.asm, mpn/arm64/aorsmul_1.asm: Prefix 3090 immediates with #. 3091 30922014-04-03 Torbjorn Granlund <tege@gmplib.org> 3093 3094 * config.guess: Append "noavx" for CPUs which have AVX but where the 3095 kernel does not support it. 3096 * configure.ac: Accept "noavx" cpu name suffixes. Conditionally pass 3097 -mno-avx. 3098 30992014-04-02 Torbjorn Granlund <tege@gmplib.org> 3100 3101 * mpn/x86_64/k8/redc_1.asm: Workaround for Darwin assembler quirk. 3102 31032014-03-28 Torbjorn Granlund <tege@gmplib.org> 3104 3105 * mpn/generic/mod_1_1.c: Conditionalise ARM asm on !__thumb__. 3106 31072014-03-31 Marc Glisse <marc.glisse@inria.fr> 3108 3109 * mpn/arm/dive_1.asm, mpn/arm/invert_limb.asm: Use RODATA. 3110 * acinclude.m4 ([long long reliability tests]): Declare functions. 3111 (GMP_PROG_CC_FOR_BUILD_WORKS, GMP_PROG_EXEEXT_FOR_BUILD, 3112 GMP_C_FOR_BUILD_ANSI, GMP_CHECK_LIBM_FOR_BUILD): Replace exit(0) with 3113 return 0, no declaration needed. 3114 (GMP_CHECK_LIBM_FOR_BUILD): Include <math.h> to declare log. 3115 31162014-03-30 Marc Glisse <marc.glisse@inria.fr> 3117 3118 * README: Remove mention to Berkeley MP compatibility. 3119 31202014-03-26 Torbjorn Granlund <tege@gmplib.org> 3121 3122 * mpn/powerpc64/mode64/gcd_1.asm: Provide default for 3123 BMOD_1_TO_MOD_1_THRESHOLD. 3124 31252014-03-24 Torbjorn Granlund <tege@gmplib.org> 3126 3127 * Version 6.0.0 released. 3128 3129 * mpn: Update countless gmp-mparam.h files. 3130 31312014-03-22 Torbjorn Granlund <tege@gmplib.org> 3132 3133 * Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*): Bump version info. 3134 * gmp-h.in: Bump version. 3135 31362014-03-17 Torbjorn Granlund <tege@gmplib.org> 3137 3138 * configure.ac: Remove clipper, i960, ns32k, pyr, a29k, z8000. 3139 * mpn/clipper: Remove directory and all its files. 3140 * mpn/i960: Likewise. 3141 * mpn/ns32k: Likewise. 3142 * mpn/pyr: Likewise. 3143 * mpn/a29k: Likewise. 3144 * mpn/z8000: Likewise. 3145 * mpn/Makefile.am (TARG_DIST): Purge removed directories. 3146 * doc/gmp.texi: Remove special mentions of removed architectures. 3147 31482014-03-12 Torbjorn Granlund <tege@gmplib.org> 3149 3150 * mpn/x86/bd2/gmp-mparam.h: New file. 3151 * mpn/x86_64/bd2/gmp-mparam.h: New file. 3152 31532014-03-06 Niels Möller <nisse@lysator.liu.se> 3154 3155 * tests/mpz/t-pprime_p.c (check_composites): New function. 3156 (check_primes): New function. 3157 (main): Call them. Also use TESTS_REPS. 3158 31592014-03-01 Niels Möller <nisse@lysator.liu.se> 3160 3161 * mpn/generic/sec_powm.c (mpn_sec_powm): Clarify comment and 3162 asserts. 3163 31642014-02-28 Torbjorn Granlund <tege@gmplib.org> 3165 3166 * mpn/x86_64/fat/fat.c (fake_cpuid): Handle id 7, make bold claims. 3167 31682014-02-27 Torbjorn Granlund <tege@gmplib.org> 3169 3170 * mpn/x86_64/fat/fat_entry.asm: Zero ecx for the benefit of new BMI2 3171 feature test. 3172 3173 * mpn/x86_64/fat/fat.c (__gmpn_cpuvec_init): Run CPUVEC_SETUP_coreihwl 3174 conditionally on BMI2 availability. 3175 3176 * config.guess: Revert "coreihwl" to "coreisbr" if cpuid indicates that 3177 BMI2 is missing. 3178 (x86 cpuid, 2 variants): Zero ecx for the benefit of new BMI2 feature 3179 test. 3180 31812014-02-17 Niels Möller <nisse@lysator.liu.se> 3182 3183 * mpn/generic/div_qr_1.c (mpn_div_qr_1): Revert yesterday's fix. 3184 Hopefully no longer needed. 3185 3186 * mpn/s390_64/gmp-mparam.h (DIV_QR_1_NORM_THRESHOLD): Up to 1. 3187 * mpn/s390_64/z10/gmp-mparam.h (DIV_QR_1_NORM_THRESHOLD): Up to 1. 3188 3189 * tune/tuneup.c (tune_div_qr_1): Ensure DIV_QR_1_NORM_THRESHOLD, 3190 DIV_QR_1_UNNORM_THRESHOLD >= 1. 3191 31922014-02-16 Marco Bodrato <bodrato@mail.dm.unipi.it> 3193 3194 * mpn/generic/div_qr_1.c: Disallow DIV_QR_1_NORM_THRESHOLD==0. 3195 31962014-02-15 Torbjorn Granlund <tege@gmplib.org> 3197 3198 * tests/mpn/t-div.c: Fix typo. 3199 32002014-02-15 Marco Bodrato <bodrato@mail.dm.unipi.it> 3201 3202 * doc/gmp.texi (mpz_roinit_n, MPZ_ROINIT_N): Document that 3203 at least a readable limb is required. 3204 32052014-02-14 Niels Möller <nisse@lysator.liu.se> 3206 3207 * doc/gmp.texi (Low-level Functions): Update docs for 3208 mpn_sec_powm, to specify that left-over exponent bits must be 3209 zero. 3210 32112014-02-11 Niels Möller <nisse@lysator.liu.se> 3212 3213 * Makefile.am (EXTRA_DIST): Distribute COPYING.LESSERv3, 3214 COPYINGv2, and COPYINGv3. 3215 3216 * doc/gmp.texi (Low-level Functions): Updated mpn_sec_powm docs. 3217 3218 * mpn/generic/sec_powm.c (mpn_sec_powm): Replaced exponent limb 3219 count argument by bit count. Don't leak high exponent bits, and 3220 drop the requirement that the most significant exponent limb is 3221 non-zero. 3222 (mpn_sec_powm_itch): Analogous interface change. 3223 * gmp-h.in: Updated prototypes. 3224 * mpz/powm_sec.c (mpz_powm_sec): Update mpn_sec_powm* calls. 3225 * tune/tuneup.c (tune_powm_sec): Likewise. Also deleted code 3226 fiddling with the high exponent bits. 3227 32282014-02-09 Niels Möller <nisse@lysator.liu.se> 3229 3230 * tune/tuneup.c (tune_powm_sec): Avoid timing of the nonsensical 3231 parameters nbits = 1, winsize = 2. Decrement tabulated values, to 3232 better match the > comparison when the table is used. 3233 3234 * mpn/generic/sec_powm.c (win_size): Comment why we always get 3235 win_size(eb) <= eb. Make the table const. 3236 (mpn_sec_powm): Deleted handling of winsize > initial ebi. For 3237 now, replaced with an ASSERT_ALWAYS. 3238 32392014-02-08 Niels Möller <nisse@lysator.liu.se> 3240 3241 * mpn/generic/sec_invert.c (mpn_cnd_neg_itch): #if:ed out unused 3242 function. 3243 3244 * mpn/generic/sec_div.c: Simplified code for the normalized case. 3245 3246 * tests/mpn/t-div.c (main): Test mpn_sec_div_qr and mpn_sec_div_r 3247 with normalized d. 3248 32492014-02-04 Niels Möller <nisse@lysator.liu.se> 3250 3251 * doc/gmp.texi (Low-level Functions): Document mpn_sec_add_1 and 3252 mpn_sec_sub_1. 3253 32542014-01-29 Torbjorn Granlund <tege@gmplib.org> 3255 3256 * doc/gmp.texi (Floating-point Functions): Revise. 3257 32582014-01-29 Niels Möller <nisse@lysator.liu.se> 3259 3260 * README: Don't refer to specific COPYING* files, instead refer to 3261 manual for details. 3262 3263 * COPYING.LIB: Renamed, to... 3264 * COPYING.LESSERv3: ... new name. 3265 * COPYING: Renamed, to... 3266 * COPYINGv3: ... new name. 3267 * COPYINGv2: New file, GPLv2. 3268 3269 * doc/gmp.texi (Copying): Document dual licensing. 3270 32712014-01-27 Torbjorn Granlund <tege@gmplib.org> 3272 3273 * Update library files license to use LGPL3+ and GPL2+. 3274 32752014-01-27 Marco Bodrato <bodrato@mail.dm.unipi.it> 3276 3277 * tests/mpn/t-aors_1.c: Check sec_aors_1 red zones (not smart). 3278 3279 * mpn/generic/sec_aors_1.c: Mark the 2nd argument as const. 3280 * gmp-h.in (mpn_sec_add_1, mpn_sec_sub_1): Likewise. 3281 32822014-01-24 Torbjorn Granlund <tege@gmplib.org> 3283 3284 * mpn/x86_64/fat/fat.c (fake_cpuid_table): Use proper steamroller and 3285 excavator values. 3286 3287 * config.guess: Amend last AMD change. 3288 3289 * mpn/s390_64/lshift.asm: Align loop. 3290 * mpn/s390_64/rshift.asm: Likewise. 3291 * mpn/s390_64/lshiftc.asm: Likewise. 3292 * mpn/s390_64: Add z10 cycle numbers. 3293 32942014-01-23 Marco Bodrato <bodrato@mail.dm.unipi.it> 3295 3296 * printf/repl-vsnprintf.c: Feed case 'z' in switch (type) with case 'z' 3297 in switch (fchar). 3298 32992014-01-21 Marco Bodrato <bodrato@mail.dm.unipi.it> 3300 3301 * acinclude.m4 (GMP_FUNC_VSNPRINTF): Get rid of varargs. 3302 33032014-01-20 Torbjorn Granlund <tege@gmplib.org> 3304 3305 * mpn/x86_64/fat/fat.c (__gmpn_cpuvec_init): Fix duplicate entries for 3306 AMD "jaguar". 3307 3308 * demos/expr: Get rid of varargs code and references. 3309 33102014-01-19 Torbjorn Granlund <tege@gmplib.org> 3311 3312 * config.guess: Add new AMD CPUs (piledriver, steamroller, excavator, 3313 jaguar). 3314 * config.sub: Corresponding updates. 3315 * configure.ac: Likewise. 3316 * acinclude.m4 (X86_64_PATTERN): Likewise. 3317 * mpn/x86_64/fat/fat.c: Likewise. 3318 3319 * Rename mpn_sec_minvert => mpn_sec_invert, many files affected. 3320 * mpn/generic/sec_invert.c: New name for sec_minvert.c. 3321 3322 * doc/gmp.texi: Undocument mpz_array_init. 3323 3324 * acinclude.m4 (GMP_C_STDARG): Comment out. 3325 * configure.ac: Suppress GMP_C_STDARG invocation. 3326 3327 * Get rid of varargs code and references, many file affected. 3328 3329 * Use mpq_t in favour of MP_RAT, many mpq files affected. 3330 3331 * Get rid of BYTES_PER_MP_LIMB, most files affected. 3332 3333 * mpz/iset.c: Avoid overflow in allocation computation. 3334 * mpz/mul.c: Likewise. 3335 * mpf/init.c: Likewise. 3336 * mpf/init2.c: Likewise. 3337 * mpf/iset.c: Likewise. 3338 * mpf/iset_d.c: Likewise. 3339 * mpf/iset_si.c: Likewise. 3340 * mpf/iset_str.c: Likewise. 3341 * mpf/iset_ui.c: Likewise. 3342 3343 * mpz/array_init.c: Avoid two overflow scenarios in allocation 3344 computation. 3345 3346 * mpn/s390_64/z10/gmp-mparam.h: New file. 3347 3348 * mpz/clears.c: Call __gmp_free_func ourselves instead of via 3349 mpz_clears. 3350 * mpf/clears.c: Analogous change. 3351 * mpq/clears.c: Analogous change. 3352 3353 * mpz/clear.c: Add cast to avoid overflow of (later ignored) argument. 3354 * mpf/clear.c: Likewise. 3355 33562014-01-18 Niels Möller <nisse@lysator.liu.se> 3357 3358 * tests/mpn/t-aors_1.c: Test also mpn_sec_add_1 and mpn_sec_sub_1. 3359 3360 * tests/mpn/t-minvert.c (main): Pass smallest allowed bit_size 3361 argument to mpn_sec_minvert. 3362 33632014-01-18 Marc Glisse <marc.glisse@inria.fr> 3364 3365 * doc/gmp.texi (C++ Interface Limitations): Warn against C++11 auto. 3366 33672014-01-18 Marco Bodrato <bodrato@mail.dm.unipi.it> 3368 3369 * tests/t-parity.c: Use 1UL to generate unsigned constants. 3370 * tests/t-constants.c: Disable a non portable (unneeded) check. 3371 33722014-01-18 Niels Möller <nisse@lysator.liu.se> 3373 3374 * mpn/generic/sec_aors_1.c (mpn_sec_add_1, mpn_sec_sub_1): New 3375 file. 3376 3377 * mpn/generic/sec_minvert.c (mpn_sec_add_1_itch, mpn_sec_add_1): 3378 Deleted static definitions. 3379 (mpn_cnd_swap): Use volatile. 3380 3381 * configure.ac (gmp_mpn_functions): sec_add_1 and sec_sub_1. 3382 (GMP_MULFUNC_CHOICES): Set up for sec_aors_1. 3383 33842014-01-16 Niels Möller <nisse@lysator.liu.se> 3385 3386 * tune/common.c (speed_mpn_sec_minvert): New function. 3387 * tune/speed.h: Declare it. 3388 (SPEED_ROUTINE_MPN_SEC_MINVERT): New macro. 3389 * tune/speed.c (routine): Added mpn_sec_minvert. 3390 33912014-01-12 Marc Glisse <marc.glisse@inria.fr> 3392 3393 * demos/expr/expr.h: Add extern "C" for C++. 3394 33952014-01-11 Torbjorn Granlund <tege@gmplib.org> 3396 3397 * doc/gmp.texi (Notes for Particular Systems): Add items about old 3398 NetBSD and current FreeBSD m4 problems. Add item about FreeBSD's 3399 broken limits.h. 3400 34012014-01-05 Marco Bodrato <bodrato@mail.dm.unipi.it> 3402 3403 * gmp-impl.h: Declare all _itch functions using ATTRIBUTE_CONST. 3404 34052014-01-05 Torbjorn Granlund <tege@gmplib.org> 3406 3407 * configure.ac (alpha): Set extra_functions conditionally. 3408 3409 * gmp-h.in (mpn_sec_minvert): Remove formal parameters. 3410 3411 * doc/gmp.texi: Improve doc for several functions. 3412 3413 * mpn/generic/sec_tabselect.c: Declare input arg using 'const'. 3414 * gmp-h.in: Analogous change. 3415 3416 * gmp-h.in: Declare all itch functions using __GMP_ATTRIBUTE_PURE. 3417 * gmp-impl.h: Likewise. 3418 34192014-01-05 Marco Bodrato <bodrato@mail.dm.unipi.it> 3420 3421 * tests/mpn/t-minvert.c: Always compare with mpz_invert results, 3422 add red zone to scratch. 3423 * tests/mpn/t-sizeinbase.c: New test. 3424 * tests/mpn/Makefile.am (check_PROGRAMS): Added t-sizeinbase.c . 3425 * tests/mpn/t-div.c: Use mpn_sec_div_*_itch(). 3426 3427 * mpn/generic/pow_1.c: Micro-optimisation. 3428 34292014-01-04 Torbjorn Granlund <tege@gmplib.org> 3430 3431 * acinclude.m4 (GMP_PROG_M4): Avoid hex output, since case varies. 3432 34332014-01-03 Torbjorn Granlund <tege@gmplib.org> 3434 3435 * config.guess: Support newer haswell, broadwell, silvermont. 3436 * mpn/x86_64/fat/fat.c (__gmpn_cpuvec_init): Likewise. 3437 3438 * acinclude.m4 (GMP_PROG_M4): Check that eval's radix argument work. 3439 3440 * mpz/invert.c: Rely on gcdext for all operands, removing faulty 3441 special case. 3442 * tests/mpz/t-invert.c: Enforce correct behaviour for |mod| = 1. 3443 34442014-01-02 Niels Möller <nisse@lysator.liu.se> 3445 3446 * doc/gmp.texi (Low-level Functions): Document mpn_sizeinbase. 3447 3448 Enable previously unused mpn_sizeinbase function. 3449 * configure.ac (gmp_mpn_functions): Added sizeinbase. 3450 * gmp-h.in (mpn_sizeinbase): New prototype. 3451 34522014-01-02 Marc Glisse <marc.glisse@inria.fr> 3453 3454 * gmp-impl.h: Always include <limits.h>. 3455 * tests/mpn/t-get_d.c: Remove comment about <limits.h> 3456 3457 * gmp-h.in (__GMP_USHRT_MAX): Use the promoted type. 3458 * gmp-impl.h (USHRT_HIGHBIT, SHRT_MIN, SHRT_MAX): Likewise. 3459 * tests/t-constants.c: Adapt printf strings. 3460 * tests/t-gmpmax.c: Likewise. 3461 3462 * tests/mpn/t-hgcd_appr.c (hgcd_appr_valid_p): Add parentheses. 3463 34642014-01-01 Torbjorn Granlund <tege@gmplib.org> 3465 3466 * doc/gmp.texi (Low-level Functions for cryptography): Update interface 3467 for mpn_sec_div_qr and fix typos in mpn_sec_minvert text. 3468 3469 * mpn/generic/sec_div.c: Rewrite to make mpn_sec_div_qr return high 3470 quotient limb. 3471 * gmp-h.in (mpn_sec_div_qr): Update declaration. 3472 * tests/mpn/t-div.c: Adapt. 3473 34742013-12-31 Niels Möller <nisse@lysator.liu.se> 3475 3476 * doc/gmp.texi (Low-level Functions for cryptography): Document 3477 mpn_sec_minvert. 3478 34792013-12-30 Marc Glisse <marc.glisse@inria.fr> 3480 3481 * doc/gmp.texi (C++ interface internals): Break long line. 3482 34832013-12-30 Torbjorn Granlund <tege@gmplib.org> 3484 3485 * doc/gmp.texi (Low-level Functions for cryptography): New section. 3486 34872013-12-29 Niels Möller <nisse@lysator.liu.se> 3488 3489 * tests/mpn/Makefile.am (check_PROGRAMS): Added t-minvert. 3490 * tests/mpn/t-minvert.c: New file. 3491 3492 * configure.ac (gmp_mpn_functions): Added sec_minvert. 3493 * gmp-h.in (mpn_sec_minvert, mpn_sec_minvert_itch): New 3494 declarations. 3495 * mpn/generic/sec_minvert.c (mpn_sec_minvert) 3496 (mpn_sec_minvert_itch): New functions. 3497 (mpn_sec_add_1, mpn_cnd_neg, mpn_cnd_swap, mpn_sec_eq_ui): New 3498 helper functions. 3499 35002013-12-28 Torbjorn Granlund <tege@gmplib.org> 3501 3502 * mpn/generic/sec_powm.c: Fix an ASSERT. 3503 3504 * gmp-h.in (mpn_sec_mul, mpn_sec_mul_itch): New declarations. 3505 * gmp-h.in (mpn_sec_sqr, mpn_sec_sqr_itch): Likewise. 3506 * mpn/generic/sec_mul.c: New file. 3507 * mpn/generic/sec_sqr.c: New file. 3508 3509 * gmp-h.in (mpn_sec_powm, mpn_sec_powm_itch): New declarations. 3510 * gmp-h.in (mpn_sec_div_qr, mpn_sec_div_qr_itch): Likewise. 3511 * gmp-h.in (mpn_sec_div_r, mpn_sec_div_r_itch): Likewise. 3512 * gmp-impl: Remove declarations of above functions. 3513 3514 * configure.ac (gmp_mpn_functions): Add sec_mul and sec_sqr. 3515 35162013-12-26 Marco Bodrato <bodrato@mail.dm.unipi.it> 3517 3518 * Update many file's encoding to UTF-8. 3519 * doc/tasks.html: Update <meta content> accordingly. 3520 * doc/projects.html: Likewise. 3521 35222013-12-26 Torbjorn Granlund <tege@gmplib.org> 3523 3524 * configure.ac: Rename mpn_blah_sec to mpn_sec_blah. 3525 * gmp-impl.h: Corresponding changes. 3526 * mpn/asm-defs.m4: Corresponding changes. 3527 * tune/Makefile.am: Corresponding changes. 3528 * tune/common.c: Corresponding changes. 3529 * tune/speed.c: Corresponding changes. 3530 * tune/speed.h: Corresponding changes. 3531 * tune/tuneup.c: Corresponding changes. 3532 * mpz/powm_sec.c: Update calls. 3533 * tests/mpn/t-div.c: Likewise. 3534 3535 * mpn/generic/sec_powm.c: New name for mpn/generic/powm_sec.c. 3536 * mpn/generic/sec_div.c: New name for mpn/generic/sb_div_sec.c. 3537 * mpn/generic/sec_pi1_div.c: New name for mpn/generic/sbpi1_div_sec.c. 3538 * mpn/generic/sec_tabselect.c: New name for mpn/generic/tabselect.c. 3539 3540 * mpn/alpha/sec_tabselect.asm: New name for tabselect.asm. 3541 * mpn/arm/neon/sec_tabselect.asm: New name for tabselect.asm. 3542 * mpn/arm/sec_tabselect.asm: New name for tabselect.asm. 3543 * mpn/ia64/sec_tabselect.asm: New name for tabselect.asm 3544 * mpn/powerpc32/sec_tabselect.asm: New name for tabselect.asm 3545 * mpn/powerpc64/sec_tabselect.asm: New name for tabselect.asm 3546 * mpn/sparc64/sec_tabselect.asm: New name for tabselect.asm 3547 * mpn/x86/mmx/sec_tabselect.asm: New name for tabselect.asm 3548 * mpn/x86/sec_tabselect.asm: New name for tabselect.asm 3549 * mpn/x86_64/bd1/sec_tabselect.asm: New name for tabselect.asm 3550 * mpn/x86_64/core2/sec_tabselect.asm: New name for tabselect.asm 3551 * mpn/x86_64/coreinhm/sec_tabselect.asm: New name for tabselect.asm 3552 * mpn/x86_64/coreisbr/sec_tabselect.asm: New name for tabselect.asm 3553 * mpn/x86_64/fastsse/sec_tabselect.asm: New name for tabselect.asm 3554 * mpn/x86_64/k10/sec_tabselect.asm: New name for tabselect.asm 3555 * mpn/x86_64/pentium4/sec_tabselect.asm: New name for tabselect.asm 3556 * mpn/x86_64/sec_tabselect.asm: New name for tabselect.asm 3557 35582013-12-25 Torbjorn Granlund <tege@gmplib.org> 3559 3560 * mpz/powm_sec.c: Handle 0^e mod m specially. 3561 * mpn/generic/powm_sec.c: ASSERT that the base is non-zero. 3562 35632013-12-23 Torbjorn Granlund <tege@gmplib.org> 3564 3565 * mpn/generic/powm_sec.c (redcify): Use passed scratch instead of 3566 locally allocated. 3567 (mpn_powm_sec_itch): Accommodate mpn_sb_div_r_sec's scratch needs. 3568 35692013-12-20 Mark Sofroniou <marks@wolfram.com> 3570 3571 * mpn/generic/mul_fft.c: Major overhaul of types. 3572 35732013-12-18 Torbjorn Granlund <tege@gmplib.org> 3574 3575 * doc/gmp.texi (Low-level Functions): Rewrite mpn_set_str docs. 3576 35772013-12-14 Ulrich Weigand <Ulrich.Weigand@de.ibm.com> 3578 3579 * mpn/powerpc32/darwin.m4: Allow (and ignore) optional 3580 'toc' parameter to PROLOGUE_cpu. 3581 * mpn/powerpc32/elf.m4: Likewise. 3582 35832013-12-09 Ulrich Weigand <Ulrich.Weigand@de.ibm.com> 3584 3585 * configure.ac: Check for ELFv2 ABI on PowerPC. 3586 * mpn/powerpc64/elf.m4: Set assembler ABI version for ELFv2 3587 and use appropriate PROLOGUE_cpu/EPILOGUE_cpu sequences. 3588 Support optional 'toc' parameter to PROLOGUE_cpu. 3589 * mpn/powerpc64/aix.m4: Allow (and ignore) optional 3590 'toc' parameter to PROLOGUE_cpu. 3591 * mpn/powerpc64/darwin.m4: Likewise. 3592 3593 * mpn/powerpc64/mode64/dive_1.asm (mpn_divexact_1): Add 'toc' 3594 parameter to PROLOGUE. 3595 * mpn/powerpc64/mode64/divrem_1.asm (mpn_divrem_1): Likewise. 3596 * mpn/powerpc64/mode64/divrem_2.asm (mpn_divrem_2): Likewise. 3597 * mpn/powerpc64/mode64/gcd_1.asm (mpn_gcd_1): Likewise. 3598 * mpn/powerpc64/mode64/invert_limb.asm (mpn_invert_limb): Likewise. 3599 * mpn/powerpc64/mode64/mod_1_1.asm (mpn_mod_1_1p_cps): Likewise. 3600 * mpn/powerpc64/mode64/mod_1_4.asm (mpn_mod_1s_4p_cps): Likewise. 3601 * mpn/powerpc64/mode64/mode1o.asm (mpn_modexact_1c_odd): Likewise. 3602 * mpn/powerpc64/mode64/p7/gcd_1.asm (mpn_gcd_1): Likewise. 3603 * mpn/powerpc64/p6/lshift.asm (mpn_lshift): Likewise. 3604 * mpn/powerpc64/p6/lshiftc.asm (mpn_lshiftc): Likewise. 3605 * mpn/powerpc64/p6/rshift.asm (mpn_rshift): Likewise. 3606 * mpn/powerpc64/vmx/popcount.asm (mpn_popcount): Likewise. 3607 36082013-12-07 Niels Möller <nisse@lysator.liu.se> 3609 3610 * configfsf.sub: Updated to version 2013-10-01, from gnulib. 3611 * configfsf.guess: Updated to version 2013-11-29, from gnulib. 3612 36132013-12-03 Torbjorn Granlund <tege@gmplib.org> 3614 3615 * mpn/generic/div_qr_1.c: Make constant args asm inlines become limbs. 3616 * mpn/generic/div_qr_1n_pi1.c: Likewise. 3617 * mpn/generic/div_qr_2.c: Likewise. 3618 * mpn/generic/div_qr_2.c: Likewise. 3619 * mpn/generic/mod_1_1.c: Likewise. 3620 * mpn/generic/mod_1_2.c: Likewise. 3621 * mpn/generic/mod_1_3.c: Likewise. 3622 * mpn/generic/mod_1_4.c: Likewise. 3623 * mpn/generic/mulmid_basecase.c: Likewise. 3624 * mpn/generic/mulmod_bnm1.c: Likewise. 3625 * mpn/generic/sqrmod_bnm1.c: Likewise. 3626 * mpn/sparc64/divrem_1.c: Likewise. 3627 * mpn/sparc64/mod_1_4.c: Likewise. 3628 3629 * mpn/generic/toom_interpolate_7pts.c (BINVERT_15): Fix typo. 3630 36312013-11-11 Torbjorn Granlund <tege@gmplib.org> 3632 3633 * mpn/x86_64/dos64.m4 (CALL): Provide to override default. 3634 36352013-11-08 Torbjorn Granlund <tege@gmplib.org> 3636 3637 * mpn/x86_64/x86_64-defs.m4 (CALL): Swap PIC test and macro defn. 3638 3639 * mpn/generic/div_qr_2.c: Test HAVE_HOST_CPU_FAMILY_x86, not i386. 3640 3641 * doc/gmp.texi: Update many URLs. 3642 36432013-11-04 Torbjorn Granlund <tege@gmplib.org> 3644 3645 * configure.ac: Set symbol OPENBSD for x86-openbsd hosts. 3646 * mpn/x86_64/fat/fat_entry.asm (PRETEND_PIC): New name for 3647 PIC_OR_DARWIN. 3648 (PRETEND_PIC): Set also for OPENBSD. 3649 36502013-10-29 Torbjorn Granlund <tege@gmplib.org> 3651 3652 * printf/doprnt.c (__gmp_doprnt): Use memcpy instead of strcpy. 3653 36542013-10-24 Torbjorn Granlund <tege@gmplib.org> 3655 3656 * mpn/generic/div_qr_1u_pi2.c: New file. 3657 * mpn/generic/div_qr_1n_pi2.c: New file. 3658 36592013-10-24 Niels Möller <nisse@lysator.liu.se> 3660 3661 * mpn/x86_64/div_qr_1n_pi1.asm: Bugfixes, for case n == 1 and 3662 in-place operation. 3663 * mpn/x86_64/k8/div_qr_1n_pi1.asm: Likewise. 3664 3665 * mpn/generic/div_qr_1n_pi1.c (mpn_div_qr_1n_pi1): Bug fixes, 3666 off-by-one MPN_INCR_U, and support for in-place operation. 3667 36682013-10-24 Torbjorn Granlund <tege@gmplib.org> 3669 3670 * mpn/x86/fat/fat.c (fake_cpuid_table): Add Haswell. 3671 36722013-10-23 Torbjorn Granlund <tege@gmplib.org> 3673 3674 * mpn/x86_64/x86_64-defs.m4 (oplist): New define, data from `regnum'. 3675 (regnum): Use x86_lookup, feed oplist. 3676 36772013-10-22 Niels Möller <nisse@lysator.liu.se> 3678 3679 * tests/devel/try.c: Support mpn_div_qr_1n_pi1. 3680 3681 * mpn/x86_64/k8/div_qr_1n_pi1.asm: Moved the below k10 file here. 3682 Applied tweak from Torbjörn to get it to run well on k8. 3683 3684 * mpn/x86_64/k10/div_qr_1n_pi1.asm: New file (renamed above). 3685 Differs from generic x86_64 version by using cmov. 3686 3687 * mpn/x86_64/div_qr_1n_pi1.asm: Reordered arguments to second mul. 3688 Deleted misleading cycle annotations. 3689 36902013-10-21 Niels Möller <nisse@lysator.liu.se> 3691 3692 * configure.ac: Add HAVE_NATIVE_mpn_div_qr_1n_pi1 to config.in. 3693 3694 * mpn/generic/div_qr_1n_pi1.c (mpn_div_qr_1n_pi1): Fix typos 3695 affecting ASSERT. 3696 36972013-10-20 Niels Möller <nisse@lysator.liu.se> 3698 3699 * mpn/x86_64/div_qr_1n_pi1.asm: New file. 3700 3701 * tune/div_qr_1_tune.c (__gmpn_div_qr_1n_pi1): Check 3702 div_qr_1n_pi1_method only when !HAVE_NATIVE_mpn_div_qr_1n_pi1. 3703 3704 * mpn/asm-defs.m4 (define_mpn): Add div_qr_1n_pi1. 3705 3706 * tune/common.c (speed_mpn_div_qr_1): New function, replacing... 3707 (speed_mpn_div_qr_1n, speed_mpn_div_qr_1u): ... deleted functions 3708 (speed_mpn_div_qr_1n_pi1, speed_mpn_div_qr_1n_pi1_1) 3709 (speed_mpn_div_qr_1n_pi1_2): New functions. 3710 * gmp-impl.h [TUNE_PROGRAM_BUILD]: Declare div_qr_1-related tuning 3711 variables. 3712 * tune/tuneup.c (speed_mpn_div_qr_1_tune, tune_div_qr_1): New 3713 functions. 3714 (div_qr_1n_pi1_method, div_qr_1_norm_threshold) 3715 (div_qr_1_unnorm_threshold): New globals. 3716 * tune/speed.c (routine): Replaced mpn_div_qr_1n and mpn_div_qr_1u 3717 by mpn_div_qr_1, requiring ".r" parameter. Added mpn_div_qr_1n_pi1 3718 and variants. 3719 * tune/speed.h (SPEED_ROUTINE_MPN_DIV_QR_1): Use the "r" parameter 3720 as divisor. 3721 * tune/div_qr_1n_pi1_2.c: New file. 3722 * tune/div_qr_1n_pi1_1.c: New file. 3723 * tune/div_qr_1_tune.c: New file. 3724 * tune/Makefile.am (libspeed_la_SOURCES): Added div_qr_1n_pi1_1.c, 3725 div_qr_1n_pi1_2.c, and div_qr_1_tune.c. 3726 3727 * tune/speed.c (routine): Added mpn_div_qr_1n and mpn_div_qr_1u. 3728 * tune/speed.h (SPEED_ROUTINE_MPN_DIV_QR_1): New macro. 3729 (speed_mpn_div_qr_1n, speed_mpn_div_qr_1u): Declare. 3730 * tune/common.c (speed_mpn_div_qr_1n, speed_mpn_div_qr_1u): New 3731 functions. 3732 3733 * gmp-impl.h (mpn_div_qr_1n_pi1): Declare function. 3734 * gmp-h.in (mpn_div_qr_1): Declare function. 3735 * configure.ac (gmp_mpn_functions): Added div_qr_1 and 3736 div_qr_1n_pi1. 3737 * mpn/generic/div_qr_1.c (mpn_div_qr_1): New file and function. 3738 * mpn/generic/div_qr_1n_pi1.c (mpn_div_qr_1n_pi1): New file and 3739 function. 3740 * tests/mpn/t-div.c (main): Test mpn_div_qr_1. 3741 37422013-10-17 Torbjorn Granlund <tege@gmplib.org> 3743 3744 * configure.ac (alpha): Pass -mieee via gcc_cflags_maybe. 3745 37462013-10-16 Torbjorn Granlund <tege@gmplib.org> 3747 3748 * config.guess: Let AMD64 cpuid bit override pessimistic cpu guesses. 3749 3750 * mpn/alpha/unicos.m4 (DATASTART): Accept optional align parameter. 3751 * mpn/alpha/divrem_2.asm: Use provided gp mechanisms. 3752 * mpn/alpha/default.m4 (PROLOGUE): Provide "..ng" post-gp label. 3753 * mpn/alpha/invert_limb.asm: Align table to 8-byte boundary. Make code 3754 work if table is not fully aligned. Properly test for BWX. 3755 37562013-10-15 Torbjorn Granlund <tege@gmplib.org> 3757 3758 * mpn/alpha/default.m4 (DATASTART): Use RODATA instead of DATA; 3759 accept optional align parameter. 3760 * mpn/alpha/invert_limb.asm: Align table. 3761 * mpn/alpha/ev5/diveby3.asm: Likewise. 3762 37632013-10-11 Torbjorn Granlund <tege@gmplib.org> 3764 3765 * mpn/x86/k7/mod_1_1.asm: Use 'subl' form to avoid ambiguity. 3766 * mpn/x86/k7/mod_1_4.asm: Likewise. 3767 3768 * configure.ac (X86_64_PATTERN): Append "cc" to cclist_64 and 3769 cclist_x32. 3770 37712013-10-08 Torbjorn Granlund <tege@gmplib.org> 3772 Marc Glisse <marc.glisse@inria.fr> 3773 3774 * tests/mpf/reuse.c (main): Compare addresses instead of names. 3775 Use larger numbers for exponents. 3776 37772013-10-08 Marc Glisse <marc.glisse@inria.fr> 3778 3779 * doc/mdate-sh, doc/texinfo.tex, install-sh, missing, ylwrap: Remove. 3780 * .bootstrap: Use autoreconf (and in particular automake -a). 3781 3782 * gmp-h.in: Remove __need_size_t. Include <stddef.h>, not <cstddef>. 3783 3784 * tests/mpf/reuse.c (main): Use small numbers as exponents. 3785 37862013-10-05 Torbjorn Granlund <tege@gmplib.org> 3787 3788 * mpn/x86_64/atom/aorsmul_1.asm: Slight tweak. 3789 3790 * doc/gmp.texi (ABI and ISA): Document x32. 3791 3792 * mpn/sparc64/ultrasparct3/dive_1.asm: Use our register names. 3793 37942013-09-24 Torbjorn Granlund <tege@gmplib.org> 3795 3796 * mpn/x86_64/atom/redc_1.asm: New file. 3797 37982013-09-23 Torbjorn Granlund <tege@gmplib.org> 3799 3800 * mpn/x86_64/bobcat/redc_1.asm: Make the code for 1 <= n <= 3 work. 3801 38022013-09-22 Torbjorn Granlund <tege@gmplib.org> 3803 3804 * mpn/x86_64/coreisbr/redc_1.asm: Slightly tweak basecase code. 3805 3806 * mpn/x86_64/core2/redc_1.asm: New file. 3807 3808 * mpn/x86_64/bobcat/redc_1.asm: New file. 3809 38102013-09-21 Torbjorn Granlund <tege@gmplib.org> 3811 3812 * mpn/x86_64/coreinhm/redc_1.asm: New file. 3813 38142013-09-21 Marc Glisse <marc.glisse@inria.fr> 3815 3816 * tests/mpn/t-mulmid.c: Cast arguments of printf to int to match %d. 3817 * tests/rand/t-urbui.c: Use 1UL for unsigned constant. 3818 * mpn/generic/get_str.c: Avoid temporarily pointing outside an array. 3819 38202013-09-20 Torbjorn Granlund <tege@gmplib.org> 3821 3822 * mpn/x86_64/coreisbr/redc_1.asm: New file. 3823 3824 * mpn/x86_64/k8/redc_1.asm: Complete rewrite. 3825 3826 * mpn/x86_64/coreisbr/mullo_basecase.asm: Postpone pushes, short- 3827 circuit a branch. 3828 * mpn/x86_64/coreihwl/mullo_basecase.asm: Short-circuit a branch. 3829 3830 * mpn/x86_64/core2/mullo_basecase.asm: New file. 3831 38322013-09-19 Torbjorn Granlund <tege@gmplib.org> 3833 3834 * mpn/x86_64/fastsse/copyi-palignr.asm: Allocate more stack under DOS. 3835 38362013-09-18 Torbjorn Granlund <tege@gmplib.org> 3837 3838 * mpn/x86_64/core2/mul_basecase.asm: New file. 3839 * mpn/x86_64/core2/sqr_basecase.asm: New file. 3840 3841 * mpn/x86_64/coreihwl/mullo_basecase.asm: New file. 3842 * mpn/x86_64/coreisbr/mullo_basecase.asm: New file. 3843 38442013-09-16 Torbjorn Granlund <tege@gmplib.org> 3845 3846 * mpn/x86_64/fastsse/copyi-palignr.asm: Preserve xmm6-xmm8 under DOS. 3847 38482013-09-15 Torbjorn Granlund <tege@gmplib.org> 3849 3850 * mpn/x86_64/tabselect.asm: Use R8 for bit testing. 3851 3852 * mpn/x86_64/coreihwl/mul_basecase.asm: Replace mul_1 code. 3853 3854 * mpn/x86_64/coreisbr/aorsmul_1.asm: Rewrite. 3855 38562013-09-12 Torbjorn Granlund <tege@gmplib.org> 3857 3858 * mpn/ia64/gcd_1.asm: Use dep for combining table base and low bits. 3859 3860 * mpn/x86_64/fastsse/com-palignr.asm: Implement temp fix to properly 3861 handle overlap. 3862 38632013-09-10 Torbjorn Granlund <tege@gmplib.org> 3864 3865 * mpn/x86_64/fastsse/copyi-palignr.asm: Rewrite rp != up (mod 16) code 3866 to make it handle any allowed overlap. 3867 38682013-09-09 Torbjorn Granlund <tege@gmplib.org> 3869 3870 * mpn/x86_64/atom/com.asm: New file, grabbing fastsse code. 3871 3872 * mpn/x86_64/bd1/copyi.asm: New file, grabbing fastsse code. 3873 * mpn/x86_64/bd1/copyd.asm: Likewise. 3874 * mpn/x86_64/bd1/com.asm: Likewise. 3875 3876 * mpn/x86_64/fastavx/copyi.asm: New file. 3877 * mpn/x86_64/fastavx/copyd.asm: New file. 3878 38792013-09-05 Torbjorn Granlund <tege@gmplib.org> 3880 3881 * mpn/x86_64/coreihwl/aorsmul_1.asm: Streamline. 3882 38832013-09-04 Torbjorn Granlund <tege@gmplib.org> 3884 3885 * mpn/x86_64/coreihwl/sqr_basecase.asm: Implement larger "corner". 3886 Misc tuning. 3887 38882013-09-03 Torbjorn Granlund <tege@gmplib.org> 3889 3890 * mpn/x86_64/coreihwl/redc_1.asm: New file. 3891 3892 * mpn/x86_64/x86_64-defs.m4 (mulx): Handle negative offsets. 3893 38942013-08-31 Torbjorn Granlund <tege@gmplib.org> 3895 3896 * mpn/x86_64/coreisbr/sqr_basecase.asm: New file. 3897 3898 * mpn/x86_64/sqr_diag_addlsh1.asm: New file. 3899 39002013-08-30 Torbjorn Granlund <tege@gmplib.org> 3901 3902 * mpn/x86_64/fat/mul_basecase.c: New file. 3903 * mpn/x86_64/fat/sqr_basecase.c: New file. 3904 * mpn/x86_64/fat/mullo_basecase.c: New file. 3905 * mpn/x86_64/fat/redc_1.c: New file. 3906 39072013-08-29 Torbjorn Granlund <tege@gmplib.org> 3908 3909 * mpn/x86_64/k8/mul_basecase.asm: Move top-level basecase file to k8 3910 subdir. 3911 * mpn/x86_64/k8/sqr_basecase.asm: Likewise. 3912 * mpn/x86_64/k8/redc_1.asm: Likewise. 3913 * mpn/x86_64/k8/mullo_basecase.asm: Likewise. 3914 * mpn/x86_64/k8/mulmid_basecase.asm: Likewise. 3915 3916 * mpn/ia64/aors_n.asm: Clean up some bundlings. 3917 3918 * mpn/x86_64/fat/fat.c (__gmpn_cpuvec_init): Support Haswell. 3919 (fake_cpuid_table): Likewise. 3920 3921 * configure.ac (x86): Remove any mulx paths. Let bwl path = hwl path. 3922 (fat_path): Add coreihwl. 3923 3924 * mpn/x86_64/coreihwl/aorsmul_1.asm: Move from `mulx' directory, use 3925 mulx() macro. 3926 * mpn/x86_64/coreihwl/mul_1.asm: Likewise. 3927 * mpn/x86_64/coreihwl/mul_2.asm: Likewise. 3928 * mpn/x86_64/coreihwl/mul_basecase.asm: Likewise. 3929 * mpn/x86_64/coreihwl/sqr_basecase.asm: Likewise. 3930 3931 * mpn/x86_64/x86_64-defs.m4 (mulx): New macro. 3932 (regnum, regnumh, ix): Supporting macros. 3933 39342013-08-28 Torbjorn Granlund <tege@gmplib.org> 3935 3936 * mpn/x86_64/coreisbr/divrem_1.asm: New file. 3937 39382013-08-23 Torbjorn Granlund <tege@gmplib.org> 3939 3940 * mpn/x86_64/fastsse/com-palignr.asm: New file, closely based on 3941 copyi-palignr.asm. 3942 3943 * mpn/x86_64/fastsse/copyi.asm Use "test R8(reg)" instead of "bt". 3944 * mpn/x86_64/fastsse/copyd-palignr.asm: Likewise. 3945 * mpn/x86_64/fastsse/copyi-palignr.asm: Likewise. 3946 * mpn/x86_64/fastsse/lshift-movdqu2.asm: Likewise. 3947 * mpn/x86_64/fastsse/lshiftc-movdqu2.asm: Likewise. 3948 * mpn/x86_64/fastsse/rshift-movdqu2.asm: Likewise. 3949 * mpn/x86_64/fastsse/tabselect.asm: Likewise. 3950 3951 * mpn/sparc64/ultrasparct3/sqr_diag_addlsh1.asm: New file. 3952 3953 * mpn/alpha/aorslsh2_n.asm: New file. 3954 * mpn/alpha/aorslsh1_n.asm: Rewrite. 3955 * mpn/alpha/ev6/aorslsh1_n.asm: New file. 3956 39572013-08-21 Torbjorn Granlund <tege@gmplib.org> 3958 3959 * mpn/alpha/sqr_diag_addlsh1.asm: New file. 3960 * mpn/alpha/sqr_diagonal.asm: Remove. 3961 * mpn/alpha/ev6/sqr_diagonal.asm: Remove. 3962 39632013-08-20 Torbjorn Granlund <tege@gmplib.org> 3964 3965 * mpn/powerpc32/sqr_diag_addlsh1.asm: New file. 3966 * mpn/powerpc32/sqr_diagonal.asm: Remove. 3967 39682013-08-15 Torbjorn Granlund <tege@gmplib.org> 3969 3970 * mpn/x86_64/coreihwl/mulx/sqr_basecase.asm: New file. 3971 39722013-08-05 Torbjorn Granlund <tege@gmplib.org> 3973 3974 * mpn/x86_64/coreisbr/aors_n.asm: Complete rewrite. 3975 39762013-08-04 Torbjorn Granlund <tege@gmplib.org> 3977 3978 * mpn/x86_64/coreihwl/mulx/mul_basecase.asm: New file. 3979 3980 * mpn/x86_64/bd1/mul_2.asm: New file. 3981 3982 * mpn/x86_64/coreihwl/gmp-mparam.h: New file. 3983 39842013-08-03 Torbjorn Granlund <tege@gmplib.org> 3985 3986 * mpn/x86_64/coreihwl/mulx/mul_2.asm: New file. 3987 * mpn/x86_64/coreihwl/mulx/addmul_2.asm: New file. 3988 3989 * mpn/x86_64/coreinhm/aorsmul_1.asm: New file. 3990 3991 * mpn/x86_64/coreisbr/mul_basecase.asm: Save some O(n) and O(1) cycles. 3992 3993 * mpn/x86_64/coreisbr/mul_2.asm: New file. 3994 39952013-08-02 Torbjorn Granlund <tege@gmplib.org> 3996 3997 * mpn/x86_64/coreisbr/addmul_2.asm: Complete rewrite. 3998 39992013-08-01 Torbjorn Granlund <tege@gmplib.org> 4000 4001 * mpn/x86_64/bd1/mul_basecase.asm: New file. 4002 4003 * mpn/x86_64/coreisbr/mul_basecase.asm: New file. 4004 4005 * mpn/x86_64/coreihwl/aorsmul_1.asm: New file. 4006 40072013-07-31 Torbjorn Granlund <tege@gmplib.org> 4008 4009 * mpn/x86_64/atom/mul_2.asm: New file. 4010 * mpn/x86_64/atom/addmul_2.asm: New file. 4011 * mpn/x86_64/atom/mul_1.asm: New file. 4012 * mpn/x86_64/atom/aorsmul_1.asm: New file. 4013 4014 * mpn/x86_64/coreihwl/mul_1.asm: New file. 4015 4016 * configure.ac (x86): Add Haswell-specific path. 4017 4018 * configure.in (fat_functions): Add cnd_add_n, cnd_sub_n.. 4019 * gmp-impl.h (struct cpuvec_t): Add fields for new fat functions. 4020 * gmp-impl.h: Adjust corresponding declarations. 4021 4022 * mpn/x86_64/x86_64-defs.m4 (CPUVEC_FUNCS_LIST): Add new fat functions. 4023 * mpn/x86/x86-defs.m4 (CPUVEC_FUNCS_LIST): Likewise. 4024 * mpn/x86_64/fat/fat.c (__gmpn_cpuvec): Likewise. 4025 * mpn/x86/fat/fat.c (__gmpn_cpuvec): Likewise. 4026 40272013-07-30 Torbjorn Granlund <tege@gmplib.org> 4028 4029 * mpn/x86_64/coreisbr/popcount.asm: New file. 4030 40312013-07-23 Torbjorn Granlund <tege@gmplib.org> 4032 4033 * mpn/x86_64/bobcat/aors_n.asm: New file. 4034 4035 * mpn/x86_64/pentium4/aorslshC_n.asm: Remove a spurious emms insn. 4036 4037 * mpn/x86_64/bd1/aorrlsh1_n.asm: New file. 4038 * mpn/x86_64/bd1/sublsh1_n.asm: New file. 4039 40402013-07-22 Torbjorn Granlund <tege@gmplib.org> 4041 4042 * mpn/powerpc64/mode64/mod_1_1.asm: Handle little-endian mode. 4043 * mpn/powerpc64/mode64/mod_1_4.asm: Likewise. 4044 40452013-07-16 Torbjorn Granlund <tege@gmplib.org> 4046 4047 * doc/gmp.texi: Declare countless of function arguments as 'const'. 4048 40492013-07-15 Torbjorn Granlund <tege@gmplib.org> 4050 4051 * mpn/x86_64/core2/aors_n.asm: Rewrite. 4052 4053 * mpn/generic/sb_div_sec.c: Compute inverse as floor(B^2/(dh+1)), per 4054 Niels' suggestion. 4055 * mpn/generic/sbpi1_div_sec.c: Remove inverse rounding-up code. 4056 40572013-07-14 Torbjorn Granlund <tege@gmplib.org> 4058 4059 * mpn/powerpc64/mode64/divrem_1.asm: Remove explicit nop after CALL. 4060 * mpn/powerpc64/mode64/divrem_2.asm: Likewise. 4061 * mpn/powerpc64/mode64/mod_1_1.asm: Likewise. 4062 * mpn/powerpc64/mode64/mod_1_4.asm: Likewise. 4063 40642013-07-13 Torbjorn Granlund <tege@gmplib.org> 4065 4066 * mpn/x86/atom/cnd_add_n.asm: New file. 4067 * mpn/x86/atom/cnd_sub_n.asm: New file.o 4068 40692013-07-12 Torbjorn Granlund <tege@gmplib.org> 4070 4071 * mpn/generic/sbpi1_div_sec.c: Partial rewrite. 4072 40732013-07-11 Torbjorn Granlund <tege@gmplib.org> 4074 4075 * mpn/x86_64/cnd_aors_n.asm: Tweak for better speed on K8, bobcat, bd1, 4076 NHM, Atom. 4077 40782013-07-05 Torbjorn Granlund <tege@gmplib.org> 4079 4080 * mpn/powerpc64/p7/copyi.asm: Handle n = 0. 4081 * mpn/powerpc64/p7/copyd.asm: Likewise. 4082 40832013-07-04 Torbjorn Granlund <tege@gmplib.org> 4084 4085 * mpn/powerpc64/mode64/p7/aormul_2.asm: New file. 4086 4087 * mpn/powerpc64/darwin.m4 (EXTRA_REGISTER): New define. 4088 * mpn/powerpc64/aix.m4: New define (actually undefine). 4089 * mpn/powerpc64/elf.m4: Likewise. 4090 40912013-07-03 Torbjorn Granlund <tege@gmplib.org> 4092 4093 * mpn/powerpc64/com.asm: Rewrite. 4094 4095 * mpn/powerpc64/p7/copyi.asm: New file. 4096 * mpn/powerpc64/p7/copyd.asm: New file. 4097 40982013-07-02 Torbjorn Granlund <tege@gmplib.org> 4099 4100 * mpn/powerpc64/mode64/gcd_1.asm: New file. 4101 * mpn/powerpc64/mode64/p7/gcd_1.asm: New file. 4102 41032013-07-01 Torbjorn Granlund <tege@gmplib.org> 4104 4105 * configure.ac: Comment out AC_PROG_F77. 4106 4107 * mpn/powerpc64/mode64/rsh1add_n.asm: Remove. 4108 * mpn/powerpc64/mode64/rsh1sub_n.asm: Remove. 4109 * mpn/powerpc64/mode64/rsh1aors_n.asm: New file, code not based on 4110 removed files. 4111 41122013-06-28 Marc Glisse <marc.glisse@inria.fr> 4113 4114 * cxx/ismpf.cc: Use GMP_DECIMAL_POINT. 4115 * cxx/osmpf.cc: Likewise. 4116 * tests/cxx/t-locale.cc: Likewise. 4117 41182013-06-28 Torbjorn Granlund <tege@gmplib.org> 4119 4120 * mpn/powerpc64/mode64/p7/aorsorrlshC_n.asm: New file. 4121 * mpn/powerpc64/mode64/p7/aorsorrlsh1_n.asm: New file. 4122 * mpn/powerpc64/mode64/p7/aorsorrlsh2_n.asm: New file. 4123 4124 * mpn/powerpc64/mode64/aorsorrlshC_n.asm: Use alias regname. 4125 41262013-06-27 Torbjorn Granlund <tege@gmplib.org> 4127 4128 * mpn/powerpc64/mode64/p7/aors_n.asm: New file. 4129 41302013-06-22 Torbjorn Granlund <tege@gmplib.org> 4131 4132 * aorslshC_n.asm, aorslsh2_n.asm, aorslsh1_n.asm: Remove. 4133 * aorsorrlshC_n.asm, aorsorrlsh1_n.asm, aorsorrlsh2_n.asm: New files. 4134 41352013-06-19 Torbjorn Granlund <tege@gmplib.org> 4136 4137 * mpn/powerpc64/p6/lshift.asm: Rewrite switching-into-loop code. 4138 * mpn/powerpc64/p6/rshift.asm: Likewise. 4139 * mpn/powerpc64/p6/lshiftc.asm: Likewise. 4140 41412013-06-17 Torbjorn Granlund <tege@gmplib.org> 4142 4143 * mpn/powerpc64/p6/lshift.asm: Fix typo in label reference. 4144 For 32-bit mode, zero extend `n' argument and split retval. 4145 * mpn/powerpc64/p6/rshift.asm: Likewise. 4146 * mpn/powerpc64/p6/lshiftc.asm: Likewise. 4147 41482013-06-10 Torbjorn Granlund <tege@gmplib.org> 4149 4150 * mpn/generic/mu_div_q.c: Remove obsolete comment. 4151 41522013-06-09 Marc Glisse <marc.glisse@inria.fr> 4153 4154 * mpn/generic/get_d.c (mpn_get_d): Avoid signed overflow. 4155 * mpz/kronzs.c (mpz_kronecker_si): Use ABS_CAST. 4156 41572013-05-31 Torbjorn Granlund <tege@gmplib.org> 4158 4159 * mpn/generic/mu_div_q.c: Call mpn_mu_divappr_q for entire division, 4160 never just for tail. (This fixes performance issues at the expense of 4161 memory needs.) 4162 41632013-05-26 Torbjorn Granlund <tege@gmplib.org> 4164 4165 * configure.ac (*sparc*-*-*): Major overhaul. 4166 41672013-05-22 Torbjorn Granlund <tege@gmplib.org> 4168 4169 * doc/gmp.texi (Reporting Bugs): Ask for configure's output. 4170 4171 * mpn/ia64/divrem_2.asm: Don't clobber f16-f18. 4172 41732013-05-20 Torbjorn Granlund <tege@gmplib.org> 4174 4175 * mpn/arm/udiv.asm: Change spacing to work around binutils bug. 4176 41772013-05-16 Torbjorn Granlund <tege@gmplib.org> 4178 4179 * Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*): Bump version info. 4180 4181 * tests/misc.c (tests_hardware_getround, tests_hardware_setround): 4182 Avoid assembly dependency unless WANT_ASSEMBLY. 4183 4184 * configure.ac (WANT_ASSEMBLY): Conditionally define. 4185 41862013-05-14 Torbjorn Granlund <tege@gmplib.org> 4187 4188 * configure.ac (arm1156): Don't fall back to plain v6 compiler option. 4189 41902013-05-11 Torbjorn Granlund <tege@gmplib.org> 4191 4192 * mpn/x86_64/coreisbr/mul_1.asm: Handle n = 1 for DOS64. Streamline. 4193 * mpn/x86_64/coreisbr/aorsmul_1.asm: Streamline. 4194 41952013-05-10 Torbjorn Granlund <tege@gmplib.org> 4196 4197 * mpn/x86_64/coreisbr/aorsmul_1.asm: Fix, then enable DOS64 support. 4198 * mpn/x86_64/coreisbr/mul_1.asm: Enable DOS64 support. 4199 4200 * mpn/x86/p6/mmx/gmp-mparam.h: Set down SQR_TOOM2_THRESHOLD to parent 4201 directory value. 4202 42032013-05-09 Torbjorn Granlund <tege@gmplib.org> 4204 4205 * configure.ac (--enable-fake-cpuid): New option. 4206 * mpn/x86_64/fat/fat.c (WANT_FAKE_CPUID): Remove defaulting. 4207 * mpn/x86/fat/fat.c (WANT_FAKE_CPUID): Likewise. 4208 4209 * mpn/x86_64/bd1/mul_1.asm: Fix typo. 4210 42112013-05-07 Torbjorn Granlund <tege@gmplib.org> 4212 4213 * mpn/x86_64/fat/fat.c (fake_cpuid): Handle 0x80000001 request. 4214 (fake_cpuid_available): Remove unused function. 4215 4216 * mpn/generic/mod_1_1.c: Cast constant udiv_rnnd_preinv arguments. 4217 * mpn/generic/mod_1_2.c: Likewise. 4218 * mpn/generic/mod_1_3.c: Likewise. 4219 * mpn/generic/mod_1_4.c: Likewise. 4220 * mpn/generic/divrem_2.c: Likewise. 4221 42222013-05-06 Torbjorn Granlund <tege@gmplib.org> 4223 4224 * config.guess (power*): Handle all ppc970 variants. 4225 42262013-05-03 David S. Miller <davem@davemloft.net> 4227 4228 * tune/common.c (speed_mpn_addlsh1_n, speed_mpn_sublsh1_n, 4229 speed_mpn_rsblsh1_n, speed_mpn_addlsh2_n, speed_mpn_sublsh2_n, 4230 speed_mpn_rsblsh2_n): Don't define if these routines are macros. 4231 * tune/speed.c (routine): Likewise don't table if they are macros. 4232 4233 * mpn/sparc64/ultrasparct3/addmul_1.asm: Add T4 and T3 timings. 4234 * mpn/sparc64/ultrasparct3/aormul_4.asm: Likewise. 4235 * mpn/sparc64/ultrasparct3/aorslsh_n.asm: Likewise. 4236 * mpn/sparc64/ultrasparct3/cnd_aors_n.asm: Likewise. 4237 * mpn/sparc64/ultrasparct3/submul_1.asm: Likewise. 4238 42392013-05-03 Torbjorn Granlund <tege@gmplib.org> 4240 4241 * mpn/sparc64/ultrasparct3/aorslsh_n.asm: Invoke INITCY where it has 4242 effect. 4243 4244 * gmp-impl.h: Amend last change. 4245 * tests/devel/try.c (choice_array): Don't try to table addlsh1_n etc if 4246 a macro. 4247 42482013-05-02 Torbjorn Granlund <tege@gmplib.org> 4249 4250 * mpn/arm/copyd.asm: Suppress dead pointer update. 4251 * mpn/arm/copyi.asm: Likewise. 4252 * mpn/arm/neon/logops_n.asm: Likewise. 4253 * mpn/arm/neon/tabselect.asm: Likewise. 4254 * mpn/arm/rshift.asm: Likewise. 4255 * mpn/arm/tabselect.asm: Likewise. 4256 * mpn/arm/v6/dive_1.asm: Likewise 4257 * mpn/arm/v7a/cora15/neon/copyi.asm: Likewise. 4258 4259 * mpn/arm/v7a/cora15/neon/com.asm: New file. 4260 42612013-05-01 Torbjorn Granlund <tege@gmplib.org> 4262 4263 * mpn/sparc64/ultrasparct3/aormul_4.asm: New file. 4264 4265 * configure.ac (GMP_MULFUNC_CHOICES): Support mul_3 + addmul_3 and 4266 mul_4 + addmul_4. 4267 4268 * mpn/sparc64/ultrasparct3/aormul_2.asm: Optimise lead-in code. 4269 4270 * mpn/sparc64/ultrasparct3/missing.m4 (addxccc): Allow g2 as input. 4271 (umulxhi): Save and restore o7 to allow it as in/out parameter. 4272 42732013-04-29 Torbjorn Granlund <tege@gmplib.org> 4274 4275 * mpn/arm/v7a/cora15/cnd_aors_n.asm: New file, was mis-named. 4276 4277 * mpn/sparc64/ultrasparct3/addmul_1.asm: Rewrite. 4278 4279 * mpn/sparc64/ultrasparct3/submul_1.asm: Rewrite. 4280 4281 * mpn/sparc64/ultrasparct3/cnd_aors_n.asm: New file. 4282 4283 * gmp-impl.h: Override mpn_addlsh1_n, mpn_addlsh2_n, mpn_sublsh1_n, etc 4284 with mpn_addlsh_n, etc when !HAVE_NATIVE the former but HAVE_NATIVE the 4285 latter. 4286 4287 * mpn/sparc64/ultrasparct3/aorslsh_n.asm: New file. 4288 4289 * configure.ac (sparc-*-*): Recognise t5 along with t3 and t4. 4290 Remove sparc64/ultrasparct1 from path_64 for T3, T3, and T5. 4291 42922013-04-27 Mike Frysinger <vapier@gentoo.org> 4293 4294 * configure.ac (arm*-*-*): Set up path also for plainest CPU variants. 4295 42962013-04-27 Torbjorn Granlund <tege@gmplib.org> 4297 4298 * mpn/arm/v6/popham.asm: New file. 4299 4300 * mpn/arm/v7a/cora15/cnd-aors_n.asm: New file. 4301 43022013-04-25 Torbjorn Granlund <tege@gmplib.org> 4303 4304 * mpn/arm/mod_34lsub1.asm: Clear carry smarter. 4305 4306 * mpn/arm/v7a/cora15/logops_n.asm: Conditionally suppress conditionally 4307 used code. 4308 4309 * mpn/arm/v7a/cora15/submul_1.asm: New file. 4310 43112013-04-24 Torbjorn Granlund <tege@gmplib.org> 4312 4313 * mpn/arm/v7a/cora15/com.asm: New file. 4314 4315 * mpn/arm/v7a/cora15/logops_n.asm: New file. 4316 43172013-04-19 Torbjorn Granlund <tege@gmplib.org> 4318 4319 * mpn/arm/v7a/cora15/aors_n.asm: New file. 4320 4321 * mpn/arm/v7a/cora15/addmul_1.asm: Rewrite. 4322 43232013-04-18 Torbjorn Granlund <tege@gmplib.org> 4324 4325 * mpn/alpha/tabselect.asm: New file. 4326 43272013-04-17 Torbjorn Granlund <tege@gmplib.org> 4328 4329 * mpn/powerpc32/tabselect.asm: New file. 4330 4331 * longlong.h (arm64 count_trailing_zeros): New. 4332 4333 * mpn/arm64/invert_limb.asm: New file. 4334 4335 * mpn/generic/dive_1.c: Rewrite to use Hensel division also for 4336 size = 1. 4337 4338 * mpn/generic/mod_1_1.c (add_mssaaaa): Provide VIS3 variant. 4339 4340 * configure.ac: Remove "missing" from extra_functions_64 for coreibwl. 4341 4342 * mpn/sparc64/ultrasparct3/mul_1.asm: Decrease loop alignment. 4343 * mpn/sparc64/ultrasparct3/aormul_2.asm: Likewise. 4344 43452013-04-16 Torbjorn Granlund <tege@gmplib.org> 4346 4347 * mpn/alpha/invert_limb.asm: Generate table. 4348 * mpn/powerpc64/mode64/invert_limb.asm: Likewise. 4349 * mpn/s390_64/invert_limb.asm: Likewise. 4350 * mpn/sparc64/ultrasparct3/invert_limb.asm: Likewise. 4351 * mpn/x86_64/invert_limb_table.asm: Likewise. 4352 43532013-04-15 David S. Miller <davem@davemloft.net> 4354 4355 * mpn/sparc32/sparc-defs.m4 (LEA64): New macro. 4356 * mpn/sparc64/gcd_1.asm: Use it. 4357 * mpn/sparc64/ultrasparct3/dive_1.asm: Likewise. 4358 * mpn/sparc64/ultrasparct3/invert_limb.asm: Likewise. 4359 * mpn/sparc64/ultrasparct3/mode1o.asm: Likewise. 4360 4361 * mpn/sparc64/gcd_1.asm: Use RODATA, TYPE, and SIZE. 4362 43632013-04-15 Torbjorn Granlund <tege@gmplib.org> 4364 4365 * mpn/sparc64/ultrasparct3/invert_limb.asm: Avoid addend for GOT entry, 4366 it is not portable. 4367 4368 * mpn/sparc64/tabselect.asm: New file. 4369 4370 * mpn/x86/mmx/tabselect.asm: New file. 4371 * configure.ac (x86): Add x86/mmx to path for relevant CPUs. 4372 4373 * mpn/sparc64/gcd_1.asm: Use rdpc for PIC. 4374 * mpn/sparc64/ultrasparct3/mode1o.asm: Use rdpc for PIC. 4375 * mpn/sparc64/ultrasparct3/dive_1.asm: Use rdpc for PIC. 4376 * mpn/sparc64/ultrasparct3/invert_limb.asm: Handle PIC, use rdpc. 4377 4378 * Revert remaining parts of recent sparc LEA changes. 4379 43802013-04-14 David S. Miller <davem@davemloft.net> 4381 4382 * mpn/sparc32/v9/sqr_diagonal.asm: Revert LEA and INT32 changes. 4383 * mpn/sparc64/gcd_1.asm: Likewise. 4384 43852013-04-13 Torbjorn Granlund <tege@gmplib.org> 4386 4387 * mpn/x86_64/bd1/tabselect.asm: New file. 4388 * mpn/x86_64/coreisbr/tabselect.asm: New file. 4389 * mpn/x86_64/k10/tabselect.asm: New file. 4390 * mpn/x86_64/coreinhm/tabselect.asm: New file. 4391 * mpn/x86_64/core2/tabselect.asm: New file. 4392 * mpn/x86_64/pentium4/tabselect.asm: New file. 4393 4394 * mpn/x86_64/fastsse/tabselect.asm: New file. 4395 * mpn/arm/neon/tabselect.asm: Rewrite. 4396 * mpn/arm/tabselect.asm: Rewrite. 4397 * mpn/powerpc64/tabselect.asm: Rewrite. 4398 * mpn/x86_64/tabselect.asm: Rewrite. 4399 4400 * tune/speed.h (SPEED_ROUTINE_MPN_TABSELECT): Implement special code, 4401 making .r argument be table width. 4402 44032013-04-11 David S. Miller <davem@davemloft.net> 4404 4405 * mpn/sparc32/sparc-defs.m4 (LEA): Remove unused local label. 4406 (LEA_LEAF): Likewise. 4407 44082013-04-11 Niels Möller <nisse@lysator.liu.se> 4409 4410 * mpn/arm/v6/submul_1.asm: New file, using the corresponding 4411 addmul_1 loop + complement trick. 4412 44132013-04-10 David S. Miller <davem@davemloft.net> 4414 4415 * acinclude.m4 (GMP_ASM_SPARC_GOTDATA, 4416 GMP_ASM_SPARC_SHARED_THUNKS): New feature tests. 4417 * configure.ac: Call GMP_ASM_SPARC_GOTDATA and 4418 GMP_ASM_SPARC_SHARED_THUNKS on sparc. 4419 * mpn/sparc32/sparc-defs.m4 (LEA, LEA_LEAF, LEA_THUNK): New macros. 4420 * mpn/sparc32/udiv.asm: Convert over to LEA, LEA_LEAF, and LEA_THUNK. 4421 * mpn/sparc32/v8/addmul_1.asm: Likewise. 4422 * mpn/sparc32/v8/mul_1.asm: Likewise. 4423 * mpn/sparc32/v8/supersparc/udiv.asm: Likewise. 4424 * mpn/sparc32/v8/udiv.asm: Likewise. 4425 * mpn/sparc64/gcd_1.asm: Likewise. 4426 * mpn/sparc64/ultrasparct3/dive_1.asm: Likewise. 4427 * mpn/sparc64/ultrasparct3/invert_limb.asm: Likewise. 4428 * mpn/sparc64/ultrasparct3/mode1o.asm: Likewise. 4429 * mpn/sparc32/v9/sqr_diagonal.asm: Likewise and use INT32. 4430 44312013-04-09 Torbjorn Granlund <tege@gmplib.org> 4432 4433 * longlong.h (sparc64): Test __VIS__ instead of __sparc_vis3. 4434 4435 * config.guess (sparc*): Invoke set_cc_for_build to get $dummy. 4436 44372013-04-08 Torbjorn Granlund <tege@gmplib.org> 4438 4439 * config.guess: Rework tmp file names, make sure to remove tmp files. 4440 4441 * mpn/arm/dive_1.asm: Rewrite count-trailing-zeros code, using private 4442 table. 4443 4444 * mpn/arm: Canonicalise arm assembly to use old style "mov ... lsl" for 4445 shift ops. 4446 44472013-04-07 Torbjorn Granlund <tege@gmplib.org> 4448 4449 * mpn/sparc64/ultrasparct3/mod_34lsub1.asm: New file. 4450 4451 * longlong.h (sparc64): Define umul_ppmm, add_ssaaaa, and 4452 count_leading_zeros conditionally under the symbol __sparc_vis3. 4453 4454 * mpn/arm/dive_1.asm: New file. 4455 * mpn/arm/v6/dive_1.asm: New file. 4456 4457 * mpn/arm/v6t2/mode1o.asm: Make trivial change to avoid v6t2... 4458 * mpn/arm/v6/mode1o.asm: ...instruction, move file accordingly. 4459 4460 * mpn/powerpc64/mode64/invert_limb.asm: Put all multiplies low-limb first. 4461 44622013-04-04 David S. Miller <davem@davemloft.net> 4463 4464 * mpn/sparc64/ultrasparct3/add_n.asm: Rewrite. 4465 * mpn/sparc64/ultrasparct3/sub_n.asm: Rewrite. 4466 4467 * mpn/sparc64/ultrasparct3/invert_limb.asm: Align table. 4468 44692013-04-04 Torbjorn Granlund <tege@gmplib.org> 4470 4471 * mpn/sparc32/sparc-defs.m4: Provide dummy lzcnt. 4472 4473 * tests/mpn/logic.c: Seed using RANDS, then use mpz_rrandomb. 4474 4475 * tests/mpn/t-div.c (random_word): Remove. Let callers invoke urandom. 4476 4477 * mpn/sparc64/ultrasparct3/mul_1.asm: Rewrite. 4478 4479 * mpn/sparc64/ultrasparct3/bdiv_dbm1c.asm: New file. 4480 * mpn/sparc64/ultrasparct3/dive_1.asm: New file. 4481 * mpn/sparc64/ultrasparct3/invert_limb.asm: New file. 4482 * mpn/sparc64/ultrasparct3/mod_1_4.asm: New file. 4483 * mpn/sparc64/ultrasparct3/mode1o.asm: New file. 4484 44852013-04-03 Torbjorn Granlund <tege@gmplib.org> 4486 4487 * mpn/sparc64/ultrasparct3/aormul_2.asm: Reschedule for better speed. 4488 44892013-04-02 Torbjorn Granlund <tege@gmplib.org> 4490 4491 * mpn/sparc64/ultrasparct3/missing.m4: Misc tweaks. 4492 (lzcnt): New. 4493 * mpn/sparc64/ultrasparct3/missing.asm (__gmpn_lzcnt): New function. 4494 4495 * mpn/sparc32/sparc-defs.m4: Put FAKE_T3 stuff here... 4496 * mpn/sparc64/ultrasparct3/aormul_2.asm: ...moved from here. 4497 4498 * mpn/sparc64/ultrasparc1234/lshift.asm: Remove. 4499 * mpn/sparc64/ultrasparc1234/rshift.asm: Remove. 4500 45012013-04-01 Torbjorn Granlund <tege@gmplib.org> 4502 4503 * mpn/sparc64/ultrasparct3/missing.m4 (umulxhi): Don't clobber retaddr, 4504 allowing use in functions that does not do save/restore. 4505 4506 * mpn/sparc64/gcd_1.asm: Tweak for tighter loop. 4507 45082013-03-31 David S. Miller <davem@davemloft.net> 4509 4510 * mpn/sparc64/lshift.asm: New file. 4511 * mpn/sparc64/rshift.asm: New file. 4512 * mpn/sparc64/lshiftc.asm: New file. 4513 45142013-03-31 Torbjorn Granlund <tege@gmplib.org> 4515 4516 * mpn/sparc64/ultrasparct1/lshift.asm: Remove. 4517 * mpn/sparc64/ultrasparct1/rshift.asm: Remove. 4518 * mpn/sparc64/ultrasparct1/lshiftc.asm: Remove. 4519 45202013-03-29 Torbjorn Granlund <tege@gmplib.org> 4521 4522 * mpn/sparc64/ultrasparct3/aormul_2.asm: Always do mulx before umulxhi. 4523 45242013-03-28 Torbjorn Granlund <tege@gmplib.org> 4525 4526 * mpn/sparc64/mod_1_4.c (mpn_mod_1s_4p): Make precomputed arg 'const'. 4527 (mpn_mod_1s_4p_cps): Update from generic code. 4528 45292013-03-27 Torbjorn Granlund <tege@gmplib.org> 4530 4531 * mpn/generic/trialdiv.c: Make variables 'const' to match tables. 4532 4533 * mpn/generic/mod_1_1.c (mpn_mod_1_1p): Make precomputed arg 'const'. 4534 * mpn/generic/mod_1_2.c (mpn_mod_1s_2p): Likewise. 4535 * mpn/generic/mod_1_3.c (mpn_mod_1s_3p): Likewise. 4536 * mpn/generic/mod_1_4.c (mpn_mod_1s_4p): Likewise. 4537 * gmp-impl.h: Update prototypes. 4538 4539 * mpn/x86_64/mulx/aorsmul_1.asm: New file. 4540 * mpn/x86_64/mulx/addmul_1.asm: Remove. 4541 45422013-03-26 Niels Möller <nisse@lysator.liu.se> 4543 4544 Make mpn_cnd_add_n and mpn_cnd_sub_n public. 4545 * doc/gmp.texi (Low-level Functions): Document mpn_cnd_add_n and 4546 mpn_cnd_sub_n. 4547 * gmp-h.in (mpn_cnd_add_n, mpn_cnd_sub_n): Moved prototypes 4548 here... 4549 * gmp-impl.h: ... from here. 4550 45512013-03-26 Torbjorn Granlund <tege@gmplib.org> 4552 4553 * mpn/x86/pentium4/sse2/cnd_add_n.asm: New file. 4554 * mpn/x86/pentium4/sse2/cnd_sub_n.asm: New file. 4555 * mpn/x86/cnd_aors_n.asm: New file. 4556 45572013-03-25 David S. Miller <davem@davemloft.net> 4558 4559 * mpn/sparc64/ultrasparct3/hamdist.asm: New file. 4560 * mpn/sparc64/ultrasparct3/popcount.asm: New file. 4561 45622013-03-25 Torbjorn Granlund <tege@gmplib.org> 4563 4564 * mpn/ia64/aorsorrlshC_n.asm: Generalised from aorslshC_n.asm. 4565 * mpn/ia64/aorsorrlsh1_n.asm: Generalised from aorslsh1_n.asm. 4566 * mpn/ia64/aorsorrlsh2_n.asm: Generalised from aorslsh2_n.asm. 4567 45682013-03-24 Torbjorn Granlund <tege@gmplib.org> 4569 4570 * mpn/arm/v7a/cora15/neon/aorsorrlshC_n.asm: New file. 4571 * mpn/arm/v7a/cora15/neon/aorsorrlsh2_n.asm: New file. 4572 * mpn/arm/v7a/cora15/neon/aorsorrlsh1_n.asm: New file. 4573 * mpn/arm/v7a/cora15/neon/rsh1aors_n.asm: New file. 4574 4575 * configure.ac (GMP_MULFUNC_CHOICES): Support add+sub+rsb lsh files. 4576 4577 * tests/refmpn.c (refmpn_addlsh_nc, refmpn_sublsh_nc): Remove silly 4578 assert of mp_limb being non-negative. 4579 45802013-03-21 Torbjorn Granlund <tege@gmplib.org> 4581 4582 * mpn/arm/neon/lshiftc.asm: New file. 4583 4584 * mpn/arm/v6/sqr_basecase.asm: Trim 'sqr_diag_addlsh1' loop. 4585 4586 * gen-trialdivtab.c: Output just raw data, remove actual variables. 4587 * mpn/generic/trialdiv.c: Put variables from gen-trialdivtab.c here, 4588 and make them 'const'. 4589 45902013-03-20 Torbjorn Granlund <tege@gmplib.org> 4591 4592 * config.guess: Rework arm CPU recognition. 4593 * config.sub: Corresponding updates. 4594 * configure.ac: Likewise. 4595 4596 * mpn/x86_64/mulx/adx/addmul_1.asm: Let FAKE_MULXADX be off by default. 4597 4598 * mpn/arm/v7a/cora15/neon/copyi.asm: Move from "..". 4599 * mpn/arm/v7a/cora15/neon/copyd.asm: Likewise. 4600 4601 * config.guess: Tack on "neon" for appropriate arm CPUs. 4602 * configure.ac (arm*-*-*): Recognise neon suffix for a8, a9, and a15. 4603 46042013-03-19 Marco Bodrato <bodrato@mail.dm.unipi.it> 4605 4606 * mpf/fits_u.h: Accept numbers truncating to zero before checking the 4607 sign. 4608 * tests/mpf/t-fits.c: Check new edges. 4609 46102013-03-19 Torbjorn Granlund <tege@gmplib.org> 4611 4612 * tests/arm32check.c: Get printing of clobbered register right. 4613 4614 * mpn/arm/neon/popcount.asm: New file. 4615 * mpn/arm/neon/hamdist.asm: New file. 4616 4617 * tests/Makefile.am (EXTRA_libtests_la_SOURCES): Add arm32call.asm and 4618 arm32check.c. 4619 46202013-03-18 Torbjorn Granlund <tege@gmplib.org> 4621 4622 * configure.ac (arm*-*-*): Define CALLING_CONVENTIONS_OBJS. 4623 4624 * tests/arm32call.asm: New file. 4625 * tests/arm32check.c: New file. 4626 4627 * mpn/arm/arm-defs.m4 (LEA): Rewrite to properly handle repeated use. 4628 (EPILOGUE_cpu): Define. 4629 4630 * mpn/arm/v6/addmul_3.asm: Make code work for PIC. 4631 4632 * tests/x86call.asm: Modernise asm syntax. 4633 * tests/amd64call.asm: Likewise. 4634 4635 * mpn/x86/darwin.m4 (m4append): Move definition from here... 4636 * mpn/asm-defs.m4: ...to here. 4637 46382013-03-18 Marco Bodrato <bodrato@mail.dm.unipi.it> 4639 4640 * doc/gmp.texi (--enable-fat): No quote in concept index. 4641 4642 * mpf/swap.c: Reduce the number of variables. 4643 46442012-03-17 Marc Glisse <marc.glisse@inria.fr> 4645 4646 * tests/cxx/t-do-exceptions-work-at-all-with-this-compiler.cc: New file. 4647 * tests/cxx/Makefile.am: Add new file. Reorder the tests. 4648 46492013-03-17 Torbjorn Granlund <tege@gmplib.org> 4650 4651 * mpn/generic/mul_fft.c: Use TMP_BALLOC*, but combine several areas. 4652 4653 * mpz/powm_ui.c (mod): Use TMP_BALLOC in mu code. 4654 4655 * mpn/arm/v6/addmul_3.asm: New file. 4656 4657 * mpn/arm/v7a/cora15/copyd.asm: Tweak. 4658 4659 * mpn/arm64/copyi.asm: New file. 4660 * mpn/arm64/copyd.asm: New file. 4661 46622013-03-16 Torbjorn Granlund <tege@gmplib.org> 4663 4664 * mpn/arm/v6/addmul_2.asm: Tweak for better A9 performance. 4665 46662013-03-14 Torbjorn Granlund <tege@gmplib.org> 4667 4668 * mpn/ia64/cnd_aors_n.asm: New file. 4669 4670 * mpn/arm64/cnd_aors_n.asm: New file. 4671 4672 * mpn/arm64/aors_n.asm (ADDSUB): Remove unused definition. 4673 4674 * mpn/ia64/aors_n.asm: Remove a redundant ASM_START. 4675 4676 * mpn/arm/cnd_aors_n.asm: Avoid ARM conditional insn execution. 4677 4678 * mpn/x86_64/missing.asm: Move from mulx/adx since we cannot currently 4679 prune missing.asm from path. 4680 * mpn/x86_64/mulx/adx/missing-call.m4: Likewise. 4681 * mpn/x86_64/mulx/adx/missing-inline.m4: Likewise. 4682 * mpn/x86_64/mulx/adx/addmul_1.asm: Update hardwired path. 4683 46842013-03-13 Marco Bodrato <bodrato@mail.dm.unipi.it> 4685 4686 * mpz/cong_2exp.c: Write loops in a cleaner way. 4687 * gmp-impl.h (mpz_zero_p): Likewise. 4688 46892013-03-12 Niels Möller <nisse@lysator.liu.se> 4690 4691 New names mpn_cnd_add_n and mpn_cnd_sub_n. 4692 * mpn/generic/cnd_add_n.c (mpn_cnd_add_n): Renamed file and 4693 function, from addcnd.c:mpn_addcnd_n. 4694 * mpn/generic/cnd_sub_n.c (mpn_cnd_sub_n): Renamed, from 4695 subcnd.c:mpn_subcnd_n. 4696 * mpn/arm/cnd_aors_n.asm: Renamed file, from aorscnd.asm, and 4697 renamed functions. 4698 * mpn/x86_64/cnd_aors_n.asm: Analogous renaming. 4699 * mpn/powerpc64/mode64/cnd_aors_n.asm: Analogous renaming. 4700 * gmp-impl.h (mpn_cnd_add_n, mpn_cnd_add_n): Updated prototypes 4701 with new names. 4702 * configure.ac: Updated for new names. 4703 * tests/refmpn.c (refmpn_cnd_add_n): Renamed, from refmpn_addcnd_n. 4704 (refmpn_cnd_sub_n): Renamed, from refmpn_subcnd_n. 4705 * tests/tests.h (refmpn_cnd_add_n, refmpn_cnd_sub_n): Updated 4706 prototypes with new names. 4707 * tune/common.c (speed_mpn_cnd_add_n): Renamed, from 4708 speed_mpn_addcnd_n, call mpn_cnd_add_n. 4709 (speed_mpn_cnd_sub_n): Renamed, from speed_mpn_subcnd_n, call 4710 mpn_cnd_sub_n. 4711 * tune/speed.h (speed_mpn_cnd_add_n, speed_mpn_cnd_sub_n): Updated 4712 prototypes with new names. 4713 * tune/speed.c (routine): Updated list with new names. 4714 * tests/devel/try.c: Updated for new mpn_cnd_* names. 4715 * mpn/generic/sbpi1_div_sec.c: Likewise. 4716 * mpn/generic/powm_sec.c: Likewise. 4717 47182013-03-12 Torbjorn Granlund <tege@gmplib.org> 4719 4720 * configure.ac: Add "missing" to extra_functions_64 for coreibwl. 4721 4722 * mpn/x86_64/mulx/adx/addmul_1.asm: Simplify. Make FAKE_MULXADX the 4723 default awaiting proper qemu behaviour. 4724 47252013-03-11 Torbjorn Granlund <tege@gmplib.org> 4726 4727 * mpn/x86_64/aorscnd_n.asm: Read 32 bits for 'n' arguments on DOS64. 4728 4729 * tests/mpz/t-powm_ui.c: Test larger arguments. General cleanup. 4730 4731 * mpz/powm_ui.c (mod): Adhere to mpn_mu_div_qr's overlap requirements. 4732 47332013-03-10 Niels Möller <nisse@lysator.liu.se> 4734 4735 * mpn/generic/sbpi1_div_sec.c: Update calls of mpn_addcnd_n and 4736 mpn_subcnd_n. 4737 * mpn/generic/powm_sec.c (MPN_REDC_1_SEC, MPN_REDC_2_SEC) 4738 (mpn_powm_sec): Update calls of mpn_subcnd_n. 4739 4740 * tests/tests.h (refmpn_addcnd_n, refmpn_subcnd_n): Update 4741 declarations. 4742 * tests/refmpn.c (refmpn_addcnd_n, refmpn_subcnd_n): Similar 4743 reorder of arguments. 4744 * tests/devel/try.c (call): Pass condition first, for 4745 TYPE_ADDCND_N and TYPE_SUBCND_N. 4746 4747 * tune/common.c (speed_mpn_addcnd_n, speed_mpn_subcnd_n): Update 4748 to pass condition as first argument. 4749 4750 * gmp-impl.h (mpn_addcnd_n, mpn_subcnd_n): Updated declarations. 4751 4752 * mpn/generic/addcnd_n.c (mpn_addcnd_n): Reordered arguments, make 4753 condition the first argument. 4754 * mpn/generic/subcnd_n.c (mpn_subcnd_n): Likewise. 4755 * mpn/arm/aorscnd_n.asm: Likewise. 4756 * mpn/x86_64/aorscnd_n.asm: Likewise. 4757 * mpn/powerpc64/mode64/aorscnd_n.asm: Likewise. 4758 47592013-03-10 Torbjorn Granlund <tege@gmplib.org> 4760 4761 * mpn/x86_64/mulx/adx/missing.asm: Simulate some mulx/adx insns. 4762 * mpn/x86_64/mulx/adx/missing-call.m4: Call variant. 4763 * mpn/x86_64/mulx/adx/missing-inline.m4: Inline variant. 4764 4765 * mpn/sparc64/ultrasparct3/missing.asm: Simulate some v9-2011 insns. 4766 * mpn/sparc64/ultrasparct3/missing.m4: Inline or invoke missing.asm for 4767 v9-2011 insn. 4768 4769 * configure.ac: Strip `haswell' from paths for now. 4770 4771 * mpn/x86_64/mulx/addmul_1.asm: New. 4772 * mpn/x86_64/mulx/mul_1.asm: Rewrite file from `haswell' subdir. 4773 * mpn/x86_64/mulx/adx/addmul_1.asm: Likewise. 4774 * mpn/x86_64/haswell: Remove. 4775 4776 * mpn/arm/v7a/cora15/mul_1.asm: New file. 4777 * mpn/arm/v7a/cora15/addmul_1.asm: New file. 4778 47792013-03-09 Marco Bodrato <bodrato@mail.dm.unipi.it> 4780 4781 * tests/mpz/t-cong_2exp.c: Improve coverage. 4782 47832013-03-09 Torbjorn Granlund <tege@gmplib.org> 4784 4785 * mpn/sparc64/ultrasparc1234/add_n.asm: Use g5 instead of g4. 4786 * mpn/sparc64/ultrasparc1234/sub_n.asm: Likewise. 4787 4788 * mpn/sparc64/ultrasparct3/aormul_2.asm: Fix a typo. 4789 47902013-03-07 Torbjorn Granlund <tege@gmplib.org> 4791 4792 * mpn/arm/v7a/cora9/gmp-mparam.h: New file. 4793 4794 * configure.ac (GMP_MULFUNC_CHOICES): Support mul_2 + addmul_2. 4795 4796 * mpn/sparc64/ultrasparct3/aormul_2.asm: New file. 4797 4798 * mpn/sparc64/ultrasparct3/submul_1.asm: Optimise out two carry 4799 propagating adds. 4800 48012013-03-06 David Miller <davem@davemloft.net> 4802 4803 * config.guess: Recognize UltraSparc T4 under Linux. 4804 * configure.ac: Add sparc64/ultrasparct3 to path_64 when T3 or T4. 4805 Append -xarch=v8plusd or -xarch=v9d to command line, as needed. 4806 * mpn/sparc64/ultrasparct3/mul_1.asm: New file. 4807 * mpn/sparc64/ultrasparct3/addmul_1.asm: New file. 4808 * mpn/sparc64/ultrasparct3/submul_1.asm: New file. 4809 * mpn/sparc64/ultrasparct3/add_n.asm: New file. 4810 * mpn/sparc64/ultrasparct3/sub_n.asm: New file. 4811 4812 * mpn/sparc32/ultrasparct1/mul_1.asm: Unroll main loop one time, add 4813 T2/T3/T4 timings. 4814 * mpn/sparc32/ultrasparct1/addmul_1.asm: Likewise. 4815 * mpn/sparc32/ultrasparct1/submul_1.asm: Likewise. 4816 48172013-03-04 Torbjorn Granlund <tege@gmplib.org> 4818 4819 * mpn/arm/neon/lorrshift.asm: New file. 4820 48212013-03-03 Torbjorn Granlund <tege@gmplib.org> 4822 4823 * mpn/arm/v7a/cora15/copyd.asm: New file. 4824 * mpn/arm/v7a/cora15/copyi.asm: New file. 4825 4826 * mpn/arm64/logops_n.asm: New file. 4827 * mpn/arm64/gcd_1.asm: New file. 4828 * mpn/arm64/aorsmul_1.asm: New file. 4829 * mpn/arm64/addmul_1.asm: Remove. 4830 * mpn/arm64/aors_n.asm: Complete rewrite. 4831 4832 * mpn/arm/tabselect.asm: New file. 4833 * mpn/arm/neon/tabselect.asm: New file. 4834 4835 * mpn/arm/copyi.asm: Software pipeline. 4836 * mpn/arm/copyd.asm: Likewise. 4837 4838 * config.guess: Rework tmp file handling to resemble configfsf.guess's. 4839 48402013-03-03 Niels Möller <nisse@lysator.liu.se> 4841 4842 * doc/gmp.texi (Integer Special Functions): Document 4843 mpz_limbs_read, mpz_limbs_write, mpz_limbs_modify, 4844 mpz_limbs_finish, mpz_roinit_n and MPZ_ROINIT_N. 4845 4846 * mpz/roinit_n.c (mpz_roinit_n): Normalize the input. 4847 48482013-02-27 Niels Möller <nisse@lysator.liu.se> 4849 4850 * tune/common.c (speed_measure): Increase repetition count if we 4851 get a zero measurement. 4852 48532013-02-26 Niels Möller <nisse@lysator.liu.se> 4854 4855 * tests/mpz/t-limbs.c (check_roinit): Test MPZ_ROINIT_N only if 4856 compiler supports c99. 4857 48582013-02-25 Niels Möller <nisse@lysator.liu.se> 4859 4860 * mpz/limbs_finish.c (mpz_limbs_finish): New file and function. 4861 * mpz/limbs_modify.c (mpz_limbs_modify): New file and function. 4862 * mpz/limbs_read.c (mpz_limbs_read): New file and function. 4863 * mpz/limbs_write.c (mpz_limbs_write): New file and function. 4864 * mpz/roinit_n.c (mpz_roinit_n): New file and function. 4865 * gmp-h.in: Declare new functions. 4866 (MPZ_ROINIT_N): New macro. 4867 * mpz/Makefile.am (libmpz_la_SOURCES): Added new files. 4868 * Makefile.am (MPZ_OBJECTS): Added new object files. 4869 4870 * tests/mpz/t-limbs.c: New testcase. 4871 * tests/mpz/Makefile.am (check_PROGRAMS): Added t-limbs. 4872 48732013-02-22 Torbjorn Granlund <tege@gmplib.org> 4874 4875 * configure.ac: Fix typo in adx/mulx path stripping code. 4876 * config.sub: Match coreibwl. 4877 48782013-02-20 Niels Möller <nisse@lysator.liu.se> 4879 4880 * tests/mpq/t-get_d.c (check_random): Rewrote to make test less 4881 dependent on float operations. Fixes problem with m68k-linux and 4882 extended float precision. 4883 48842013-02-20 Torbjorn Granlund <tege@gmplib.org> 4885 4886 * mpn/x86_64/haswell/mulx/adx/addmul_1.asm: New file. 4887 4888 * configure.ac: Support coreibwl. Use proper name for ADX extension. 4889 * acinclude.m4 (GMP_ASM_X86_ADX): Rename from GMP_ASM_X86_ADOX. 4890 4891 * tests/tests.h (TESTS_REPS): Keep count >= 1. 4892 48932013-02-17 Marco Bodrato <bodrato@mail.dm.unipi.it> 4894 4895 * gmpxx.h (mpq_class, mpf_class) [init_ui, init_si, assign_si]: 4896 Optimise _si using _ui for positive arguments. 4897 (__gmp_hypot_function): Use _mul_ui to square an ui, abs for si. 4898 4899 * mpz/remove.c: Delay allocation in the generic case; use swap 4900 instead of set. 4901 * mpn/generic/remove.c: Delay (possibly smaller) allocation. 4902 49032013-02-17 Marc Glisse <marc.glisse@inria.fr> 4904 4905 * cxx/osdoprnti.cc: Use <stdarg.h> and <string.h> rather than <cstdarg> 4906 and <cstring> (revert 2002-12-21). 4907 4908 * tests/cxx/Makefile.am: Link with libm. 4909 * tests/cxx/t-ops2.cc: Comment about more tests. Use <math.h> rather 4910 than <cmath> and using namespace. Don't include <iostream>. 4911 4912 * gmpxx.h (__GMPXX_BITS_TO_LIMBS, __GMPQ_NUM_DBL_LIMBS, 4913 __GMPQ_DEN_DBL_LIMBS, __GMPXX_TMPQ_D): New macros. 4914 (__gmp_binary_plus, __gmp_binary_minus, __gmp_binary_multiplies, 4915 __gmp_binary_divides, __gmp_binary_equal, __gmp_binary_less, 4916 __gmp_cmp_function): Use __GMPXX_TMPQ_D. 4917 * tests/cxx/t-ops2.cc: Test __GMPXX_TMPQ_D on DBL_MIN, DBL_MAX. 4918 4919 * gmpxx.h (__gmp_binary_multiplies, __gmp_binary_divides): Use 4920 __GMPXX_CONSTANT_TRUE. 4921 49222013-02-16 Marc Glisse <marc.glisse@inria.fr> 4923 4924 * gmpxx.h: Include <algorithm>. 4925 49262013-02-16 Torbjorn Granlund <tege@gmplib.org> 4927 4928 * mpn/Makefile.am (TARG_DIST): Add arm64. 4929 4930 * mpn/x86_64/x86_64-defs.m4 (PROTECT): Emit '.hidden' instead of 4931 '.protected" to please Sun's assembler, but also for semantic reasons. 4932 49332013-02-15 Torbjorn Granlund <tege@gmplib.org> 4934 4935 * configure.ac (arm64*-*-*): Match this. 4936 4937 * mpn/arm64/aors_n.asm: New file. 4938 * mpn/arm64/addmul_1.asm: New file. 4939 * mpn/arm64/mul_1.asm: New file. 4940 49412013-02-15 Marc Glisse <marc.glisse@inria.fr> 4942 4943 * gmpxx.h (__GMPXX_DEFINE_ARITHMETIC_CONSTRUCTORS, 4944 __GMPXX_DEFINE_ARITHMETIC_ASSIGNMENTS): New macros. 4945 (mpz_class, mpq_class, mpf_class) [init_ui, init_si, init_d, 4946 assign_ui, assign_si, assign_d]: New functions. 4947 (__gmp_expr::__gmp_expr, __gmp_expr::operator=): Replace with macros. 4948 (__GMPXX_CONSTANT_TRUE): New macro. 4949 49502013-02-15 Marco Bodrato <bodrato@mail.dm.unipi.it> 4951 4952 * gmp-impl.h (NEG_CAST, ABS_CAST): Use __GMP_CAST. 4953 * mpz/fits_s.h: Use NEG_CAST. 4954 49552013-02-14 Marc Glisse <marc.glisse@inria.fr> 4956 4957 * gmpxx.h (__gmp_binary_greater): Forward to __gmp_binary_less. 4958 (__gmp_binary_equal): Forward to itself after swapping operands. 4959 49602013-02-14 Marco Bodrato <bodrato@mail.dm.unipi.it> 4961 4962 * mp_dv_tab.c (__gmp_digit_value_tab): Remove a line of unused values. 4963 * mpf/set_str.c: Update offset accordingly. 4964 * mpz/inp_str.c: Likewise. 4965 * mpz/set_str.c: Likewise. 4966 4967 * gmp-h.in (mpq_cmp_ui): Optimise comparison with 1/1. 4968 * tests/mpq/t-cmp_ui.c: Test special comparisons: 0/1, 1/1. 4969 4970 * mpz/clrbit.c: Reorganise branches. 4971 * mpz/setbit.c: Likewise. 4972 * mpz/combit.c: Same micro-optimisations as in set/clr. 4973 4974 * mpz/aors_ui.h: No realloc if size was zero. 4975 * mpz/ior.c: Use macros: MPZ_REALLOC and MPN_INCR_U. 4976 4977 * gmp-impl.h (NEG_CAST): New macro, used by ABS_CAST. 4978 * mpq/cmp_si.c: Use NEG_CAST. 4979 * mpz/cmp_si.c: Reorganise branches. 4980 49812013-02-13 Torbjorn Granlund <tege@gmplib.org> 4982 4983 * acinclude.m4 (GMP_ASM_X86_MULX, GMP_ASM_X86_ADOX): New feature tests. 4984 * configure.ac: Use new feature tests. 4985 4986 * mpn/x86_64/haswell/mulx/mul_1.asm: File moved to cope with older 4987 assemblers. 4988 * configure.ac: Update haswell path to include "mulx". 4989 49902013-02-12 Torbjorn Granlund <tege@gmplib.org> 4991 4992 * configure.ac: Recognise haswell. 4993 * config.guess: Recognise haswell. 4994 * config.sub: Match haswell. 4995 4996 * mpn/x86_64/haswell/mul_1.asm: New file, mainly for testing HNI. 4997 49982013-02-12 Marco Bodrato <bodrato@mail.dm.unipi.it> 4999 5000 * gmp-impl.h (MPZ_PROVOKE_REALLOC): Remove unused macro. 5001 * gen-fac.c (gen_consts): Remove obsolete code, use swap instead of set. 5002 5003 * mpn/generic/mulmod_bnm1.c: Reorganise branches. 5004 5005 * mpz/bin_ui.c: Avoid a copy when n < 0. 5006 * mpz/mfac_uiui.c: Reduce memory usage. 5007 * mpz/primorial_ui.c: Use MPZ_NEWALLOC. 5008 5009 * mpz/import.c: Use BITS_TO_LIMBS and MPZ_NEWALLOC. 5010 * mpz/inp_raw.c: Likewise. 5011 * mpz/rrandomb.c: Likewise. 5012 * mpz/urandomb.c: Likewise. 5013 * mpn/generic/random2.c: Likewise. 5014 5015 * mpn/generic/brootinv.c: Micro-optimisation. 5016 5017 * mpf/set_str.c: Don't chech base==0 when base is strictly positive. 5018 50192013-02-10 Torbjorn Granlund <tege@gmplib.org> 5020 5021 * Version 5.1.1 released. 5022 50232013-02-07 Marco Bodrato <bodrato@mail.dm.unipi.it> 5024 5025 * tune/speed.h (SPEED_ROUTINE_MPN_MUL): Use operands from struct s. 5026 * tune/README: Document new parameter syntax mpn_mul.<#> . 5027 50282013-02-06 Niels Möller <nisse@lysator.liu.se> 5029 5030 * tests/mpz/t-jac.c (check_large_quotients): Rewrote. Now uses a 5031 more efficient method for generating the test inputs. 5032 50332013-02-05 Torbjorn Granlund <tege@gmplib.org> 5034 5035 * tests/mpn/t-div.c: Limit random dbits to avoid an infinite loop. 5036 50372013-02-03 Torbjorn Granlund <tege@gmplib.org> 5038 5039 * tests/mpz/reuse.c: Fix typo causing the same negation condition to be 5040 applied to all operands. Fix condition for when to invoke mpz_remove. 5041 Make different-size random operands. 5042 50432013-02-02 Marco Bodrato <bodrato@mail.dm.unipi.it> 5044 5045 * mpz/remove.c: Correct the sign in case of reuse. 5046 50472013-02-01 Torbjorn Granlund <tege@gmplib.org> 5048 5049 * gmp-impl.h (DIGITS_IN_BASE_PER_LIMB): Add a cast. 5050 (LIMBS_PER_DIGIT_IN_BASE): Likewise. 5051 5052 * tests/refmpn.c (refmpn_mul): Use toom6h instead of toom44 for the 5053 largest operands. 5054 50552013-01-31 Torbjorn Granlund <tege@gmplib.org> 5056 5057 * mpn/generic/toom44_mul.c: Revert last change in favour of a simple 5058 change (thanks Marco!). 5059 * mpn/generic/toom4_sqr.c: Likewise. 5060 50612013-01-30 Torbjorn Granlund <tege@gmplib.org> 5062 5063 * mpn/generic/toom44_mul.c (MAYBE_mul_toom44): Take toom6h and toom8h 5064 into account, using new macro MUL_NEXTALG_THRESHOLD. 5065 * mpn/generic/toom4_sqr.c (MAYBE_sqr_toom4): Likewise. 5066 50672013-01-26 Marco Bodrato <bodrato@mail.dm.unipi.it> 5068 5069 * mpz/remove.c: init+set=init_set, cast before shifting. 5070 5071 * mpz/cmp_si.c: Use ABS_CAST. 5072 50732013-01-26 Torbjorn Granlund <tege@gmplib.org> 5074 5075 * tests/mpn/logic.c: Set things up to always test library logops, not 5076 gmp-impl.h's inlined variants. Test also mpn_com. 5077 5078 * tests/mpn/t-mod_1.c: Test also mpn_mod_1s_3p. 5079 5080 * mpn/generic/mod_1_3.c: Swap some lines to make it similar to mod_4.c. 5081 5082 * tests/mpz/reuse.c: Fix typo in last change. 5083 50842013-01-22 Torbjorn Granlund <tege@gmplib.org> 5085 5086 * Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*): Bump version info. 5087 * gmp-h.in: Bump version. 5088 5089 * tests/mpz/reuse.c: Delete always zero 'failures' and code depending 5090 on it. Replace rotating progress with real measure. 5091 5092 * Makefile.am (check-mini-gmp): Fix typo in last change. 5093 50942013-01-20 Torbjorn Granlund <tege@gmplib.org> 5095 5096 * Makefile.am (check-mini-gmp): Set also DYLD_LIBRARY_PATH for the 5097 benefit of Darwin. 5098 5099 * tests/mpn/t-div.c: Test mpn_sb_div_qr_sec and mpn_sb_div_r_sec. 5100 (main): Separate divisor into normalised (dnp) and unnormalised (dup), 5101 pass appropriate variant to each function. 5102 (main): Make negative `test' index value mean divisor bits, for better 5103 small operands coverage. 5104 (main): Put random junk at qp[] instead of zeroing. 5105 5106 * tests/mpz/t-remove.c: Back out last change which left `divisor_size' 5107 uninitialised; achieve change's aim with a parameter tweak. 5108 51092013-01-20 Torbjorn Granlund <tege@gmplib.org> 5110 5111 * tests/memory.c (PTRLIMB): New macro, used for conformant casting. 5112 51132013-01-19 Marco Bodrato <bodrato@mail.dm.unipi.it> 5114 5115 * tests/mpz/t-set_str.c: Check also failing conditions. 5116 5117 * tests/mpz/t-remove.c: Test removal of 1. 5118 51192013-01-18 Torbjorn Granlund <tege@gmplib.org> 5120 5121 * mpn/generic/set_str.c (normalization_steps): Eliminate set-but-unused 5122 variable. 5123 5124 * tests/tests.h (TESTS_REPS): Fix printf argument type clashes. 5125 51262013-01-15 Torbjorn Granlund <tege@gmplib.org> 5127 5128 From Mike Frysinger: 5129 * configure.ac: Add x32 ABI for x86_64. 5130 51312013-01-14 Marco Bodrato <bodrato@mail.dm.unipi.it> 5132 5133 * doc/gmp.texi (gmp_version): Remove "was used" repetition. 5134 (Upward compatibility): Mention mpn_bdivmod, GMP 4 -> GMP 5. 5135 51362013-01-13 Marc Glisse <marc.glisse@inria.fr> 5137 5138 * doc/gmp.texi: Let mpn_sqrtrem reference mpn_perfect_square_p instead 5139 of mpz_perfect_square_p. 5140 51412013-01-10 Marco Bodrato <bodrato@mail.dm.unipi.it> 5142 5143 * mpz/export.c: Less restrictive ASSERTs. 5144 51452013-01-10 Torbjorn Granlund <tege@gmplib.org> 5146 5147 * Makefile.am (check-mini-gmp): Set LD_LIBRARY_PATH to allow testing 5148 with dynamic main GMP build. 5149 51502013-01-05 Torbjorn Granlund <tege@gmplib.org> 5151 5152 * longlong.h (aarch64): Make add_ssaaaa and sub_ddmmss actually work. 5153 51542013-01-04 Torbjorn Granlund <tege@gmplib.org> 5155 5156 From Marko Lindqvist: 5157 * configure.ac: Use AC_CONFIG_HEADERS instead of the obsolete 5158 AM_CONFIG_HEADER. 5159 51602013-01-02 Marco Bodrato <bodrato@mail.dm.unipi.it> 5161 5162 * tests/mpz/bit.c: Wider testing for mpz_combit. 5163 * tests/mpz/logic.c: Check the -2^n case. 5164 5165 * mpz/ior.c: Fixed an allocation bug in the -2^n case. 5166 51672012-12-31 Torbjorn Granlund <tege@gmplib.org> 5168 5169 * mpn/generic/get_d.c: Minor reorg, add vax D code. 5170 5171 * gmp-impl.h (double_extract): New union type for vax D floats. 5172 5173 * tests/mpq/t-get_d.c (check_random): Limit exponents on vax. 5174 51752012-12-30 Marco Bodrato <bodrato@mail.dm.unipi.it> 5176 5177 * tests/mpz/bit.c (check_clr_extend): Check _set shrink. 5178 51792012-12-29 Torbjorn Granlund <tege@gmplib.org> 5180 5181 * demos/calc/calc.c: Remove generated file from repo. 5182 * demos/calc/calc.h: Likewise. 5183 * demos/calc/calclex.c: Likewise. 5184 51852012-12-27 Torbjorn Granlund <tege@gmplib.org> 5186 5187 * mpn/generic/get_d.c: Complete rewrite of non-IEEE code. 5188 5189 * tests/mpq/t-get_d.c (main): Suppress check_random for vax. 5190 51912012-12-25 Torbjorn Granlund <tege@gmplib.org> 5192 5193 * mpn/x86_64/bdiv_q_1.asm: Use LEA for binvert_limb_table. 5194 51952012-12-23 Torbjorn Granlund <tege@gmplib.org> 5196 5197 * tests/mpz/t-get_d.c (check_onebit): Decrease vax limit to avoid 5198 overflow in last, unused 'want' value. 5199 5200 * config.guess: Recognise AMD family 22 as a future bobcat. 5201 52022012-12-21 Torbjorn Granlund <tege@gmplib.org> 5203 5204 * configure.ac: Rename configure.in. 5205 52062012-12-17 Torbjorn Granlund <tege@gmplib.org> 5207 5208 * Version 5.1.0 released. 5209 5210 * configure.in (none-*-*): Allow this again, but print a warning. 5211 52122012-12-17 Marco Bodrato <bodrato@mail.dm.unipi.it> 5213 5214 * mpz/n_pow_ui.c: Fix typos in an ASSERT. 5215 52162012-12-16 Torbjorn Granlund <tege@gmplib.org> 5217 5218 * mpn/generic/mu_div_qr.c (mpn_preinv_mu_div_qr): Explicitly use 5219 MPN_COPY_INCR for slightly overlapping copy. 5220 52212012-12-15 Marco Bodrato <bodrato@mail.dm.unipi.it> 5222 5223 * tests/mpn/toom-sqr-shared.h: Skip ALLOCs if the test is skipped. 5224 52252012-12-13 Torbjorn Granlund <tege@gmplib.org> 5226 5227 * mpn/x86_64/dos64.m4 (PIC): Move definition early. 5228 (JMPENT): Remove PIC variant. 5229 5230 * mpn/x86_64/darwin.m4 (JUMPTABSECT): Define to .text, instead of 5231 something sensible. 5232 52332012-12-12 Torbjorn Granlund <tege@gmplib.org> 5234 5235 * mpn/x86_64/x86_64-defs.m4 (JMPENT): New macro. 5236 * mpn/x86_64/dos64.m4: Likewise. 5237 * mpn/x86_64/darwin.m4: Likewise. 5238 * mpn/x86_64/mod_34lsub1.asm: Use JMPENT to properly support PIC. 5239 * mpn/x86_64/mullo_basecase.asm: Likewise. 5240 * mpn/x86_64/sqr_basecase.asm: Likewise. 5241 52422012-12-11 Torbjorn Granlund <tege@gmplib.org> 5243 5244 * mpn/x86_64/mod_34lsub1.asm: Try different jump table for the benefit 5245 of broken Apple linkers. 5246 52472012-12-09 Torbjorn Granlund <tege@gmplib.org> 5248 5249 * configure.in: Make GMP_NONSTD_ABI ABI specific. 5250 52512012-12-08 Torbjorn Granlund <tege@gmplib.org> 5252 5253 * Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*): Bump version info. 5254 * gmp-h.in: Bump version. 5255 52562012-12-06 Marco Bodrato <bodrato@mail.dm.unipi.it> 5257 5258 * tests/mpq/reuse.c: New test (adapted from mpf/reuse.c). 5259 * tests/mpq/Makefile.am (check_PROGRAMS): Add reuse. 5260 5261 * mpz/abs.c: Use NEWALLOC. 5262 * mpz/neg.c: Likewise. 5263 * mpz/com.c: Reduce branches. 5264 52652012-12-05 Niels Möller <nisse@lysator.liu.se> 5266 5267 * mpn/generic/brootinv.c (mpn_brootinv): Make valgrind happier, at 5268 the cost of a redundant MPN_ZERO. 5269 5270 * mpz/jacobi.c (mpz_jacobi): Check for asize == 0 or bsize == 0 5271 before using the low limbs. 5272 52732012-12-05 Torbjorn Granlund <tege@gmplib.org> 5274 5275 * mpn/generic/set_str.c (mpn_dc_set_str): Work around a valgrind issue. 5276 5277 * mpz/powm_ui.c: Don't assume >= 2 limbs in mod argument. 5278 5279 * tests/tests.h (TESTS_REPS): Handle float GMP_CHECK_REPFACTOR. 5280 5281 * longlong.h: Refine cpp test for vax. 5282 * tests/mpn/t-get_d.c: Likewise. 5283 * tests/mpz/t-get_d.c: Likewise. 5284 * tests/mpz/t-cmp_d.c: Likewise. 5285 * tests/mpz/t-get_d.c: Likewise. 5286 * tests/mpq/t-get_d.c: Likewise. 5287 * tests/mpf/t-get_d.c: Likewise. 5288 52892012-11-30 Torbjorn Granlund <tege@gmplib.org> 5290 5291 * gen-fac.c (gen_consts): Correct printf types. 5292 5293 * mpn/arm/v7a/cora15/gmp-mparam.h: New file. 5294 5295 * configure.in (arm*-*-*): New compiler optional "tune". Pass value for 5296 selected processors. Add more specific path components. 5297 52982012-11-29 Torbjorn Granlund <tege@gmplib.org> 5299 5300 From Andoni Morales Alastruey: 5301 * longlong.h: Conditionalise ARM asm on !__thumb__. 5302 53032012-11-28 Torbjorn Granlund <tege@gmplib.org> 5304 5305 * config.guess (arm*-*-*): Support specific ARM processors. 5306 * config.sub: Match arm CPUs. 5307 * configure.in (arm*-*-*): Likewise. 5308 5309 * mpz/powm.c: Move new_b out since it lives on through b. 5310 5311 * configure.in (arm*-*-*): Pass -marm to deal with compilers defaulting 5312 to thumb code. 5313 53142012-11-26 Torbjorn Granlund <tege@gmplib.org> 5315 5316 * tests/cxx/t-ops2.cc (checkz): Reduce huge numbers to avoid vax 5317 overflow. 5318 53192012-11-25 Torbjorn Granlund <tege@gmplib.org> 5320 5321 * mpn/generic/get_d.c: Reinsert non-IEEE code. 5322 5323 * mpn/vax/add_n.asm: New file. 5324 * mpn/vax/add_n.s: Remove. 5325 * mpn/vax/addmul_1.asm: New file. 5326 * mpn/vax/addmul_1.s: Remove. 5327 * mpn/vax/lshift.asm: New file. 5328 * mpn/vax/lshift.s: Remove. 5329 * mpn/vax/mul_1.asm: New file. 5330 * mpn/vax/mul_1.s: Remove. 5331 * mpn/vax/rshift.asm: New file. 5332 * mpn/vax/rshift.s: Remove. 5333 * mpn/vax/sub_n.asm: New file. 5334 * mpn/vax/sub_n.s: Remove. 5335 * mpn/vax/submul_1.asm: New file. 5336 * mpn/vax/submul_1.s: Remove. 5337 5338 * mpn/vax/elf.m4: New file. 5339 * configure.in (vax*-*-*elf*): New case, grabbing vax/elf.m4. 5340 5341 * tests/mpn/t-get_d.c (check_onebit): Get vax bounds right. 5342 (main): Switch off check_rand for vax. 5343 53442012-11-16 Torbjorn Granlund <tege@gmplib.org> 5345 5346 * mpn/generic/powm_sec.c (redcify): Use mpn_sb_div_r_sec. 5347 5348 * mpn/generic/sb_div_sec.c: New file. 5349 * mpn/generic/sbpi1_div_sec.c: New file. 5350 * configure.in (gmp_mpn_functions): Add new files. 5351 * gmp-impl.h: Declare new functions. 5352 53532012-11-12 Torbjorn Granlund <tege@gmplib.org> 5354 5355 * longlong.h: Add ARM64 support. 5356 * longlong.h: Add AVR support. 5357 5358 * mpn/powerpc64/mode64/divrem_1.asm: Tune, simplify. 5359 5360 * mpq/md_2exp.c: Use MPN_COPY_INCR, not MPN_COPY_DECR. 5361 * tests/mpq/t-md_2exp.c (check_random): New function. 5362 53632012-11-10 Torbjorn Granlund <tege@gmplib.org> 5364 5365 * mpn/generic/remove.c (mpn_bdiv_qr_wrap): Make static. 5366 53672012-11-04 Torbjorn Granlund <tege@gmplib.org> 5368 5369 * mpz/powm_ui.c: Rewrite. 5370 53712012-11-01 Niels Möller <nisse@lysator.liu.se> 5372 5373 * mpn/generic/brootinv.c (mpn_brootinv): Input size in limbs 5374 rather than bits. Use single-precision iterations for the first 5375 limb. 5376 * mpn/generic/perfpow.c (is_kth_power): Update mpn_brootinv call. 5377 * tests/mpn/t-brootinv.c (main): Likewise. 5378 * tune/speed.h (SPEED_ROUTINE_MPN_BROOTINV): Likewise. 5379 * gmp-impl.h (mpn_brootinv): Updated prototype. 5380 5381 * mpn/generic/hgcd2.c (mpn_hgcd2): Removed redundant loop exit 5382 tests in the single-precision loop. 5383 5384 * mpz/combit.c (mpz_combit): Rewrite, optimizing for the common 5385 case. 5386 53872012-10-31 Niels Möller <nisse@lysator.liu.se> 5388 5389 * tests/mpn/Makefile.am (check_PROGRAMS): Added t-brootinv. 5390 * tests/mpn/t-brootinv.c: New file 5391 5392 * mpn/generic/broot.c (mpn_broot_invm1): Avoid a mullo_n in the 5393 loop, and do powering as a plain mpn_sqr followed by mpn_powlo. 5394 5395 * tune/speed.c (routine): Added mpn_broot, mpn_broot_invm1, 5396 mpn_brootinv. 5397 5398 * tune/common.c (speed_mpn_broot, speed_mpn_broot_invm1) 5399 (speed_mpn_brootinv): New functions. 5400 * tune/speed.h (SPEED_ROUTINE_MPN_BROOT) 5401 (SPEED_ROUTINE_MPN_BROOTINV): New macros. 5402 5403 * mpn/generic/broot.c (mpn_broot_invm1): Made non-static (mainly 5404 for benchmarking). 5405 * gmp-impl.h (mpn_broot_invm1): Declare it. 5406 54072012-10-28 Torbjorn Granlund <tege@gmplib.org> 5408 5409 * configure.in (gmp_mpn_functions): Add new files. 5410 * gmp-impl.h: Declare new functions. 5411 * mpn/generic/perfpow.c: Overhaul. 5412 (binv_root, binv_sqroot): Remove. 5413 * mpn/generic/brootinv.c: New file, code from overhauled binv_root. 5414 * mpn/generic/bsqrtinv.c: New file, code from overhauled binv_sqroot. 5415 * mpn/generic/bsqrt.c: New file. 5416 5417 * tests/mpn/t-broot.c: Add a forgotten TMP_MARK. 5418 54192012-10-28 Niels Möller <nisse@lysator.liu.se> 5420 5421 * mpn/generic/broot.c (mpn_broot): New file and function. 5422 * configure.in (gmp_mpn_functions): Add broot. 5423 * gmp-impl.h (mpn_broot): Declare. 5424 * tests/mpn/t-broot.c: New testcase. 5425 * tests/mpn/Makefile.am (check_PROGRAMS): Added t-broot. 5426 54272012-10-27 Torbjorn Granlund <tege@gmplib.org> 5428 5429 * mpn/generic/remove.c: Get remainder allocation right. 5430 54312012-10-25 Torbjorn Granlund <tege@gmplib.org> 5432 5433 * longlong.h: De-support old POWER asm syntax. 5434 5435 * tests/mpz/t-remove.c: Run more tests, but use a tad smaller operands. 5436 5437 * mpn/generic/remove.c (mpn_bdiv_qr_wrap): New function. 5438 (mpn_remove): Call mpn_bdiv_qr_wrap. 5439 * mpz/remove.c: Enable suppressed mpn_remove call. 5440 54412012-10-17 Torbjorn Granlund <tege@gmplib.org> 5442 5443 * mpz/powm_ui.c (mpz_powm_ui): Deflect to mpz_powm for large exponent. 5444 54452012-09-10 Torbjorn Granlund <tege@gmplib.org> 5446 5447 * demos/factorize.c: Rewrite no more current form. Implement Lucas 5448 prime proving, and make its use the default. 5449 * demos/primes.h: New file. 5450 54512012-08-24 Torbjorn Granlund <tege@gmplib.org> 5452 5453 * demos/factorize.c: Overhaul. 5454 54552012-08-06 Marco Bodrato <bodrato@mail.dm.unipi.it> 5456 5457 * doc/gmp.texi (mpn_neg): Correctly document returned type. 5458 5459 * gmp-impl.h (_mpz_newalloc, log_n_max): mark with inline (spotted by Niels). 5460 54612012-07-28 Marc Glisse <marc.glisse@inria.fr> 5462 5463 * gmpxx.h (std::common_type): New partial specializations with builtin 5464 types. 5465 * tests/cxx/t-cxx11.cc: Test it. 5466 54672012-07-21 Torbjorn Granlund <tege@gmplib.org> 5468 5469 * mpn/powerpc32/vmx/mod_34lsub1.asm: Fix r0 clobbering issue with 5470 "large" code affecting elf+darwin PIC. 5471 54722012-07-21 Marc Glisse <marc.glisse@inria.fr> 5473 5474 * gmpxx.h (__GMPXX_CONSTANT): Disable for g++-3.4. 5475 54762012-06-26 Torbjorn Granlund <tege@gmplib.org> 5477 5478 * Makefile.am (LIBMP_LT_*): Remove these. 5479 54802012-06-26 Marc Glisse <marc.glisse@inria.fr> 5481 5482 * Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*): Update comment for 5.1.0. 5483 54842012-06-24 Marco Bodrato <bodrato@mail.dm.unipi.it> 5485 5486 * configure.in (CALLING_CONVENTIONS_OBJS): Disable any use of 5487 assembly code with the --disable-assembly option. 5488 * mpz/oddfac_1.c: Use the ASSERT_CODE macro. 5489 * gen-trialdivtab.c (mpz_log2): Use mpz_sizeinbase (., 2). 5490 5491 * gmp-impl.h (MPN_SIZEINBASE_16): Replace with MPN_SIZEINBASE_2EXP 5492 from mpz/export.c . 5493 * mpz/export.c (MPN_SIZEINBASE_2EXP): Removed. 5494 * mpn/generic/sizeinbase.c: Use MPN_SIZEINBASE. 5495 5496 * mpz/nextprime.c: Use MPN_SIZEINBASE_2EXP to count bits. 5497 * mpn/generic/perfpow.c: Likewise. 5498 * mpn/generic/rootrem.c: Likewise. 5499 * mpz/get_d_2exp.c: Likewise. 5500 * mpn/generic/powm_sec.c: Likewise, nailify. 5501 * mpn/generic/powlo.c: Likewise. 5502 * mpn/generic/powm.c: Likewise. 5503 55042012-06-23 Marc Glisse <marc.glisse@inria.fr> 5505 5506 * gmpxx.h (numeric_limits): Make content public. 5507 * cxx/limits.cc: New file, proper declarations. 5508 * Makefile.am: List new file. 5509 * cxx/Makefile.am: Likewise. 5510 * cxx/t-misc.cc: Add minimal test for numeric_limits. 5511 55122012-06-09 Marc Glisse <marc.glisse@inria.fr> 5513 5514 * gmpxx.h (__gmp_resolve_expr::srcptr_type): New typedef. 5515 (__gmp_temp): Wrapper for mp*_class, the constructor copies the 5516 precision of its second argument for mpf_t. 5517 (__gmp_expr::eval(p, prec)): Remove. 5518 (__gmp_expr::eval(p)): Use __gmp_temp. 5519 (__gmp_set_expr): Never pass prec to eval(). 5520 55212012-06-08 Marco Bodrato <bodrato@mail.dm.unipi.it> 5522 5523 * gmp-impl.h (__GMP_WITHIN_CONFIGURE): Use the same #if as in gmp-h.in. 5524 (MPN_NORMALIZE_NOT_ZERO): Tighter ASSERT. 5525 (MPZ_NEWALLOC): New macro. 5526 * mpq: Use the new macro when possible. 5527 * mpz/bin_uiui.c: Likewise. 5528 * mpz/oddfac_1.c: Likewise. 5529 * mpz/prodlimbs.c: Likewise. 5530 55312012-06-04 Torbjorn Granlund <tege@gmplib.org> 5532 5533 * mpn/powerpc64/aix.m4 (ASM_START): Claim machine type "any". 5534 55352012-06-03 Niels Möller <nisse@lysator.liu.se> 5536 5537 * mpn/generic/gcdext.c (mpn_gcdext): Deleted code for handling 5538 impossible case u1 == 0, Simplified test for unlikely case u0 == 0. 5539 55402012-06-02 Torbjorn Granlund <tege@gmplib.org> 5541 5542 * mpn/arm/lshiftc.asm: New file. 5543 55442012-06-01 Torbjorn Granlund <tege@gmplib.org> 5545 5546 * mpn/arm/aorslsh1_n.asm: Use cmp/cmn instead of subs/adds in more 5547 places. 5548 5549 * mpz/get_str.c: Don't strip leading zeros since current mpn_get_str 5550 won't generate any. Misc streamlining. 5551 * mpz/out_str.c: Analogous changes. 5552 5553 * tests/mpz/io.c: Use a wider range of bases. 5554 5555 * tests/mpz/t-cong.c (check_random): Rewrite random generation for 5556 exponentially distributed operand sizes. 5557 55582012-06-01 Marco Bodrato <bodrato@mail.dm.unipi.it> 5559 5560 * mpq: Use more macros and MPZ_REALLOC return value when possible. 5561 5562 * gmp-impl.h (LIMBS): Removed, was an alias for PTR. 5563 * mpz/combit.c: Use PTR and CNST_LIMB. 5564 5565 * tests/mpn/t-bdiv.c: Test also mpn_bdiv_qr. 5566 * mpn/generic/bdiv_qr.c: Add an ASSERT. 5567 5568 * mpn/generic/remove.c: Add a zero limb to use bdiv_qr... 5569 55702012-05-31 Marc Glisse <marc.glisse@inria.fr> 5571 5572 * gmpxx.h (mpq_class::mpq_class): Handle mpq_class(0,1). 5573 * tests/cxx/t-constr.cc: Test it. 5574 55752012-05-30 Torbjorn Granlund <tege@gmplib.org> 5576 5577 * mpn/x86_64 (FUNC_ENTRY): New name for DOS64_ENTRY. 5578 * mpn/x86_64 (FUNC_EXIT): New name for DOS64_EXIT. 5579 55802012-05-29 Marco Bodrato <bodrato@mail.dm.unipi.it> 5581 5582 * mpz/remove.c: Optimise branches. 5583 5584 * mpn/generic/toom6h_mul.c: less branches in the LIKELY balanced path. 5585 * mpn/generic/toom8h_mul.c: Likewise. 5586 55872012-05-29 Torbjorn Granlund <tege@gmplib.org> 5588 5589 * mpn/arm/v5/mod_1_1.asm: New file. 5590 55912012-05-28 Niels Möller <nisse@lysator.liu.se> 5592 5593 * mpn/generic/gcdext.c (compute_v): Simplified carry handling a 5594 bit, reduced stated scratch need from 2n+1 to 2n. Also comment and 5595 ASSERT improvements. 5596 55972012-05-27 Torbjorn Granlund <tege@gmplib.org> 5598 5599 * config.guess: Add new x86 CPUs. 5600 * mpn/x86/fat/fat.c: Likewise. 5601 * mpn/x86_64/fat/fat.c: Likewise. 5602 56032012-05-27 Marco Bodrato <bodrato@mail.dm.unipi.it> 5604 5605 * mpn/x86_64/fat/fat.c: abort iff longmode-capable-bit is turned off. 5606 5607 * mpn/generic/toom8h_mul.c: mark UNLIKELY branches. 5608 56092012-05-26 Torbjorn Granlund <tege@gmplib.org> 5610 5611 * mpz: Use MPZ_REALLOC return value when possible. 5612 56132012-05-25 Marco Bodrato <bodrato@mail.dm.unipi.it> 5614 5615 * mpz/scan1.c: Simplify, and add a shortcut for scan1(z, 0). 5616 56172012-05-24 Torbjorn Granlund <tege@gmplib.org> 5618 5619 * mpz/n_pow_ui.c: Cast non-limb count_leading_zeros argument. 5620 56212012-05-24 Marco Bodrato <bodrato@mail.dm.unipi.it> 5622 5623 * mpz/remove.c: Support negative divisor. 5624 * tests/mpz/t-remove.c: Test negative divisor. 5625 56262012-05-23 Torbjorn Granlund <tege@gmplib.org> 5627 5628 * tests/mpz/reuse.c: Major rewrite. 5629 56302012-05-23 Marco Bodrato <bodrato@mail.dm.unipi.it> 5631 5632 * mpz/sqrt.c: Further simplify. 5633 * mpz/sqrtrem.c: Likewise. 5634 5635 * Mark failing branches with UNLIKELY. Many files affected. 5636 56372012-05-22 Torbjorn Granlund <tege@gmplib.org> 5638 5639 * mpz/sqrt.c: Allocate less for overlapping operands, simplify. 5640 * mpz/sqrtrem.c: Likewise. 5641 56422012-05-21 Marco Bodrato <bodrato@mail.dm.unipi.it> 5643 5644 * mpn/generic/toom8_sqr.c: Reduce branches for recursion. 5645 * mpn/generic/toom8h_mul.c: Likewise. 5646 5647 * tests/mpn/t-toom8h.c: Don't use GMP_NUMB_BITS when not yet defined. 5648 56492012-05-20 Torbjorn Granlund <tege@gmplib.org> 5650 5651 * tests/mpz/t-gcd.c: Rewrite. 5652 56532012-05-19 Torbjorn Granlund <tege@gmplib.org> 5654 5655 * tests/mpz/t-gcd.c: Generate larger operands for better gcd code 5656 coverage; distribute size exponentially. 5657 56582012-05-17 Marco Bodrato <bodrato@mail.dm.unipi.it> 5659 5660 * mpf/pow_ui.c: Simplify. 5661 * tests/mpf/reuse.c (dsi_func): Exercise pow_ui. 5662 5663 * tests/mpf/t-set_ui.c (check_data): LONG_HIGHBIT -> ULONG_HIGHBIT. 5664 * tests/mpf/t-set.c (check_random): New check, both set and init_set. 5665 5666 * tests/cxx/t-ops.cc (check_mpq): Check squaring. 5667 * tests/mpq/t-equal.c (check_various): Check different den-size. 5668 5669 * mpn/generic/mullo_n.c: Disable MAYBE_ if WANT_FAT_BINARY. 5670 * mpz/cmpabs_d.c: Remove an unused branch. 5671 5672 * tests/mpz/t-get_d_2exp.c (check_zero): New check. 5673 * tests/mpz/t-inp_str.c: A few more cases. 5674 * tests/mpz/t-cmp_d.c: More bases and symbols, a few cases. 5675 5676 * mpz/rootrem.c: Correctly handle odd roots of negatives. 5677 * tests/mpz/t-root.c: Test it. 5678 56792012-05-16 Torbjorn Granlund <tege@gmplib.org> 5680 5681 * tests/mpf/t-eq.c (check_random): New function, meat from old main(). 5682 (check_data): New function. 5683 56842012-05-13 Torbjorn Granlund <tege@gmplib.org> 5685 5686 * mpn/arm/rsh1aors_n.asm: New file. 5687 * mpn/arm/v5/mod_1_2.asm: New file. 5688 56892012-05-11 Marc Glisse <marc.glisse@inria.fr> 5690 5691 * gmpxx.h (explicit operator bool): New functions. 5692 * tests/cxx/t-cxx11.cc: Test the above. 5693 56942012-05-10 Marco Bodrato <bodrato@mail.dm.unipi.it> 5695 5696 * gmp-impl.h (__gmpn_cpuvec_initialized): Was __gmpn_cpuvec.initialized 5697 * mpn/x86/fat/fat.c: Use separated _initialized variable. 5698 * mpn/x86_64/fat/fat.c: Likewise. 5699 * tests/mpn/t-fat.c: Likewise. 5700 5701 * mpn/generic/toom2_sqr.c: Override global __gmpn_cpuvec_initialized. 5702 * mpn/generic/toom22_mul.c: Likewise. 5703 * mpn/generic/toom3_sqr.c: Likewise. 5704 * mpn/generic/toom33_mul.c: Likewise. 5705 57062012-05-09 Marco Bodrato <bodrato@mail.dm.unipi.it> 5707 5708 * mpn/generic/sqrtrem.c (invsqrttab): Reduce size removing common byte. 5709 5710 * mpz/bin_uiui.c (mul3, mul4, mul8): Remove unneeded shifts. 5711 (MAXFACS): Redefine, using the shared (safer) log_n_max. 5712 57132012-05-08 Torbjorn Granlund <tege@gmplib.org> 5714 5715 * mpn/minithres/gmp-mparam.h (REDC_1_TO_REDC_N_THRESHOLD): Up to 9, for 5716 coherency with ASSERT in mpn/generic/redc_n.c. 5717 57182012-05-07 Marco Bodrato <bodrato@mail.dm.unipi.it> 5719 5720 * mpn/minithres/gmp-mparam.h: Updated TOOM6 and FAC_DSC. 5721 * tests/mpn/toom-sqr-shared.h: Don't test if no range. 5722 5723 * mpz/oddfac_1.c: Add ASSERTs to warn about small threshold. 5724 * tune/tuneup.c: Update minimal threshold for FAC_DSC. 5725 57262012-05-06 Torbjorn Granlund <tege@gmplib.org> 5727 5728 * mpn/arm/v6/sqr_basecase.asm: Simplify n=4 code. 5729 57302012-05-05 Marco Bodrato <bodrato@mail.dm.unipi.it> 5731 5732 * mpn/generic/invert.c: Mark a branch UNLIKELY. 5733 * tune/tuneup.c (tune_fac_u): Update DSC_THRESHOLD minimum. 5734 * gmp-impl.h (FAC_???_THRESHOLD): Update default values. 5735 (ABOVE_THRESHOLD): New definition with __builtin_constant_p. 5736 5737 * mpn/generic/toom22_mul.c: Disable MAYBE_ if WANT_FAT_BINARY. 5738 * mpn/generic/toom33_mul.c: Likewise. 5739 * mpn/generic/toom2_sqr.c: Likewise. 5740 * mpn/generic/toom3_sqr.c: Likewise. 5741 57422012-05-04 Torbjorn Granlund <tege@gmplib.org> 5743 5744 * tune/tuneup.c: Measure POWM_SEC_TABLE after the REDC thresholds. 5745 57462012-05-03 Torbjorn Granlund <tege@gmplib.org> 5747 5748 * mpn/generic/powm_sec.c: Use redc_2. 5749 (INNERLOOP): Use this mechanism, like plain powm.c. 5750 (WANT_CACHE_SECURITY): Remove, feature now unconditional. 5751 57522012-05-02 Torbjorn Granlund <tege@gmplib.org> 5753 5754 * mpz/bin_uiui.c: Make use of CNST_LIMB. 5755 57562012-05-02 Marco Bodrato <bodrato@mail.dm.unipi.it> 5757 5758 * mpz/mfac_uiui.c: Support limb != ui. 5759 57602012-05-02 Torbjorn Granlund <tege@gmplib.org> 5761 5762 * mpn/arm/logops_n.asm: Work around register clobbering issue. 5763 5764 * mpn/arm/aorscnd_n.asm: New file. 5765 57662012-05-01 Torbjorn Granlund <tege@gmplib.org> 5767 5768 * configure.in: Put arm dirs in path in proper prio order. 5769 5770 * mpn/arm/logops_n.asm: New file. 5771 5772 * mpz/2fac_ui.c: Fix assumed typo. 5773 5774 * mpn/arm/v6/gmp-mparam.h: New file. 5775 5776 * mpn/arm/v5/gcd_1.asm: Hack for undefined BMOD_1_TO_MOD_1_THRESHOLD. 5777 * mpn/arm/v6t2/gcd_1.asm: Likewise. 5778 57792012-04-30 Torbjorn Granlund <tege@gmplib.org> 5780 5781 * mpn/arm/v6/sqr_basecase.asm: New file. 5782 57832012-04-30 Marco Bodrato <bodrato@mail.dm.unipi.it> 5784 5785 * mpn/generic/comb_tables.c: New file. 5786 * configure.in: Add it. 5787 * gen-fac.c: Define table limits. 5788 * gmp-impl.h: Declare tables. 5789 (log_n_max): New static function. 5790 * mpz/2fac_ui.c: Use shared tables. 5791 * mpz/bin_uiui.c: Likewise. 5792 * mpz/oddfac_1.c: Likewise. 5793 * mpz/primorial_ui.c: Likewise. 5794 5795 * mpz/mfac_uiui.c: New file. 5796 * Makefile.am: Compile it. 5797 * mpz/Makefile.am (libmpz_la_SOURCES): Add mpz_mfac_uiui.c 5798 * gmp-h.in (mpz_mfac_uiui): Declare. 5799 5800 * tests/mpz/t-mfac_uiui.c: New file. 5801 * tests/mpz/Makefile.am: Run it. 5802 5803 * doc/gmp.texi: Document mpz_mfac_uiui, collapsing with other factorial functions. 5804 5805 * tests/mpz/t-lcm.c: Test zero too. 5806 5807 * mpz/prodlimbs.c: Simplify threshold (should be tuned, not guessed). 5808 58092012-04-29 Torbjorn Granlund <tege@gmplib.org> 5810 5811 * mpn/arm/aors_n.asm: Tune for more stable performance. 5812 5813 * mpn/arm/aorslsh1_n.asm: New file. 5814 5815 * mpn/arm/mod_34lsub1.asm: New file. 5816 5817 * mpn/arm/v6t2/divrem_1.asm: New file. 5818 58192012-04-28 Torbjorn Granlund <tege@gmplib.org> 5820 5821 * mpn/thumb/add_n.asm: New file. 5822 * mpn/thumb/sub_n.asm: New file. 5823 * mpn/thumb/add_n.s: Remove broken code. 5824 * mpn/thumb/sub_n.s: Likewise. 5825 5826 * mpn/arm/v6/addmul_1.asm: Rewrite for stable speed, smaller size. 5827 * mpn/arm/v6/mul_1.asm: Likewise. 5828 58292012-04-27 Torbjorn Granlund <tege@gmplib.org> 5830 5831 * configure.in: Search arm/v6t2 for arm7. 5832 5833 * mpn/arm/v5/gcd_1.asm: New file. 5834 * mpn/arm/v6t2/gcd_1.asm: New file. 5835 5836 * mpn/arm/mode1o.asm: New file. 5837 * mpn/arm/v6t2/mode1o.asm: New file. 5838 5839 * mpn/arm/arm-defs.m4 (LEA): New define. 5840 * mpn/arm/invert_limb.asm: Use LEA. 5841 58422012-04-26 Marco Bodrato <bodrato@mail.dm.unipi.it> 5843 5844 * mpz/bin_uiui.c (bc_bin_uiui): Nail support. 5845 * tests/cxx/t-ops2.cc: Test 0/3. 5846 * oddfac_1.c: assume n > 26. 5847 * tests/mpz/t-jac.c (mpn_jacobi_n): Enlarge tested sizes. 5848 58492012-04-24 Torbjorn Granlund <tege@gmplib.org> 5850 5851 * mpn/arm/v6/addmul_2.asm: New file. 5852 * mpn/arm/v6/mul_2.asm: New file. 5853 58542012-04-23 Torbjorn Granlund <tege@gmplib.org> 5855 5856 * mpn/arm/aorsmul_1.asm: Tweak loop control for a 6% speed increase. 5857 58582012-04-22 Torbjorn Granlund <tege@gmplib.org> 5859 5860 * configure.in: Recognise ARM sub-architectures. 5861 5862 * configfsf.guess: Update to current FSF version. 5863 * configfsf.sub: Likewise. 5864 5865 * mpn/arm/bdiv_dbm1c.asm: New file. 5866 5867 * mpn/arm/v6/mul_1.asm: New file. 5868 * mpn/arm/v6/addmul_1.asm: New file. 5869 58702012-04-22 Marco Bodrato <bodrato@mail.dm.unipi.it> 5871 5872 * gen-fac.c: Renamed, was gen-fac_ui.c . 5873 * Makefile.am: Renamed gen-fac.c and fac_table.h . 5874 * gmp-impl.h: #include "fac_table.h". 5875 * mpz/oddfac_1.c: Use generated constant. 5876 * mpz/bin_ui.c: Small optimisations. 5877 5878 * tune/common.c (speed_mpz_bin_ui): New function. 5879 * tune/speed.h: Declare it. 5880 * tune/speed.c: Use it. 5881 58822012-04-21 Torbjorn Granlund <tege@gmplib.org> 5883 5884 * mpn/arm/mul_1.asm: Cleanup. 5885 * mpn/arm/copyi.asm: Cleanup, assume allocate-on-write cache. 5886 * mpn/arm/copyd.asm: Likewise. 5887 5888 * mpn/arm/add_n.asm: Delete. 5889 * mpn/arm/sub_n.asm: Delete. 5890 * mpn/arm/aors_n.asm: New file, made from old files. 5891 5892 * mpn/arm/addmul_1.asm: Delete. 5893 * mpn/arm/submul_1.asm: Delete. 5894 * mpn/arm/aorsmul_1.asm: New file, made from old files. 5895 5896 * mpn/arm/com.asm: New file. 5897 * mpn/arm/lshift.asm: New file. 5898 * mpn/arm/rshift.asm: New file. 5899 59002012-04-20 Torbjorn Granlund <tege@gmplib.org> 5901 5902 * tests/mpq/io.c: New file. 5903 * tests/mpq/Makefile.am: Run it. 5904 5905 * mpz/clrbit.c: Simplify along the lines of setbit.c. 5906 59072012-04-20 Marco Bodrato <bodrato@mail.dm.unipi.it> 5908 5909 * mpz/setbit.c: Simplify. 5910 5911 * gmp-impl.h (LOG2C): Define. 5912 * mpz/fac_ui.c (LOG2C): Remove. 5913 * mpz/2fac_ui.c (LOG2C): Remove. 5914 * mpz/oddfac_1.c (LOG2C): Remove. 5915 * mpn/generic/binvert.c (LOG2C): Remove. 5916 * mpn/generic/invertappr.c (LOG2C): Remove. 5917 5918 * mpz/bin_uiui.c (mpz_goetgheluck_bin_uiui): Move declarations, 5919 and assume that n and k are not small. 5920 59212012-04-19 Torbjorn Granlund <tege@gmplib.org> 5922 5923 * tests/mpz/Makefile.am (check_PROGRAMS): Add t-remove. 5924 5925 * tests/mpz/t-remove.c: Clear out mpz variables. 5926 5927 * tests/mpz/t-cong.c (check_random): Use much larger numbers. 5928 (check_data): Check congruences mod 0. 5929 5930 * tests/mpz/t-divis.c: Test divisibility by zero. 5931 5932 * tests/mpz/reuse.c: Test mpz_mod. 5933 5934 * mpz/setbit.c: Remove dead code. Use CNST_LIMB. 5935 * mpz/clrbit.c: Use CNST_LIMB. 5936 59372012-04-19 Marco Bodrato <bodrato@mail.dm.unipi.it> 5938 5939 * primesieve.c: New file, with functions from mpz/oddfac_1.c . 5940 * mpz/oddfac_1.c (bitwise_primesieve): Re-moved. 5941 * Makefile.am (libgmp_la_SOURCES): Add primesieve.c . 5942 * gmp-impl.h (gmp_primesieve): Declare. 5943 5944 * mpz/bin_uiui.c (mpz_goetgheluck_bin_uiui): New, factor-based 5945 implementation. 5946 * tests/mpz/t-bin.c: Extend tests, to cover _goetgheluck. 5947 5948 * mpz/primorial_ui.c: New file. 5949 * mpz/Makefile.am (libmpz_la_SOURCES): Add mpz/primorial_ui.c 5950 * Makefile.am (MPZ_OBJECTS): Add mpz/primorial_ui$U.lo 5951 * gmp-h.in (mpz_primorial_ui): Declare. 5952 * tests/mpz/t-primorial_ui.c: New test for the new function. 5953 * tests/mpz/Makefile.am (check_PROGRAMS): Add t-primorial_ui. 5954 * doc/gmp.texi: Short documentation for the new function. 5955 59562012-04-17 Torbjorn Granlund <tege@gmplib.org> 5957 5958 * mpn/x86_64/coreisbr/aorsmul_1.asm: Fix some DOS64 issues. 5959 * mpn/x86_64/coreisbr/mul_1.asm: Likewise. 5960 5961 * mpn/x86_64/fastsse/lshiftc-movdqu2.asm: Adhere to DOS64 register 5962 partitioning rules. 5963 5964 * mpn/x86_64/fastsse/copyi-palignr.asm: Implement temporary workaround 5965 to overlap issue. 5966 59672012-04-17 Marco Bodrato <bodrato@mail.dm.unipi.it> 5968 5969 * mpz/bin_uiui.c: Support small limbs (fallback on bin_ui). 5970 5971 * tests/mpn/toom-sqr-shared.h: Use a restricted range. 5972 * tests/mpn/t-toom2-sqr.c: Specify correct range. 5973 * tests/mpn/t-toom3-sqr.c: Likewise. 5974 * tests/mpn/t-toom4-sqr.c: Likewise. 5975 * tests/mpn/t-toom6-sqr.c: Likewise. 5976 * tests/mpn/t-toom8-sqr.c: Likewise, but extended. 5977 * tests/mpn/Makefile.am (check_PROGRAMS): Add t-toom?-sqr tests. 5978 5979 * mpn/generic/sbpi1_bdiv_q.c: Move ASSERTs, to support qp = np. 5980 59812012-04-17 Torbjorn Granlund <tege@gmplib.org> 5982 5983 * mpn/x86_64/copyd.asm: Rewrite. 5984 * mpn/x86_64/copyi.asm: Rewrite. 5985 59862012-04-16 Torbjorn Granlund <tege@gmplib.org> 5987 5988 * mpn/x86_64/fastsse/lshift-movdqu2.asm: Add DOS entry/exit sequences. 5989 * mpn/x86_64/fastsse/rshift-movdqu2.asm: Likewise. 5990 * mpn/x86_64/fastsse/lshiftc-movdqu2.asm: Likewise. 5991 5992 * mpn/x86_64/x86_64-defs.m4 (palignr): New macro. 5993 (x86_opcode_regxmm, x86_opcode_regxmm_list): New, made from x86 mmx 5994 counterparts. 5995 (x86_lookup): Copy from x86/x86-defs.m4. 5996 * mpn/x86_64/fastsse/copyd-palignr.asm: Use palignr macro. 5997 * mpn/x86_64/fastsse/copyi-palignr.asm: Likewise. 5998 59992012-04-15 Marco Bodrato <bodrato@mail.dm.unipi.it> 6000 6001 * tests/mpz/t-bin.c: Add more tests on small values. 6002 * mpz/bin_uiui.c (mpz_bdiv_bin_uiui): Smaller temporary areas. 6003 60042012-04-15 Torbjorn Granlund <tege@gmplib.org> 6005 6006 * mpn/x86_64/fastsse/copyd-palignr.asm: New file. 6007 * mpn/x86_64/fastsse/copyi-palignr.asm: New file. 6008 * mpn/x86_64/core2/copyd.asm: New file. 6009 * mpn/x86_64/core2/copyi.asm: New file. 6010 * mpn/x86_64/nano/copyd.asm: New file. 6011 * mpn/x86_64/nano/copyi.asm: New file. 6012 * mpn/x86_64/atom/copyd.asm: New file. 6013 * mpn/x86_64/atom/copyi.asm: New file. 6014 60152012-04-13 Marco Bodrato <bodrato@mail.dm.unipi.it> 6016 6017 * mpz/bin_uiui.c: Rewrite (some parts are Torbjorn's). 6018 * gen-fac_ui.c: Generate new constants for bin_uiui. 6019 6020 * tests/mpz/t-fac_ui.c: Check Wilson's theorem on a big value. 6021 6022 * mpn/generic/invert.c: Remove support for scratch == NULL. 6023 * tune/speed.h (SPEED_ROUTINE_MPN_MUPI_DIV_QR): Allocate scratch 6024 space for mpn_invert. 6025 6026 * mpz/mul_i.h: Small clean-up. 6027 6028 * tests/mpn/toom-sqr-shared.h: New file. 6029 * tests/mpn/t-toom2-sqr.c: New file. 6030 * tests/mpn/t-toom3-sqr.c: New file. 6031 * tests/mpn/t-toom4-sqr.c: New file. 6032 * tests/mpn/t-toom6-sqr.c: New file. 6033 * tests/mpn/t-toom8-sqr.c: New file. 6034 * tests/mpn/Makefile.am (EXTRA_DIST): Add toom-sqr-shared.h . 6035 6036 * mpn/generic/toom62_mul.c: Use add_n, sub_n, when possible. 6037 60382012-04-12 Torbjorn Granlund <tege@gmplib.org> 6039 6040 * mpn/x86_64/fastsse/lshift-movdqu2.asm: New file. 6041 * mpn/x86_64/fastsse/rshift-movdqu2.asm: New file. 6042 * mpn/x86_64/fastsse/lshiftc-movdqu2.asm: New file. 6043 * mpn/x86_64/coreisbr/lshift.asm: New file. 6044 * mpn/x86_64/coreisbr/rshift.asm: New file. 6045 * mpn/x86_64/coreisbr/lshiftc.asm: New file. 6046 * mpn/x86_64/k10/lshift.asm: New file. 6047 * mpn/x86_64/k10/rshift.asm: New file. 6048 * mpn/x86_64/k10/lshiftc.asm: New file. 6049 6050 * mpn/x86_64/fastsse/lshift.asm: Simplify to very basic form. 6051 60522012-04-11 Niels Möller <nisse@lysator.liu.se> 6053 6054 * Makefile.am (check-mini-gmp): Pass -I../.. in EXTRA_CFLAGS, to 6055 locate gmp.h. 6056 60572012-04-10 Marco Bodrato <bodrato@mail.dm.unipi.it> 6058 6059 * Makefile.am (check-mini-gmp): Use $(MAKE). 6060 (clean-mini-gmp): New target. 6061 (clean-local, distclean-local): New automake targets. Depend on 6062 clean-mini-gmp. 6063 6064 * gen-fac_ui.c (mpz_root): Remove. 6065 60662012-04-07 Torbjorn Granlund <tege@gmplib.org> 6067 6068 * mpn/ia64/gcd_1.asm: Rewrite inner loop to use ctz table. 6069 60702012-04-05 Torbjorn Granlund <tege@gmplib.org> 6071 6072 * mpn/powerpc64/p7/popcount.asm: Properly extend arg n for mode32. 6073 * mpn/powerpc64/p7/hamdist.asm: Likewise. 6074 60752012-04-04 Torbjorn Granlund <tege@gmplib.org> 6076 6077 * mpn/powerpc64/p7/popcount.asm: New file. 6078 * mpn/powerpc64/p7/hamdist.asm: New file. 6079 6080 * longlong.h (ARM count_leading_zeros): Enable for more arch versions. 6081 6082 * mpn/x86_64/gcd_1.asm: Make room for DOS64 regparm shadow area. 6083 * mpn/x86_64/core2/gcd_1.asm: Likewise. 6084 60852012-04-03 Torbjorn Granlund <tege@gmplib.org> 6086 6087 * mpn/x86_64/coreisbr/aorrlsh_n.asm: Make it actually work for DOS64. 6088 60892012-04-02 Marco Bodrato <bodrato@mail.dm.unipi.it> 6090 6091 * mpz/oddfac_1.c: Initialize size for ASSERT. 6092 60932012-04-02 Torbjorn Granlund <tege@gmplib.org> 6094 6095 * gmp-h.in (_GMP_H_HAVE_FILE): Test also __STDIO_LOADED (for VMS). 6096 6097 * gmp-impl.h (doprnt_format_t, etc): Remove bogus __GMP_DECLSPECs. 6098 60992012-03-30 Marco Bodrato <bodrato@mail.dm.unipi.it> 6100 6101 * mpn/x86_64/sqr_basecase.asm: Speed-up for small cases. 6102 61032012-03-29 Torbjorn Granlund <tege@gmplib.org> 6104 6105 * mpn/sparc64/gcd_1.asm: New file. 6106 61072012-03-27 Torbjorn Granlund <tege@gmplib.org> 6108 6109 * config.guess: Fix typo in coreisbr recognition. 6110 61112012-03-26 Marco Bodrato <bodrato@mail.dm.unipi.it> 6112 6113 * mpn/x86_64/gcd_1.asm: Reduce latency. 6114 * mpn/x86_64/mul_basecase.asm: Save one jump. 6115 6116 * mpz/iset_ui.c: Don't realloc. 6117 61182012-03-20 Marco Bodrato <bodrato@mail.dm.unipi.it> 6119 6120 * mp_clz_tab.c: Add __clz_tab[128]. 6121 * longlong.h (count_trailing_zeros): Use it in pure C variant. 6122 61232012-03-20 Torbjorn Granlund <tege@gmplib.org> 6124 6125 * configure.in (x86 fat_path): Add many missing directories. 6126 * mpn/x86/fat/fat.c (__gmpn_cpuvec_init): Rewrite. 6127 (fake_cpuid_table): Add many more CPUs. 6128 6129 * mpn/x86_64/fat/fat.c (__gmpn_cpuvec_init): Minor spacing cleanup. 6130 61312012-03-19 Torbjorn Granlund <tege@gmplib.org> 6132 6133 * mpn/x86/x86-defs.m4 (CALL, PIC_WITH_EBX): New macros. 6134 * mpn/x86/darwin.m4: Likewise. 6135 * mpn/x86/k7/gcd_1.asm: Use new macros to support PIC. 6136 * mpn/x86/p6/gcd_1.asm: Likewise. 6137 61382012-03-19 Marco Bodrato <bodrato@mail.dm.unipi.it> 6139 6140 * gen-fac_ui.c: Generate more constants (possible mini-mpz_root). 6141 * mpz/oddfac_1.c: Improve ASSERTs. 6142 (log_n_max): Use precomputed table. 6143 6144 * longlong.h (_PROTO): Remove. 6145 61462012-03-18 Torbjorn Granlund <tege@gmplib.org> 6147 6148 * longlong.h (count_trailing_zeros): Write better pure C default 6149 variant. 6150 6151 * mpn/x86/p6/gcd_1.asm: Remove forgotten x86_64 reference. 6152 6153 * mpn/x86/p6/gmp-mparam.h: Update, to get BMOD_1_TO_MOD_1_THRESHOLD 6154 defined for fat binaries. 6155 61562012-03-17 Torbjorn Granlund <tege@gmplib.org> 6157 6158 * mpn/x86/k7/gcd_1.asm: Rewrite. 6159 * mpn/x86/p6/gcd_1.asm: New file. 6160 6161 * mpn/x86_64/core2/gcd_1.asm: Conditionally suppress reduction calls. 6162 * mpn/x86_64/gcd_1.asm: Rewrite. 6163 61642012-03-15 Torbjorn Granlund <tege@gmplib.org> 6165 6166 * mpn/generic/gcd_1.c: Parameterise zerotab code. 6167 6168 * mpn/x86_64/nano/gcd_1.asm: New file, grabbing core2 asm file. 6169 6170 * mpn/x86_64/core2/gcd_1.asm: Speed up loop code, simplify non-loop 6171 code. 6172 61732012-03-13 Torbjorn Granlund <tege@gmplib.org> 6174 6175 * mpn/x86_64/core2/gcd_1.asm: Add hack to support fat builds. 6176 6177 * mpn/x86_64/core2/gcd_1.asm: Shorten critical path. 6178 61792012-03-12 Torbjorn Granlund <tege@gmplib.org> 6180 6181 * mpn/x86_64/core2/gcd_1.asm: New file. 6182 * mpn/x86_64/k10/gcd_1.asm: New file, grabbing core2 asm file. 6183 * mpn/x86_64/bd1/gcd_1.asm: Likewise. 6184 6185 * mpn/x86_64/bobcat/sqr_basecase.asm: New file. 6186 * mpn/x86_64/bobcat/mul_basecase.asm: Minor tuning. 6187 61882012-03-10 Torbjorn Granlund <tege@gmplib.org> 6189 6190 * configure.in (fat_functions): Add addlsh1_n, addlsh2_n, addmul_2, 6191 mullo_basecase, redc_1, redc_2, sublsh1_n. 6192 6193 * gmp-impl.h (struct cpuvec_t): Add fields for new fat functions. 6194 * gmp-impl.h: Adjust corresponding declarations. 6195 6196 * mpn/generic/redc_2.c (mpn_addmul_2): Make static. 6197 6198 * mpn/x86_64/fat/fat_entry.asm (FAT_INIT): Expand before fat_init to 6199 reduce branch offsets. Pass plain 0,1,3... in %al since we'd else run 6200 out of 8-bit range. 6201 6202 * mpn/x86_64/fat/fat_entry.asm (fat_init): Scale passed index value. 6203 * mpn/x86/fat/fat_entry.asm (fat_init): Use movzbl for expanding index 6204 value. 6205 6206 * mpn/x86_64/x86_64-defs.m4 (CPUVEC_FUNCS_LIST): Add new fat functions. 6207 * mpn/x86/x86-defs.m4 (CPUVEC_FUNCS_LIST): Likewise. 6208 * mpn/x86_64/fat/fat.c (__gmpn_cpuvec): Likewise. 6209 * mpn/x86/fat/fat.c (__gmpn_cpuvec): Likewise. 6210 6211 * mpn/x86_64/fat/redc_2.c: New file. 6212 * mpn/x86/fat/mullo_basecase.c: New file. 6213 * mpn/x86/fat/redc_1.c: New file. 6214 * mpn/x86/fat/redc_2.c: New file. 6215 6216 * tests/mpn/t-fat.c: Test mullo_basecase. 6217 62182012-03-08 Torbjorn Granlund <tege@gmplib.org> 6219 6220 * mpn/x86_64/coreisbr/addmul_2.asm: Port to DOS64. 6221 62222012-02-29 Marc Glisse <marc.glisse@inria.fr> 6223 6224 * gmpxx.h: Ignore partial C++11 support in g++-4.6. 6225 * tests/cxx/t-cxx11.cc: Likewise. 6226 6227 * gmpxx.h (operator""): New functions. 6228 * tests/cxx/t-cxx11.cc: Test the above. 6229 * doc/gmp.texi: Document the above. 6230 62312012-03-08 Marco Bodrato <bodrato@mail.dm.unipi.it> 6232 6233 * acinclude.m4 (GMP_H_ANSI): Remove. 6234 * configure.in: Don't use GMP_H_ANSI. 6235 * gmp-h.in (__GMP_HAVE_PROTOTYPES): Remove. 6236 62372012-03-08 Torbjorn Granlund <tege@gmplib.org> 6238 6239 * mpn/x86_64/fat/fat.c (fake_cpuid_table): Recognise "bulldozer". 6240 (__gmpn_cpuvec_init): Overhaul to match configure.in. 6241 6242 * configure.in: Adjust bulldozer path_64. 6243 62442012-03-07 Torbjorn Granlund <tege@gmplib.org> 6245 6246 * configure.in (x86_64 fat_path): List recently added AMD directories. 6247 6248 * mpn/x86_64/bobcat/copyi.asm: New file. 6249 * mpn/x86_64/bobcat/copyd.asm: New file. 6250 6251 * config.guess: Handle AMD 11h correctly. 6252 6253 * tune/tuneup.c (tune_redc): Better handle situation where redc_2 is 6254 never faster. 6255 62562012-03-06 Torbjorn Granlund <tege@gmplib.org> 6257 6258 * mpn/x86_64/bobcat/mul_basecase.asm: New file. 6259 62602012-03-04 Torbjorn Granlund <tege@gmplib.org> 6261 6262 * mpn/x86_64/bobcat/mul_1.asm: New file. 6263 * mpn/x86_64/bobcat/aorsmul_1.asm: New file. 6264 62652012-03-04 Marco Bodrato <bodrato@mail.dm.unipi.it> 6266 6267 * mpz/invert.c: Remove mod 0 branch. 6268 * tests/mpz/t-invert.c: Avoid testing mod 0. 6269 * doc/gmp.texi (mpz_invert): Specify mod 0 is not handled. 6270 6271 * gmp-h.in (__gmp_signed, __gmp_const): Remove. 6272 (__GMP_HAVE_TOKEN_PASTE, __GMP_HAVE_CONST): Remove. 6273 * gmp-impl.h: Strip __GMP_HAVE_TOKEN_PASTE and __GMP_HAVE_CONST. 6274 * demos/expr/: Strip __gmp_const usage from all files. 6275 6276 * tests/mpz/t-powm.c (allsizes_seen): Require unsigned*. 6277 62782012-03-03 Torbjorn Granlund <tege@gmplib.org> 6279 6280 * mpn/x86_64/k8/gmp-mparam.h: New file. 6281 * mpn/x86_64/k10/gmp-mparam.h: New file. 6282 6283 * mpn/generic/hgcd_step.c (mpn_hgcd_step): Remove unused variables. 6284 * mpn/generic/hgcd_jacobi.c (hgcd_jacobi_step): Likewise. 6285 * mpn/generic/hgcd_reduce.c (hgcd_matrix_apply): Likewise. 6286 * mpn/generic/mu_bdiv_qr.c: Likewise. 6287 * mpz/jacobi.c: Likewise. 6288 * mpz/mod.c: Likewise. 6289 6290 * mpn/generic/toom42_mul.c: Remove unread variable. 6291 * mpn/generic/set_str.c (mpn_set_str_compute_powtab): Likewise. 6292 * mpn/generic/rootrem.c (mpn_rootrem_internal): Likewise. 6293 * tests/refmpn.c (refmpn_mul): Likewise. 6294 * mpn/generic/hgcd_appr.c (mpn_hgcd_appr): Propagate mask computation 6295 into ASSERT, remove variable. 6296 6297 * gmp-h.in (__GMP_PROTO): Remove. 6298 * Strip __GMP_PROTO usage from all files. 6299 * Strip prototype parameter names from all files. 6300 63012012-03-01 Marco Bodrato <bodrato@mail.dm.unipi.it> 6302 6303 * doc/gmp.texi (mpz_invert): Correctly document result range. 6304 * tests/mpz/t-invert.c: Small range correction. 6305 63062012-03-01 Torbjorn Granlund <tege@gmplib.org> 6307 6308 * mpn/x86_64/mullo_basecase.asm: New file. 6309 63102012-02-29 Marc Glisse <marc.glisse@inria.fr> 6311 6312 * gmpxx.h (std::numeric_limits): New partial specialization. 6313 63142012-02-29 Niels Möller <nisse@lysator.liu.se> 6315 6316 * Makefile.am (check-mini-gmp): Use $(MAKE). 6317 (clean-mini-gmp): New target. 6318 (clean-local, distclean-local): New automake targets. Depend on 6319 clean-mini-gmp. 6320 63212012-02-28 Niels Möller <nisse@lysator.liu.se> 6322 6323 * Makefile.am (check-mini-gmp): New target, for running the 6324 mini-gmp testsuite. 6325 63262012-02-27 Torbjorn Granlund <tege@gmplib.org> 6327 6328 * mpn/x86_64/fastsse/lshiftc.asm: New file. 6329 * mpn/x86_64/fastsse/com.asm: New file. 6330 6331 * mpn/x86_64/bd1/popcount.asm: New file. 6332 * mpn/x86_64/bd1/hamdist.asm: New file. 6333 6334 * mpn/x86_64/fastsse/copyi.asm: New file. 6335 * mpn/x86_64/fastsse/copyd.asm: New file. 6336 * mpn/x86_64/fastsse/lshift.asm: New file. 6337 63382012-02-26 Torbjorn Granlund <tege@gmplib.org> 6339 6340 * mpn/x86_64/coreisbr/addmul_2.asm: New file. 6341 6342 * tests/devel/try.c (param_init): Don't require addmul_N to handle 6343 overlap. 6344 6345 * mpn/x86_64/bd1/mul_1.asm: New file. 6346 * mpn/x86_64/bd1/aorsmul_1.asm: New file. 6347 63482012-02-26 Marco Bodrato <bodrato@mail.dm.unipi.it> 6349 6350 * mpz/2fac_ui.c: New file: implements n!!. 6351 * Makefile.am (MPZ_OBJECTS): Add mpz/2fac_ui. 6352 * gmp-h.in: Declare mpz_2fac_ui. 6353 * tests/mpz/t-fac.c: Test mpz_2fac_ui. 6354 * doc/gmp.texi: Document mpz_2fac_ui. 6355 * mpz/Makefile.am (libmpz_la_SOURCES): Add 2fac_ui.c. 6356 6357 * mpz/oddfac_1.c (mpz_oddfac_1): Use umul_ppmm when size = 2. 6358 63592012-02-26 Niels Möller <nisse@lysator.liu.se> 6360 6361 * bootstrap.c: New file, replacing dumbmp.c. Uses mini-gmp for the 6362 standard GMP functions, and then defines the few functions 6363 particular for the bootstrap. 6364 * dumbmp.c: Deleted file. A few functions moved to bootstrap.c. 6365 6366 * gen-bases.c: Include bootstrap.c, not dumbmp.c. 6367 * gen-fac_ui.c: Likewise. 6368 * gen-trialdivtab.c: Likewise. 6369 * gen-fib.c: Include bootstrap.c, not dumbmp.c. Use assert rather 6370 than ASSERT. Deleted casts of xmalloc return value. 6371 * gen-psqr.c: Likewise. 6372 (COLLAPSE_ELEMENT): Use memmove rather than mem_copyi. 6373 6374 * Makefile.am: Replaced all uses of dumbmp.c by bootstrap.c. 6375 (EXTRA_DIST, dist-hook): Arrange for distribution of the mini-gmp 6376 files. 6377 63782012-02-24 Marco Bodrato <bodrato@mail.dm.unipi.it> 6379 6380 * mpz/invert.c: Use ABSIZ, MPZ_EQUAL_1_P. 6381 * mpz/abs.c: Collapse MPZ_REALLOC(x,.) and PTR(x). 6382 * mpz/aors_ui.h: Likewise. 6383 * mpz/com.c: Likewise. 6384 * mpz/neg.c: Likewise. 6385 6386 * mpz/invert.c: Reply "no-inverse" when modulus is zero. 6387 * tests/mpz/t-invert.c: Add more checks. 6388 * doc/gmp.texi (mpz_invert): Inverse can not be zero. 6389 63902012-02-24 Torbjorn Granlund <tege@gmplib.org> 6391 6392 * tests/mpn/logic.c: New file. 6393 * tests/mpn/Makefile.am (check_PROGRAMS): Add logic. 6394 6395 * tests/mpz/t-invert.c: New file. 6396 * tests/mpz/Makefile.am (check_PROGRAMS): Add t-invert. 6397 63982012-02-24 Marc Glisse <marc.glisse@inria.fr> 6399 6400 * tests/mpq/t-cmp.c: Move NUM and DEN macros... 6401 * tests/mpq/t-cmp_ui.c: Likewise... 6402 * gmp-impl.h: ... to here. 6403 6404 * mpq/abs.c: Use NUM, DEN, SIZ, ALLOC, PTR, MPZ_REALLOC. 6405 * mpq/aors.c: Likewise. 6406 * mpq/canonicalize.c: Likewise. 6407 * mpq/clear.c: Likewise. 6408 * mpq/cmp.c: Likewise. 6409 * mpq/cmp_si.c: Likewise. 6410 * mpq/cmp_ui.c: Likewise. 6411 * mpq/div.c: Likewise. 6412 * mpq/equal.c: Likewise. 6413 * mpq/get_d.c: Likewise. 6414 * mpq/get_den.c: Likewise. 6415 * mpq/get_num.c: Likewise. 6416 * mpq/get_str.c: Likewise. 6417 * mpq/init.c: Likewise. 6418 * mpq/inp_str.c: Likewise. 6419 * mpq/inv.c: Likewise. 6420 * mpq/md_2exp.c: Likewise. 6421 * mpq/mul.c: Likewise. 6422 * mpq/neg.c: Likewise. 6423 * mpq/set.c: Likewise. 6424 * mpq/set_d.c: Likewise. 6425 * mpq/set_den.c: Likewise. 6426 * mpq/set_f.c: Likewise. 6427 * mpq/set_num.c: Likewise. 6428 * mpq/set_si.c: Likewise. 6429 * mpq/set_str.c: Likewise. 6430 * mpq/set_ui.c: Likewise. 6431 * mpq/set_z.c: Likewise. 6432 * mpq/swap.c: Likewise. 6433 6434 * tests/mpq/t-inv.c: New test file. 6435 * tests/mpq/Makefile.am: Add the above. 6436 6437 * gmpxx.h (__gmp_set_expr): Use mpq_set_z. 6438 6439 * mpq/md_2exp.c: Collapse MPZ_REALLOC(x,.) and PTR(x). 6440 * mpq/set_d.c: Likewise. 6441 * mpq/set_f.c: Likewise. 6442 64432012-02-24 Niels Möller <nisse@lysator.liu.se> 6444 6445 * mpn/x86_64/core2/aorsmul_1.asm: Added mpn_addmul_1c and 6446 mpn_submul_1c entry points. 6447 64482012-02-23 Marc Glisse <marc.glisse@inria.fr> 6449 6450 * mpz/abs.c: Use ALLOC, SIZ, ABSIZ, PTR, MPZ_REALLOC. 6451 * mpz/aors_ui.h: Likewise. 6452 * mpz/array_init.c: Likewise. 6453 * mpz/cdiv_q.c: Likewise. 6454 * mpz/cdiv_qr.c: Likewise. 6455 * mpz/cdiv_r.c: Likewise. 6456 * mpz/clear.c: Likewise. 6457 * mpz/clrbit.c: Likewise. 6458 * mpz/cmp_si.c: Likewise. 6459 * mpz/com.c: Likewise. 6460 * mpz/fdiv_q.c: Likewise. 6461 * mpz/fdiv_qr.c: Likewise. 6462 * mpz/fdiv_r.c: Likewise. 6463 * mpz/get_si.c: Likewise. 6464 * mpz/get_str.c: Likewise. 6465 * mpz/init.c: Likewise. 6466 * mpz/inp_str.c: Likewise. 6467 * mpz/iset.c: Likewise. 6468 * mpz/iset_d.c: Likewise. 6469 * mpz/iset_si.c: Likewise. 6470 * mpz/iset_str.c: Likewise. 6471 * mpz/iset_ui.c: Likewise. 6472 * mpz/mod.c: Likewise. 6473 * mpz/neg.c: Likewise. 6474 * mpz/out_str.c: Likewise. 6475 * mpz/random2.c: Likewise. 6476 * mpz/set_si.c: Likewise. 6477 * mpz/set_str.c: Likewise. 6478 * mpz/set_ui.c: Likewise. 6479 * mpz/setbit.c: Likewise. 6480 * mpz/sqrt.c: Likewise. 6481 * mpz/swap.c: Likewise. 6482 * mpz/tdiv_r_2exp.c: Likewise. 6483 6484 * tests/cxx/t-ops.cc: Test mpz_abs reallocation. 6485 64862012-02-23 Torbjorn Granlund <tege@gmplib.org> 6487 6488 * mpn/x86_64/core2/rsh1aors_n.asm: Complete rewrite. 6489 * mpn/x86_64/coreisbr/rsh1aors_n.asm: Move old core2 code here. 6490 6491 * mpn/x86_64/redc_1.asm: Make it work for DOS64 (broken in last edit). 6492 64932012-02-20 Marco Bodrato <bodrato@mail.dm.unipi.it> 6494 6495 * mpn/generic/toom_interpolate_8pts.c: Compute carry iif non-trivial. 6496 6497 * mpz/gcdext.c: Adapt to relaxed mpn_gcdext's input requirements. 6498 6499 * mpz/and.c: Use mpn_ logic everywhere. Reduce branches. 6500 * mpz/ior.c: Likewise. 6501 * mpz/xor.c: Likewise. 6502 65032012-02-20 Torbjorn Granlund <tege@gmplib.org> 6504 6505 * mpn/x86_64/coreisbr/mul_1.asm: New file. 6506 6507 * mpn/x86_64/coreisbr/aorsmul_1.asm: New file. 6508 6509 * mpn/x86_64/mod_34lsub1.asm: Avoid ",pt" branch hint since many 6510 assemblers don't support it. 6511 65122012-02-19 Torbjorn Granlund <tege@gmplib.org> 6513 6514 * mpn/generic/redc_1.c: Put back mpn_add_n call, return its carry. 6515 Reintroduce previously removed RP argument. 6516 * mpn/x86_64/redc_1.asm: Likewise. 6517 6518 * mpn/generic/redc_2.c: Remove mpn_sub_n call, return carry from 6519 mpn_add_n call. 6520 6521 * gmp-impl.h (mpn_redc_1, mpn_redc_2): Now return an mp_limb_t. 6522 6523 * tune/speed.h (SPEED_ROUTINE_REDC_1): Adopt to pass RP argument. 6524 6525 * tests/refmpn.c (refmpn_redc_1): Adopt to new redc_1 interface. 6526 6527 * mpn/generic/powm.c (MPN_REDC_1): Pass rp parameter to mpn_redc_1. 6528 * mpn/generic/powm_sec.c (MPN_REDC_1_SEC): Likewise. 6529 * mpn/generic/powm.c (MPN_REDC_2): New macro, use for mpn_redc_2. 6530 65312012-02-18 Marc Glisse <marc.glisse@inria.fr> 6532 6533 * gmpxx.h (std::common_type): New partial specialization in C++11. 6534 * tests/cxx/t-cxx11.cc: Test it. 6535 6536 * gmpxx.h: Don't declare long double functions that are never defined. 6537 6538 * gmpxx.h (__gmp_binary_expr): Let things happen in place: q=q*q+z*z 6539 becomes tmp=z*z, q=q*q, q+=tmp. 6540 * tests/cxx/t-binary.cc: More variable reuse tests. 6541 65422012-02-17 Marc Glisse <marc.glisse@inria.fr> 6543 6544 * gmp-h.in (__GMP_WITHIN_GMP): Test with #ifdef instead of #if, for 6545 the benefit of applications using gcc -Wundef. 6546 (__GMP_WITHIN_GMPXX): Likewise. 6547 65482012-02-16 Marc Glisse <marc.glisse@inria.fr> 6549 6550 * gmpxx.h (__gmp_binary_expr): Let things happen in place: e=a*b-c*d 6551 becomes tmp=c*d, e=a*b, e-=tmp. 6552 * tests/cxx/t-binary.cc: More variable reuse tests. 6553 65542012-02-15 Niels Möller <nisse@lysator.liu.se> 6555 6556 * tune/tuneup.c (mul_toom43_to_toom54_threshold): New global. 6557 (tune_mul): Added tuning of MUL_TOOM43_TO_TOOM54_THRESHOLD. 6558 * tune/speed.h (SPEED_ROUTINE_MPN_TOOM43_FOR_TOOM54_MUL): New macro. 6559 (SPEED_ROUTINE_MPN_TOOM54_FOR_TOOM43_MUL): New macro. 6560 Prototypes for corresponding functions. 6561 * tune/common.c (speed_mpn_toom43_for_toom54_mul): New function. 6562 (speed_mpn_toom54_for_toom43_mul): New function. 6563 6564 * gmp-impl.h (MPN_TOOM43_MUL_MINSIZE): Corrected constant. 6565 (MPN_TOOM53_MUL_MINSIZE): Likewise. 6566 (MPN_TOOM54_MUL_MINSIZE): New constant. 6567 (mpn_toom54_mul): Added prototype. 6568 (MUL_TOOM43_TO_TOOM54_THRESHOLD): New threshold. Default value and 6569 tuning setup. 6570 65712012-02-14 Niels Möller <nisse@lysator.liu.se> 6572 6573 * mpn/generic/toom54_mul.c: New file, originally contributed by 6574 Marco. 6575 * gmp-impl.h (mpn_toom54_mul_itch): New function. 6576 * configure.in (gmp_mpn_functions): Added toom54_mul. 6577 * tests/mpn/t-toom54.c: New file. 6578 * tests/mpn/Makefile.am (check_PROGRAMS): Added t-toom54. 6579 65802012-02-13 Niels Möller <nisse@lysator.liu.se> 6581 6582 * configure.in: Display summary of options. 6583 65842012-02-11 Torbjorn Granlund <tege@gmplib.org> 6585 6586 * tests/tests.h (TESTS_REPS): Print any non-standard repetitions. 6587 65882012-02-11 Marco Bodrato <bodrato@mail.dm.unipi.it> 6589 6590 * doc/gmp.texi (Factorial): Shortly describe current algorithm. 6591 (Multiplication Algorithms): Add Toom[68]'n'half, (too) shortly. 6592 * gmp-impl.h (ASSERT_ALWAYS): Consider failures UNLIKELY. 6593 65942012-02-10 Niels Möller <nisse@lysator.liu.se> 6595 6596 * tests/mpz/t-gcd.c (gcdext_valid_p): Enforce slightly stricter 6597 bound for cofactors. 6598 6599 * mpn/generic/gcdext_lehmer.c (mpn_gcdext_hook): Corrected 6600 handling of unlikely (maybe impossible?) case u1n < un. Related to 6601 the 2012-02-05 bugfix of gcdext_subdiv_step.c in the gmp-5.0 repo. 6602 66032012-02-09 Marco Bodrato <bodrato@mail.dm.unipi.it> 6604 6605 * gmp-impl.h (mpn_toom3*_itch): Support any recursion depth. 6606 * tests/refmpn.c (refmpn_mul): Restore tight allocations. 6607 6608 * mpz/oddfac_1.c (mpz_oddfac_1): Get ready for n!! 6609 * gmp-impl.h (mpz_oddfac_1): Update signature. 6610 * mpz/fac_ui.c (mpz_fac_ui): Update call to mpz_oddfac_1. 6611 66122012-02-09 Marc Glisse <marc.glisse@inria.fr> 6613 6614 * gmp-impl.h (ABS_CAST): New macro. 6615 * mpf/cmp_si.c: Use ABS_CAST. 6616 * mpf/get_si.c: Use ABS_CAST. 6617 * mpf/iset_si.c: Use ABS_CAST. 6618 * mpf/set_si.c: Use ABS_CAST. 6619 * mpq/set_si.c: Use ABS_CAST. 6620 * mpz/cmp_si.c: Use ABS_CAST. 6621 * mpz/get_si.c: Use ABS_CAST. 6622 * mpz/iset_si.c: Use ABS_CAST. 6623 * mpz/mul_i.h: Use ABS_CAST. 6624 * mpz/set_si.c: Use ABS_CAST. 6625 66262012-02-08 Torbjorn Granlund <tege@gmplib.org> 6627 6628 * mpn/powerpc32/divrem_2.asm: Fix off-by-one condition in invert_limb 6629 code. 6630 66312012-02-08 Niels Möller <nisse@lysator.liu.se> 6632 6633 * doc/gmp.texi (mpz_gcdext): Clarified corner cases in cofactor 6634 canonicalization. 6635 66362012-02-07 Niels Möller <nisse@lysator.liu.se> 6637 6638 * mpn/generic/gcdext.c (mpn_gcdext): Fixed assert, related to the 6639 special case A = (2k+1) G, B = 2 G. Fix copied from gmp-5.0 repo. 6640 66412012-02-06 Niels Möller <nisse@lysator.liu.se> 6642 6643 * mpn/generic/hgcd_matrix.c (hgcd_matrix_update_q): Fixed carry 6644 handling bug. Fix copied from gmp-5.0 repo, where the function is 6645 found in hgcd.c. 6646 6647 * tests/mpz/t-gcd.c (main): Use mpz_rrandomb for test operands, 6648 not mpz_urandomb. Change copied from gmp-5.0 repo. 6649 * tests/mpn/t-hgcd.c (main): Likewise. 6650 66512012-02-04 Marco Bodrato <bodrato@mail.dm.unipi.it> 6652 6653 * tests/refmpn.c (refmpn_mul): More conservative allocations. 6654 66552012-02-03 Torbjorn Granlund <tege@gmplib.org> 6656 6657 * mpn/x86_64/bd1/gmp-mparam.h: New file. 6658 6659 * longlong.h (udiv_qrnnd from sdiv_qrnnd): Declare udiv_w_sdiv. 6660 6661 * mpn/generic/udiv_w_sdiv.c: Use c89 function header. 6662 66632012-02-03 Marco Bodrato <bodrato@mail.dm.unipi.it> 6664 6665 * mpz/fac_ui.c: mpz_oddfac_1 removed, with many related functions. 6666 * mpz/oddfac_1.c: New file, mpz_oddfac_1 implementation. 6667 * gmp-impl.h: mpz_oddfac_1 declaration. 6668 * Makefile.am (MPZ_OBJECTS): add mpz/oddfac_1$U.lo . 6669 * mpz/Makefile.am (libmpz_la_SOURCES): add oddfac_1.c . 6670 * tune/Makefile.am (fac_ui.c): include mpz/oddfac_1.c . 6671 66722012-02-02 Marco Bodrato <bodrato@mail.dm.unipi.it> 6673 6674 * mpn/generic/toom_interpolate_16pts.c: Correct an unlikely 32-bit bug. 6675 66762012-02-02 Torbjorn Granlund <tege@gmplib.org> 6677 6678 * mpn/generic/toom63_mul.c: Allow s+t==n by adjusting an ASSERT. 6679 * mpn/generic/toom_interpolate_8pts.c: Perform final incr iff s+t!=n. 6680 6681 * tests/mpn/t-toom6h.c (MIN_BN): Make more consistent with ASSERT in 6682 tested function. 6683 66842012-02-01 Torbjorn Granlund <tege@gmplib.org> 6685 6686 * tests/mpn/t-mul.c: New file. 6687 * tests/mpn/Makefile.am: Compile it. 6688 66892012-02-01 Marc Glisse <marc.glisse@inria.fr> 6690 6691 * gmpxx.h: Remove check for g++ older than 2.91. 6692 66932012-02-01 Niels Möller <nisse@lysator.liu.se> 6694 6695 * mpn/generic/mul.c: Added diagram on where toom functions can be 6696 called. 6697 66982012-02-01 Marc Glisse <marc.glisse@inria.fr> 6699 6700 * gmpxx.h (__gmp_unary_expr): Make the constructor explicit. 6701 (__gmp_expr(__gmp_expr&&)): New move constructors. 6702 (__gmp_expr::operator=(__gmp_expr&&)): New move assignments. 6703 (swap): Mark as noexcept. 6704 (__GMPXX_USE_CXX11): New macro. 6705 (__GMPXX_NOEXCEPT): New macro. 6706 * tests/cxx/t-cxx11.cc: New file. 6707 * tests/cxx/Makefile.am: Added t-cxx11. 6708 67092012-01-31 Torbjorn Granlund <tege@gmplib.org> 6710 6711 * mpn/generic/powm_sec.c (SQR_BASECASE_LIM): New name for 6712 SQR_BASECASE_MAX. 6713 (SQR_BASECASE_LIM, fat variant): Define to read __gmpn_cpuvec. 6714 (SQR_BASECASE_LIM, native variant): Define to SQR_TOOM2_THRESHOLD 6715 straight, without arithmetic. 6716 (mpn_local_sqr): Use BELOW_THRESHOLD as per Marco's suggestion. 6717 67182012-01-30 Torbjorn Granlund <tege@gmplib.org> 6719 6720 * tests/mpz/t-powm.c: Ensure all sizes are seen. 6721 67222012-01-30 Marc Glisse <marc.glisse@inria.fr> 6723 6724 * gmpxx.h (__gmp_binary_expr): Let things happen in place: d=a+b+c 6725 when d != c. 6726 * tests/cxx/t-binary.cc: Test variable reuse: c=a+b+c. 6727 67282012-01-28 Marc Glisse <marc.glisse@inria.fr> 6729 6730 * gmpxx.h: Don't compute -LONG_MIN. 6731 6732 * doc/gmp.texi (gmp_randclass::get_z_bits): Use mp_bitcnt_t. 6733 * gmpxx.h: Replace unsigned long with mp_bitcnt_t. 6734 67352012-01-27 Torbjorn Granlund <tege@gmplib.org> 6736 6737 * Upgrade to libtool 2.4.2. 6738 67392012-01-26 Marco Bodrato <bodrato@mail.dm.unipi.it> 6740 6741 * tests/mpz/t-fac_ui.c: Increase default test cases. 6742 6743 * mpz/prodlimbs.c: New file, mpz_prodlimbs implementation. 6744 * gmp-impl.h: mpz_prodlimbs declaration. 6745 * Makefile.am (MPZ_OBJECTS): add mpz/prodlimbs$U.lo . 6746 * mpz/Makefile.am (libmpz_la_SOURCES): add prodlimbs.c . 6747 (fac_ui.h): remove target (moved up one directory). 6748 * mpz/fac_ui.c: mpz_prodlimbs removed, micro-optimisations. 6749 67502012-01-25 Torbjorn Granlund <tege@gmplib.org> 6751 6752 * tune/tuneup.c: Remove unused tuneup variables. 6753 67542012-01-20 Marco Bodrato <bodrato@mail.dm.unipi.it> 6755 6756 * mpz/fac_ui.c: Reduce branches in basecases. 6757 67582012-01-18 Marc Glisse <marc.glisse@inria.fr> 6759 6760 * doc/gmp.texi (mpf_class::mpf_class): Use mp_bitcnt_t. 6761 67622012-01-17 Torbjorn Granlund <tege@gmplib.org> 6763 6764 * configure.in: Add ultrasparc T4 support. 6765 6766 * demos/isprime.c (main): Run 25 millerrabin tests. 6767 67682012-01-16 Marco Bodrato <bodrato@mail.dm.unipi.it> 6769 6770 * mpz/fac_ui.c (SIEVE_SEED): Define value for small limb size. 6771 (mpz_oddswing_1): Reduce the number of divisions. 6772 (mpz_oddfac_1): Reduce memory usage. 6773 * mpn/minithres/gmp-mparam.h: Correct minimum for FAC_DSC_. 6774 * tune/tuneup.c (tune_fac_ui): Likewise. 6775 67762012-01-15 Niels Möller <nisse@lysator.liu.se> 6777 6778 * mpz/scan0.c (mpz_scan0): Use ~(mp_bitcnt_t) 0, rather than 6779 ULONG_MAX, when returning "infinity". 6780 * mpz/scan1.c (mpz_scan1): Likewise. 6781 67822012-01-12 Torbjorn Granlund <tege@gmplib.org> 6783 6784 * tests/t-popc.c: Test longer bit strings. 6785 67862012-01-12 Marco Bodrato <bodrato@mail.dm.unipi.it> 6787 6788 * mpz/divexact.c: Tight realloc, delayed if variables are reused. 6789 * mpz/lcm.c: Smaller temp space, avoid goto. 6790 * gmp-impl.h (popc_limb): avoid double & (for 8-bits limb). 6791 67922012-01-10 Marco Bodrato <bodrato@mail.dm.unipi.it> 6793 6794 * mpn/minithres/gmp-mparam.h: New FAC_ODD_ and FAC_DSC_ thresholds. 6795 * tune/tuneup.c (tune_fac_ui): Correct minimum for FAC_DSC_. 6796 67972012-01-07 Torbjorn Granlund <tege@gmplib.org> 6798 6799 * mpz/mul_2exp.c: Rewrite. 6800 * mpz/tdiv_q_2exp.c: Rewrite. 6801 68022012-01-05 Marco Bodrato <bodrato@mail.dm.unipi.it> 6803 6804 * gen-fac_ui.c: Remove currently unused constants; add new odd 6805 double factorial table. 6806 * mpz/fac_ui.c (RECURSIVE_PROD_THRESHOLD): Increase default. 6807 (mpz_oddfac_1): New function: a merge of _bc_odd and _dsc_odd. 6808 (mpz_prodlimbs): More in-place computations. 6809 6810 * tune/tuneup.c (tune_fac_ui): min_is_always for FAC_ODD_. 6811 68122012-01-02 Marco Bodrato <bodrato@mail.dm.unipi.it> 6813 6814 * tune/tuneup.c (tune_fac_ui): Compute FAC_DSC before FAC_ODD. 6815 68162011-12-31 Torbjorn Granlund <tege@gmplib.org> 6817 6818 * Makefile.am (fac_ui.h): Put file in top-level dir, not in mpz. 6819 68202011-12-31 Marco Bodrato <bodrato@mail.dm.unipi.it> 6821 6822 * tune/Makefile.am (fac_ui.c): New target. 6823 (nodist_tuneup_SOURCES,CLEANFILES): Add fac_ui.c. 6824 * tune/tuneup.c (mpz_fac_ui_tune): Declare prototype. 6825 (fac_odd_threshold,fac_dsc_threshold): New global variables. 6826 (speed_mpz_fac_ui_tune,tune_fac_ui): New functions. 6827 (all): Call tune_fac_ui. 6828 * gmp-impl.h (FAC_ODD_THRESHOLD,FAC_DSC_THRESHOLD): 6829 New thresholds: default values, and setup for tuning. 6830 (FAC_DSC_THRESHOLD_LIMIT): Define (when tuning). 6831 * mpz/fac_ui.c (FAC_ODD_THRESHOLD,FAC_DSC_THRESHOLD): 6832 Default values removed. 6833 68342011-12-30 Torbjorn Granlund <tege@gmplib.org> 6835 6836 * mpz/hamdist.c: Fix typo in a return statement. 6837 6838 * mpn/generic/powm_sec.c (SQR_BASECASE_MAX): Set safely from 6839 SQR_TOOM2_THRESHOLD. 6840 68412011-12-17 Torbjorn Granlund <tege@gmplib.org> 6842 6843 * tests/mpz/t-perfpow.c: Decrease default # of tests. 6844 68452011-12-16 Torbjorn Granlund <tege@gmplib.org> 6846 6847 * tests/refmpn.c (AORS_1): Fix typo in variable type. 6848 68492011-12-10 Torbjorn Granlund <tege@gmplib.org> 6850 6851 * mpn/generic/sbpi1_bdiv_q.c: Delay quotient limb stores in order to 6852 allow quotient and dividend to completely overlap. 6853 * mpn/generic/sbpi1_bdiv_qr.c: Likewise. 6854 68552011-12-10 Marco Bodrato <bodrato@mail.dm.unipi.it> 6856 6857 * mpz/fac_ui.c: fac_bc_ui inlined in fac_ui. 6858 68592011-12-08 Torbjorn Granlund <tege@gmplib.org> 6860 6861 * mpn/generic/powm_sec.c: Handle fat binaries better. 6862 6863 * mpz/fac_ui.c (mpz_bc_fac_1): Fix typo in allocation size. 6864 6865 * mpn/x86/fat/com.c: New file. 6866 6867 * mpn/x86_64/pentium4/aors_n.asm: Make it actually work for DOS64. 6868 * mpn/x86_64/pentium4/rsh1aors_n.asm: Conditionalise jump on DOS64 6869 to avoid overhead for standard ABIs. 6870 6871 * mpn/x86_64/gcd_1.asm: Support DOS64. 6872 68732011-12-07 Torbjorn Granlund <tege@gmplib.org> 6874 6875 * configure.in: Fix typo making HAVE_NATIVE_mpn_X fail for fat 6876 functions. 6877 6878 * mpn/x86_64/fat/fat.c (__gmpn_cpuvec_init): Add a missing break. 6879 68802011-12-07 Marco Bodrato <bodrato@mail.dm.unipi.it> 6881 6882 * gen-fac_ui.c: Generate two more tables: odd factorial, swing. 6883 6884 * mpz/fac_ui.c: Rewrite. 6885 68862011-12-06 Niels Möller <nisse@lysator.liu.se> 6887 6888 * mpn/generic/hgcd.c (mpn_hgcd): Use hgcd_reduce for first 6889 recursive call. 6890 68912011-12-06 Torbjorn Granlund <tege@gmplib.org> 6892 6893 * tune/mod_1_1-1.c: Redefine the mpn_ functions, not __gmpn_ (for the 6894 benefit of fat builds). 6895 * tune/mod_1_1-2.c: Likewise. 6896 68972011-12-05 Torbjorn Granlund <tege@gmplib.org> 6898 6899 * mpn/x86/fat/lshiftc.c: New file. 6900 * mpn/x86/fat/mod_1_1.c: New file. 6901 * mpn/x86/fat/mod_1_2.c: New file. 6902 * mpn/x86/fat/mod_1_4.c: New file. 6903 6904 * mpn/x86/fat/diveby3.c: Remove no longer fat function. 6905 * mpn/x86_64/fat/diveby3.c: Likewise. 6906 6907 * mpn/x86_64/fat/gcd_1.c: Remove since always provided as asm. 6908 * mpn/x86_64/fat/mode1o.c: Likewise. 6909 6910 * configure.in (fat_functions): Update to more relevant function set. 6911 Add special handling for mod_1_N_cps functions. 6912 * gmp-impl.h (struct cpuvec_t) : Corresponding changes. Also add 6913 vrious declarations for new functions. 6914 * mpn/x86/x86-defs.m4 (CPUVEC_FUNCS_LIST): Corresponding changes. 6915 * mpn/x86_64/x86_64-defs.m4 (CPUVEC_FUNCS_LIST): Corresponding changes. 6916 * mpn/x86/fat/fat.c (__gmpn_cpuvec): Corresponding changes. 6917 * mpn/x86_64/fat/fat.c (__gmpn_cpuvec): Corresponding changes. 6918 6919 * mpn/x86_64: Port most remaining x86_64 files to DOS64. 6920 6921 * mpn/x86_64/coreisbr/aors_n.asm: Add forgotten DOS64_EXIT. 6922 6923 * mpn/x86_64/x86_64-defs.m4 (LEA): Handle non-PIC code. 6924 * mpn/x86_64/darwin.m4 (LEA): Likewise. 6925 69262011-12-04 Torbjorn Granlund <tege@gmplib.org> 6927 6928 * mpn/x86_64/fat/fat.c (MAKE_FMS): Rewrite to handle modern CPUs. 6929 * mpn/x86/fat/fat.c (MAKE_FMS): Likewise. 6930 6931 * mpn/x86_64/darwin.m4 (PROTECT): Define to potentially useful value. 6932 69332011-12-02 Torbjorn Granlund <tege@gmplib.org> 6934 6935 * mpn/x86_64/invert_limb_table.asm: Use PROTECT. 6936 * mpn/x86_64/invert_limb.asm: Likewise. 6937 6938 * mpn/x86_64/darwin.m4 (PROTECT, IFELF): New defines. 6939 * mpn/x86_64/dos64.m4 (PROTECT, IFELF): New defines. 6940 * mpn/x86_64/x86_64-defs.m4 (PROTECT, IFELF): New defines. 6941 69422011-12-01 Torbjorn Granlund <tege@gmplib.org> 6943 6944 * mpn/x86_64/fat/fat.c: Copy fake cpuid code from x86/fat/fat.c. 6945 6946 * mpn/x86_64 (STD64, IFSTD): New names for ELF64, IFELF (since these 6947 denote all standard calling conventions). 6948 6949 * mpn/x86_64: Add DOS64 ABI support to more files. 6950 6951 * mpn/x86_64/mod_1_1.asm: Finish DOS64 support. 6952 * mpn/x86_64/mod_1_2.asm: Likewise. 6953 * mpn/x86_64/mod_1_4.asm: Likewise. 6954 6955 * configure.in: Add GMP_NONSTD_ABI also for fat builds. 6956 6957 * mpn/x86_64/fat/fat_entry.asm: Rewrite to support DOS64. 6958 6959 * mpn/x86_64/dos64.m4 (IFDOS, IFSTD): New defines. 6960 * mpn/x86_64/x86_64-defs (IFDOS, IFSTD): New defines. 6961 6962 * mpn/x86_64/dive_1.asm: Add DOS64 ABI support. 6963 * mpn/x86_64/mode1o.asm: Likewise. 6964 6965 * mpn/x86_64/mod_34lsub1.asm: Enable for DOS64. 6966 6967 * mpn/x86_64/invert_limb.asm: Wrap .protected decl. 6968 6969 * gmp-impl.h (DECL_divexact_1): Fix typo in return type. 6970 6971 * mpn/x86_64/dos64.m4 (LEA): New define. 6972 (PIC): Define. 6973 69742011-11-29 Torbjorn Granlund <tege@gmplib.org> 6975 6976 * mpn/x86_64: Add DOS64 ABI support to most files. 6977 69782011-11-28 Torbjorn Granlund <tege@gmplib.org> 6979 6980 * mpn/x86_64/mul_basecase.asm: Support ABI DOS64. 6981 * mpn/x86_64/sqr_basecase.asm: Support ABI DOS64. 6982 * mpn/x86_64/aorsmul_1.asm: Support ABI DOS64. 6983 * mpn/x86_64/mul_1.asm: Support ABI DOS64. 6984 6985 * mpn/x86_64/x86_64-defs.m4 (DOS64_ENTRY, DOS64_EXIT): New, empty defs. 6986 6987 * mpn/x86_64/dos64.m4: New file. 6988 6989 * mpn/asm-defs.m4 (ABI_SUPPORT): New dummy macro. 6990 6991 * configure.in (64-bit mingw/cygwin): Define HOST_DOS64,GMP_NONSTD_ABI. 6992 No longer clear out path_64. 6993 (mpn code selection loop): Handle GMP_NONSTD_ABI. 6994 6995 * mpn/generic/udiv_w_sdiv.c: Use CNST_LIMB for some constants. 6996 69972011-11-25 Torbjorn Granlund <tege@gmplib.org> 6998 6999 * x86/*: Many new gmp-mparam.h file for 64-bit CPUs in 32-bit mode. 7000 7001 * configure.in: Overhaul x86/x86_64 support, merging three case 7002 statements into one. 7003 70042011-11-24 Torbjorn Granlund <tege@gmplib.org> 7005 7006 * doc/gmp.texi (Formatted Output Strings): Clarify rules for mpf_t 7007 precision. 7008 7009 * mpn/powerpc32/p7/gmp-mparam.h: New file. 7010 7011 * tune/tuneup.c (tune_mu_div, tune_mu_bdiv): Up min_size to karatsuba's 7012 threshold. 7013 70142011-11-22 Torbjorn Granlund <tege@gmplib.org> 7015 7016 * mpn/powerpc64/mode64/p6/aorsmul_1.asm: New file. 7017 7018 * configure.in: Don't fail fat builds under 64-bit DOS. 7019 7020 * mpn/powerpc64/mode64/aors_n.asm: Align loop for slightly better 7021 power5 performance. 7022 70232011-11-21 Torbjorn Granlund <tege@gmplib.org> 7024 7025 * gmp-h.in (__GNU_MP_RELEASE): Renamed from typo name. 7026 70272011-11-20 Torbjorn Granlund <tege@gmplib.org> 7028 7029 * configure.in: Split x86 CPUs into more subtypes for more accurate 7030 passing of gcc flags. 7031 7032 * mpn/powerpc32/p3-p7/aors_n.asm: New file. 7033 7034 * configure.in: Pass -m32 for powerpc64 with abi=32, using via _maybe 7035 mechanism. 7036 7037 * configure.in: Support powerpc32/p3-p7 directory for affected CPUs. 7038 70392011-11-17 Torbjorn Granlund <tege@gmplib.org> 7040 7041 * tune/speed.c (routine): Add mpn_tabselect. 7042 * tune/common.c (speed_mpn_tabselect): New function. 7043 * tune/speed.h (SPEED_ROUTINE_MPN_COPY_CALL): New macro, made from 7044 old SPEED_ROUTINE_MPN_COPY. 7045 (SPEED_ROUTINE_MPN_COPY): Just invoke SPEED_ROUTINE_MPN_COPY_CALL. 7046 (SPEED_ROUTINE_MPN_TABSELECT): New macro. 7047 70482011-11-17 Niels Möller <nisse@lysator.liu.se> 7049 7050 * tune/tuneup.c (tune_hgcd_appr): Increase stop_since_change. 7051 70522011-11-16 Torbjorn Granlund <tege@gmplib.org> 7053 7054 * mpn/powerpc32/tabselect.asm: New file. 7055 7056 * mpn/powerpc64/mode64/aorscnd_n.asm: New file. 7057 70582011-11-15 Niels Möller <nisse@lysator.liu.se> 7059 7060 * tune/speed.h (speed_mpn_hgcd_appr_lehmer): New prototype. 7061 (mpn_hgcd_lehmer_itch): Likewise. 7062 (mpn_hgcd_appr_lehmer): Likewise. 7063 (mpn_hgcd_appr_lehmer_itch): Likewise. 7064 (MPN_HGCD_LEHMER_ITCH): Deleted macro. 7065 7066 * tune/speed.c (routine): Added mpn_hgcd_appr_lehmer. 7067 7068 * tune/common.c (speed_mpn_hgcd_lehmer): Use mpn_hgcd_lehmer_itch 7069 rather than similarly named macro. 7070 (speed_mpn_hgcd_appr_lehmer): New function. 7071 7072 * tune/Makefile.am (libspeed_la_SOURCES): Added 7073 hgcd_appr_lehmer.c. 7074 7075 * tune/hgcd_appr_lehmer.c: New file. 7076 7077 * tune/tuneup.c (tune_hgcd_appr): Increased min_size to 50; some 7078 machines got small thresholds which appear to be bogus. 7079 70802011-11-15 Torbjorn Granlund <tege@gmplib.org> 7081 7082 * mpn/generic/powm_sec.c (mpn_local_sqr): Remove forgotten TMP_* calls. 7083 (redcify): Likewise. 7084 (mpn_powm_sec): Likewise. 7085 7086 * mpn/generic/powm_sec.c (mpn_powm_sec): Rework scratch usage 7087 (mpn_powm_sec_itch): Rewrite. 7088 7089 * mpn/generic/powm_sec.c (mpn_powm_sec): Use mpn_tabselect also in 7090 initialisation. 7091 7092 * configure.in: Amend 2011-11-03 gcc_cflags change. 7093 7094 * mpn/powerpc64/tabselect.asm: New file. 7095 * mpn/x86_64/tabselect.asm: New file. 7096 * mpn/x86/tabselect.asm: New file. 7097 * mpn/ia64/tabselect.asm: New file. 7098 7099 * mpn/asm-defs.m4 (define_mpn): Add tabselect. 7100 7101 * configure.in (gmp_mpn_functions): Add tabselect. 7102 (HAVE_NATIVE): Add entries for addncd_n, subcnd_n, tabselect. 7103 7104 * mpn/generic/powm_sec.c: Remove mpn_tabselect implementation. 7105 * mpn/generic/tabselect.c: New file with removed code. 7106 71072011-11-13 Torbjorn Granlund <tege@gmplib.org> 7108 7109 * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add powm_sec.c. 7110 7111 * mpn/generic/powm_sec.c (win_size): Use POWM_SEC_TABLE 7112 (POWM_SEC_TABLE): Define default. 7113 7114 * tune/tuneup.c (tune_powm_sec): New function computing POWM_SEC_TABLE. 7115 (all): Call new function. 7116 7117 * mpn/generic/powm_sec.c (win_size): Define only when 7118 TUNE_PROGRAM_BUILD is not set. 7119 71202011-11-13 Niels Möller <nisse@lysator.liu.se> 7121 7122 * tune/tuneup.c (tune_hgcd_appr): Use default min_size. 7123 (tune_hgcd_reduce): Increase max_size and step_factor, to 7000 7124 and 0.04, respectively. 7125 71262011-11-11 Torbjorn Granlund <tege@gmplib.org> 7127 7128 * mpn/powerpc64/mode64/sqr_diag_addlsh1.asm: Remove. 7129 71302011-11-11 Niels Möller <nisse@lysator.liu.se> 7131 7132 * tune/hgcd_reduce_2.c: New file. 7133 * tune/hgcd_reduce_1.c: New file. 7134 7135 * tune/tuneup.c (hgcd_appr_threshold): New threshold variable. 7136 (hgcd_reduce_threshold): Likewise. 7137 (tune_hgcd_appr): New function. 7138 (tune_hgcd_reduce): New function. 7139 (all): Call tune_hgcd_appr and tune_hgcd_reduce. 7140 7141 * tune/speed.h (speed_mpn_hgcd_reduce): Declaration. 7142 (speed_mpn_hgcd_reduce_[12]): Likewise. 7143 (mpn_hgcd_reduce_[12]): Likewise. 7144 (SPEED_ROUTINE_MPN_HGCD_REDUCE_CALL): New macro. 7145 7146 * tune/speed.c (routine): Added mpn_hgcd_reduce, 7147 mpn_hgcd_reduce_1, and mpn_hgcd_reduce_2. 7148 7149 * tune/common.c (speed_mpn_hgcd_reduce): New function. 7150 (speed_mpn_hgcd_reduce_[12]): Likewise. 7151 7152 * tune/Makefile.am (libspeed_la_SOURCES): Added hgcd_reduce_1.c 7153 hgcd_reduce_2.c. 7154 (TUNE_MPN_SRCS_BASIC): Added hgcd_appr.c and hgcd_reduce.c. 7155 7156 * mpn/generic/hgcd_appr.c (submul, hgcd_matrix_apply): Deleted 7157 functions, earlier copied to hgcd_reduce.c. 7158 (mpn_hgcd_appr): Use hgcd_reduce. 7159 71602011-11-09 Torbjorn Granlund <tege@gmplib.org> 7161 7162 * mpn/powerpc64/mode64/sqr_basecase.asm: New file. 7163 7164 * mpn/x86_64/aorscnd_n.asm: New file. 7165 7166 * tune/speed.c (routine): Add measuring of mpn_addcnd_n, mpn_subcnd_n. 7167 * tune/common.c (speed_mpn_addcnd_n,speed_mpn_subcnd_n): New functions. 7168 * tune/speed.h: Declare them. 7169 7170 * tests/devel/try.c: Add tests for mpn_addcnd_n and mpn_subcnd_n. 7171 * tests/refmpn.c (refmpn_addcnd_n, refmpn_subcnd_n): New functions. 7172 * tests/tests.h: Declare them. 7173 7174 * configure.in (gmp_mpn_functions): Add addcnd_n and subcnd_n. 7175 71762011-11-07 Torbjorn Granlund <tege@gmplib.org> 7177 7178 * mpn/generic/redc_1.c: Just reduce U operand using Hensel norm, but 7179 not fully canonically; leave add_n and conditional sub_n to caller. 7180 Therefore omit R argument. 7181 7182 * mpn/generic/redc_1_sec.c: Remove. 7183 7184 * gmp-impl.h (mpn_redc_1): Update declaration. 7185 (mpn_redc_1_sec): Remove declaration. 7186 7187 * configure.in (gmp_mpn_functions): Remove redc_1. 7188 7189 * mpn/x86_64/redc_1.asm: Adopt to new defined functionality/interface. 7190 * tune/speed.h (SPEED_ROUTINE_REDC_1): Likewise. 7191 7192 * tests/refmpn.c (refmpn_redc_1): Likewise; also call refmpn_addmul_1 7193 instead of mpn_addmul_1. 7194 7195 * mpn/generic/powm.c (MPN_REDC_1): New macro, use for mpn_redc_1. 7196 * mpn/generic/powm_sec.c (MPN_REDC_1_SEC): New macro, use for 7197 mpn_redc_1_sec. 7198 71992011-11-03 Torbjorn Granlund <tege@gmplib.org> 7200 7201 * dumbmp.c (mpz_sub): Abort for non-handled case. 7202 7203 * mpn/powerpc64/mode64/lshiftc.asm: Move file from here... 7204 * mpn/powerpc64/lshiftc.asm: ...to here, with trivial modifications. 7205 7206 * configure.in: Pass -m32 in more cases, using _maybe mechanism. 7207 Inherit default gcc_cflags in more places. 7208 7209 * mpn/powerpc64/mode64/p7/gmp-mparam.h: New file. 7210 72112011-11-02 Torbjorn Granlund <tege@gmplib.org> 7212 7213 * mpn/s390_64/invert_limb.asm: Slight optimisation. 7214 7215 * configure.in (s390): Set gcc_32_cflags_maybe. 7216 7217 * mpn/s390_32/gmp-mparam.h: Put in proper data. 7218 * mpn/s390_32/esame/gmp-mparam.h: New file. 7219 7220 * mpn/x86_64/bobcat/gmp-mparam.h: New file. 7221 7222 * mpn/s390_32/lshift.asm: New file. 7223 * mpn/s390_32/rshift.asm: New file. 7224 * mpn/s390_32/lshiftc.asm: New file. 7225 72262011-10-31 Torbjorn Granlund <tege@gmplib.org> 7227 7228 * mpn/powerpc64/sqr_diagonal.asm: Move from here... 7229 * mpn/powerpc64/mode32/sqr_diagonal.asm: ...to here. 7230 7231 * mpn/powerpc64/mode64/sqr_diag_addlsh1.asm: New file. 7232 7233 * mpn/s390_64/sqr_basecase.asm: Rewrite sqr_diag_addlsh1 code. 7234 * mpn/s390_32/esame/sqr_basecase.asm: Likewise. 7235 72362011-10-29 Torbjorn Granlund <tege@gmplib.org> 7237 7238 * mpn/s390_64/lshift.asm: Complete rewrite. 7239 * mpn/s390_64/rshift.asm: Likewise. 7240 7241 * mpn/s390_64/lshiftc.asm: New file. 7242 72432011-10-28 Torbjorn Granlund <tege@gmplib.org> 7244 7245 * mpn/s390_32/esame/aors_n.asm: New file, with rewritten add/sub code. 7246 72472011-10-27 Torbjorn Granlund <tege@gmplib.org> 7248 7249 From Per Olofsson: 7250 * gmp-impl.h (BSWAP_LIMB): Rename variable to avoid BSWAP_LIMB_FETCH 7251 clash. 7252 7253 * mpn/s390_32/esame/mul_basecase.asm: New file. 7254 7255 * mpn/s390_32/esame/sqr_basecase.asm: New file. 7256 7257 * mpn/s390_32/logops_n.asm: New file. 7258 7259 * mpn/s390_64/logops_n.asm: Fix rp=up code. Remove a leftover insn. 7260 72612011-10-26 Niels Möller <nisse@lysator.liu.se> 7262 7263 * gmp-impl.h (mpn_hgcd_reduce, mpn_hgcd_reduce_itch): Added 7264 prototypes. 7265 (HGCD_APPR_THRESHOLD): Set up threshold for tuning. 7266 (HGCD_REDUCE_THRESHOLD): Likewise. 7267 7268 * configure.in (gmp_mpn_functions): Added hgcd_reduce. 7269 7270 * mpn/generic/hgcd_reduce.c: New file. 7271 72722011-10-24 Torbjorn Granlund <tege@gmplib.org> 7273 7274 * mpn/x86_64/sqr_basecase.asm: Put intermediate result into R, don't 7275 allocate any stack space. 7276 72772011-10-23 Torbjorn Granlund <tege@gmplib.org> 7278 7279 * mpn/s390_64/logops_n.asm: Use nc, oc, xc when possible. 7280 7281 * tune/common.c (speed_mpn_and_n, speed_mpn_andn_n, etc): 7282 Pass correct input args. 7283 7284 * mpn/s390_64/mod_34lsub1.asm: Use llgfr for zero extensions. 7285 7286 * mpn/s390_64/mul_basecase.asm: New file. 7287 7288 * mpn/s390_64/sqr_basecase.asm: New file. 7289 * mpn/s390_64/sqr_diag_addlsh1.asm: Removed, lives on in sqr_basecase. 7290 7291 * mpn/s390_64/bdiv_dbm1c.asm: Shave off 1 c/l. 7292 7293 * mpn/s390_64/aorrlsh1_n.asm: New file, developed from aorslsh1_n.asm. 7294 * mpn/s390_64/sublsh1_n.asm: New file. 7295 * mpn/s390_64/aorslsh1_n.asm: Remove file. 7296 72972011-10-22 Torbjorn Granlund <tege@gmplib.org> 7298 7299 * mpn/s390_64/logops_n.asm: New file. 7300 7301 * mpn/s390_64/aors_n.asm: New file, with rewritten add/sub code. 7302 73032011-10-20 Torbjorn Granlund <tege@gmplib.org> 7304 7305 * tune/speed.h (SPEED_ROUTINE_MPN_SQR_DIAL_ADDLSH1_CALL): New macro. 7306 * tune/common.c (speed_mpn_sqr_diag_addlsh1): New function. 7307 * tune/speed.c (routine): Measure mpn_sqr_diag_addlsh1. 7308 7309 * mpn/s390_64/sqr_diag_addlsh1.asm: Rewrite like s390_32/esame code. 7310 7311 * mpn/s390_32/esame/sqr_diag_addlsh1.asm: Save just needed registers. 7312 73132011-10-19 Torbjorn Granlund <tege@gmplib.org> 7314 7315 * mpn/s390_32/esame/add_n.asm: Rewrite, similar to s390_64 code. 7316 * mpn/s390_32/esame/add_n.asm: Likewise. 7317 73182011-10-17 Torbjorn Granlund <tege@gmplib.org> 7319 7320 * mpn/s390_32/esame/aorslsh1_n.asm: New file. 7321 73222011-10-16 Torbjorn Granlund <tege@gmplib.org> 7323 7324 * mpn/s390_32/esame/sqr_diag_addlsh1.asm: New file. 7325 7326 * mpn/s390_32/copyi.asm: New file. 7327 * mpn/s390_32/copyd.asm: New file. 7328 7329 * mpn/s390_64/copyd.asm: Optimise. 7330 7331 * mpn/s390_64/copyi.asm: Rewrite along the lines of glibc memcpy. 7332 7333 * mpn/s390_64/aorslsh1_n.asm: New file. 7334 7335 * mpn/s390_64/mod_34lsub1.asm: New file. 7336 7337 * mpn/s390_64/sqr_diag_addlsh1.asm: New file. 7338 73392011-10-15 Torbjorn Granlund <tege@gmplib.org> 7340 7341 * configure.in (s390): Rewrite support to handle known CPUs. 7342 * config.guess: Recognise s390 CPUs. 7343 * config.sub: Match s390 CPUs. 7344 * acinclude.m4 (S390_PATTERN, S390X_PATTERN): New defines. 7345 73462011-10-14 Torbjorn Granlund <tege@gmplib.org> 7347 7348 From Per Olofsson: 7349 * mpn/generic/popham.c: Add __GMP_NOTHROW to make it match gmp.h. 7350 * mpn/generic/gcd_1.c: Separate declarations and initialisers for the 7351 benefit of C++. 7352 7353 * configure.in: AC_DEFINE HAVE_HOST_CPU_s390_zarch. 7354 * longlong.h (s390): Use it. 7355 (s390 umul_ppmm): Fix typo in pure C variant. 7356 73572011-10-13 Torbjorn Granlund <tege@gmplib.org> 7358 7359 * longlong.h (s390): Put back an accidentally deleted #else. 7360 7361 * configure.in (s390): Unset extra_functions for s390x. 7362 73632011-10-12 Torbjorn Granlund <tege@gmplib.org> 7364 7365 * mpn/s390_64/lshift.asm: Reduce register usage. 7366 * mpn/s390_64/rshift.asm: Likewise. 7367 7368 * longlong.h (s390 umul_ppmm): With new-enough gcc, avoid asm. 7369 7370 From Andreas Krebbel: 7371 * longlong.h (s390 umul_ppmm): Support 32-bit limbs with gcc using 7372 64-bit registers. 7373 (s390 udiv_qrnnd): Likewise. 7374 73752011-10-11 Torbjorn Granlund <tege@gmplib.org> 7376 7377 * configure.in (s390x): Pass -mzarch to gcc in 32-bit mode. 7378 7379 * longlong.h (s390x): Add __CLOBBER_CC for relevant asm patterns. 7380 * mpn/generic/mod_1_1.c (s390x add_mssaaaa): Likewise. 7381 7382 * mpn/s390_64/copyd.asm: New file. 7383 73842011-10-10 Niels Möller <nisse@lysator.liu.se> 7385 7386 * mpn/generic/hgcd_appr.c: Deleted debugging code. 7387 7388 * tests/mpn/t-hgcd_appr.c (main): Added -v flag. 7389 (hgcd_appr_valid_p): Increased margin of non-minimality for 7390 divide-and-conquer algorithm. Display bit counts only if 7391 -v is used. 7392 7393 * mpn/generic/hgcd_appr.c (submul): New (static) function. 7394 (hgcd_matrix_apply): New function. 7395 (mpn_hgcd_appr_itch): Account for divide-and-conquer algorithm. 7396 (mpn_hgcd_appr): Implemented divide-and-conquer. 7397 73982011-10-10 Torbjorn Granlund <tege@gmplib.org> 7399 7400 * mpn/generic/mod_1_1.c (add_mssaaaa): Add s390x variant. Put arm code 7401 inside __GNUC__. 7402 7403 * tune/time.c (STCK): Use proper memory constraint. 7404 7405 From Marco Trudel: 7406 * tests/mpz/t-scan.c (check_ref): Fix loop end bound. 7407 74082011-10-10 Niels Möller <nisse@lysator.liu.se> 7409 7410 * gmp-impl.h: (HGCD_APPR_THRESHOLD): New threshold. 7411 7412 * mpn/generic/hgcd_appr.c (mpn_hgcd_appr): Interface change. 7413 Destroy inputs, let caller make working copies if needed. 7414 (mpn_hgcd_appr_itch): Reduced scratch need. 7415 * gmp-impl.h: Updated mpn_hgcd_appr prototype. 7416 * tests/mpn/t-hgcd_appr.c (one_test): Make working copies for 7417 hgcd_appr. 7418 * tune/common.c (speed_mpn_hgcd_appr): Use SPEED_ROUTINE_MPN_HGCD_CALL. 7419 * tune/speed.h (SPEED_ROUTINE_MPN_HGCD_APPR_CALL): Deleted. 7420 74212011-10-09 Torbjorn Granlund <tege@gmplib.org> 7422 7423 * mpn/s390_64/copyi.asm: New file. 7424 * mpn/s390_64/lshift.asm: New file. 7425 * mpn/s390_64/rshift.asm: New file. 7426 7427 * mpn/s390_64/add_n.asm: Rewrite using lmg/stmg. 7428 * mpn/s390_64/sub_n.asm: Likewise. 7429 7430 * mpn/s390_64/invert_limb.asm: Save a callee-saves register less. 7431 7432 * tune/time.c (getrusage_backwards_p): Properly cast printed values. 7433 7434 * longlong.h (s390x): Put back UDItype casts to make gcc reloading use 7435 right more for constants. 7436 (s390x count_leading_zeros): Disable until we support z10 specifically. 7437 (s390x add_ssaaaa): Remove algsi/slgsi until we support z10. 7438 74392011-10-09 Niels Möller <nisse@lysator.liu.se> 7440 7441 * mpn/generic/hgcd_matrix.c (mpn_hgcd_matrix_adjust): Declare 7442 matrix argument const. 7443 74442011-10-08 Niels Möller <nisse@lysator.liu.se> 7445 7446 * tests/mpn/t-hgcd_appr.c (hgcd_appr_valid_p): Adjusted the 7447 allowed margin of non-minimality for hgcd_appr. 7448 7449 * mpn/generic/hgcd_appr.c (mpn_hgcd_appr): Fixed handling of 7450 extra_bits, starting at zero, to ensure that we don't produce too 7451 small remainders. Added a final reduction loop when we we 7452 otherwise terminate with extra_bits > 0, to make the returned 7453 remainders closer to minimal. 7454 74552011-10-07 Torbjorn Granlund <tege@gmplib.org> 7456 7457 * longlong.h (s390): Add 32-bit zarch umul_ppmm and udiv_qrnnd. 7458 (s390): Overhaul 32-bit and 64-bit code. 7459 74602011-10-07 Niels Möller <nisse@lysator.liu.se> 7461 7462 * tune/speed.h (speed_mpn_hgcd_appr): New prototype. 7463 (SPEED_ROUTINE_MPN_HGCD_APPR_CALL): New macro. 7464 * tune/common.c (speed_mpn_hgcd_appr): New function. 7465 * tune/speed.c (routine): Added mpn_hgcd_appr. 7466 7467 * tests/mpn/t-hgcd_appr.c: New file. 7468 * tests/mpn/Makefile.am (check_PROGRAMS): Added t-hgcd_appr. 7469 7470 * configure.in (gmp_mpn_functions): Added hgcd_step and hgcd_appr. 7471 7472 * gmp-impl.h: Added prototypes for mpn_hgcd_step, 7473 mpn_hgcd_appr_itch and mpn_hgcd_appr. 7474 7475 * mpn/generic/hgcd_appr.c: New file. 7476 7477 * mpn/generic/hgcd_step.c: New file, extracted from hgcd.c. 7478 (mpn_hgcd_step): Renamed, from... 7479 * mpn/generic/hgcd.c (hgcd_step): ...old name. Renamed and moved 7480 to hgcd_step.c. 7481 (hgcd_hook): Also moved to hgcd_step.c. 7482 (mpn_hgcd): Updated for hgcd_step renaming. 7483 74842011-10-06 Torbjorn Granlund <tege@gmplib.org> 7485 7486 * mpn/s390_64/invert_limb.asm: New file. 7487 74882011-10-04 Torbjorn Granlund <tege@gmplib.org> 7489 7490 * mpn/s390_64/submul_1.asm: New file. 7491 * mpn/s390_32/esame/submul_1.asm: New file. 7492 7493 * mpn/generic/mulmid.c (mpn_mulmid): Move a TMP_DECL to block start. 7494 7495 * mpn/Makefile.am (TARG_DIST): Add s390_32 and s390_64, remove s390 and 7496 z8000x. 7497 7498 * doc/gmp.texi (Custom Allocation): Rephrase a paragraph. 7499 7500 * demos/factorize.c: Run 25 Miller-Rabin tests. 7501 7502 * mpz/nextprime.c: Run 25 mpz_millerrabin tests (was 10). 7503 75042011-10-03 Torbjorn Granlund <tege@gmplib.org> 7505 7506 * configure.in: Support s390x. 7507 7508 * longlong.h: Add support for 64-bit s390x. 7509 7510 * mpn/s390_64: New directory. 7511 * mpn/s390_64/add_n.asm: New file. 7512 * mpn/s390_64/sub_n.asm: New file. 7513 * mpn/s390_64/mul_1.asm: New file. 7514 * mpn/s390_64/addmul_1.asm: New file. 7515 * mpn/s390_64/bdiv_dbm1c.asm: New file. 7516 * mpn/s390_64/gmp-mparam.h: New file, taken from x86_64. 7517 7518 * mpn/s390_32: Directory renamed from mpn/s390. 7519 * mpn/s390_32/gmp-mparam.h: New file, taken from x86_64. 7520 * mpn/s390_32/esame/add_n.asm: New file. 7521 * mpn/s390_32/esame/sub_n.asm: New file. 7522 * mpn/s390_32/esame/mul_1.asm: New file. 7523 * mpn/s390_32/esame/addmul_1.asm: New file. 7524 * mpn/s390_32/esame/bdiv_dbm1c.asm: New file. 7525 75262011-10-03 Niels Möller <nisse@lysator.liu.se> 7527 7528 * tests/mpn/Makefile.am (check_PROGRAMS): Added t-mulmid. 7529 * tests/mpn/t-mulmid.c: New file. 7530 7531 mulmid-related assembly for x86_64, from David Harvey: 7532 * mpn/asm-defs.m4 (define_mpn): Added [add,sub]_err[1,2,3]_n and 7533 mulmid_basecase. Also use m4_not_for_expansion on the 7534 corresponding OPERATION_* symbols. 7535 * mpn/x86_64/aors_err1_n.asm: New file. 7536 * mpn/x86_64/aors_err2_n.asm: Likewise. 7537 * mpn/x86_64/aors_err3_n.asm: Likewise. 7538 * mpn/x86_64/mulmid_basecase.asm: Likewise. 7539 * mpn/x86_64/core2/aors_err1_n.asm: Likewise. 7540 * mpn/x86_64/gmp-mparam.h (MULMID_TOOM42_THRESHOLD): New value. 7541 * mpn/x86_64/core2/gmp-mparam.h (MULMID_TOOM42_THRESHOLD): Likewise. 7542 7543 Tuning of mulmid, from David Harvey: 7544 * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Added mulmid.c 7545 mulmid_n.c toom42_mulmid.c. 7546 * tune/speed.h: Prototypes for mulmid-related functions. 7547 (struct speed_params): Increased max number of sources to 5. 7548 (SPEED_ROUTINE_MPN_BINARY_ERR_N_CALL): New macro. 7549 (SPEED_ROUTINE_MPN_BINARY_ERR1_N): Likewise. 7550 (SPEED_ROUTINE_MPN_BINARY_ERR2_N): Likewise. 7551 (SPEED_ROUTINE_MPN_BINARY_ERR3_N): Likewise. 7552 (SPEED_ROUTINE_MPN_MULMID): Likewise. 7553 (SPEED_ROUTINE_MPN_MULMID_N): Likewise. 7554 (SPEED_ROUTINE_MPN_TOOM42_MULMID): Likewise. 7555 * tune/common.c (mpn_[add,sub]_err[1,2,3]_n): New functions. 7556 (speed_mpn_mulmid_basecase): New function. 7557 (speed_mpn_mulmid): New function. 7558 (speed_mpn_mulmid_n): New function. 7559 (speed_mpn_toom42_mulmid): New function. 7560 * tune/speed.c (routine): Added mpn_[add,sub]_err[1,2,3]_n, 7561 mpn_mulmid_basecase, mpn_toom42_mulmid, mpn_mulmid_n, and 7562 mpn_mulmid. 7563 * tune/tuneup.c (mulmid_toom42_threshold): New threshold variable. 7564 (tune_mulmid): New function. 7565 (all): Call tune_mulmid. 7566 7567 Testing of mulmid, from David Harvey: 7568 * tests/refmpn.c (AORS_ERR1_N): New macro. 7569 (refmpn_add_err1_n, refmpn_sub_err1_n): New functions. 7570 (AORS_ERR2_N): New macro. 7571 (refmpn_add_err2_n, refmpn_sub_err2_n): New functions. 7572 (AORS_ERR3_N): New macro. 7573 (refmpn_add_err3_n, refmpn_sub_err3_n): New functions. 7574 (refmpn_mulmid_basecase): New function. 7575 (refmpn_toom42_mulmid): New function, wrapper for 7576 refmpn_mulmid_basecase. 7577 (refmpn_mulmid_n): Likewise. 7578 (refmpn_mulmid): Likewise. 7579 * tests/tests.h: Prototypes for new functions. 7580 * tests/devel/try.c (NUM_SOURCES): Increased to 5. 7581 (struct try_t): Use NUM_SOURCES and NUM_DESTS constants. 7582 (SIZE_4, SIZE_6, SIZE_DIFF_PLUS_3, SIZE_ODD): New constants. 7583 (OVERLAP_NOT_DST2): New flag. 7584 (param_init): New mulmid-related operation types. 7585 (mpn_toom42_mulmid_fun): New function. 7586 (choice_array): Added mulmid-related entries. 7587 (overlap_array): Extended for larger NUM_SOURCES. 7588 (OVERLAP_COUNT): Handle OVERLAP_NOT_DST2. 7589 (call): Support mulmid-related functions. 7590 (pointer_setup): Handle SIZE_4, SIZE_6, and SIZE_DIFF_PLUS_3. 7591 (SIZE_ITERATION): Handle SIZE_ODD. 7592 (SIZE2_FIRST): Handle SIZE_CEIL_HALF. 7593 (SIZE2_LAST): Likewise. 7594 7595 Implementation of mulmid, from David Harvey: 7596 * mpn/generic/add_err1_n.c (mpn_add_err1_n): New file and function. 7597 * mpn/generic/add_err2_n.c (mpn_add_err2_n): Likewise. 7598 * mpn/generic/add_err3_n.c (mpn_add_err3_n): Likewise. 7599 * mpn/generic/sub_err1_n.c (mpn_sub_err1_n): Likewise. 7600 * mpn/generic/sub_err2_n.c (mpn_sub_err2_n): Likewise. 7601 * mpn/generic/sub_err3_n.c (mpn_sub_err3_n): Likewise. 7602 * mpn/generic/mulmid_basecase.c (mpn_mulmid_basecase): Likewise. 7603 * mpn/generic/mulmid_n.c (mpn_mulmid_n): Likewise. 7604 * mpn/generic/toom42_mulmid.c (mpn_toom42_mulmid): Likewise. 7605 * configure.in (gmp_mpn_functions): Added mulmid-related 7606 functions. 7607 (GMP_MULFUNC_CHOICES): Handle aors_err1_n, aors_err2_n, and 7608 aors_err3_n. 7609 * gmp-impl.h: Added prototypes for mulmid functions. 7610 (MPN_TOOM42_MULMID_MINSIZE): New constant. 7611 (MULMID_TOOM42_THRESHOLD): New threshold. 7612 (mpn_toom42_mulmid_itch): New macro. 7613 76142011-10-03 Niels Möller <nisse@lysator.liu.se> 7615 7616 * tune/tune-gcd-p.c (main): Fixed broken loop conditions. 7617 76182011-09-26 Torbjorn Granlund <tege@gmplib.org> 7619 7620 * mpn/sh/sh2/submul_1.asm: Make this old submul_1 implementation 7621 actually compute intended function. 7622 7623 * longlong.h (SH): Recognise predefs for all SH processors as defined 7624 by current gcc versions. 7625 76262011-09-25 Torbjorn Granlund <tege@gmplib.org> 7627 7628 * mpn/sh: Migrate files to '.asm'. 7629 * configure.in: Recognise sh3 and sh4. 7630 76312011-09-21 Marc Glisse <marc.glisse@inria.fr> 7632 7633 * gmpxx.h (mpz_class::swap): New function. 7634 (mpq_class::swap): Likewise. 7635 (mpf_class::swap): Likewise. 7636 (swap): New function. 7637 * tests/cxx/t-assign.cc: Test the above. 7638 * doc/gmp.texi (swap): Document the above. 7639 76402011-08-21 Marc Glisse <marc.glisse@inria.fr> 7641 7642 * tests/cxx/t-ops2.cc: check mul-div by 2. 7643 7644 * gmpxx.h (__GMPXX_CONSTANT): New macro (__builtin_constant_p). 7645 (__gmp_binary_lshift): Move before multiplication. Optimize x << 0. 7646 (__gmp_binary_rshift): Move before division. Optimize x >> 0. 7647 (__gmp_binary_plus): Optimize x + 0. Rewrite rational + integer. 7648 (__gmp_binary_minus): Optimize x - 0 and 0 - x. 7649 Rewrite rational - integer. 7650 (__gmp_binary_multiplies): Optimize x * 2^n. 7651 (__gmp_binary_divides): Optimize x / 2^n. 7652 (__gmp_binary_*): Deduplicate code for symmetric operations. 7653 76542011-08-18 Torbjorn Granlund <tege@gmplib.org> 7655 7656 * printf/doprntf.c (__gmp_doprnt_mpf): For DOPRNT_CONV_FIXED, ask for 7657 one more digit. 7658 76592011-08-17 Torbjorn Granlund <tege@gmplib.org> 7660 7661 * mpf/sub.c: Fix typo in copy condition. Delay an allocation. 7662 76632011-08-12 Torbjorn Granlund <tege@gmplib.org> 7664 7665 * gmp-impl.h (LIMBS_PER_DIGIT_IN_BASE): Fix typo. 7666 76672011-08-10 Torbjorn Granlund <tege@gmplib.org> 7668 7669 * gmp-impl.h (DIGITS_IN_BASEGT2_FROM_BITS): New. 7670 (DIGITS_IN_BASE_FROM_BITS): Compute more accurate result. 7671 (MPN_SIZEINBASE): Use DIGITS_IN_BASEGT2_FROM_BITS. 7672 7673 * tests/rand/t-lc2exp.c (check_bigc): Call abort after reporting error. 7674 76752011-08-09 Torbjorn Granlund <tege@gmplib.org> 7676 7677 * mpz/out_str.c (mpz_out_str): Reinsert accidentally deleted str_size 7678 adjustment. 7679 7680 * gmp-impl.h (DIGITS_IN_BASE_FROM_BITS): Simplify, also avoiding 7681 overflow for base 2. 7682 76832011-08-07 Torbjorn Granlund <tege@gmplib.org> 7684 7685 * gmp-impl.h (struct bases): Add log2b and logb2 field, remove 7686 chars_per_limb_exactly field. 7687 (DIGITS_IN_BASE_FROM_BITS): New. 7688 (DIGITS_IN_BASE_PER_LIMB): New. 7689 (LIMBS_PER_DIGIT_IN_BASE): New. 7690 * gen-bases.c: Generate log2b and logb2 fields; do not generate 7691 chars_per_limb_exactly field. 7692 * mpf/get_str.c mpf/out_str.c mpf/set_str.c mpn/generic/get_str.c 7693 mpn/generic/sizeinbase.c mpq/get_str.c mpz/inp_str.c mpz/out_str.c 7694 mpz/set_str.c printf/doprntf.c tune/speed.h tune/tuneup.c: 7695 Use new macros. 7696 76972011-08-04 Torbjorn Granlund <tege@gmplib.org> 7698 7699 * dumbmp.c (mpz_root): Reinsert accidentally removed line. 7700 77012011-08-03 Torbjorn Granlund <tege@gmplib.org> 7702 7703 * dumbmp.c (mpz_tdiv_qr): Correctly handle dividend value being equal 7704 to divisor value. 7705 (mpz_root): Create reasonable starting approximation. 7706 (mpz_sqrt): New function. 7707 (mpz_mul_2exp): Add faster block shifting code, disabled for now. 7708 77092011-07-15 Torbjorn Granlund <tege@gmplib.org> 7710 7711 * mpn/arm/invert_limb.asm: Swap around some registers to silence 'as' 7712 warnings. 7713 77142011-07-14 Torbjorn Granlund <tege@gmplib.org> 7715 7716 * mpn/generic/dcpi1_bdiv_q.c (mpn_dcpi1_bdiv_q): Get mpn_sub_1 size 7717 argument right. 7718 77192011-07-04 Torbjorn Granlund <tege@gmplib.org> 7720 7721 * tests/misc/t-locale.c: Disable test for mingw. 7722 7723 * configure.in (x86_64 *-*-mingw*): Handle also cygwin here; clear out 7724 extra_functions_64. 7725 77262011-07-02 Torbjorn Granlund <tege@gmplib.org> 7727 7728 * config.guess: Don't print newline in x86 cpuid function. 7729 Rewrite x86-64 cpu recognition asm code to work under Windoze. 7730 77312011-06-16 Torbjorn Granlund <tege@gmplib.org> 7732 7733 * acinclude.m4 (GMP_ASM_RODATA): Fix typo in 2011-04-20 change. 7734 7735 * configure.in: Surround tr ranges with [] for portability. 7736 77372011-05-25 Niels Möller <nisse@lysator.liu.se> 7738 7739 * tune/tune-gcd-p.c (search): New function to search for minimum. 7740 (main): Replaced slow linear search. 7741 77422011-05-24 Niels Möller <nisse@lysator.liu.se> 7743 7744 * tune/Makefile.am (EXTRA_PROGRAMS): Added tune-gcd-p. Also added 7745 related automake variables. 7746 7747 * mpn/Makefile.am (tune-gcd-p): Deleted target. 7748 7749 * tune/tune-gcd-p.c: New file, extracted from mpn/generic/gcd.c 7750 and updated. 7751 * mpn/generic/gcd.c: Deleted the corresponding code, including 7752 main function. 7753 77542011-05-23 Niels Möller <nisse@lysator.liu.se> 7755 7756 * mpz/jacobi.c (mpz_jacobi): Simplified by swapping operands when 7757 needed, to get asize >= bsize. Use the reciprocity law generalized 7758 to work when one operand is even. 7759 77602011-05-22 Niels Möller <nisse@lysator.liu.se> 7761 7762 * mpz/jacobi.c (mpz_jacobi): Another bugfix for the asize == 1 7763 case. Sometimes, powers of two in b were taken into account twice. 7764 77652011-05-21 Niels Möller <nisse@lysator.liu.se> 7766 7767 * mpz/jacobi.c (mpz_jacobi): The handling of asize == 1 was 7768 broken. Rewrote it. 7769 7770 * tests/mpz/t-jac.c (mpz_nextprime_step): Sanity check that prime 7771 candidate and step has no common factor. 7772 (check_data): Added some test cases related to the asize == 1 case 7773 in mpz_jacobi. 7774 77752011-05-20 Niels Möller <nisse@lysator.liu.se> 7776 7777 * gmp-impl.h: Jacobi-related prototypes. 7778 7779 * configure.in (gmp_mpn_functions): Added jacobi_2, jacobi, 7780 hgcd2_jacobi, hgcd_jacobi, and removed jacobi_lehmer. 7781 7782 * mpz/jacobi.c (STRIP_TWOS): Deleted macro. 7783 (mpz_jacobi): Partially rewritten, to no longer makes the A 7784 operand odd. Use new mpn_jacobi_n. 7785 7786 * mpn/generic/jacobi_lehmer.c: Deleted file. 7787 7788 * mpn/generic/jacobi.c (mpn_jacobi_n): New subquadratic jacobi 7789 implementation. Supersedes jacobi_lehmer.c. 7790 7791 * mpn/generic/hgcd_jacobi.c (mpn_hgcd_jacobi): New file and 7792 function. A copy of mpn_hgcd, using mpn_hgcd2_jacobi, and with calls to 7793 mpn_jacobi_update when appropriate. 7794 7795 * mpn/generic/jacobi_2.c (mpn_jacobi_2): New file. Extracted from 7796 jacobi_lehmer.c. 7797 * mpn/generic/hgcd2_jacobi.c (mpn_hgcd2_jacobi): Likewise. 7798 7799 * mpn/generic/hgcd.c (hgcd_hook): Avoid using NULL. 7800 78012011-05-19 Niels Möller <nisse@lysator.liu.se> 7802 7803 * tune/hgcd_lehmer.c (__gmpn_hgcd_itch): Don't rename symbols for 7804 the functions moved to hgcd_matrix.c. 7805 7806 * configure.in (gmp_mpn_functions): Added hgcd_matrix. 7807 7808 * mpn/generic/hgcd.c (hgcd_matrix_update_1): Deleted. Several other 7809 helper functions moved to hgcd_matrix.c, see below. 7810 (hgcd_hook): New function. 7811 (hgcd_step): Simplified, using mpn_gcd_subdiv_step and hgcd_hook. 7812 7813 * mpn/generic/hgcd_matrix.c: New file. 7814 (mpn_hgcd_matrix_init): Moved here, from hgcd.c. 7815 (mpn_hgcd_matrix_update_q): Likewise. 7816 (mpn_hgcd_matrix_mul_1): Likewise. 7817 (mpn_hgcd_matrix_mul): Likewise. 7818 (mpn_hgcd_matrix_adjust): Likewise. 7819 7820 * mpn/generic/gcd_subdiv_step.c (mpn_gcd_subdiv_step): New 7821 argument s, for use by hgcd. 7822 * gmp-impl.h (mpn_gcd_subdiv_step): Update declaration. 7823 7824 * mpn/generic/gcd.c (mpn_gcd): Pass s = 0 to mpn_gcd_subdiv_step. 7825 * mpn/generic/gcdext.c (mpn_gcdext): Likewise. Also added an ASSERT. 7826 * mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_n): Likewise. 7827 (mpn_gcdext_hook): Added some ASSERTs. 7828 * mpn/generic/jacobi_lehmer.c (mpn_jacobi_lehmer): Likewise. 7829 78302011-05-17 Niels Möller <nisse@lysator.liu.se> 7831 7832 * doc/gmp.texi (mpn_gcd, mpn_gcdext): Document input requirements: 7833 Must have un >= vn > 0, and V normalized. 7834 * mpn/generic/gcdext.c (mpn_gcdext): Added ASSERT for input 7835 normalization. 7836 * mpn/generic/gcd.c (mpn_gcd): Added ASSERTs for input 7837 requirements. 7838 78392011-05-15 Marc Glisse <marc.glisse@inria.fr> 7840 7841 * gmpxx.h (operator<<): Dedup. 7842 * tests/cxx/t-iostream.cc: Test on compound types. 7843 7844 * gmpxx.h (__gmp_binary_expr): Let things happen in place: c=(a+b)/2. 7845 78462011-05-10 Marc Glisse <marc.glisse@inria.fr> 7847 7848 * gmpxx.h (__gmp_unary_expr): Let things happen in place: c=-(a+b). 7849 (operator>>): Clean the commenting out. 7850 * tests/cxx/t-iostream.cc: New file. 7851 * tests/cxx/Makefile.am: Added t-iostream. 7852 78532011-05-10 Niels Möller <nisse@lysator.liu.se> 7854 7855 * doc/gmp.texi (mpz_gcd): Document that gcd(0,0) = 0. 7856 (mpz_gcdext): Document range for cofactors. 7857 78582011-05-09 Niels Möller <nisse@lysator.liu.se> 7859 7860 * mpz/gcdext.c (mpz_gcdext): Increased sp allocation to bsize+1 limbs. 7861 * doc/gmp.texi (mpn_gcdext): Fixed documentation of allocation 7862 requirements; one extra limb is still needed for S. 7863 78642011-05-09 Torbjorn Granlund <tege@gmplib.org> 7865 7866 * mpn/x86/fat/gmp-mparam.h (BMOD_1_TO_MOD_1_THRESHOLD): Define. 7867 * mpn/x86_64/fat/gmp-mparam.h (BMOD_1_TO_MOD_1_THRESHOLD): Define. 7868 78692011-05-08 Marc Glisse <marc.glisse@inria.fr> 7870 7871 * gmpxx.h: Replace unsigned long with mp_bitcnt_t in many places. 7872 * doc/gmp.texi: Likewise. 7873 78742011-05-06 Marc Glisse <marc.glisse@inria.fr> 7875 7876 * gmpxx.h (mpz_class): Make constructor from mp[qf]_class explicit. 7877 (mpq_class): Make constructor from mpf_class explicit. 7878 * doc/gmp.texi: Document the above. 7879 * NEWS: Likewise, and mention the EOF istream fix. 7880 * tests/cxx/t-mix.cc: New file. 7881 * tests/cxx/Makefile.am: Added t-mix. 7882 7883 * tests/cxx/t-assign.cc: Minor tweak. 7884 * tests/cxx/t-misc.cc: Likewise. 7885 7886 * gmpxx.h (__gmp_resolve_temp): Remove. 7887 (__gmp_set_expr): Remove some overloads. 7888 (mpq_class): mpz_init_set the numerator and denominator instead of 7889 mpq_init + mpq_set. 7890 (mpz_class): Dedup the string constructors. 7891 (mpq_class): Likewise. 7892 7893 * tests/cxx/t-ops3.cc: New file. 7894 * tests/cxx/Makefile.am: Added t-ops3. 7895 78962011-05-05 Torbjorn Granlund <tege@gmplib.org> 7897 7898 * mpz/gcdext.c: Correct sgn computation. 7899 Use MPZ_REALLOC. 7900 79012011-05-05 Marc Glisse <marc.glisse@inria.fr> 7902 7903 * mpn/x86_64/fat/fat.c: Update for Sandy Bridge. 7904 * config.guess: warning to keep it in sync with fat.c. 7905 79062011-05-05 Torbjorn Granlund <tege@gmplib.org> 7907 7908 * mpn/x86_64/fat/fat_entry.asm (PIC_OR_DARWIN): New symbol. Use it to 7909 work around Darwin problems. 7910 79112011-05-04 Niels Möller <nisse@lysator.liu.se> 7912 7913 * mpz/gcdext.c (mpz_gcdext): Reduced temporary allocations. Use 7914 mpz_divexact when computing the second cofactor. 7915 79162011-05-03 David Harvey <dmharvey@cims.nyu.edu> 7917 7918 * configure.in: make invert_limb_table work correctly with 7919 --disable-assembly (from Niels Möller) 7920 79212011-05-02 Marc Glisse <marc.glisse@inria.fr> 7922 7923 * .bootstrap: libtoolize doesn't need -c. 7924 7925 * configfsf.guess: Update to version of 2011-02-02. 7926 * configfsf.sub: Update to version of 2011-03-23. 7927 79282011-05-02 Niels Möller <nisse@lysator.liu.se> 7929 7930 * mpz/gcdext.c (mpz_gcdext): Don't allocate extra limbs at the end 7931 of mpn_gcdext parameters. 7932 7933 * doc/gmp.texi (mpn_gcdext): Updated doc. 7934 79352011-05-01 Niels Möller <nisse@lysator.liu.se> 7936 7937 * mpn/generic/div_qr_2u_pi1.c (mpn_div_qr_2u_pi1): Fixed ASSERT. 7938 79392011-04-30 Marc Glisse <marc.glisse@inria.fr> 7940 7941 * gmp-h.in (mpz_cdiv_q_2exp): Use mp_bitcnt_t to match the definition 7942 and the documentation. 7943 (mpz_remove): Likewise. 7944 (mpf_eq): Likewise. 7945 7946 * ltmain.sh: Remove. 7947 * .bootstrap: Let libtoolize generate ltmain.sh. 7948 7949 * tests/cxx/t-ops2.cc: Add a couple tests. 7950 * tests/cxx/t-rand.cc: Likewise. 7951 7952 * doc/gmp.texi (mpf_urandomb): Explicit the fact that it does not 7953 change the precision. 7954 7955 * gmp-h.in (__GMP_EXTERN_INLINE): Recent g++ uses gnu_inline. 7956 79572011-04-28 Torbjorn Granlund <tege@gmplib.org> 7958 7959 * configure.in (x86_64): Support bobcat specifically. 7960 (x86): Match bobcat and bulldozer, handle like k10. 7961 79622011-04-28 David Harvey <dmharvey@cims.nyu.edu> 7963 7964 * README.HG: update autotools version numbers. 7965 79662011-04-27 Torbjorn Granlund <tege@gmplib.org> 7967 7968 * tune/speed.h (speed_cyclecounter): Always use PIC variant when 7969 compiled with Apple's GCC. 7970 7971 * mpn/x86/darwin.m4 (LEA): Complete rewrite. 7972 (m4append): New macro. 7973 79742011-04-26 Torbjorn Granlund <tege@gmplib.org> 7975 7976 * mpn/sparc32/sparc-defs.m4 (changecom): Don't redefine '!' as it 7977 interferes with expressions. 7978 79792011-04-20 Torbjorn Granlund <tege@gmplib.org> 7980 7981 * acinclude.m4 (GMP_ASM_RODATA): Make 'foo' larger to avoid clang 7982 problems. 7983 79842011-04-12 Niels Möller <nisse@lysator.liu.se> 7985 7986 * mpn/x86_64/invert_limb.asm [PIC]: Declare mpn_invert_limb_table 7987 as .protected. 7988 79892011-04-11 Torbjorn Granlund <tege@gmplib.org> 7990 7991 * mpn/x86/k7/invert_limb.asm: Use deflit for Darwin bug workaround. 7992 Undo 2011-03-28 change. 7993 7994 * mpn/asm-defs.m4 (define_mpn): Use deflit. 7995 79962011-04-10 Niels Möller <nisse@lysator.liu.se> 7997 7998 * mpn/asm-defs.m4 (define_mpn): Added invert_limb_table. 7999 8000 * configure.in: Add invert_limb_table to extra_functions_64 on 8001 x86_64. 8002 8003 * mpn/x86_64/invert_limb.asm: Changed references from approx_tab 8004 mpn_invert_limb_table. 8005 8006 * mpn/x86_64/invert_limb_table.asm (mpn_invert_limb_table): New 8007 file. Extracted approximation table from invert_limb.asm, renamed 8008 and made global. 8009 80102011-03-30 Niels Möller <nisse@lysator.liu.se> 8011 8012 * mpn/x86_64/div_qr_2u_pi1.asm: New file. 8013 8014 * configure.in (gmp_mpn_functions): Add div_qr_2u_pi1. 8015 8016 * gmp-impl.h (mpn_div_qr_2u_pi1): Declare. 8017 8018 * mpn/generic/div_qr_2u_pi1.c (mpn_div_qr_2u_pi1): Moved to 8019 separate file, from... 8020 * mpn/generic/div_qr_2.c: ... old location. 8021 8022 * mpn/generic/div_qr_2n_pi1.c: Renamed file, from... 8023 * mpn/generic/div_qr_2_pi1_norm.c: ...old name. 8024 * mpn/x86_64/div_qr_2n_pi1.asm: Renamed file, from... 8025 * mpn/x86_64/div_qr_2_pi1_norm.asm: ...old name. 8026 8027 * gmp-impl.h (mpn_div_qr_2n_pi1): Use new name in declaration. 8028 * tune/speed.h (speed_mpn_div_qr_2n): Likewise. 8029 (speed_mpn_div_qr_2u): Likewise. 8030 8031 * tune/tuneup.c (tune_div_qr_2): Use new name speed_mpn_div_qr_2n. 8032 8033 * tune/speed.c (routine): Use new names mpn_div_qr_2n and 8034 mpn_div_qr_2u, also on the command line. 8035 8036 * tune/common.c (speed_mpn_div_qr_2n): Renamed, from... 8037 (speed_mpn_div_qr_2_norm): ... old name. 8038 (speed_mpn_div_qr_2u): Renamed, from... 8039 (speed_mpn_div_qr_2_unnorm): ... old name. 8040 8041 * mpn/generic/div_qr_2_pi1_norm.c (mpn_div_qr_2n_pi1): Renamed, 8042 from... 8043 (mpn_div_qr_2_pi1_norm): ...old name. 8044 * mpn/x86_64/div_qr_2_pi1_norm.asm: Likewise. 8045 8046 * mpn/generic/div_qr_2.c (mpn_div_qr_2n_pi2): Renamed, from... 8047 (mpn_div_qr_2_pi2_norm): ... old name. 8048 (mpn_div_qr_2u_pi1): Renamed, from... 8049 (mpn_div_qr_2_pi1_unnorm): ... old name. 8050 (mpn_div_qr_2): Call functions using new names. 8051 8052 * mpn/asm-defs.m4: Renamed div_qr_2-functions to new names. 8053 80542011-03-29 Niels Möller <nisse@lysator.liu.se> 8055 8056 * mpn/x86_64/div_qr_2_pi1_norm.asm: Updated to use a separate rp 8057 argument. 8058 8059 * gmp-impl.h (mpn_div_qr_2_pi1_norm): Updated declaration. 8060 * gmp-h.in (mpn_div_qr_2): Likewise. 8061 8062 * tests/mpn/t-div.c (main): Adapted to new mpn_div_qr2 interface. 8063 * tune/speed.h (SPEED_ROUTINE_MPN_DIV_QR_2): Likewise. 8064 8065 * mpn/generic/div_qr_2.c (mpn_div_qr_2_pi2_norm): Added rp 8066 argument. Don't clobber the input dividend. 8067 (mpn_div_qr_2_pi1_unnorm): Likewise. 8068 (mpn_div_qr_2): Likewise. 8069 * mpn/generic/div_qr_2_pi1_norm.c (mpn_div_qr_2_pi1_norm): Likewise. 8070 80712011-03-29 Niels Möller <nisse@lysator.liu.se> 8072 8073 * mpn/x86/k7/invert_limb.asm: Use mov rather than push and pop. 8074 Earlier load of divisor from stack. 8075 80762011-03-28 Torbjorn Granlund <tege@gmplib.org> 8077 8078 * mpn/x86/k7/invert_limb.asm: Protect movzwl register parameters from 8079 being interpreted as m4 macro parameters. 8080 80812011-03-22 Niels Möller <nisse@lysator.liu.se> 8082 8083 * mpn/x86_64/div_qr_2_pi1_norm.asm: Copied optimized inner loop 8084 from divrem_2.asm. 8085 8086 * mpn/x86_64/div_qr_2_pi1_norm.asm: First working, but poorly 8087 optimized, implementation. 8088 8089 * mpn/asm-defs.m4 (define_mpn): Added div_qr_2_pi[12]_*norm. 8090 8091 * mpn/generic/div_qr_2_pi1_norm.c (mpn_div_qr_2_pi1_norm): Moved 8092 to separate file, from... 8093 * mpn/generic/div_qr_2.c: ... old location. 8094 8095 * gmp-impl.h (mpn_div_qr_2_pi1_norm): Declare. 8096 8097 * configure.in (gmp_mpn_functions): Added div_qr_2_pi1_norm. 8098 80992011-03-22 Torbjorn Granlund <tege@gmplib.org> 8100 8101 * configure.in (powerpc): Reinsert lost AIX cpu_path 32-bit handling. 8102 Reinsert lost linux/bsd cpu_path handling. 8103 8104 * mpn/generic/mod_1_1.c: Disable powerpc asm for _LONG_LONG_LIMB. 8105 * mpn/generic/div_qr_2.c: Likewise. 8106 8107 * mpn/generic/div_qr_2.c: Use asm just for gcc. 8108 Make powerpc add_sssaaaa work for 32-bit case, and use less strict 8109 constraints. 8110 81112011-03-21 Niels Möller <nisse@lysator.liu.se> 8112 8113 * tune/tuneup.c (div_qr_2_pi2_threshold): New global variable. 8114 (tune_div_qr_2): New function. 8115 (all): Call tune_div_qr_2. 8116 8117 * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Added div_qr_2.c. 8118 8119 * gmp-impl.h (DIV_QR_2_PI2_THRESHOLD): Setup for tuning. 8120 8121 New 4/2 division loop, based on Torbjörn's work: 8122 * mpn/generic/div_qr_2.c (add_sssaaaa, add_csaac): New macros. 8123 (udiv_qr_4by2): New macro. 8124 (invert_4by2): New function. 8125 (mpn_div_qr_2_pi2_norm): New function. 8126 (DIV_QR_2_PI2_THRESHOLD): New threshold. 8127 (mpn_div_qr_2_pi1_norm): Renamed, from... 8128 (mpn_div_qr_2_norm): ... old name. 8129 (mpn_div_qr_2_pi1_unnorm): Renamed, from... 8130 (mpn_div_qr_2_unnorm): ... old name. 8131 (mpn_div_qr_2): Use mpn_div_qr_2_pi2_norm for large enough 8132 normalized divisors. 8133 8134 * gmp-impl.h (udiv_qr_3by2): Avoid a copy. 8135 81362011-03-21 Torbjorn Granlund <tege@gmplib.org> 8137 8138 * configure.in (hppa): Under linux, treat 64-bit processors as if they 8139 were 32-bit processors. 8140 8141 * mpn/generic/addcnd_n.c: New file. 8142 * mpn/asm-defs.m4 (define_mpn): Add addcnd_n and subcnd_n. 8143 * configure.in (gmp_mpn_functions): Add addcnd_n. 8144 * gmp-impl.h (mpn_addcnd_n): Declare. 8145 8146 * mpn/generic/subcnd_n.c: Combine nails and non-nails functions. 8147 8148 * gmp-impl.h (invert_pi1): Prepend _ to local variables, protect 8149 parameters within () where necessary. 8150 8151 * mpn/asm-defs.m4 (define_mpn): Add div_qr_2. 8152 * configure.in (gmp_mpn_functions): Reinsert mercurial-bug-removed 8153 line. 8154 81552011-03-20 Torbjorn Granlund <tege@gmplib.org> 8156 8157 * configure.in (powerpc): Add cpu_path for all three ABIs. 8158 Rename "aix64" to "mode64" for consistency. 8159 81602011-03-16 Marc Glisse <marc.glisse@inria.fr> 8161 8162 * gmpxx.h (__gmp_binary_not_equal): Remove, use !__gmp_binary_equal. 8163 (__gmp_binary_less_equal): Remove, use !__gmp_binary_greater. 8164 (__gmp_binary_greater_equal): Remove, use !__gmp_binary_less. 8165 * tests/cxx/t-ops2.cc: Typo. 8166 81672011-03-20 Niels Möller <nisse@lysator.liu.se> 8168 8169 * tune/common.c (speed_mpn_div_qr_2_norm): New function. 8170 (speed_mpn_div_qr_2_unnorm): New function. 8171 * tune/speed.c (routine): Recognize above functions. 8172 * tune/speed.h: Declarations for above functions. 8173 (SPEED_ROUTINE_MPN_DIV_QR_2): New macro. 8174 8175 * tests/mpn/t-div.c (main): Added tests for mpn_divrem_2 and 8176 mpn_div_qr_2. 8177 8178 * mpn/generic/div_qr_2.c (mpn_div_qr_2): New file and function. 8179 Intended to eventually replace divrem_2. 8180 * configure.in (gmp_mpn_functions): Add div_qr_2. 8181 81822011-03-16 Marc Glisse <marc.glisse@inria.fr> 8183 8184 * gmpxx.h (__gmp_set_expr): Remove broken declarations. 8185 81862011-03-19 Torbjorn Granlund <tege@gmplib.org> 8187 8188 * mpz/fac_ui.c (mpz_fac_ui): Use MPZ_REALLOC for standard, conditional 8189 reallocation. 8190 81912011-03-19 Niels Möller <nisse@lysator.liu.se> 8192 8193 * mpn/generic/divrem_2.c (mpn_divrem_2): Fixed comment and assert 8194 regarding q and n overlap. 8195 81962011-03-16 Marc Glisse <marc.glisse@inria.fr> 8197 8198 * gmpxx.h (__mpz_set_ui_safe): New inline function. 8199 (__mpz_set_si_safe): Likewise. 8200 (__GMPXX_TMPZ_UI): Use the new function. 8201 (__GMPXX_TMPZ_SI): Likewise. 8202 (__GMPXX_TMPQ_UI): Likewise. 8203 (__GMPXX_TMPQ_SI): Likewise. 8204 * tests/cxx/t-ops2.cc: test converting 0 to stack mpq_t. 8205 82062011-03-15 Marc Glisse <marc.glisse@inria.fr> 8207 8208 * gmpxx.h (__GMPXX_TMPQ_UI): New macro. 8209 (__GMPXX_TMPQ_SI): New macro. 8210 (struct __gmp_binary_multiplies): Rewrite, using the new macros. 8211 (struct __gmp_binary_divides): Likewise. 8212 8213 * gmpxx.h (__GMPZ_ULI_LIMBS): Rewrite. 8214 * tests/cxx/t-ops2.cc: test converting ULONG_MIN to stack mpq_t. 8215 82162011-03-15 Marco Bodrato <bodrato@mail.dm.unipi.it> 8217 8218 * mpn/generic/toom_interpolate_16pts.c: Remove ambiguity. 8219 82202011-03-14 Torbjorn Granlund <tege@gmplib.org> 8221 8222 * tune/tuneup.c (tune_mul): Set tuning min size considering print skew. 8223 8224 * doc/gmp.texi: Make reference to "Formatted I/O" chapters from type 8225 specific I/O sections. 8226 8227 * mpn/alpha/add_n.asm: Add _nc entry point. 8228 * mpn/alpha/sub_n.asm: Likewise. 8229 * mpn/mips64/add_n.asm: Likewise. 8230 * mpn/mips64/sub_n.asm: Likewise. 8231 * mpn/sparc64/ultrasparc1234/add_n.asm: Likewise. 8232 * mpn/sparc64/ultrasparc1234/sub_n: Likewise. 8233 82342011-03-13 Marc Glisse <marc.glisse@inria.fr> 8235 8236 * tests/cxx/t-ops2.cc: New file. 8237 * tests/cxx/Makefile.am: Added t-ops2. 8238 82392011-03-13 Torbjorn Granlund <tege@gmplib.org> 8240 8241 * mpn/generic/toom32_mul.c (mpn_toom32_mul): Make 'hi' be limb-sized 8242 for better code. 8243 8244 * gmp-impl.h (MPN_IORD_U): Handle x86_64 as well as x86_32. Generate 8245 no code for incrementing by constant 0. 8246 82472011-03-12 Marc Glisse <marc.glisse@inria.fr> 8248 8249 * gmpxx.h: Rename __GMPXX_TMP_* to __GMPXX_TMPZ_*. Use in more places. 8250 82512011-03-12 Torbjorn Granlund <tege@gmplib.org> 8252 8253 * mpn/powerpc64/rshift.asm: Accept/return values correctly also for 8254 32-bit ABI. 8255 * mpn/powerpc64/lshift.asm: Likewise. 8256 8257 * tune/powerpc.asm: Use powerpc syntax, not power syntax. 8258 8259 * tune/common.c (speed_udiv_qrnnd_preinv1, etc): Remove. 8260 * tune/speed.c (routine): Remove udiv_qrnnd_preinv1, etc. 8261 82622011-03-12 Marc Glisse <marc.glisse@inria.fr> 8263 8264 * tests/cxx/t-istream.cc: Restrict mpq test in t-istream -s. 8265 8266 * gmpxx.h: Remove leftover #undefs. 8267 82682011-03-11 Torbjorn Granlund <tege@gmplib.org> 8269 8270 * gmp-impl.h (udiv_qrnnd_preinv1, udiv_qrnnd_preinv2, 8271 udiv_qrnnd_preinv2gen): Remove obsolete macros. 8272 (udiv_qrnnd_preinv): New name for udiv_qrnnd_preinv3. 8273 82742011-03-11 Marco Bodrato <bodrato@mail.dm.unipi.it> 8275 8276 * gmp-impl.h: Declare many mpn_{sub,add}lsh*_n_ip[12] functions/macros. 8277 * mpn/generic/toom_interpolate_5pts.c: Use mpn_sublsh1_n_ip1. 8278 8279 * tests/devel/try.c: Tests for {add,sub}lsh*_n_ip[12]. 8280 * tests/refmpn.c: New reference for mpn_{add,sub}lsh*_n_ip[12]. 8281 * tests/tests.h: Declarations for reference functions above. 8282 8283 * tune/common.c: New speed_mpn_{add,sub}lsh*_n_ip[12] functions. 8284 * tune/speed.h: Prototypes for functions above. 8285 * tune/speed.c: Support for mpn_{add,sub}lsh*_n_ip[12]. 8286 8287 * mpn/x86/k7/sublsh1_n.asm: Replaced generic sublsh1 code with faster _ip1. 8288 * mpn/x86/atom/sublsh1_n.asm: Changed PROLOGUE accordingly. 8289 8290 * configure.in: Define HAVE_NATIVE_mpn_addlsh*_n*_ip[12]. 8291 * mpn/asm-defs.m4: Declare mpn_addlsh*_n*_ip[12]. 8292 82932011-03-10 Marc Glisse <marc.glisse@inria.fr> 8294 8295 * tests/cxx/t-istream.cc: Explicit conversion to streampos. 8296 82972011-03-10 Torbjorn Granlund <tege@gmplib.org> 8298 8299 * mpn/x86/atom/sse2/mul_basecase.asm: Suppress wind-down rp updates. 8300 8301 * Move new aorrlsh_n.asm to new k8 dir. Revert 8302 mpn/x86_64/aorrlsh_n.asm. 8303 * configure.in: Setup path for new k8 directory. 8304 83052011-03-10 Marco Bodrato <bodrato@mail.dm.unipi.it> 8306 8307 * mpn/x86/pentium4/sse2/bdiv_dbm1c.asm: New file, was in atom. 8308 * mpn/x86/atom/sse2/bdiv_dbm1c.asm: Grab file above. 8309 83102011-03-09 Torbjorn Granlund <tege@gmplib.org> 8311 8312 * mpn/x86_64/aorrlsh_n.asm: Complete rewrite. 8313 8314 * mpn/x86_64/core2/aorrlsh_n.asm: New file, grabbing another asm file. 8315 83162011-03-09 Marc Glisse <marc.glisse@inria.fr> 8317 8318 * tests/cxx/t-ostream.cc: Use bool instead of int. 8319 * tests/cxx/t-istream.cc: Likewise. 8320 * tests/cxx/t-misc.cc: Likewise. 8321 8322 * cxx/ismpznw.cc: Don't clear eofbit. 8323 * cxx/ismpq.cc: Likewise. 8324 * cxx/ismpf.cc: Likewise. 8325 * tests/cxx/t-istream.cc: Test accordingly. 8326 83272011-03-09 Marco Bodrato <bodrato@mail.dm.unipi.it> 8328 8329 * mpn/x86/atom/sse2/bdiv_dbm1c.asm: New file. 8330 83312011-03-09 Marc Glisse <marc.glisse@inria.fr> 8332 8333 * doc/gmp.texi: Remove void return type from constructors. Document 8334 explicit constructors. Document mpf_class::mpf_class(mpf_t). 8335 83362011-03-07 Marco Bodrato <bodrato@mail.dm.unipi.it> 8337 8338 * mpn/x86/atom/sse2/sqr_basecase.asm: Postponed pushes. Cleaned 8339 outer loop exit. 8340 83412011-03-07 Torbjorn Granlund <tege@gmplib.org> 8342 8343 * mpn/x86_64/gcd_1.asm: Workaround Oracle assembler bug. 8344 8345 * mpn/x86/atom/sse2/mul_basecase.asm: Replace addmul_1 loops. 8346 Tweak outer loop rp updates. 8347 83482011-03-06 Torbjorn Granlund <tege@gmplib.org> 8349 8350 * mpn/x86/atom/sse2/sqr_basecase.asm: New file. 8351 83522011-03-05 Torbjorn Granlund <tege@gmplib.org> 8353 8354 * mpn/x86_64/bdiv_dbm1c.asm: Write proper feed-in code. 8355 83562011-03-04 Torbjorn Granlund <tege@gmplib.org> 8357 8358 * mpn/x86_64/addmul_2.asm: Rewrite for linear performance. 8359 83602011-03-03 Torbjorn Granlund <tege@gmplib.org> 8361 8362 * mpn/generic/mod_1_1.c (add_mssaaaa): Canonicalise layout. Add arm 8363 variant. Enable sparc64 code and powerpc code (the latter for 32-bit 8364 and 64-bit). 8365 8366 * mpn/generic/sqrtrem.c (mpn_dc_sqrtrem): Use mpn_addlsh1_n. 8367 8368 * gmp-impl.h (mpn_addlsh_nc, mpn_rsblsh_nc): Declare. 8369 * mpn/asm-defs.m4: Likewise. 8370 8371 * mpn/x86_64/coreisbr/aorrlsh_n.asm: Disable mpn_rsblsh_n due to 8372 carry-in issues. 8373 * mpn/x86_64/coreinhm/aorrlsh_n.asm: Likewise. 8374 * mpn/x86_64/coreisbr/aorrlsh2_n.asm: Likewise. 8375 83762011-03-03 Niels Möller <nisse@lysator.liu.se> 8377 8378 * mpn/generic/mod_1_1.c (add_mssaaaa): For x86 and x86_64, treat m 8379 as in output operand only. Added sparc32 implementation. Also 8380 added #if:ed out attempts at sparc64 and powerpc64. 8381 8382 * tune/tuneup.c (tune_mod_1): Record result of MOD_1_1P_METHOD 8383 measurement for use by mpn_mod_1_tune. And omit measurement if 8384 mpn_mod_1_1p is native assembly code. 8385 8386 * mpn/generic/mod_1.c (mpn_mod_1_1p) [TUNE_PROGRAM_BUILD]: Macro 8387 to check mod_1_1p_method and call the right function. 8388 (mpn_mod_1_1p_cps) [TUNE_PROGRAM_BUILD]: Likewise. 8389 8390 * gmp-impl.h (MOD_1_1P_METHOD) [TUNE_PROGRAM_BUILD]: Define macro. 8391 (mod_1_1p_method) [TUNE_PROGRAM_BUILD]: Declare variable. 8392 83932011-03-02 Torbjorn Granlund <tege@gmplib.org> 8394 8395 * mpn/x86_64/coreinhm/aorrlsh_n.asm: New file. 8396 * mpn/x86_64/coreisbr/aorrlsh_n.asm: New file. 8397 83982011-03-01 Niels Möller <nisse@lysator.liu.se> 8399 8400 * mpn/x86_64/mod_1_1.asm (mpn_mod_1_1p_cps): Eliminated a neg and 8401 two mov instructions. 8402 8403 * mpn/x86/k7/mod_1_1.asm (mpn_mod_1_1p_cps): Simplified 8404 computation, analogous to recent x86_64/mod_1_1.asm changes. 8405 (mpn_mod_1_1p): Corresponding changes. Don't shift b. 8406 8407 * mpn/sparc64/mod_1_4.c (mpn_mod_1s_4p_cps): Use udiv_rnnd_preinv 8408 rather than udiv_rnd_preinv. 8409 (mpn_mod_1s_4p): Likewise. 8410 84112011-03-01 Torbjorn Granlund <tege@gmplib.org> 8412 8413 * mpn/x86/pentium4/sse2/mul_1.asm: Swap entry insns to share more code 8414 between entry points. 8415 * mpn/x86/pentium4/sse2/addmul_1.asm: Likewise. 8416 8417 * mpz/divegcd.c: Rewrite, as per Marc Glisse's suggestion. Also fix 8418 problem with passing a longlong limb to a _ui function. 8419 8420 * gmp-impl.h (udiv_qrnnd_preinv3): Cast truth value to mask's type. 8421 (udiv_rnnd_preinv): Likewise. 8422 * mpn/generic/mod_1_1.c (mpn_mod_1_1p): Likewise. 8423 84242011-02-28 Niels Möller <nisse@lysator.liu.se> 8425 8426 * mpn/generic/mod_1_1.c (add_mssaaaa): Typo fix, define 8427 add_mssaaaa, not add_sssaaaa. 8428 8429 * tune/tuneup.c (tune_mod_1): Measure mpn_mod_1_1_1 and 8430 mpn_mod_1_1_2, to set MOD_1_1P_METHOD. 8431 8432 * tune/speed.c (routine): Added mpn_mod_1_1_1 and mpn_mod_1_1_2. 8433 8434 * tune/speed.h: Declare speed_mpn_mod_1_1_1, speed_mpn_mod_1_1_2, 8435 mpn_mod_1_1p_1, mpn_mod_1_1p_2, mpn_mod_1_1p_cps_1, and 8436 mpn_mod_1_1p_cps_2. 8437 8438 * tune/common.c (speed_mpn_mod_1_1_1): New function. 8439 (speed_mpn_mod_1_1_2): New function. 8440 8441 * tune/Makefile.am (libspeed_la_SOURCES): Added mod_1_1-1.c 8442 mod_1_1-2.c. 8443 8444 * tune/mod_1_1-1.c: New file. 8445 * tune/mod_1_1-2.c: New file. 8446 8447 * mpn/generic/mod_1_1.c: Implemented an algorithm with fewer 8448 multiplications, configured via MOD_1_1P_METHOD. 8449 8450 * mpn/x86_64/mod_1_1.asm (mpn_mod_1_1p_cps): Simplified 8451 computation of B2modb, use B^2 mod (normalized b). 8452 (mpn_mod_1_1p): Corresponding changes. Don't shift b. 8453 8454 * mpn/generic/mod_1_1.c (mpn_mod_1_1p_cps): Use udiv_rnnd_preinv rather 8455 than udiv_rnd_preinv. 8456 (mpn_mod_1_1p): Likewise. 8457 * mpn/generic/mod_1_4.c: Analogous changes. 8458 * mpn/generic/mod_1_3.c: Analogous changes. 8459 * mpn/generic/mod_1_2.c: Analogous changes. 8460 * mpn/generic/mod_1.c: Analogous changes. 8461 * mpn/generic/pre_mod_1.c: Analogous changes. 8462 8463 * gmp-impl.h (udiv_qrnnd_preinv3): Eliminated unpredictable branch 8464 using masking logic. Further optimization of the nl == constant 0 8465 case, similar to udiv_rnd_preinv. 8466 (udiv_rnnd_preinv): Likewise. 8467 (udiv_rnd_preinv): Deleted, use udiv_rnnd_preinv with nl == 0 8468 instead. 8469 8470 * tests/mpn/t-divrem_1.c (check_data): Added testcase to exercise 8471 the nl == constant 0 special case in udiv_qrnnd_preinv3. 8472 84732011-02-28 Torbjorn Granlund <tege@gmplib.org> 8474 8475 * mpn/generic/rootrem.c (mpn_rootrem): Combine two similar scalar 8476 divisions. Misc minor cleanup. 8477 8478 * mpn/x86/atom/sse2/aorsmul_1.asm: Shorten software pipeline. 8479 8480 * mpn/x86/atom/mul_basecase.asm: Remove file no longer used. 8481 8482 * mpn/generic/rootrem.c (mpn_rootrem_internal): Delay O(log(U)) 8483 allocations until they are known to be needed. 8484 84852011-02-27 Marco Bodrato <bodrato@mail.dm.unipi.it> 8486 8487 * mpn/x86/atom/sse2/mul_1.asm: New code. 8488 84892011-02-27 Niels Möller <nisse@lysator.liu.se> 8490 8491 * gmp-impl.h (udiv_rnnd_preinv): New macro. 8492 84932011-02-27 Torbjorn Granlund <tege@gmplib.org> 8494 8495 * mpn/x86/atom/sse2/mul_basecase.asm: New file. 8496 84972011-02-26 Marco Bodrato <bodrato@mail.dm.unipi.it> 8498 8499 * mpn/x86/atom/sse2/aorsmul_1.asm: Optimise non-loop code. 8500 85012011-02-26 Torbjorn Granlund <tege@gmplib.org> 8502 8503 * mpn/powerpc64/mode64/aorsmul_1.asm: Add MULFUNC_PROLOGUE. 8504 * mpn/m68k/mc68020/aorsmul_1.asm: Likewise. 8505 85062011-02-25 Torbjorn Granlund <tege@gmplib.org> 8507 8508 * mpn/x86/atom/sse2/aorsmul_1.asm: New file. 8509 * mpn/x86/atom/aorsmul_1.asm: File removed. 8510 85112011-02-25 Marco Bodrato <bodrato@mail.dm.unipi.it> 8512 8513 * mpn/x86/atom/sse2/divrem_1.asm: New file (was in x86/atom). 8514 * mpn/x86/atom/sse2/mul_1.asm: Likewise. 8515 * mpn/x86/atom/sse2/popcount.asm: Likewise. 8516 * mpn/x86/atom/divrem_1.asm: ReMoved (in sse2/ now). 8517 * mpn/x86/atom/mul_1.asm: Likewise. 8518 * mpn/x86/atom/popcount.asm: Likewise. 8519 8520 * configure.in: Set up mmx path for atom. 8521 * mpn/x86/atom/mmx/copyd.asm: New file (was in x86/atom). 8522 * mpn/x86/atom/mmx/copyi.asm: Likewise. 8523 * mpn/x86/atom/mmx/hamdist.asm: Likewise. 8524 * mpn/x86/atom/copyd.asm: ReMoved (in mmx/ now). 8525 * mpn/x86/atom/copyi.asm: Likewise. 8526 * mpn/x86/atom/hamdist.asm: Likewise. 8527 85282011-02-24 Torbjorn Granlund <tege@gmplib.org> 8529 8530 * mpn/x86/atom/sse2/mod_1_1.asm: New file. 8531 * mpn/x86/atom/sse2/mod_1_4.asm: New file. 8532 * configure.in: Set up sse2 path for atom. 8533 8534 * mpn/x86/p6/sse2/mod_1_1.asm: New file. 8535 * mpn/x86/p6/sse2/mod_1_4.asm: Fix typo in MULFUNC_PROLOGUE. 8536 85372011-02-24 Niels Möller <nisse@lysator.liu.se> 8538 8539 * mpn/x86/k7/mod_1_1.asm (mpn_mod_1_1p): Rewrite using the same 8540 algorithm as the x86_64 version. 8541 85422011-02-23 Marco Bodrato <bodrato@mail.dm.unipi.it> 8543 8544 * mpn/x86/atom/logops_n.asm: New file (same loop as aors_n). 8545 85462011-02-23 Niels Möller <nisse@lysator.liu.se> 8547 8548 * mpn/x86_64/mod_1_1.asm (mpn_mod_1_1p): Shaved off one 8549 instruction and one register in the inner loop. Rearranged 8550 registers slightly, and no longer needs the callee-save register 8551 %r12. 8552 85532011-02-22 Torbjorn Granlund <tege@gmplib.org> 8554 8555 * configure.in: Export SHLD_SLOW and SHRD_SLOW to config.m4, also 8556 fixing typo in exporting code. 8557 8558 * mpn/x86_64/nano/gmp-mparam.h (SHLD_SLOW, SHRD_SLOW): Define. 8559 * mpn/x86_64/atom/gmp-mparam.h (SHLD_SLOW, SHRD_SLOW): Define. 8560 85612011-02-22 Niels Möller <nisse@lysator.liu.se> 8562 8563 * mpn/x86_64/mod_1_1.asm (mpn_mod_1_1p): Rewrite. 8564 85652011-02-22 Marco Bodrato <bodrato@mail.dm.unipi.it> 8566 8567 * mpn/x86/atom/lshiftc.asm: New file (a copy of lshift.asm with a handful of neg added). 8568 85692011-02-21 Torbjorn Granlund <tege@gmplib.org> 8570 8571 * mpn/x86/aors_n.asm: Move _nc entry to after main code. Align loop 8572 and _n entry for claimed performance. Normalise mnemonic usage. 8573 8574 * mpn/x86/atom/aorrlsh1_n.asm: New file (code from rsblsh_1, slightly 8575 slower for addlsh_1 for large operands, but much faster for small). 8576 * mpn/x86/atom/addlsh1_n.asm: Remove. 8577 * mpn/x86/atom/rsblsh1_n.asm: Remove. 8578 85792011-02-20 Marc Glisse <marc.glisse@inria.fr> 8580 8581 * mpq/aors.c: Rewrite to remove redundant division. 8582 85832011-02-20 Torbjorn Granlund <tege@gmplib.org> 8584 8585 * mpn/x86/atom/lshift.asm: New file. 8586 * mpn/x86/atom/rshift.asm: Normalise mnemonic usage. 8587 8588 * gmp-impl.h (mpn_divexact_by7): Relax inclusion condition. 8589 8590 * mpz/divegcd.c (mpz_divexact_by5): New conditionally enabled function. 8591 (mpz_divexact_by3): Wrap inside appropriate conditions. 8592 (mpz_divexact_gcd): Rewrite. 8593 8594 * mpn/x86/bdiv_dbm1c.asm: Save a jump. 8595 85962011-02-20 Marco Bodrato <bodrato@mail.dm.unipi.it> 8597 8598 * mpn/x86/atom/aorslshC_n.asm: New file. 8599 * mpn/x86/atom/sublsh2_n.asm: New file. 8600 8601 * mpn/x86/atom/aors_n.asm: New code. 8602 * mpn/x86/atom/rshift.asm: Atom64 code adapted to 32-bit. 8603 * mpn/x86/atom/lshift.asm: Likewise. 8604 86052011-02-19 Torbjorn Granlund <tege@gmplib.org> 8606 8607 * mpn/x86_64/atom/rsh1aors_n.asm: New file. 8608 8609 * mpn/x86_64/atom/lshift.asm: New file. 8610 * mpn/x86_64/atom/rshift.asm: New file. 8611 * mpn/x86_64/atom/lshiftc.asm: New file. 8612 86132011-02-17 Marco Bodrato <bodrato@mail.dm.unipi.it> 8614 8615 * mpn/x86/atom/aorsmul_1.asm: Small improvements for small sizes. 8616 * mpn/x86/atom/aorrlshC_n.asm: Tiny size improvements. 8617 86182011-02-16 Torbjorn Granlund <tege@gmplib.org> 8619 8620 * configure.in: Fix k8/k10 32-bit path setup problem. 8621 86222011-02-16 Marco Bodrato <bodrato@mail.dm.unipi.it> 8623 8624 * mpn/x86/atom/aorsmul_1.asm: Revive an old k7/aorsmul. 8625 86262011-02-14 Marco Bodrato <bodrato@mail.dm.unipi.it> 8627 8628 * gmp-impl.h (mpn_sublsh_n): Declare. 8629 * mpn/asm-defs.m4: Likewise. 8630 8631 * mpn/x86/atom/aorrlshC_n.asm: New file (was k7). 8632 * mpn/x86/k7/aorrlshC_n.asm: ReMoved. 8633 * mpn/x86/atom/aorrlsh2_n.asm: Grab atom/aorrlshC_n.asm. 8634 * mpn/x86/atom/rsblsh1_n.asm: Grab atom/aorrlshC_n.asm. 8635 86362011-02-13 Torbjorn Granlund <tege@gmplib.org> 8637 8638 * mpn/x86_64/atom/aorrlsh2_n.asm: New file. 8639 86402011-02-12 Torbjorn Granlund <tege@gmplib.org> 8641 8642 * mpn/x86_64/aorrlsh_n.asm: Minor tweaks, update c/l numbers. 8643 8644 * mpn/x86_64/atom/sublsh1_n.asm: New file. 8645 8646 * mpn/x86_64/atom/aorrlsh1_n.asm: New file. 8647 86482011-02-11 Torbjorn Granlund <tege@gmplib.org> 8649 8650 * mpn/powerpc64/mode64/mod_1_1.asm: Fix Darwin syntax issues. 8651 86522011-02-10 Torbjorn Granlund <tege@gmplib.org> 8653 8654 * mpn/powerpc64/mode64/mod_1_4.asm: Tune away a cycle for 970. 8655 86562011-02-11 Marco Bodrato <bodrato@mail.dm.unipi.it> 8657 8658 * mpn/x86/k7/addlsh1_n.asm: Faster core loop (Torbjorn's). 8659 8660 * configure.in: Add HAVE_NATIVE_{add,sub,rsb}lsh{,1,2}_nc. 8661 * tests/tests.h: refmpn_{add,sub,rsb}lsh{,1,2}_nc prototypes. 8662 * tests/refmpn.c: New refmpn_{add,sub,rsb}lsh{,1,2}_nc. 8663 * tests/devel/try.c: Tests for mpn_{add,sub,rsb}lsh{,1,2}_nc. 8664 8665 * mpn/x86/k7/aorrlshC_n.asm: New file. 8666 * mpn/x86/atom/aorrlsh2_n.asm: Grab k7/aorrlshC_n.asm. 8667 * mpn/x86/atom/rsblsh1_n.asm: Grab k7/aorrlshC_n.asm. 8668 86692011-02-06 Marco Bodrato <bodrato@mail.dm.unipi.it> 8670 8671 * mpn/x86/k7/addlsh1_n.asm: New file. 8672 * mpn/x86/k7/sublsh1_n.asm: New file. 8673 * mpn/x86/atom/addlsh1_n.asm: Grab k7/addlsh1_n.asm. 8674 * mpn/x86/atom/sublsh1_n.asm: Grab k7/sublsh1_n.asm. 8675 86762011-02-05 Torbjorn Granlund <tege@gmplib.org> 8677 8678 * gmp-impl.h (mpn_addlsh1_nc, mpn_addlsh2_nc, mpn_sublsh1_nc, 8679 mpn_sublsh2_nc, mpn_rsblsh1_nc, mpn_rsblsh2_nc): Declare. 8680 * mpn/asm-defs.m4: Likewise. 8681 8682 * mpn/x86_64/coreisbr/aorrlshC_n.asm: New file. 8683 * mpn/x86_64/coreisbr/aorrlsh1_n.asm: New file. 8684 * mpn/x86_64/coreisbr/aorrlsh2_n.asm: New file. 8685 8686 * mpn/x86_64/coreisbr/aors_n.asm: New file, based on old 8687 atom/aors_n.asm. 8688 * mpn/x86_64/atom/aors_n.asm: Grab coreisbr/aors_n.asm. 8689 86902011-02-05 Marco Bodrato <bodrato@mail.dm.unipi.it> 8691 8692 * gmp-impl.h (mpn_toom6_mul_n_itch): Handle threshold == zero. 8693 (mpn_toom8_mul_n_itch): Likewise. 8694 (MPN_TOOM6H_MIN, MPN_TOOM8H_MIN): Define. 8695 * tests/mpn/t-toom6h.c: No tests below MPN_TOOM6H_MIN. 8696 * tests/mpn/t-toom8h.c: No tests below MPN_TOOM8H_MIN. 8697 8698 * mpz/lucnum_ui.c: Use mpn_addlsh2_n. 8699 87002011-02-04 Torbjorn Granlund <tege@gmplib.org> 8701 8702 * mpn/x86_64/atom/rsh1aors_n.asm: Add a MULFUNC_PROLOGUE. 8703 * mpn/x86_64/atom/dive_1.asm: Likewise. 8704 * mpn/x86_64/atom/popcount.asm: Likewise. 8705 * mpn/x86_64/core2/popcount.asm: Likewise. 8706 * mpn/x86_64/coreinhm/hamdist.asm: Likewise. 8707 * mpn/x86_64/coreinhm/popcount.asm: Likewise. 8708 * mpn/x86_64/nano/popcount.asm: Likewise. 8709 * mpn/x86_64/pentium4/popcount.asm: Likewise. 8710 87112011-02-04 Marco Bodrato <bodrato@mail.dm.unipi.it> 8712 8713 * mpn/x86/atom/mode1o.asm: New file, grabbing another asm file. 8714 * mpn/x86/atom/mul_1.asm: Claim mul_1c. 8715 87162011-02-02 Niels Möller <nisse@lysator.liu.se> 8717 8718 * tune/speed.h (SPEED_ROUTINE_MPN_HGCD_CALL): Fixed one 8719 speed_operand_dst call. 8720 87212011-02-01 Torbjorn Granlund <tege@gmplib.org> 8722 8723 * tune/speed.h (struct speed_params): Allow for 4 dst operands. 8724 * tune/common.c (TOLERANCE): Increase from 0.5% to 1%. 8725 8726 * tune/speed.h (SPEED_ROUTINE_MPN_HGCD_CALL): New macro, mainly based 8727 on old speed_mpn_hgcd, but with speed_operand_src calls (as suggested 8728 by Niels). 8729 * tune/common.c (speed_mpn_hgcd): Invoke SPEED_ROUTINE_MPN_HGCD_CALL. 8730 (speed_mpn_hgcd_lehmer): Likewise. 8731 8732 * configure.in: Set up 32-bit x86 paths for new corei* CPU strings. 8733 87342011-01-31 Torbjorn Granlund <tege@gmplib.org> 8735 8736 * config.guess: Recognise new Intel processors. 8737 8738 * config.guess: Support 'coreinhm' and 'coreisbr'. 8739 * config.sub: Likewise. 8740 * configure.in: Likewise. 8741 87422011-01-30 Torbjorn Granlund <tege@gmplib.org> 8743 8744 * configure.in: Support x86/geode. 8745 * mpn/x86/geode/gmp-mparam.h: New file. 8746 87472011-01-29 Marco Bodrato <bodrato@mail.dm.unipi.it> 8748 8749 * mpn/x86/atom/addlsh1_n.asm: Removed. 8750 * mpn/x86/atom/rsh1add_n.asm: Likewise. 8751 87522011-01-28 Torbjorn Granlund <tege@gmplib.org> 8753 8754 * mpn/alpha/ev6/slot.pl: Add some missing insns. 8755 87562011-01-28 Marco Bodrato <bodrato@mail.dm.unipi.it> 8757 8758 * mpn/x86/atom/copyd.asm: New file, grabbing another asm file. 8759 * mpn/x86/atom/copyi.asm: Likewise. 8760 * mpn/x86/atom/aors_n.asm: Likewise. 8761 * mpn/x86/atom/addlsh1_n.asm: Likewise. 8762 * mpn/x86/atom/aorsmul_1.asm: Likewise. 8763 * mpn/x86/atom/bdiv_q_1.asm: Likewise. 8764 * mpn/x86/atom/dive_1.asm: Likewise. 8765 * mpn/x86/atom/divrem_1.asm: Likewise. 8766 * mpn/x86/atom/hamdist.asm: Likewise. 8767 * mpn/x86/atom/logops_n.asm: Likewise. 8768 * mpn/x86/atom/lshift.asm: Likewise. 8769 * mpn/x86/atom/mod_34lsub1.asm: Likewise. 8770 * mpn/x86/atom/mul_1.asm: Likewise. 8771 * mpn/x86/atom/mul_basecase.asm: Likewise. 8772 * mpn/x86/atom/popcount.asm: Likewise. 8773 * mpn/x86/atom/rsh1add_n.asm: Likewise. 8774 * mpn/x86/atom/rshift.asm: Likewise. 8775 * mpn/x86/atom/sqr_basecase.asm: Likewise. 8776 87772011-01-27 Torbjorn Granlund <tege@gmplib.org> 8778 8779 * mpn/x86_64/atom/rsh1aors_n.asm: New file, grabbing another asm file. 8780 * mpn/x86_64/atom/popcount.asm: Likewise. 8781 * mpn/x86_64/atom/dive_1.asm: Likewise. 8782 * mpn/x86_64/nano/popcount.asm: Likewise. 8783 87842011-01-26 Torbjorn Granlund <tege@gmplib.org> 8785 8786 * mpn/alpha/invert_limb.asm: Complete rewrite. 8787 87882011-01-25 Torbjorn Granlund <tege@gmplib.org> 8789 8790 * mpn/powerpc32/invert_limb.asm: New file. 8791 87922011-01-25 Marco Bodrato <bodrato@mail.dm.unipi.it> 8793 8794 * mpn/x86/pentium4/sse2/bdiv_q_1.asm: New file. 8795 * mpn/x86/k7/bdiv_q_1.asm: New file. 8796 87972011-01-24 Torbjorn Granlund <tege@gmplib.org> 8798 8799 * tune/tuneup.c (tune_mul_n, tune_sqr): Loop, re-measuring thresholds 8800 until no tiny ranges remain. 8801 88022011-01-23 Torbjorn Granlund <tege@gmplib.org> 8803 8804 * mpn/ia64/mul_2.asm: Tweak to 1.5 c/l, less overhead. 8805 8806 * mpn/ia64/addmul_2.asm: Rewrite, adding mpn_addmul_2s entry point. 8807 88082011-01-22 Torbjorn Granlund <tege@gmplib.org> 8809 8810 * mpn/ia64/aors_n.asm: Fix some incorrect bundle types. 8811 8812 * mpn/ia64/sqr_diagonal.asm: Remove. 8813 8814 * mpn/ia64/sqr_diag_addlsh1.asm: New file. 8815 8816 * mpn/ia64/ia64-defs.m4: Define some shorter convenience mnemonics. 8817 8818 * mpn/generic/sqr_basecase.c (MPN_SQR_DIAG_ADDLSH1): New macro, using 8819 new function mpn_sqr_diag_addlsh1 or defining its equivalent. 8820 8821 * gmp-impl.h (mpn_addmul_2s): Declare. 8822 (mpn_sqr_diag_addlsh1): Declare. 8823 * mpn/asm-defs.m4 (define_mpn): Add addmul_2s and sqr_diag_addlsh1. 8824 8825 * configure.in: Add HAVE_NATIVEs for mpn_sqr_diag_addlsh1 and 8826 mpn_addmul_2s. 8827 (gmp_mpn_functions_optional): Add sqr_diag_addlsh1. 8828 88292011-01-21 Marco Bodrato <bodrato@mail.dm.unipi.it> 8830 8831 * tests/devel/try.c: Initial support for mpn_bdiv_q_1. 8832 * mpn/x86/pentium/bdiv_q_1.asm: New file. 8833 * mpn/x86/p6/bdiv_q_1.asm: New file. 8834 88352011-01-20 Torbjorn Granlund <tege@gmplib.org> 8836 8837 * tune/speed.c (run_gnuplot): Update to current gnuplot syntax. 8838 8839 * mpn/powerpc64/mode64/aorsmul_1.asm: Trim away 0.5 c/l for submul_1 8840 for POWER5. 8841 88422011-01-19 Torbjorn Granlund <tege@gmplib.org> 8843 8844 * mpn/x86_64/core2/rsh1aors_n.asm: New file. 8845 88462011-01-18 Marco Bodrato <bodrato@mail.dm.unipi.it> 8847 8848 * mpn/x86/bdiv_q_1.asm: New file (same core alg. as dive_1). 8849 88502011-01-15 Marco Bodrato <bodrato@mail.dm.unipi.it> 8851 8852 * mpn/generic/divexact.c: Avoid COPY if not needed. 8853 88542011-01-14 Torbjorn Granlund <tege@gmplib.org> 8855 8856 * gmp-impl.h (struct cpuvec_t): Add field bmod_1_to_mod_1_threshold. 8857 * configure.in (fat_thresholds): Add BMOD_1_TO_MOD_1_THRESHOLD. 8858 88592011-01-13 Marco Bodrato <bodrato@mail.dm.unipi.it> 8860 8861 * mpz/mul.c: Remove redundant size computation. 8862 88632011-01-08 Torbjorn Granlund <tege@gmplib.org> 8864 8865 * tests/devel/try.c (types enum): Add TYPE_MUL_5 and TYPE_MUL_6. 8866 (param_init): Support new types. 8867 (choice_array): Support testing of mpn_mul_5 and mpn_mul_6. 8868 (call): Support new routines. 8869 8870 * tests/refmpn.c (refmpn_mul_5, refmpn_mul_6): New functions. 8871 * tests/tests.h (refmpn_mul_5, refmpn_mul_6): Declare. 8872 Remove parameter names from some other functions. 8873 8874 * gmp-impl.h (mpn_mul_5, mpn_mul_6): Declare. 8875 * mpn/asm-defs.m4: Likewise, also declare mpn_addmul_5, mpn_addmul_6, 8876 mpn_addmul_7, and mpn_addmul_8. 8877 8878 * configure.in (gmp_mpn_functions_optional): Add mul_5 and mul_6. 8879 8880 * tune/speed.c (routine): Add measuring of mpn_mul_5 and mpn_mul_6. 8881 * tune/common.c (speed_mpn_mul_5, speed_mpn_mul_6): New functions. 8882 * tune/speed.h: Declare new functions. 8883 88842011-01-03 Marco Bodrato <bodrato@mail.dm.unipi.it> 8885 8886 * mpz/aors.h: Remove #ifdef BERKELEY_MP, and cleanup. 8887 * mpz/cmp.c: Likewise. 8888 * mpz/gcd.c: Likewise. 8889 * mpz/mul.c: Likewise. 8890 * mpz/powm.c: Likewise. 8891 * mpz/set.c: Likewise. 8892 * mpz/sqrtrem.c: Likewise. 8893 * mpz/tdiv_qr.c: Likewise. 8894 88952010-12-28 Torbjorn Granlund <tege@gmplib.org> 8896 8897 * mpn/minithres/gmp-mparam.h: Update with several recent thresholds. 8898 88992010-12-19 Torbjorn Granlund <tege@gmplib.org> 8900 8901 * mpn/x86/k7/mod_1_1.asm: Canonicalise cmov forms. 8902 * mpn/x86/k7/mod_1_4.asm: Likewise. 8903 * mpn/x86/pentium4/sse2/mod_1_1.asm: Likewise. 8904 * mpn/x86/pentium4/sse2/mod_1_4.asm: Likewise. 8905 * mpn/x86_64/core2/divrem_1.asm: Likewise. 8906 * mpn/x86_64/divrem_1.asm: Likewise. 8907 * mpn/x86_64/mod_1_1.asm: Likewise. 8908 * mpn/x86_64/mod_1_2.asm: Likewise. 8909 * mpn/x86_64/mod_1_4.asm: Likewise. 8910 8911 * mpn/x86/k7/gcd_1.asm: Rewrite. Remove slow 'div' loop. Call 8912 mpn_mod_1 for operands with mode than BMOD_1_TO_MOD_1_THRESHOLD limbs. 8913 Misc cleanups. 8914 89152010-12-18 Torbjorn Granlund <tege@gmplib.org> 8916 8917 * mpn/x86_64/gcd_1.asm: Call mpn_mod_1 for operands with mode than 8918 BMOD_1_TO_MOD_1_THRESHOLD limbs. 8919 8920 * configure.in: Generalise code for putting THRESHOLDs in config.m4. 8921 Add BMOD_1_TO_MOD_1_THRESHOLD to list. 8922 8923 * mpn/x86_64/core2/divrem_1.asm: Tweak slightly, correct cycle counts. 8924 8925 * mpn/x86_64/addmul_2.asm: Remove constant index. 8926 * mpn/x86_64/lshiftc.asm: Likewise. 8927 * mpn/x86_64/pentium4/lshift.asm: Likewise. 8928 * mpn/x86_64/pentium4/lshiftc.asm: Likewise. 8929 * mpn/x86_64/pentium4/rshift.asm: Likewise. 8930 89312010-12-16 Torbjorn Granlund <tege@gmplib.org> 8932 8933 * mpn/x86_64/mod_34lsub1.asm: Complete rewrite. 8934 * mpn/x86_64/pentium4/mod_34lsub1.asm: New file, old 8935 mpn/x86_64/mod_34lsub1.asm. 8936 89372010-12-15 Torbjorn Granlund <tege@gmplib.org> 8938 8939 * mpn/powerpc64/vmx/popcount.asm: Rewrite to use vperm count table. 8940 89412010-12-14 Torbjorn Granlund <tege@gmplib.org> 8942 8943 * mp-h.in: Remove. 8944 * configure.in: Remove mp-h.in from AC_OUTPUT invocation. 8945 89462010-12-13 Torbjorn Granlund <tege@gmplib.org> 8947 8948 * mpz/mod.c: Rewrite. 8949 8950 * mpn/x86_64/corei/popcount.asm: New file. 8951 * mpn/x86_64/corei/hamdist.asm: New file. 8952 8953 * mpn/x86_64/k10/hamdist.asm: New file. 8954 8955 * configure.in: Amend last change for lame /bin/sh. 8956 89572010-12-12 Torbjorn Granlund <tege@gmplib.org> 8958 8959 * configure.in: Comment out M4=m4-not-needed. 8960 8961 * mpn/x86_64/k10/popcount.asm: New file. 8962 * configure.in: Setup special path for k10 and later AMD CPUs. 8963 Remove special x86_64'k8' path, since directory is non-existent. 8964 89652010-12-11 Torbjorn Granlund <tege@gmplib.org> 8966 8967 * mpn/sparc32/ultrasparct1: New directory. 8968 * mpn/sparc32/ultrasparct1/add_n.asm: New file. 8969 * mpn/sparc32/ultrasparct1/sub_n.asm: New file. 8970 * mpn/sparc32/ultrasparct1/mul_1.asm: New file. 8971 * mpn/sparc32/ultrasparct1/addmul_1.asm: New file. 8972 * mpn/sparc32/ultrasparct1/submul_1.asm: New file. 8973 * mpn/sparc32/ultrasparct1/sqr_diagonal.asm: New file. 8974 8975 * config.guess: Support Ultrasparc T2 and T3. 8976 * config.sub: Likewise. 8977 * configure.in: Likewise. 8978 8979 * config.guess: Generalise BSD Sparc recognition by allowing any 8980 caps (needed for OpenBSD which spells things innovatively). 8981 89822010-12-01 Torbjorn Granlund <tege@gmplib.org> 8983 8984 * config.guess: Match new AMD processors, allow finer distinctions 8985 among old ones. 8986 * acinclude.m4 (X86_64_PATTERN): Likewise. 8987 * config.sub: Likewise. 8988 * configure.in: Rudimentarily support new AMD processors. 8989 8990 * configure.in (--enable_assembly): New option. 8991 (target none-*-*): Disable, give error. 8992 89932010-11-29 Torbjorn Granlund <tege@gmplib.org> 8994 8995 * mpn/x86/x86-defs.m4 (LEA): Support non-PIC code. 8996 * mpn/x86/darwin.m4 (LEA): Likewise. 8997 8998 * tests/amd64call.asm: Rewrite for code size, and to match calls and 8999 returns. 9000 9001 * tests/x86call.asm: Rewrite for code size, to support PIC, and to 9002 match calls and returns. 9003 * tests/x86check.c: Rewrite. 9004 90052010-11-22 Torbjorn Granlund <tege@gmplib.org> 9006 9007 * mpz/get_str.c: Make all bases either work or return an error. 9008 * mpz/out_str.c: Likewise. 9009 * mpq/get_str.c: Likewise. 9010 * mpf/get_str.c: Likewise. 9011 90122010-11-14 Torbjorn Granlund <tege@gmplib.org> 9013 9014 * tests/misc/t-printf.c: Add explicit casts for type conversions. 9015 * mpn/generic/toom62_mul.c: Likewise. 9016 90172010-11-13 Torbjorn Granlund <tege@gmplib.org> 9018 9019 * mpn/generic/get_d.c: Misc cleanup. Fail with a syntax error for 9020 non-IEEE fp formats. 9021 9022 * tests/devel/try.c (malloc_region): Add explicit casts for type 9023 conversions. 9024 9025 * acinclude.m4 (GMP_ASM_RODATA): Make test code snippet C++ compatible. 9026 (GMP_C_DOUBLE_FORMAT): Likewise. 9027 (GMP_FUNC_VSNPRINTF): Likewise. 9028 9029 * config.guess (x86): Make test C snippet C++ compatible. 9030 90312010-11-12 Torbjorn Granlund <tege@gmplib.org> 9032 9033 * Makefile.am: Remove mpbsd. 9034 * configure.in: Remove mpbsd. 9035 * doc/configuration: Remove mpbsd mentions. 9036 * doc/gmp.texi: Remove mpbsd docs. 9037 * tests/Makefile.am: Remove mpbsd. 9038 * libmp.sym: Remove. 9039 * mpbsd: Remove directory and files. 9040 * tests/mpbsd: Remove directory and files. 9041 90422010-11-11 Torbjorn Granlund <tege@gmplib.org> 9043 9044 * mpn/x86_64/atom/aors_n.asm: Don't rely on ZF after 'bt' insn. 9045 Use 64-bit 'test' to support operands of 2^32 limbs and more. 9046 9047 * rand: New directory, move rand*.c and randmt.h here. 9048 * rand/Makefile.am: New file. 9049 * Makefile.am (SUBDIRS): Add rand. 9050 (RANDOM_OBJECTS): New variable. 9051 (libgmp_la_SOURCES): Remove random objects. 9052 (libgmp_la_DEPENDENCIES): Add RANDOM_OBJECTS. 9053 * configure.in (AC_OUTPUT): Add rand/Makefile. 9054 9055 * ansi2knr.1: File removed. 9056 * ansi2knr.c: File removed. 9057 90582010-11-10 Torbjorn Granlund <tege@gmplib.org> 9059 9060 Make it possible to compile GMP with g++: 9061 9062 * gmp-impl.h: Declare __gmp_digit_value_tab here. 9063 * mpbsd/min.c: ...not here. 9064 * mpbsd/xtom.c: ...nor here. 9065 * mpf/set_str.c: ...nor here. 9066 * mpz/inp_str.c: ...nor here. 9067 * mpz/set_str.c: ...nor here. 9068 9069 * mpn/generic/toom43_mul.c: Add casts for logical operations on enums. 9070 * mpn/generic/toom44_mul.c: Likewise. 9071 * mpn/generic/toom4_sqr.c: Likewise. 9072 * mpn/generic/toom52_mul.c: Likewise. 9073 * mpn/generic/toom53_mul.c: Likewise. 9074 * mpn/generic/toom62_mul.c: Likewise. 9075 9076 * mpz/clrbit.c: Clean up typing using MPZ_REALLOC. 9077 * mpz/setbit.c: Likewise. 9078 9079 * mpz/powm.c: Avoid variable name 'new'. 9080 9081 * randlc2x.c: Add explicit casts for type conversions. 9082 * tests/misc/t-printf.c: Likewise. 9083 * tests/misc/t-scanf.c: Likewise. 9084 * tests/misc.c: Likewise. 9085 * tests/mpz/convert.c: Likewise. 9086 * tests/refmpn.c: Likewise. 9087 9088 * tests/tests.h: Unconditionally use <sstream> for now. 9089 9090 * tests/memory.c: Include "tests.h. 9091 9092 * mp_get_fns.c: Add a __GMP_NOTHROW for coherency with prototype. 9093 * mp_set_fns.c: Likewise. 9094 * mpf/cmp.c: Likewise. 9095 * mpf/cmp_si.c: Likewise. 9096 * mpf/cmp_ui.c: Likewise. 9097 * mpf/fits_s.h: Likewise. 9098 * mpf/fits_u.h: Likewise. 9099 * mpf/get_dfl_prec.c: Likewise. 9100 * mpf/get_prc.c: Likewise. 9101 * mpf/get_si.c: Likewise. 9102 * mpf/get_ui.c: Likewise. 9103 * mpf/int_p.c: Likewise. 9104 * mpf/set_dfl_prec.c: Likewise. 9105 * mpf/set_prc_raw.c: Likewise. 9106 * mpf/size.c: Likewise. 9107 * mpf/swap.c: Likewise. 9108 * mpq/equal.c: Likewise. 9109 * mpq/swap.c: Likewise. 9110 * mpz/cmp.c: Likewise. 9111 * mpz/cmp_si.c: Likewise. 9112 * mpz/cmp_ui.c: Likewise. 9113 * mpz/cmpabs.c: Likewise. 9114 * mpz/cmpabs_ui.c: Likewise. 9115 * mpz/cong_2exp.c: Likewise. 9116 * mpz/divis_2exp.c: Likewise. 9117 * mpz/fits_s.h: Likewise. 9118 * mpz/get_si.c: Likewise. 9119 * mpz/hamdist.c: Likewise. 9120 * mpz/scan0.c: Likewise. 9121 * mpz/scan1.c: Likewise. 9122 * mpz/sizeinbase.c: Likewise. 9123 * mpz/swap.c: Likewise. 9124 * mpz/tstbit.c: Likewise. 9125 * tal-reent.c: Likewise. 9126 91272010-11-09 Torbjorn Granlund <tege@gmplib.org> 9128 9129 * configure.in: Get rid of K&R support. 9130 * Makefile.am: Likewise. 9131 * mpn/Makefile.am: Likewise. 9132 * doc/configuration: Update docs wrt K&R support. 9133 * doc/gmp.texi: Likewise. 9134 9135 * configure.in (AC_INIT): Amend bug reporting address with manual 9136 reference. 9137 91382010-11-06 Torbjorn Granlund <tege@gmplib.org> 9139 9140 * config.guess: If cpuid says we have 32bit-only x86 but 9141 configfsf.guess return x86_64, return the latter. 9142 9143 * mpn/x86_64/aors_n.asm: Rewrite not to rely on ZF after 'bt' insn. 9144 91452010-10-09 Torbjorn Granlund <tege@gmplib.org> 9146 9147 * mpn/generic/trialdiv.c: Update documentation. 9148 91492010-10-04 Torbjorn Granlund <tege@gmplib.org> 9150 9151 * mpn/x86_64/gcd_1.asm: Use m4_lshift to avoid << operator. 9152 * mpn/x86_64/aorrlshC_n.asm: Likewise. 9153 * mpn/x86_64/pentium4/aorslshC_n.asm: Likewise. 9154 * mpn/x86/k7/gcd_1.asm: Likewise. 9155 91562010-08-20 Niels Möller <nisse@lysator.liu.se> 9157 9158 Suggested by Ozkan Sezer: 9159 * configure.in: If $M4 is already set in the environment, don't 9160 touch it. Fixed the case that no assembler files are used, and 9161 GMP_PROG_M4 is omitted. 9162 91632010-08-08 Torbjorn Granlund <tege@gmplib.org> 9164 9165 * mpn/x86_64/fat/fat.c: Recognise many more processors. 9166 91672010-06-30 Torbjorn Granlund <tege@gmplib.org> 9168 9169 * mpn/x86_64/divrem_2.asm: Tune. 9170 91712010-06-19 Niels Möller <nisse@lysator.liu.se> 9172 9173 * tune/speed.h (SPEED_ROUTINE_MPN_MOD_1_1): Pass normalized 9174 divisor to the benchmarked function. 9175 91762010-06-15 Torbjorn Granlund <tege@gmplib.org> 9177 9178 * mpn/x86_64/mod_1_1.asm (mpn_mod_1_1p_cps): Rewrite. 9179 * mpn/x86_64/mod_1_2.asm (mpn_mod_1s_2p_cps): Rewrite. 9180 * mpn/x86_64/mod_1_4.asm (mpn_mod_1s_4p_cps): Rewrite. 9181 9182 * gmp-impl.h (udiv_rnd_preinv): Simplify. 9183 9184 * mpn/x86/k7/mod_1_1.asm: New file. 9185 * mpn/x86/pentium4/sse2/mod_1_1.asm (mpn_mod_1_1p_cps): Rewrite. 9186 * mpn/x86/k7/mod_1_4.asm (mpn_mod_1s_4p_cps): Rewrite. 9187 * mpn/x86/pentium4/sse2/mod_1_4.asm (mpn_mod_1s_4p_cps): Rewrite. 9188 9189 * mpn/generic/mod_1_1.c (mpn_mod_1_1p_cps): Store results as they are 9190 computed. 9191 * mpn/generic/mod_1_2.c (mpn_mod_1s_2p_cps): Likewise. 9192 * mpn/generic/mod_1_4.c (mpn_mod_1s_4p_cps): Likewise. 9193 9194 * mpn/x86/k7/invert_limb.asm: Moved from mpn/x86/invert_limb.asm. 9195 91962010-06-15 Niels Möller <nisse@lysator.liu.se> 9197 9198 * tests/mpn/Makefile.am (check_PROGRAMS): Added t-mod_1. 9199 * tests/mpn/t-mod_1.c: New file. 9200 92012010-05-25 Torbjorn Granlund <tege@gmplib.org> 9202 9203 * mpn/generic/mu_div_qr.c (mpn_preinv_mu_div_qr_itch): Trim out space 9204 for inverse, since that is passed in already. 9205 92062010-05-24 Torbjorn Granlund <tege@gmplib.org> 9207 9208 * mpn/generic/mu_div_qr.c (mpn_preinv_mu_div_qr_itch): New function. 9209 * gmp-impl.h: Declare it. 9210 * tune/common.c (speed_mpn_mupi_div_qr): Use new itch function. 9211 * tune/speed.h (SPEED_ROUTINE_MPN_MUPI_DIV_QR): Pass parameters right 9212 for new itch function. 9213 9214 * mpn/powerpc32/lshiftc.asm: New file. 9215 92162010-05-22 Torbjorn Granlund <tege@gmplib.org> 9217 9218 * tune/tuneup.c (tune_mod_1): Revert to version of 2010-05-06. 9219 92202010-05-17 Torbjorn Granlund <tege@gmplib.org> 9221 9222 * configure.in (ia64): Get 32-bit sizeof test right. 9223 9224 * tune/tuneup.c (tune_mod_1): Undo unintensional change to tuning of 9225 PREINV_MOD_1_TO_MOD_1_THRESHOLD. 9226 92272010-05-16 Torbjorn Granlund <tege@gmplib.org> 9228 9229 * mpn/sparc64/mod_1.c: Rewrite. 9230 * mpn/sparc64/sparc64.h (umul_ppmm_s): New macro. 9231 * mpn/sparc64/mod_1_4.c: New file. 9232 9233 * mpn/generic/divrem_1.c: Minor cleanup. 9234 * mpn/generic/mod_1.c: Likewise. 9235 * mpn/generic/mod_1_1.c: Likewise. 9236 * mpn/generic/mod_1_2.c: Likewise. 9237 * mpn/generic/mod_1_3.c: Likewise. 9238 * mpn/generic/mod_1_4.c: Likewise. 9239 9240 * configure.in (ia64-hpux): Do sizeof tests for 32-bit and 64-bit ABI. 9241 9242 * tune/tuneup.c (tune_mod_1): Completely finish MOD_1_N tuning before 9243 tuning MOD_1U_TO_MOD_1_1_THRESHOLD. 9244 92452010-05-14 Torbjorn Granlund <tege@gmplib.org> 9246 9247 * mpn/generic/redc_2.c: Use asm code just for GNU C. 9248 92492010-05-13 Torbjorn Granlund <tege@gmplib.org> 9250 9251 * mpn/sparc64/ultrasparc1234: New directory. Move all code that uses 9252 floating-point into this directory. 9253 * configure.in: Point to ultrasparc1234 for appropriate CPUs. 9254 9255 * mpn/sparc64/ultrasparct1/add_n.asm: New file. 9256 * mpn/sparc64/ultrasparct1/addlsh2_n.asm: New file. 9257 * mpn/sparc64/ultrasparct1/addmul_1.asm: New file. 9258 * mpn/sparc64/ultrasparct1/lshift.asm: New file. 9259 * mpn/sparc64/ultrasparct1/mul_1.asm: New file. 9260 * mpn/sparc64/ultrasparct1/rsblsh2_n.asm: New file. 9261 * mpn/sparc64/ultrasparct1/rshift.asm: New file. 9262 * mpn/sparc64/ultrasparct1/sublsh1_n.asm: New file. 9263 * mpn/sparc64/ultrasparct1/sublshC_n.asm: New file. 9264 * mpn/sparc64/ultrasparct1/addlsh1_n.asm: New file. 9265 * mpn/sparc64/ultrasparct1/addlshC_n.asm: New file. 9266 * mpn/sparc64/ultrasparct1/lshiftc.asm: New file. 9267 * mpn/sparc64/ultrasparct1/rsblsh1_n.asm: New file. 9268 * mpn/sparc64/ultrasparct1/rsblshC_n.asm: New file. 9269 * mpn/sparc64/ultrasparct1/sub_n.asm: New file. 9270 * mpn/sparc64/ultrasparct1/sublsh2_n.asm: New file. 9271 * mpn/sparc64/ultrasparct1/submul_1.asm: New file. 9272 * mpn/sparc64/ultrasparct1/gmp-mparam.h: New file. 9273 9274 * configure.in: Give ultrasparct1 and ultrasparct2 special code path. 9275 9276 * mpn/x86_64/pentium4/gmp-mparam.h: Disable mpn_addlsh_n, mpn_rsblsh_n. 9277 92782010-05-12 Niels Möller <nisse@lysator.liu.se> 9279 9280 * mpz/jacobi.c (mpz_jacobi): Fixed off-by-one error in use of 9281 scratch space. 9282 9283 * tune/common.c (speed_mpz_powm_sec): New function. 9284 * tune/speed.h: Declare speed_mpz_powm_sec. 9285 * tune/speed.c (routine): Added speed_mpz_powm_sec. 9286 9287 * tune/common.c (speed_mpn_addlsh_n, speed_mpn_sublsh_n) 9288 (speed_mpn_rsblsh_n): New functions. 9289 * tune/speed.h: Declare new functions. 9290 * tune/speed.c (routine): Add new functions. 9291 92922010-05-12 Torbjorn Granlund <tege@gmplib.org> 9293 9294 * mpn/x86_64/mod_1_4.asm: Tune for more processors. 9295 9296 * mpn/x86_64/pentium4/lshiftc.asm: New file. 9297 92982010-05-11 Niels Möller <nisse@lysator.liu.se> 9299 9300 * mpz/jacobi.c (mpz_jacobi): Deleted old implementation. 9301 Reorganized new implementation, to handle small inputs efficiently. 9302 9303 * tests/mpz/t-jac.c (check_large_quotients): Reduced test sizes. 9304 (check_data): One more input pair related to a fixed bug. 9305 (main): Enable check_large_quotients. 9306 93072010-05-10 Torbjorn Granlund <tege@gmplib.org> 9308 9309 * mpn/x86_64/aorrlsh2_n.asm: Fix typo. 9310 93112010-05-09 Torbjorn Granlund <tege@gmplib.org> 9312 9313 * mpn/x86_64/aorrlshC_n.asm: New file based on aorrlsh2_n.asm. 9314 * mpn/x86_64/aorrlsh2_n.asm: Now just include aorrlshC_n.asm. 9315 * mpn/x86_64/core2/aorrlsh1_n.asm: New file, include ../aorrlshC_n.asm. 9316 * mpn/x86_64/core2/aorrlsh2_n.asm: Likewise. 9317 9318 * mpn/x86_64/core2/sublshC_n.asm: New file based on aorslsh1_n.asm. 9319 * mpn/x86_64/core2/aorslsh1_n.asm: Remove. 9320 * mpn/x86_64/core2/sublsh1_n.asm: Just include sublshC_n.asm. 9321 * mpn/x86_64/core2/sublsh2_n.asm: Likewise. 9322 93232010-05-08 Torbjorn Granlund <tege@gmplib.org> 9324 9325 * mpn/x86_64/atom/gmp-mparam.h: Disable mpn_rsh1add_n, mpn_rsh1sub_n. 9326 9327 * mpn/x86_64/pentium4/aorslshC_n.asm: New file based on aorslsh1_n.asm. 9328 * mpn/x86_64/pentium4/aorslsh1_n.asm: Now just include aorslshC_n.asm. 9329 * mpn/x86_64/pentium4/aorslsh2_n.asm: New file. 9330 93312010-05-07 Torbjorn Granlund <tege@gmplib.org> 9332 9333 * mpn/sparc64: Support operands of >= 2^32 limbs. 9334 9335 * mpn/sparc64/lshiftc.asm: New file. 9336 9337 * mpn/ia64/divrem_2.asm: Complete rewrite. 9338 93392010-05-06 Torbjorn Granlund <tege@gmplib.org> 9340 9341 * tune/tuneup.c (all): Don't call tune_divrem_2. 9342 9343 * mpn/generic/divrem_2.c: Complete rewrite. 9344 9345 * tune/tuneup.c (tune_mod_1): Fix typo. 9346 93472010-05-05 Torbjorn Granlund <tege@gmplib.org> 9348 9349 * mpn/x86_64/mod_1_1.asm (mpn_mod_1_1p): Use macro register names. 9350 (mpn_mod_1_1p_cps): Rewrite. 9351 9352 * mpn/generic/mod_1_1.c (mpn_mod_1_1p_cps): Micro-optimise. 9353 9354 * longlong.h: Undo 2009-03-01 change for powerpc64, it gives poor code. 9355 9356 * mpn/x86/pentium4/sse2/mod_1_1.asm: New file. 9357 9358 * mpn/powerpc64/mode64/mod_1_1.asm: New file. 9359 9360 * tune/tuneup.c (tune_mod_1): Use more typical divisor, for the benefit 9361 of machines with early-out multipliers. 9362 93632010-05-04 Torbjorn Granlund <tege@gmplib.org> 9364 9365 * tune/tuneup.c (tune_mod_1): Fix typo. 9366 9367 * mpn/generic/mod_1_1.c: Undo last change. 9368 * mpn/x86_64/mod_1_1.asm: Likewise. 9369 93702010-05-03 Niels Möller <nisse@lysator.liu.se> 9371 9372 * mpn/generic/jacobi_lehmer.c (jacobi_hook): New function. 9373 (mpn_jacobi_subdiv_step): Deleted function. 9374 (mpn_jacobi_lehmer): Use general mpn_gcd_subdiv_step. 9375 9376 * mpn/generic/gcd_subdiv_step.c (mpn_gcd_subdiv_step): Reorganized 9377 to use a single hook function. 9378 * mpn/generic/gcdext.c (mpn_gcdext): Adapted to new hook 9379 interface. 9380 * mpn/generic/gcdext_lehmer.c (mpn_gcdext_hook): New unified hook 9381 function. 9382 * mpn/generic/gcd.c (gcd_hook): Renamed from gcd_done, and adapted 9383 to new hook interface. 9384 * gmp-impl.h (gcd_subdiv_step_hook): New typedef, now a function 9385 type, not a struct. 9386 (mpn_gcdext_hook): Declare. 9387 93882010-05-03 Torbjorn Granlund <tege@gmplib.org> 9389 9390 * mpn/generic/mod_1_1.c: Avoid multiply for 2 limb feed-in. 9391 * mpn/generic/mod_1_2.c: Likewise. 9392 * mpn/generic/mod_1_3.c: Likewise. 9393 * mpn/generic/mod_1_4.c: Likewise. 9394 * mpn/x86_64/mod_1_1.asm: Likewise. 9395 * mpn/x86_64/mod_1_2.asm: Likewise. 9396 * mpn/x86_64/mod_1_4.asm: Likewise. 9397 * mpn/x86/k7/mod_1_4.asm: Likewise. 9398 * mpn/x86/pentium4/sse2/mod_1_4.asm: Likewise. 9399 * mpn/alpha/ev6/mod_1_4.asm: Likewise. 9400 9401 * tune/tuneup.c (tune_mod_1): Measure MOD_1_1_TO_MOD_1_2_THRESHOLD and 9402 MOD_1_2_TO_MOD_1_4_THRESHOLD before MOD_1U_TO_MOD_1_1_THRESHOLD for 9403 correctness. 9404 9405 * mpn/powerpc64/sqr_diagonal.asm: Complete rewrite. 9406 9407 * mpn/powerpc64/mode64/mod_1_4.asm: New file. 9408 94092010-05-02 Torbjorn Granlund <tege@gmplib.org> 9410 9411 * config.guess: Recognise power7. 9412 9413 * configure.in: Major overhaul of powerpc support. 9414 9415 * mpn/powerpc64/p6/lshift.asm: New file. 9416 * mpn/powerpc64/p6/lshiftc.asm: Likewise. 9417 * mpn/powerpc64/p6/rshift.asm: Likewise. 9418 94192010-04-30 Torbjorn Granlund <tege@gmplib.org> 9420 9421 * configure.in (powerpc64): Support CPU specific mode-less subdirs. 9422 9423 * mpn/powerpc64/aix.m4 (PROLOGUE_cpu): Use "named csect" making 9424 requested alignment actually honoured. 9425 94262010-04-30 Niels Möller <nisse@lysator.liu.se> 9427 9428 * mpn/generic/jacobi_lehmer.c (mpn_jacobi_2): Fixed handling of 9429 the case bl == 1. Fixed missing application of reciprocity. 9430 94312010-04-29 Niels Möller <nisse@lysator.liu.se> 9432 9433 * configure.in (gmp_mpn_functions): Deleted gcdext_subdiv_step. 9434 9435 * mpn/generic/gcdext.c (mpn_gcdext): Use new generalized 9436 mpn_gcd_subdiv_step. 9437 9438 * mpn/generic/gcdext_lehmer.c (gcdext_update): New function. 9439 (gcdext_done): New function. 9440 (gcdext_hook): New const hook struct. 9441 (mpn_gcdext_lehmer_n): Use new generalized mpn_gcd_subdiv_step. 9442 9443 * mpn/generic/gcd.c (gcd_done): New function. 9444 (gcd_hook): New const hook struct. 9445 (mpn_gcd): Adapted to new mpn_gcd_subdiv_step interface. 9446 9447 * mpn/generic/gcd_subdiv_step.c (mpn_gcd_subdiv_step): Reorganized 9448 function. Added hook function pointers to the argument list, so 9449 the same function can be used for gcd, gcdext, and jacobi. 9450 9451 * gmp-impl.h (struct gcd_subdiv_step_hook): New struct. 9452 (mpn_gcdext_subdiv_step): Deleted prototype. 9453 (struct gcdext_ctx): New struct. 9454 (gcdext_hook): Declare const struct. 9455 (mpn_gcd_subdiv_step): Updated prototype. 9456 9457 * mpn/generic/gcdext_subdiv_step.c: Deleted file. 9458 94592010-04-28 Torbjorn Granlund <tege@gmplib.org> 9460 9461 * mpn/powerpc64/lshift.asm: Rewrite. 9462 * mpn/powerpc64/rshift.asm: Likewise. 9463 * mpn/powerpc64/mode64/lshiftc.asm: New file. 9464 9465 * mpn/powerpc64/aix.m4: Align functions to 32-byte boundary. 9466 * mpn/powerpc64/darwin.m4: Likewise. 9467 * mpn/powerpc64/elf.m4: Likewise. 9468 94692010-04-28 Niels Möller <nisse@lysator.liu.se> 9470 9471 * tests/mpz/t-jac.c (check_data): Added some more test cases. 9472 9473 * mpn/generic/jacobi_lehmer.c (mpn_jacobi_2): Bugfix, count 9474 trailing zeros, not leading. 9475 94762010-04-27 Torbjorn Granlund <tege@gmplib.org> 9477 9478 * mpn/powerpc64/mode64/p6/mul_basecase.asm: New file. 9479 94802010-04-23 Niels Möller <nisse@lysator.liu.se> 9481 9482 * gmp-impl.h (MPN_GCD_LEHMER_N_ITCH): Deleted. 9483 (mpn_gcd_lehmer_n): Deleted declaration. 9484 9485 * mpn/generic/gcd.c (gcd_2): Moved from gcd_lehmer.c. 9486 (mpn_gcd): Inlined the code from mpn_gcd_lehmer_n. Also use 9487 MPN_GCD_SUBDIV_STEP_ITCH rather than MPN_GCD_LEHMER_N_ITCH. 9488 94892010-04-22 Torbjorn Granlund <tege@gmplib.org> 9490 9491 * mpn/powerpc64/mode64/bdiv_dbm1c.asm: Swap multiply insns to make them 9492 consecutive, for the benefit of POWER6. 9493 9494 * mpn/powerpc64/mode64/p6/gmp-mparam.h: New file. 9495 94962010-04-21 Torbjorn Granlund <tege@gmplib.org> 9497 9498 * mpn/generic/gcd_lehmer.c: Deleted file. 9499 9500 * mpn/powerpc64/mode64/divrem_1.asm: Swap multiply insns to make them 9501 consecutive, for the benefit of POWER6. 9502 * mpn/powerpc64/mode64/dive_1.asm: Likewise. 9503 * mpn/powerpc64/mode64/divrem_2.asm: Likewise. 9504 * mpn/powerpc64/mode64/mul_1.asm: Likewise. 9505 * mpn/powerpc64/mode64/aorsmul_1.asm: Likewise. 9506 9507 * mpn/powerpc64/mode64/aorslshC_n.asm: Swap ldx operands as a temporary 9508 workaround for POWER6 pipeline glitch. 9509 95102010-04-19 Niels Möller <nisse@lysator.liu.se> 9511 9512 * mpz/jacobi.c (mpz_jacobi): New implementation using 9513 mpn_jacobi_lehmer. Currently #if:ed out. 9514 9515 * mpn/generic/jacbase.c (mpn_jacobi_base) 9516 [JACOBI_BASE_METHOD < 4]: Support inputs with a >= b. 9517 9518 * gmp-impl.h (mpn_jacobi_lehmer): Added prototype. 9519 (jacobi_table): Declare. 9520 (mpn_jacobi_init): New inline function. 9521 (mpn_jacobi_finish): Likewise. 9522 (mpn_jacobi_update): Likewise. 9523 9524 * mpn/generic/jacobi_lehmer.c (mpn_jacobi_lehmer): New file, new 9525 function. 9526 9527 * configure.in (gmp_mpn_functions): Added jacobi_lehmer. 9528 95292010-04-14 Niels Möller <nisse@lysator.liu.se> 9530 9531 * configure.in (gmp_mpn_functions): Added 9532 matrix22_mul1_inverse_vector. 9533 * mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Added 9534 matrix22_mul1_inverse_vector.c. 9535 9536 * gmp-impl.h (mpn_matrix22_mul1_inverse_vector): Updated for 9537 rename of mpn_matrix22_mul1_inverse_vector. 9538 * mpn/generic/gcd_lehmer.c (mpn_gcd_lehmer_n): Likewise. 9539 * mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_n): Likewise. 9540 * mpn/generic/hgcd.c (hgcd_step): Likewise. 9541 9542 * mpn/generic/matrix22_mul1_inverse_vector.c 9543 (mpn_matrix22_mul1_inverse_vector): New file, function moved and 9544 renamed... 9545 * mpn/generic/hgcd2.c (mpn_hgcd_mul_matrix1_inverse_vector): 9546 ...from here. 9547 95482010-04-12 Torbjorn Granlund <tege@gmplib.org> 9549 9550 * tests/mpn/t-toom6h.c (SIZE_LOG): Define. 9551 * tests/mpn/t-toom8h.c (SIZE_LOG): Likewise. 9552 95532010-04-10 Torbjorn Granlund <tege@gmplib.org> 9554 9555 * mpn/ia64/lorrshift.asm: Rewrite feed-in and wind-down code. 9556 9557 * mpn/ia64/aorslsh1_n.asm: Adapt to new aorslsh1_n. 9558 * mpn/ia64/aorslsh1_n.asm: Likewise. 9559 9560 * mpn/ia64/aors_n.asm: Complete rewrite. 9561 * mpn/ia64/aorslsh1_n.asm: Likewise. 9562 9563 * mpn/ia64/add_n_sub_n.asm: Misc cleanups. Add slotting comments. 9564 9565 * mpn/ia64/lshiftc.asm: New file. 9566 9567 * mpn/x86_64/pentium4/gmp-mparam.h: No longer disable rsh1add_n and 9568 rsh1sub_n; instead disable rsblsh1_n, addlsh2_n, rsblsh2_n. 9569 9570 * mpn/x86/divrem_2.asm: Use "orb" instead of "or" to work around 9571 Solaris assembler bug. 9572 * mpn/x86_64/mpn/x86_64/divrem_2.asm: Likewise. 9573 9574 * mpn/x86/aors_n.asm: Use operand-less shift-by-1 insn form. 9575 * mpn/x86/pentium/aors_n.asm: Likewise. 9576 * mpn/x86_64/invert_limb.asm: Likewise. 9577 9578 * mpn/x86_64/pentium4/aors_n.asm: Let non-nc code fall into nc code. 9579 9580 * mpn/x86_64/pentium4/rsh1aors_n.asm: New file. 9581 95822010-03-25 Torbjorn Granlund <tege@gmplib.org> 9583 9584 * mpn/ia64/add_n_sub_n.asm: New file. 9585 9586 * mpn/generic/toom33_mul.c: Fix mpn_add_n_sub_n usage. 9587 * mpn/generic/toom3_sqr.c: Likewise. 9588 * mpn/generic/toom63_mul.c: Likewise. 9589 9590 * mpn/generic/add_n_sub_n.c: Renamed from addsub_n.c. 9591 95922010-03-23 Torbjorn Granlund <tege@gmplib.org> 9593 9594 * mpn/x86_64/divrem_2.asm: Use mpn_invert_limb instead of div insn. 9595 9596 * mpn/ia64/aorslshC_n.asm: New file, generalised from last iteration of 9597 aorslsh1_n.asm. 9598 * mpn/ia64/aorslsh1_n.asm: Use aorslshC_n.asm. 9599 * mpn/ia64/aorslsh1_n.asm: New file, use aorslshC_n.asm. 9600 96012010-03-20 Torbjorn Granlund <tege@gmplib.org> 9602 9603 * mpn/powerpc64/mode64/invert_limb.asm: Rewrite to exploit cancellation 9604 in the Newton iteration. 9605 96062010-03-20 Marco Bodrato <bodrato@mail.dm.unipi.it> 9607 9608 * mpn/generic/toom_interpolate_8pts.c: Use mpn_sublsh2_n. 9609 96102010-03-20 Torbjorn Granlund <tege@gmplib.org> 9611 9612 * mpn/powerpc64/mode64/aorslshC_n.asm: New file, generalised from 9613 last iteration of aorslsh1_n.asm. 9614 * mpn/powerpc64/mode64/aorslsh1_n.asm: Use aorslshC_n.asm. 9615 * mpn/powerpc64/mode64/aorslsh1_n.asm: New file, use aorslshC_n.asm. 9616 96172010-03-19 Torbjorn Granlund <tege@gmplib.org> 9618 9619 * mpn/x86_64/nano/dive_1.asm: New file. 9620 9621 * mpn/x86_64/divrem_1.asm: Avoid shld since it is slow on several CPU 9622 types. Unconditionally provide code for normalised and unnormalised 9623 divisors. Cleanup labels. 9624 9625 * mpn/x86_64/core2/divrem_1.asm: Remove special code for normalised 9626 divisors. Cleanup labels. 9627 9628 * mpn/generic/toom_interpolate_6pts.c: Call mpn_sublsh2_n and 9629 mpn_sublsh_n with correct args. 9630 9631 * tests/devel/try.c: Use enum for TYPE_*. 9632 9633 * tests/devel/try.c: Test mpn_sublsh2_n. 9634 * tests/refmpn.c (refmpn_sublsh2_n): New function. 9635 * tests/tests.h (refmpn_sublsh2_n): Declare. 9636 9637 * mpn/powerpc64/mode64/aorslsh1_n.asm: New file, with faster 9638 mpn_addlsh1_n and mpn_sublsh1_n. 9639 * mpn/powerpc64/mode64/addlsh1_n.asm: Delete. 9640 * mpn/powerpc64/mode64/sublsh1_n.asm: Delete. 9641 96422010-03-18 Torbjorn Granlund <tege@gmplib.org> 9643 9644 * configure.in (*-*-aix): Define gcc_32_cflags_maybe, ar_32_flags and 9645 nm_32_flags. 9646 9647 * mpn/x86/pentium4/sse2/addlsh1_n.asm: Tune for slightly better speed. 9648 Misc cleanups. Add cycle table. 9649 9650 * mpn/x86_64/copyi.asm: Update cycle table. 9651 * mpn/x86_64/copyd.asm: Likewise. 9652 * mpn/x86_64/rsh1aors_n.asm: Likewise. 9653 * mpn/x86_64/dive_1.asm: Likewise. 9654 9655 * mpn/x86/pentium4/sse2/add_n.asm: Misc cleanups. Add cycle table. 9656 * mpn/x86/pentium4/sse2/sub_n.asm: Likewise. 9657 96582010-03-16 Torbjorn Granlund <tege@gmplib.org> 9659 9660 * mpn/x86_64/divrem_1.asm: Use mpn_invert_limb instead of div insn. 9661 * mpn/x86_64/core2/divrem_1.asm: Likewise. 9662 9663 * tune/speed.c (routine): Add FLAG_R_OPTIONAL for many binops. 9664 96652010-03-15 Torbjorn Granlund <tege@gmplib.org> 9666 9667 * mpn/alpha/ev6/mod_1_4.asm (mpn_mod_1s_4p_cps): Rewrite. 9668 9669 * mpn/ia64/aors_n.asm: Insert explicitly typed nops to trigger intended 9670 bundling. 9671 * mpn/ia64/aorslsh1_n.asm: Likewise. 9672 * mpn/ia64/dive_1.asm: Likewise. 9673 96742010-03-13 Torbjorn Granlund <tege@gmplib.org> 9675 9676 * mpn/x86/pentium4/sse2/submul_1.asm: Rewrite. 9677 9678 * mpn/powerpc64/mode64/aorsmul_1.asm: New file, faster than old code 9679 for both mpn_addmul_1 and mpn_submul_1. 9680 * mpn/powerpc64/mode64/addmul_1.asm: Remove. 9681 * mpn/powerpc64/mode64/submul_1.asm: Remove. 9682 96832010-03-11 Niels Möller <nisse@lysator.liu.se> 9684 9685 * mpn/generic/gcd_lehmer.c (gcd_2): Use sub_ddmmss. 9686 9687 * mpn/generic/jacbase.c (mpn_jacobi_base): Reorganized the 9688 JACOBI_BASE_METHOD 4 slightly. Now requires that b > 1. 9689 96902010-03-10 Torbjorn Granlund <tege@gmplib.org> 9691 9692 * mpn/x86_64/divrem_1.asm: Make fraction code take documented # of 9693 cycles. Annotate code for more CPUs. Misc cleanups. 9694 * mpn/x86_64/core2/divrem_1.asm: Annotate code for more CPUs. 9695 9696 * mpn/alpha/ev6/mod_1_4.asm: New file. 9697 9698 * mpn/ia64/mod_34lsub1.asm: New file. 9699 9700 * doc/gmp.texi (Language Bindings): Update Python site, add Ruby. 9701 97022010-03-10 Niels Möller <nisse@lysator.liu.se> 9703 9704 * tune/tuneup.c (tune_jacobi_base): Consider mpn_jacobi_base_4. 9705 * tune/speed.c (routine): Added mpn_jacobi_base_4. 9706 * tune/common.c (speed_mpn_jacobi_base_4): New function. 9707 * tune/speed.h (speed_mpn_jacobi_base_4): Declare it. 9708 * tune/Makefile.am (libspeed_la_SOURCES): Added jacbase4.c. 9709 * tune/jacbase4.c: New file. 9710 9711 * mpn/generic/jacbase.c (mpn_jacobi_base): New function, for 9712 JACOBI_BASE_METHOD 4. 9713 97142010-03-09 Niels Möller <nisse@lysator.liu.se> 9715 9716 * tests/mpz/t-jac.c (check_large_quotients): Also generate inputs 9717 with large quotients and a large gcd. 9718 97192010-03-09 Marco Bodrato <bodrato@mail.dm.unipi.it> 9720 9721 * tests/mpz/t-bin.c (randomwalk): New test-generator function. 9722 97232010-03-07 Torbjorn Granlund <tege@gmplib.org> 9724 9725 * tune/speed.c (routine): Force r argument for several mod_1 calls. 9726 97272010-03-06 Torbjorn Granlund <tege@gmplib.org> 9728 9729 * mpn/x86_64/divrem_1.asm: Disable SPECIAL_CODE_FOR_NORMALIZED_DIVISOR. 9730 Misc clean up. 9731 9732 * mpn/x86_64/mod_1_1.asm: New file. 9733 * mpn/x86_64/mod_1_2.asm: New file. 9734 * mpn/x86_64/mod_1_4.asm: Update cycle counts. 9735 9736 * tests/tests.h (TESTS_REPS): Fix typo. 9737 97382010-03-03 Torbjorn Granlund <tege@gmplib.org> 9739 9740 * mpn/x86_64/core2/divrem_1.asm: New file. 9741 97422010-02-26 Niels Möller <nisse@lysator.liu.se> 9743 9744 * tune/speed.c (routine): Added udiv_qrnnd_preinv3. 9745 9746 * tune/common.c (speed_udiv_qrnnd_preinv3): New function. 9747 * tune/speed.h: Added prototype for it. 9748 97492010-02-26 Niels Möller <nisse@lysator.liu.se> 9750 9751 * tests/mpz/t-jac.c (check_large_quotients): New test. Currently 9752 disabled, since it's quite slow. 9753 (mpz_nextprime_step): New function. 9754 97552010-02-26 Torbjorn Granlund <tege@gmplib.org> 9756 9757 * mpn/pa64/aors_n.asm: Fix typo in last change. 9758 97592010-02-25 Niels Möller <nisse@lysator.liu.se> 9760 9761 * tests/mpz/t-jac.c (ref_jacobi): New reference implementation, 9762 using factorization and legendre symbols computed by powm. 9763 9764 * tests/devel/try.c (param_init, call): Don't pass negative values 9765 for the second argument to mpz_jacobi and refmpz_jacobi. 9766 9767 * tests/refmpz.c (refmpz_jacobi): Require that b is odd and positive. 9768 9769 * tests/devel/try.c (param_init): Support mpz_legendre. 9770 (choice_array): Added mpz_kronecker (apparently forgotten) and 9771 mpz_legendre. 9772 (call): Added TYPE_MPZ_LEGENDRE. 9773 (try_one): Added support for DATA_SRC1_ODD_PRIME. 9774 9775 * tests/refmpz.c (refmpz_legendre): Rewrote using powm. 9776 97772010-02-25 Torbjorn Granlund <tege@gmplib.org> 9778 9779 * config.guess: Make "corei" default for unrecognised Intel P6 CPUs. 9780 9781 * tests/mpz/t-perfpow.c (check_random): Use mp_limb_t type for limb 9782 variables. 9783 9784 * tests/mpn/t-toom6h.c (COUNT): Define. 9785 * tests/mpn/t-toom8h.c (COUNT): Define. 9786 9787 * tests/mpn/t-div.c: Cast a switch index to placate HP's cc. 9788 * tests/mpn/t-bdiv.c: Likewise. 9789 9790 * mpn/pa64/aors_n.asm: Fix support of the 2.0n ABI. 9791 97922010-02-24 Marco Bodrato <bodrato@mail.dm.unipi.it> 9793 9794 * tests/mpz/t-bin.c (data): Replace (2k,k), tested by twos (). 9795 * tests/mpf/t-inp_str.c (data): Test also "+" in the exponent. 9796 97972010-02-23 Torbjorn Granlund <tege@gmplib.org> 9798 9799 * mpn/generic/mod_1_3.c: Cast a switch index to placate HP's cc. 9800 9801 * mpn/generic/sqrtrem.c: Use CNST_LIMB. 9802 98032010-02-20 Niels Möller <nisse@lysator.liu.se> 9804 9805 * tune/speed.h (mpn_gcd_accel): Deleted prototype. 9806 (mpn_hgcd_lehmer): New prototype. 9807 (MPN_HGCD_LEHMER_ITCH): New macro (previously in gmp-impl.h). 9808 9809 * tune/Makefile.am (libspeed_la_SOURCES): Added hgcd_lehmer.c. 9810 * tune/hgcd_lehmer.c: New file. 9811 * tune/gcd_accel.c: Deleted obsolete file. 9812 9813 * gmp-impl.h (MPN_HGCD_LEHMER_ITCH): Deleted macro. 9814 9815 * mpn/generic/hgcd.c (mpn_hgcd_lehmer): Deleted function, 9816 (mpn_hgcd): Don't call mpn_hgcd_lehmer, instead use inlined loop 9817 around hgcd_step. 9818 (mpn_hgcd_itch): Substitute n for MPN_HGCD_LEHMER_ITCH (n). 9819 98202010-02-19 Niels Möller <nisse@lysator.liu.se> 9821 9822 * Makefile.am (mpn/jacobitab.h): Added the rules needed to 9823 generate this file. 9824 9825 * gen-jacobitab.c: New file. 9826 98272010-02-19 Torbjorn Granlund <tege@gmplib.org> 9828 9829 * mpn/generic/powm.c: Honour SQR_BASECASE_THRESHOLD in innerloop 9830 expansions. 9831 98322010-02-16 Niels Möller <nisse@lysator.liu.se> 9833 9834 * tune/time.c (cgt_works_p): Added rudimentary sanity check for 9835 clock_gettime working. 9836 98372010-02-15 Niels Möller <nisse@lysator.liu.se> 9838 9839 * tune/time.c (speed_time_init): Make use of cycle counter 9840 configurable, via the speed_option_cycles_broken flag. 9841 * tune/common.c (speed_option_cycles_broken): New global variable. 9842 (speed_option_set): Recognize option "cycles-broken". 9843 9844 * tune/time.c (cycles_works_p): Deleted hack to disable cycle 9845 counter on linux. Needs to be replaced by something more 9846 selective. 9847 98482010-02-11 Niels Möller <nisse@lysator.liu.se> 9849 9850 * tune/time.c (speed_time_init): Fix speed_time_string when using 9851 clock_gettime. 9852 (cycles_works_p): On linux, don't use the cycle counter. 9853 9854 * tune/Makefile.am: Add $(TUNE_LIBS) when linking programs. 9855 9856 * configure.in: Check if -lrt is needed for clock_gettime, and if 9857 so, add that flag to TUNE_LIBS. 9858 98592010-02-07 Torbjorn Granlund <tege@gmplib.org> 9860 9861 * tune/tuneup.c (tune_redc): Set min_size and min_is_always when 9862 measuring REDC_1_TO_REDC_2_THRESHOLD. 9863 (tune_mod_1): Set min_size for PREINV_MOD_1_TO_MOD_1_THRESHOLD. 9864 9865 * mpn/x86_64/aorrlsh_n.asm (cnt): Fix a typo. 9866 * mpn/x86_64/lshsub_n.asm: Likewise. 9867 98682010-02-05 Torbjorn Granlund <tege@gmplib.org> 9869 9870 * Version 5.0.1 released. 9871 9872 * mpn/generic/powm.c: Use rp target area for power table computation in 9873 order to use less scratch. 9874 9875 * mpn/generic/binvert.c (mpn_binvert_itch): Enable more economical 9876 mpn_mulmod_bnm1_itch call. 9877 9878 * mpn/generic/mu_div_qr.c: Remove always true #if. 9879 * mpn/generic/mu_divappr_q.c: Likewise. 9880 * mpn/generic/mu_bdiv_q.c: Likewise. 9881 * mpn/generic/mu_bdiv_qr.c: Likewise. 9882 98832010-02-01 Torbjorn Granlund <tege@gmplib.org> 9884 9885 * Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*, LIBMP_LT_*): 9886 Bump version info. 9887 9888 * mpn/powerpc64/mode64/gmp-mparam.h: Remove {MUL,SQR}_FFT_TABLE2. 9889 * mpn/x86/p6/gmp-mparam.h: Likewise. 9890 * mpn/x86/p6/mmx/gmp-mparam.h: Likewise. 9891 * mpn/generic/mul_fft.c: Don't depend on FFT_TABLE2, it was broken. 9892 98932010-01-29 Torbjorn Granlund <tege@gmplib.org> 9894 9895 * mpn/generic/mul_fft.c (mpn_mul_fft_internal): Remove arguments n, m, 9896 k and rec; add argument sqr. Don't call mpn_mul_fft_decompose here, 9897 instead do that in all callers. 9898 (mpn_mul_fft): Trim allocation when squaring, and use TMP_ALLOC*, not 9899 explicit alloc/free. 9900 (mpn_fft_div_2exp_modF): Avoid a scalar division. 9901 (mpn_fft_mul_modF_K): Replace some multiplies by K with shifting by k. 9902 (mpn_fft_mul_2exp_modF): Make function more symmetrical. 9903 99042010-01-27 Torbjorn Granlund <tege@gmplib.org> 9905 9906 * mpn/generic/mu_div_q.c (mpn_mu_div_q_itch): Rewrite. 9907 * mpn/generic/mu_div_qr.c (mpn_mu_div_qr_itch): Re-enable 9908 better mulmod itch estimate. 9909 * mpn/generic/mu_divappr_q.c (mpn_mu_divappr_q_itch): Likewise. 9910 * mpn/generic/mu_bdiv_qr.c (mpn_mu_bdiv_qr_itch): Likewise. 9911 * mpn/generic/mu_bdiv_q.c (mpn_mu_bdiv_q_itch): Likewise. 9912 99132010-01-27 Marco Bodrato <bodrato@mail.dm.unipi.it> 9914 9915 * mpn/generic/mu_div_qr.c (mpn_mu_div_qr_itch): Disabled guessed 9916 estimate, enabled a conservative one. 9917 * mpn/generic/mu_divappr_q.c (mpn_mu_divappr_q_itch): Likewise. 9918 * mpn/generic/mu_bdiv_qr.c (mpn_mu_bdiv_qr_itch): Likewise. 9919 * mpn/generic/mu_bdiv_q.c (mpn_mu_bdiv_q_itch): Likewise. 9920 99212010-01-26 Marco Bodrato <bodrato@mail.dm.unipi.it> 9922 9923 * mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1): Partial rewrite to 9924 reduce memory usage. 9925 * mpn/generic/sqrmod_bnm1.c (mpn_sqrmod_bnm1): Likewise. 9926 (mpn_sqrmod_bnm1_next_size): New function. 9927 9928 * gmp-impl.h (mpn_mulmod_bnm1_itch): Accepts 3 parameters now. 9929 (mpn_sqrmod_bnm1_itch): New inline function. 9930 (mpn_sqrmod_bnm1_next_size): Declaration and mangling. 9931 * mpn/generic/nussbaumer_mul.c: Use the new functions. 9932 9933 * mpn/generic/invertappr.c (mpn_ni_invertappr): Use new syntax for 9934 mpn_mulmod_bnm1_itch. 9935 * mpn/generic/mu_divappr_q.c (mpn_mu_divappr_q_itch): Likewise. 9936 * mpn/generic/mu_bdiv_qr.c (mpn_mu_bdiv_qr_itch): Likewise. 9937 * mpn/generic/mu_bdiv_q.c (mpn_mu_bdiv_q_itch): Likewise. 9938 * mpn/generic/mu_div_qr.c (mpn_mu_div_qr_itch): Likewise. 9939 * mpn/generic/binvert.c (mpn_binvert_itch): Likewise. 9940 * tune/speed.h (SPEED_ROUTINE_MPN_MULMOD_BNM1_CALL): Likewise. 9941 (SPEED_ROUTINE_MPN_MULMOD_BNM1_ROUNDED): Likewise. 9942 9943 * tests/mpn/t-sqrmod_bnm1.c, tests/mpn/t-mulmod_bnm1.c: Test 9944 reduced memory usage. 9945 99462010-01-25 Torbjorn Granlund <tege@gmplib.org> 9947 9948 * tune/tuneup.c (INSERT_FFTTAB): New macro, like old insertion code but 9949 also inserting a sentinel. 9950 (fftmes): Use INSERT_FFTTAB for inserting new measurements. 9951 Limit k range to best_k - 4 ... best_k + 4. 9952 99532010-01-23 Torbjorn Granlund <tege@gmplib.org> 9954 9955 * gmp-h.in (__GNU_MP_VERSION_PATCHLEVEL): Bump. 9956 (__GMP_MP_RELEASE): New macro. 9957 9958 * mpf/div.c: Rewrite to use mpn_div_q. 9959 99602010-01-21 Torbjorn Granlund <tege@gmplib.org> 9961 9962 * Add FFT_TABLE3 tables for a basic set of machines. 9963 9964 * configure.in: Use -mtune=nocona for 64-bit pentium4. 9965 9966 * config.guess: Recognise many more Intel processors. 9967 9968 * tune/common.c: Whitespace cleanup. 9969 (speed_mpn_matrix22_mul): Rewrite. 9970 99712010-01-21 Niels Möller <nisse@lysator.liu.se> 9972 9973 * mpn/generic/nussbaumer_mul.c (mpn_nussbaumer_mul): Take 9974 advantage of new mpn_mulmod_bnm1 interface, to reduce allocation. 9975 9976 * tests/mpn/t-mulmod_bnm1.c (ref_mulmod_bnm1, main): Adapted to 9977 mpn_mulmod_bnm1 interface change. 9978 9979 * mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1): Interface change, 9980 in case an + bn < rn, only write an + bn output limbs. New input 9981 requirement, an + bn > rn/2. 9982 * mpn/generic/sqrmod_bnm1.c (mpn_sqrmod_bnm1): Corresponding 9983 changes. 9984 99852010-01-19 Torbjorn Granlund <tege@gmplib.org> 9986 9987 * tune/tuneup.c (fftmes): Round up initial n according to initial k. 9988 Limit k to 24 in loop. Remove an obsolete always-true condition. 9989 Remove a redundant trace printout. 9990 99912010-01-18 Torbjorn Granlund <tege@gmplib.org> 9992 9993 * tune/tuneup.c (fftmes): New function 9994 (fft): Rewrite. 9995 (mpn_mul_fft_lcm): New function, copied from mpn/generic/mul_fft.c. 9996 (fftfill): New function, code taken from mul_fft.c (mpn_mul_fft). 9997 (cached_measure): New function. 9998 9999 * gmp-impl.h (struct fft_table_nk): Moved from mul_fft.c. 10000 (MUL_FFT_TABLE3, SQR_FFT_TABLE3): Provide dummy versions for tuneup 10001 builds. 10002 (FFT_TABLE3_SIZE): Increase value for tuneup builds. 10003 10004 * mpn/generic/mul_fft.c: Handle a new FFT threshold table type ("3"). 10005 Misc cleanups to old table type code. 10006 100072010-01-16 Torbjorn Granlund <tege@gmplib.org> 10008 10009 * mpn/x86_64/darwin.m4: Fix typo in last change. 10010 100112010-01-15 Torbjorn Granlund <tege@gmplib.org> 10012 10013 * gmp-h.in (__GMP_EXTERN_INLINE): Remove "extern" for newer Sun C. 10014 10015 * gmp-impl.h (GMP_LIMB_BYTES): New define. 10016 10017 * mpn/x86_64/darwin.m4 (LEA): New define. 10018 10019 * mpn/x86/invert_limb.asm (approx_tab): Use DEF_OBJECT. 10020 Rename and globalise it to work around Mac OS bug. 10021 10022 With Philip McLaughlin: 10023 * mpn/x86_64/gcd_1.asm (ctz_table): Don't use local prefix, but 10024 use DEF_OBJECT...END_OBJECT. 10025 Keep stack pointer at ABI mandated alignment over call. 10026 100272010-01-12 Torbjorn Granlund <tege@gmplib.org> 10028 10029 * tune/speed.c (routine): Remove obsolete mpn_dc_tdiv_qr and 10030 mpn_dc_div_qr_n. 10031 * tune/common.c (speed_mpn_dc_tdiv_qr, speed_mpn_dcpi1_div_qr_n): 10032 Remove now unused functions. 10033 * tune/speed.h (SPEED_ROUTINE_MPN_DC_DIVREM_N, 10034 SPEED_ROUTINE_MPN_DC_DIVREM_SB, SPEED_ROUTINE_MPN_DC_TDIV_QR): Remove 10035 now unused macros. 10036 10037 * mpn/x86_64/fat/fat_entry.asm (mpn_cpuid_available): Remove function. 10038 10039 * ltmain.sh: Upgrade from 1.5.24 to 2.2.6b. 10040 * ylwrap: New file. 10041 * .bootstrap: Remove explicit versions. 10042 10043 * doc/gmp.texi (Block-wise Barrett Division): New node. 10044 10045 * mpn/generic/powm.c: Change some #if to plain 'if' to avoid fat build 10046 problems. 10047 100482010-01-11 Torbjorn Granlund <tege@gmplib.org> 10049 10050 * tune/speed.h (SPEED_ROUTINE_MPN_PI1_DIV): Accept arguments for size 10051 restrictions. 10052 * tune/common.c (speed_mpn_sbpi1_div_qr, speed_mpn_dcpi1_div_qr, 10053 (speed_mpn_sbpi1_divappr_q, speed_mpn_dcpi1_divappr_q): Pass size 10054 limits for SPEED_ROUTINE_MPN_PI1_DIV. 10055 10056 * tune/speed.c (routine): Allow .r argument for mpn_sbpi1_divappr_q and 10057 mpn_dcpi1_divappr_q. 10058 100592010-01-08 Torbjorn Granlund <tege@gmplib.org> 10060 10061 * Version 5.0.0 released. 10062 10063 * mpn/generic/div_q.c: Handle mpn_*_divappr_q returning high limb 10064 everywhere. 10065 100662010-01-07 Torbjorn Granlund <tege@gmplib.org> 10067 10068 * Update MUL_FFT_TABLE2 and SQR_FFT_TABLE2 for many machines. 10069 10070 * mpn/generic/mu_div_q.c: Account for divisor truncation error as well 10071 as mpn_mu_divappr_q's error. 10072 10073 * mpn/generic/mu_div_q.c: Handle mpn_preinv_mu_divappr_q returning a 10074 high limb. 10075 10076 * tests/mpn/t-bdiv.c: Move a random call for debugability. 10077 * tests/mpn/t-div.c: Likewise. 10078 10079 * mpn/generic/mu_divappr_q.c: Rewrite quotient round-up code. 10080 10081 * mpn/generic/mu_div_qr.c: Handle carry-out from a carry propagation 10082 subtract. 10083 * mpn/generic/mu_divappr_q.c: Likewise. 10084 10085 * mpn/generic/mu_divappr_q.c 10086 (mpn_preinv_mu_divappr_q, mpn_mu_divappr_q): Declare dividend constant. 10087 * gmp-impl.h: Likewise. 10088 10089 * perfpow.c (mpn_perfect_power_p): Call mpn_divexact instead of 10090 mpn_bdiv_q (with too little scratch space!). 10091 10092 From Niels Möller: 10093 * tests/mpn/t-div.c (check_one): Get rid of the poorly managed variable 10094 tn. 10095 10096 * mpn/minithres/gmp-mparam.h: Add all lately defined thresholds. 10097 10098 * mpn/generic/div_q.c: Use SB division for small quotients as well as 10099 small divisors. Fix typo in itch call. 10100 101012010-01-06 Niels Möller <nisse@lysator.liu.se> 10102 10103 * tests/mpn/t-div.c (check_one): Checking based on multiplication, 10104 refmpn_mul, rather than refmpn_tdiv_qr. 10105 101062010-01-06 Marco Bodrato <bodrato@mail.dm.unipi.it> 10107 10108 * mpn/generic/toom8h_mul.c: Avoid overflows of mp_size_t. 10109 101102010-01-06 Torbjorn Granlund <tege@gmplib.org> 10111 10112 * gmp-h.in (__GNU_MP__): Bump. 10113 (__GNU_MP_VERSION,__GNU_MP_VERSION_MINOR,__GNU_MP_VERSION_PATCHLEVEL): 10114 Bump version info. 10115 * mp-h.in (__GNU_MP__): Bump. 10116 * Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*, LIBMP_LT_*): 10117 Bump version info. 10118 10119 * doc/gmp.texi: Rewrite mpn_gcdext text. Remove some out-of-date 10120 text in Algorithms chapter. 10121 10122 * mpn/generic/div_q.c: Properly handle np=scratch. Fix critical typo 10123 in final adjustment code. Misc cleanups. 10124 10125 * mpn/generic/rootrem.c: Use mpn_div_q. 10126 * mpz/tdiv_q.c: Likewise. 10127 10128 * tests/mpn/t-div.c: Test mpn_div_q. 10129 (SIZE_LOG): Up to 17. 10130 10131 * mpn/generic/div_q.c: New file. 10132 * configure.in (gmp_mpn_functions): Add div_q. 10133 10134 * mpn/generic/mu_div_q.c: Actually declare dividend constant. 10135 101362010-01-04 Torbjorn Granlund <tege@gmplib.org> 10137 10138 * tune/tuneup.c (fft): Separate tuning of modf and full products. 10139 (struct fft_param_t): New field, mul_modf_function. 10140 (tune_fft_sqr): Fix typo. 10141 (tune_fft_mul, tune_fft_sqr): Initialise mul_modf_function field. 10142 * tune/common.c (speed_mpn_fft_mul, speed_mpn_fft_sqr): New functions. 10143 10144 * tune/speed.h (SPEED_ROUTINE_MPN_MULMOD_BNM1_ROUNDED): Clean up. 10145 10146 * mpn/generic/mul.c: Simplify rational expression. 10147 10148 * gmp-impl.h: Cleanup threshold variables; remove obsolete ones and 10149 make all possibly needed definitions for existing ones. 10150 * tune/tuneup.c (tune_mul): Write fractions-compensated values to 10151 threshold variables. 10152 101532010-01-03 Marco Bodrato <bodrato@mail.dm.unipi.it> 10154 10155 * tune/common.c, tune/speed.c, tune/speed.h: Support measuring 10156 mpn_toom43_mul. 10157 10158 * mpn/generic/toom_interpolate_6pts.c: Small reorganisation. 10159 101602010-01-03 Torbjorn Granlund <tege@gmplib.org> 10161 10162 * gmp-impl.h (MUL_TO_MULMOD_BNM1_FOR_2NXN_THRESHOLD): Default to 10163 INV_MULMOD_BNM1_THRESHOLD/2 instead. 10164 10165 * gmp-impl.h (INV_APPR_THRESHOLD, INV_MULMOD_BNM1_THRESHOLD): Default 10166 here... 10167 * mpn/generic/invert.c, mpn/generic/invertappr.c: ...not here. 10168 10169 * tests/mpn/t-div.c: Rewrite operand generation code. 10170 101712010-01-02 Torbjorn Granlund <tege@gmplib.org> 10172 10173 * gmp-impl.h (MUL_TO_MULMOD_BNM1_FOR_2NXN_THRESHOLD): Default to 10174 INV_MULMOD_BNM1_THRESHOLD. 10175 101762010-01-02 Marco Bodrato <bodrato@mail.dm.unipi.it> 10177 10178 * mpn/generic/dcpi1_div_q.c: Handle divappr approximation problem more 10179 efficiently. 10180 * mpn/generic/mu_div_q.c: Likewise. 10181 10182 * mpn/generic/invert.c: Remove duplicated code. 10183 101842010-01-01 Torbjorn Granlund <tege@gmplib.org> 10185 10186 * gmp-impl.h (MUL_TO_MULMOD_BNM1_FOR_2NXN_THRESHOLD): Default to 0. 10187 10188 * mpn/generic/mu_div_qr.c: Rewrite to use mpn_mulmod_bnm1. Clean up 10189 scratch usage. Improve itch functions. 10190 * mpn/generic/mu_divappr_q.c: Likewise. 10191 * mpn/generic/mu_bdiv_qr.c: Likewise. 10192 * mpn/generic/mu_div_q.c: Likewise. 10193 10194 * mpn/generic/dcpi1_bdiv_qr.c: Add parameter ASSERTs. 10195 * mpn/generic/dcpi1_bdiv_q.c: Likewise. 10196 10197 * tests/mpn/t-bdiv.c: Replace with unit testing code, based on t-div.c. 10198 Increase COUNT to 500. 10199 10200 * tests/mpn/t-div.c: Avoid generating too small test operands. 10201 Move SB suppression limit downwards. Increase COUNT to 200. 10202 102032009-12-31 Torbjorn Granlund <tege@gmplib.org> 10204 10205 * mpn/generic/tdiv_qr.c: Handle numerator/remainder overlap in MU case. 10206 10207 * tests/tests.h (TESTS_REPS): New macro. 10208 * tests/mpz/dive.c: Use larger operands, decrease default reps, use 10209 TESTS_REPS. 10210 * tests/mpz/convert.c: Likewise. 10211 * tests/mpz/t-sqrtrem.c: Likewise. 10212 * tests/mpz/reuse: Likewise. 10213 * tests/mpz/t-root.c: Likewise. 10214 * tests/mpz/t-tdiv.c: Likewise. 10215 * tests/mpz/t-gcd.c: Likewise. 10216 * tests/mpz/t-powm.c: Likewise. 10217 102182009-12-31 Marco Bodrato <bodrato@mail.dm.unipi.it> 10219 10220 * mpn/generic/toom8_sqr.c (SQR_TOOM8_MAX): Avoid overflow. 10221 * mpn/generic/toom6_sqr.c (SQR_TOOM6_MAX): Likewise. 10222 10223 * mpn/generic/mulmod_bnm1.c: Don't mention MISUSE any more, 10224 simply consider UNLIKELY any unexpected size. 10225 102262009-12-31 Torbjorn Granlund <tege@gmplib.org> 10227 10228 * tune/tuneup.c (speed_mpn_sbordcpi1_div_qr): New function. 10229 (tune_mu_div): Use it. 10230 102312009-12-30 Torbjorn Granlund <tege@gmplib.org> 10232 10233 * tune/tuneup.c (tune_mu_bdiv, tune_dc_bdiv, tune_mu_div) 10234 (tune_dc_div): Clear global s.r to make speed functions do 2n/n. 10235 10236 * tune/speed.c (routine): New entries for mpn_mu_div_qr and 10237 mpn_mupi_div_qr. Allow .r parameter for mpn_sbpi1_div_qr, 10238 mpn_dcpi1_div_qr. 10239 * tune/speed.h (SPEED_ROUTINE_MPN_PI1_DIV, SPEED_ROUTINE_MPN_MU_DIV_QR) 10240 (SPEED_ROUTINE_MPN_MUPI_DIV_QR): Handle .r parameter. 10241 10242 * tests/mpz/t-tdiv.c: Increase operands size again. 10243 10244 * mpn/generic/tdiv_qr.c: Attempt to choose between DC and MU cleverer. 10245 10246 * mpn/generic/tdiv_qr.c: Don't overwrite rp with unnecessary temporary 10247 alloc. 10248 102492009-12-29 Torbjorn Granlund <tege@gmplib.org> 10250 10251 * tune/tuneup.c (tune_mu_div): Tune MUPI_DIV_QR_THRESHOLD. 10252 * tune/speed.h (struct speed_params): Allow 3 source operands. 10253 (SPEED_ROUTINE_MPN_MUPI_DIV_QR): New macro. 10254 * tune/common.c (speed_mpn_mupi_div_qr): New function. 10255 10256 * mpn/generic/tdiv_qr.c: Call mpn_mu_div_qr. 10257 10258 * tests/mpz/t-tdiv.c: Use larger test operands. 10259 10260 * mpn/generic/mu_div_qr.c (mpn_mu_div_qr2): Remove code for dn==1. 10261 10262 * mpz/mul.c: Call mpn_sqr directly. Use PTR,SIZ,ALLOC. 10263 10264 * tune/tuneup.c (tune_mu_div): Set min_size to 6, DC functions require 10265 this. 10266 10267 * tests/mpn/t-div.c: Call mu_div functions with operands that generate 10268 a high quotient limb. 10269 10270 * mpn/generic/mu_div_qr.c: Rewrite to return a high quotient limb, 10271 to let dividend argument be constant, and as a general cleanup. 10272 * mpn/generic/mu_divappr_q.c: Likewise. 10273 * mpn/generic/mu_div_q.c: Likewise. 10274 * gmp-impl.h: Update declarations of changed functions. 10275 10276 * mpn/generic/invertappr.c (mpn_invertappr): Allocate scratch space 10277 when caller passed NULL. 10278 102792009-12-28 Torbjorn Granlund <tege@gmplib.org> 10280 10281 * mpn/generic/toom_couple_handling.c: Prefix name with mpn_. 10282 * gmp-impl.h: Likewise. 10283 * mpn/generic/toom63_mul.c: Likewise. 10284 * mpn/generic/toom6_sqr.c: Likewise. 10285 * mpn/generic/toom6h_mul.c: Likewise. 10286 * mpn/generic/toom8_sqr.c: Likewise. 10287 * mpn/generic/toom8h_mul.c: Likewise. 10288 10289 * configure.in (gmp_mpn_functions_optional) Move "com" from here... 10290 (gmp_mpn_functions): ...to here. 10291 * mpn/generic/com.c: New file. 10292 * (mpn_com): New name for mpn_com_n. Make public. 10293 * (mpn_neg): Analogous changes. 10294 10295 * tune/tuneup.c (tune_mu_div, tune_mu_bdiv): Set step_factor. 10296 10297 * tune/common.c, tune/speed.c, tune/speed.h: Support measuring 10298 mpn_lshiftc. 10299 10300 * tests/devel/try.c: Test mpn_lshiftc. 10301 * tests/refmpn.c (refmpn_com): New function. 10302 (refmpn_lshiftc): Likewise. 10303 10304 * configure.in (gmp_mpn_functions_optional) Move lshiftc from here... 10305 (gmp_mpn_functions): ...to here. 10306 * mpn/generic/lshiftc.c: New file. 10307 * mpn/x86_64/lshiftc.asm: New file. 10308 * mpn/x86_64/core2/lshiftc.asm: New file. 10309 * mpn/generic/mul_fft.c (mpn_lshiftc): Remove. 10310 10311 * mpn/x86_64/core2/lshift.asm: Tweak for better Core iN performance. 10312 * mpn/x86_64/core2/rshift.asm: Likewise. 10313 103142009-12-27 Marco Bodrato <bodrato@mail.dm.unipi.it> 10315 10316 * mpn/generic/mul.c: Use toom6h and toom8h for almost balanced. 10317 10318 * mpn/generic/mullo_n.c (mpn_dc_mullo_n): New ratio, to be used in 10319 Toom-8 range. 10320 103212009-12-27 Torbjorn Granlund <tege@gmplib.org> 10322 10323 * (mpn_sqr): New name for mpn_sqr_n. Many files affected. 10324 10325 * tune/tuneup.c (tune_mullo): Up step_factor for MULLO_MUL_N_THRESHOLD. 10326 (tune_invertappr, tune_invert, tune_binvert): Let max_size default. 10327 10328 * tune/tuneup.c (tune_mu_div, tune_mu_bdiv) New functions. 10329 * tune/speed.h (SPEED_ROUTINE_MPN_MU_DIV_Q): New macro. 10330 (SPEED_ROUTINE_MPN_MU_DIV_QR): Likewise. 10331 (SPEED_ROUTINE_MPN_MU_BDIV_Q): Likewise. 10332 (SPEED_ROUTINE_MPN_MU_BDIV_QR): Likewise. 10333 * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add bdiv_q.c and bdiv_qr.c. 10334 * tune/common.c (speed_mpn_mu_div_qr): New function. 10335 (speed_mpn_mu_divappr_q): Likewise. 10336 (speed_mpn_mu_div_q): Likewise. 10337 (speed_mpn_mu_bdiv_q): Likewise. 10338 (speed_mpn_mu_bdiv_qr): Likewise. 10339 10340 * mpn/*/gmp-mparam.h: Fix incorrect MOD_1U_TO_MOD_1_1_THRESHOLD 0 10341 values. 10342 10343 * gmp-impl.h (MODEXACT_1_ODD_THRESHOLD): Remove. 10344 (BMOD_1_TO_MOD_1_THRESHOLD): New parameter, with the reverse meaning of 10345 MODEXACT_1_ODD_THRESHOLD. 10346 (MPN_MOD_OR_MODEXACT_1_ODD): Use BMOD_1_TO_MOD_1_THRESHOLD. 10347 * mpn/generic/divis.c, mpz/{cong.c,cong_ui.c,divis_ui.c}: Likewise. 10348 * tune/tuneup.c (tune_modexact_1_odd): Tune BMOD_1_TO_MOD_1_THRESHOLD; 10349 Do not assume native mpn_modexact_1_odd is faster than mpn_mod_1. 10350 (tuned_speed_mpn_mod_1): Remove variable. 10351 (tune_mod_1): Fix thinkos. Suppress printing of "always" etc. 10352 (all): Measure for divrem_1, mod_1, divexact_1, etc first, since Toom 10353 depends on some of them. 10354 10355 * mpn/generic/toom22_mul.c (TOOM22_MUL_REC): New name for 10356 TOOM22_MUL_MN_REC. 10357 103582009-12-26 Niels Möller <nisse@lysator.liu.se> 10359 10360 * tests/mpn/t-toom32.c (MIN_AN, MIN_BN, MAX_BN): Relax 10361 requirements a bit. 10362 10363 * mpn/generic/toom32_mul.c (mpn_toom32_mul): Relax requirement on 10364 input sizes, to support s+t>=n (used to be s+t>=n+2). Keep high 10365 limbs of the evaluated values in scalar variables. 10366 10367 * mpn/generic/sbpi1_divappr_q.c (mpn_sbpi1_divappr_q): Remove 10368 unused variables. 10369 10370 * mpn/generic/toom32_mul.c (mpn_toom32_mul): Fixed left-over use 10371 of mpn_addsub_n which should be mpn_add_n_sub_n. 10372 103732009-12-26 Marco Bodrato <bodrato@mail.dm.unipi.it> 10374 10375 * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add new toom files (spotted by Torbjorn). 10376 10377 * gmp-impl.h (mpn_toom6_sqr_itch): Rename to mpn_toom6_mul_n_itch and redefine. 10378 (mpn_toom8_sqr_itch): Rename to mpn_toom8_mul_n_itch and redefine. 10379 * mpn/generic/mul_n.c: Use renamed _itch macros. 10380 103812009-12-25 Niels Möller <nisse@lysator.liu.se> 10382 10383 * tests/mpn/t-toom32.c (MIN_AN, MIN_BN, MAX_BN): Tightened requirements. 10384 * gmp-impl.h (mpn_toom32_mul_itch): Updated. Less scratch needed 10385 by toom32 itself, and also the pointwise multiplications are 10386 currently mpn_mul_n with no supplied scratch. 10387 * mpn/generic/toom32_mul.c (mpn_toom32_mul): Reorganized 10388 interpolation to use less scratch space. No longer supports the 10389 most extreme size ratios. 10390 103912009-12-25 Torbjorn Granlund <tege@gmplib.org> 10392 10393 * tune/tuneup.c (tune_preinv_mod_1): Purge. 10394 (tune_mod_1): Use speed_mpn_mod_1_tune for 10395 PREINV_MOD_1_TO_MOD_1_THRESHOLD 10396 10397 * mpn/generic/dcpi1_divappr_q.c: Handle 2n/n properly. Don't use full 10398 precision in mpn_sbpi1_divappr_q call. Misc cleanup. 10399 10400 * tune/tuneup.c (tune_mod_1): Add a check_size for 10401 PREINV_MOD_1_TO_MOD_1_THRESHOLD. 10402 104032009-12-24 Torbjorn Granlund <tege@gmplib.org> 10404 10405 * tune/mod_1_div.c (MOD_1N_TO_MOD_1_1_THRESHOLD, 10406 (MOD_1U_TO_MOD_1_1_THRESHOLD): Set. 10407 * tune/mod_1_inv.c (MOD_1N_TO_MOD_1_1_THRESHOLD, 10408 (MOD_1U_TO_MOD_1_1_THRESHOLD): Set. 10409 10410 * gmp-impl.h (USE_PREINV_MOD_1): Remove. 10411 (MPN_MOD_OR_PREINV_MOD_1): Define to choose functions dynamically in 10412 terms of PREINV_MOD_1_TO_MOD_1_THRESHOLD (used to choose statically 10413 using USE_PREINV_MOD_1). 10414 * mpn/generic/perfsqr.c (PERFSQR_MOD_PP): Corresponding updates. 10415 10416 * tune/tuneup.c (tune_mod_1): Rewrite. 10417 * gmp-impl.h (MOD_1N_TO_MOD_1_1_THRESHOLD): New. 10418 (MOD_1U_TO_MOD_1_1_THRESHOLD): New name for MOD_1_1_THRESHOLD. 10419 (MOD_1_1_TO_MOD_1_2_THRESHOLD): Mew name for MOD_1_2_THRESHOLD. 10420 (MOD_1_2_TO_MOD_1_4_THRESHOLD): New name for MOD_1_4_THRESHOLD. 10421 * mpn/generic/mod_1.c: Corresponding updates. 10422 104232009-12-24 Marco Bodrato <bodrato@mail.dm.unipi.it> 10424 10425 * mpn/generic/mul_n.c: Use also toom6h and toom8h. 10426 * mpn/generic/sqr_n.c: Use also toom6 and toom8. 10427 * gmp-impl.h: Initial support for tuning of Toom-6half and Toom-8half. 10428 * tune/tuneup.c: Tune Toom-6half and Toom-8half thresholds. 10429 104302009-12-24 Torbjorn Granlund <tege@gmplib.org> 10431 10432 * mpn/generic/mod_1_4.c: Get ASSERT right. 10433 * mpn/generic/mod_1_3.c: Likewise. 10434 * mpn/generic/mod_1_2.c: Likewise. 10435 10436 * mpn/generic/powm_sec.c: Use SQR_TOOM2_THRESHOLD as limit for a native 10437 mpn_sqr_basecase, not TUNE_SQR_TOOM2_MAX. 10438 104392009-12-23 Marco Bodrato <bodrato@mail.dm.unipi.it> 10440 10441 * tune/common.c, tune/speed.c, tune/speed.h: Support for measuring 10442 mpn_toom8h_mul and mpn_toom8_sqr speed. 10443 10444 * mpn/generic/toom_eval_pm2exp.c: Fix ASSERTs. 10445 10446 * mpn/generic/toom8h_mul.c: New file. 10447 * mpn/generic/toom8_sqr.c: New file. 10448 * mpn/generic/toom_interpolate_16pts.c: New file. 10449 * gmp-impl.h: Provide corresponding declarations. 10450 * configure.in (gmp_mpn_functions): List toom_interpolate_16pts, 10451 toom8h_mul, and toom8h_sqr. 10452 * tests/mpn/t-toom8h.c: New test program. 10453 10454 * mpn/generic/toom6_sqr.c: New file, was part of toom6h_mul. 10455 * mpn/generic/toom6h_mul.c: Removed _sqr. 10456 10457 * mpn/generic/mulmod_bnm1.c: Nailify CRT. 10458 * mpn/generic/sqrmod_bnm1.c: Likewise. 10459 10460 * mpn/generic/mullo_n.c: Split dc_mullo_n function; 10461 ALLOC memory at once. 10462 10463 * mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Update. 10464 10465 * mpn/generic/toom6h_mul.c: Add prefix to toom_interpolate_12pts. 10466 * mpn/generic/toom_interpolate_12pts.c: Likewise. 10467 10468 * mpn/generic/invertappr.c (mpn_bc_invertappr): Use mpn_divrem_2. 10469 * mpn/generic/invert.c: Faster basecase, use mpn_sbpi1_div_q. 10470 10471 * mpn/generic/toom_eval_pm2exp.c: Assert support for degree 3. 10472 * mpn/generic/toom6h_mul.c: Avoid obsolete _itch function. 10473 104742009-12-23 Torbjorn Granlund <tege@gmplib.org> 10475 10476 * tune/common.c, tune/speed.c, tune/speed.h: Support for measuring 10477 mpn_mod_1_1p, mpn_mod_1s_2p, mpn_mod_1s_3p, mpn_mod_1s_4p. 10478 10479 * tests/mpz/t-powm.c: Test mpz_powm_sec. 10480 10481 * mpz/powm_sec.c: New file. 10482 * gmp-h.in: Declare it. 10483 * Makefile.am, mpz/Makefile.am: Compile it. 10484 * doc/gmp.texi: Document it. 10485 10486 * mpn/generic/powm_sec.c (mpn_powm_sec_itch): New function. 10487 (mpn_powm_sec): Use passed scratch, no local allocation. 10488 Allow exp argument = 1. 10489 (win_size): Start loop from 1. 10490 10491 * mpn/generic/powm.c (win_size): Start loop from 1. 10492 104932009-12-22 Torbjorn Granlund <tege@gmplib.org> 10494 10495 * tests/mpn/t-div.c: New file. 10496 * tests/mpn/Makefile.am: Compile it. 10497 10498 * mpn/generic/mu_divappr_q.c: Handle quotient overflow. 10499 10500 * mpn/generic/mu_div_q.c (mpn_mu_div_q_itch): New function. 10501 105022009-12-22 Niels Möller <nisse@lysator.liu.se> 10503 10504 * mpn/generic/sbpi1_div_q.c: Use udiv_qr_3by2. Intended to change 10505 nothing after preprocessing. 10506 10507 * mpn/generic/sbpi1_divappr_q.c: For the last call to udiv_qr_3by2, 10508 avoid using memory locations as output parameters, and revert to 10509 explicitly copying n1 and n0 to memory. 10510 10511 * gmp-impl.h (udiv_qr_3by2): Tweaked to expand to precisely the 10512 same code as was used before the introduction of this macro. 10513 Eliminated some local variables, instead do multiple updates to 10514 the output parameters. 10515 105162009-12-22 Torbjorn Granlund <tege@gmplib.org> 10517 10518 * tests/mpn/t-toom6h.c (MIN_AN): Set to MUL_TOOM6H_THRESHOLD to avoid 10519 invalid recursive sizes. 10520 10521 * tests/mpn/t-bdiv.c: Get itch function calls right. 10522 10523 * mpn/generic/mu_bdiv_q.c (mpn_mu_bdiv_q_itch): Rewrite. 10524 * mpn/generic/mu_bdiv_qr.c (mpn_mu_bdiv_qr_itch): Simplify. 10525 10526 * mpn/generic/bdiv_qr.c (mpn_bdiv_qr): Simplify, don't allocate. 10527 (mpn_bdiv_qr_itch): Conditionalise on MU_BDIV_QR_THRESHOLD. 10528 105292009-12-18 Niels Möller <nisse@lysator.liu.se> 10530 10531 * tests/mpn/t-bdiv.c: Add red-zones. 10532 105332009-12-21 Torbjorn Granlund <tege@gmplib.org> 10534 10535 * mpn/generic/sbpi1_div_q.c: Fix fixup code to work for qn = 0. 10536 10537 * mpn/generic/dcpi1_divappr_q.c: Handle qn = 1 and qn = 2 for initial 10538 quotient block (code block copied from dcpi1_div_qr.c). 10539 10540 * mpn/generic/dcpi1_div_qr.c: Rewrite singular case giving q limb of 10541 GMP_NUMB_MAX. Remove an impossible qn = 0 case. 10542 10543 * mpn/generic/dcpi1_bdiv_q.c: Remove a spurious mpn_sub_1. 10544 10545 * mpn/generic/mul.c: Put back call to mpn_mul_n. 10546 10547 * tune/tuneup.c (all): Call tune_mulmod_bnm1 before tuning fft due to 10548 dependency on mulmod_bnm1 from both mul_fft_mul and from mullo_n. 10549 10550 * mpn/generic/dcpi1_divappr_q.c: ASSERT that dn >= 6 and nn > dn. 10551 * mpn/generic/dcpi1_div_q.c: ASSERT that dn >= 6 and nn-dn >= 3. 10552 * mpn/generic/dcpi1_div_qr.c: ASSERT that dn >= 6 and nn-dn >= 3. 10553 10554 * mpn/generic/bdiv_q_1.c (mpn_pi1_bdiv_q_1): Renamed from 10555 mpn_bdiv_q_1_pi1. 10556 * All references changed. 10557 10558 * configure.in: Add --enable-old-fft-full. 10559 * tune/speed.c (routine): Conditionalise mpn_mul_fft_full references on 10560 WANT_OLD_FFT_FULL. 10561 * tune/common.c (speed_mpn_mul_fft_full) 10562 (speed_mpn_mul_fft_full_sqr): Likewise. 10563 * mpn/generic/mul_fft.c (mpn_mul_fft_full): Include iff 10564 WANT_OLD_FFT_FULL. 10565 105662009-12-21 Marco Bodrato <bodrato@mail.dm.unipi.it> 10567 10568 * gmp-impl.h (mpn_toom6h_mul_itch): New inline function. 10569 (MUL_TOOM6H_THRESHOLD): Default value. 10570 (SQR_TOOM6_THRESHOLD): Default value. 10571 * mpn/generic/toom6h_mul.c: Remove definitions moved to gmp-impl.h. 10572 * tune/common.c, tune/speed.c, tune/speed.h: Support for measuring 10573 mpn_toom6h_mul and mpn_toom6_sqr speed. 10574 10575 * mpn/generic/toom63_mul.c: Remove unused TMP_*. 10576 10577 * mpn/generic/toom_eval_pm2rexp.c: New file. 10578 * gmp-impl.h: Provide corresponding declaration. 10579 * configure.in (gmp_mpn_functions): List toom_eval_pm2rexp. 10580 * mpn/generic/toom6h_mul.c: Use shared toom_eval_pm2rexp. 10581 10582 * mpn/generic/toom_couple_handling.c: New file, helper function 10583 for high degree Toom. 10584 * gmp-impl.h: Provide corresponding declaration. 10585 * configure.in (gmp_mpn_functions): List toom_couple_handling. 10586 * mpn/generic/toom6h_mul.c: Use shared toom_couple_handling. 10587 * mpn/generic/toom63_mul.c: Likewise. 10588 10589 * mpn/generic/toom6h_mul.c: New file. 10590 * mpn/generic/toom_interpolate_12pts.c: New file. 10591 * gmp-impl.h: Provide corresponding declarations. 10592 * configure.in (gmp_mpn_functions): List toom_interpolate_12pts, 10593 toom6h_mul. 10594 * tests/mpn/t-toom6h.c: New test program. 10595 10596 * tests/mpn/t-mulmod_bnm1.c (ref_mulmod_bnm1): Use ref_mul. 10597 * tests/mpn/t-sqrmod_bnm1.c (ref_sqrmod_bnm1): Likewise. 10598 105992009-12-20 Marco Bodrato <bodrato@mail.dm.unipi.it> 10600 10601 * mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1): New CRT. 10602 * mpn/generic/sqrmod_bnm1.c (mpn_sqrmod_bnm1): Likewise. 10603 106042009-12-20 Torbjorn Granlund <tege@gmplib.org> 10605 10606 * Change all bit counts for bignums to use mp_bitcnt_t. 10607 10608 * mpn/generic/bdivmod.c: File removed. All references purged. 10609 10610 * mpn/generic/mul_fft.c (mpn_mul_fft_full): Disable. 10611 10612 * gmp-impl.h: Define mpn_fft_mul as an alias for mpn_nussbaumer_mul. 10613 * mpn/generic/mul.c: Refer mpn_fft_mul. 10614 * mpn/generic/mul_n.c: Likewise. 10615 * mpn/generic/sqr_n.c: Likewise. 10616 * mpn/generic/mullo_n.c: Likewise. 10617 10618 * mpn/generic/mul.c: Loop also over mpn_nussbaumer_mul, as suggested by 10619 Marco. Use TMP_SALLOC_LIMBS in more places. Clean up ws allocation. 10620 106212009-12-19 Marco Bodrato <bodrato@mail.dm.unipi.it> 10622 10623 * mpn/generic/toom_interpolate_8pts.c: Nailify. 10624 106252009-12-19 Torbjorn Granlund <tege@gmplib.org> 10626 10627 * mpn/generic/mul.c: Major rewrite. Use toom43, toom53, toom63. 10628 Call mpn_nussbaumer_mul for largest operands. 10629 10630 * tune/speed.h (SPEED_ROUTINE_MPN_TOOM32_FOR_TOOM43_MUL): New macro. 10631 (SPEED_ROUTINE_MPN_TOOM43_FOR_TOOM32_MUL): New macro. 10632 (SPEED_ROUTINE_MPN_TOOM32_FOR_TOOM53_MUL): New macro. 10633 (SPEED_ROUTINE_MPN_TOOM53_FOR_TOOM32_MUL): New macro. 10634 (SPEED_ROUTINE_MPN_TOOM42_FOR_TOOM53_MUL): New macro. 10635 (SPEED_ROUTINE_MPN_TOOM53_FOR_TOOM42_MUL): New macro. 10636 * tune/common.c (speed_mpn_toom63_mul): New function. 10637 (speed_mpn_toom32_for_toom43_mul): New function. 10638 (speed_mpn_toom43_for_toom32_mul): New function. 10639 (speed_mpn_toom32_for_toom53_mul): New function. 10640 (speed_mpn_toom53_for_toom32_mul): New function. 10641 (speed_mpn_toom42_for_toom53_mul): New function. 10642 (speed_mpn_toom53_for_toom42_mul): New function. 10643 * tune/tuneup.c (tune_mul_n): New name for old tune_mul. 10644 (tune_sqr_n): New name for old tune_sqr. 10645 (tune_mul): New function, for unbalanced multiplication. 10646 * gmp-impl.h: Provide declarations for corresponding threshold vars. 10647 10648 * gmp-impl.h (mpn_rsh1add_nc, mpn_rsh1sub_nc): Declare. 10649 * mpn/asm-defs.m4: Likewise. 10650 * configure.in: Add corresponding HAVE_NATIVEs. 10651 * mpn/x86_64/rsh1aors_n.asm: Add _nc entry point. 10652 106532009-12-18 Niels Möller <nisse@lysator.liu.se> 10654 10655 * mpz/divexact.c: Rewrite to use mpn_divexact. 10656 10657 * mpn/generic/bdiv_q_1.c (mpn_bdiv_q_1): Deleted some unused 10658 variables. 10659 10660 * mpn/generic/toom52_mul.c (mpn_toom52_mul) 10661 [HAVE_NATIVE_mpn_add_n_sub_n]: Moved declaration of cy to avoid a 10662 compiler warning. 10663 10664 * gmp-impl.h (gmp_pi1_t): Eliminated inv21 member. 10665 (invert_pi1): ...and don't store it here. 10666 10667 * mpn/generic/toom63_mul.c (mpn_toom63_mul): Simplified 10668 calculation of block size n. 10669 * gmp-impl.h (mpn_toom63_mul_itch): Likewise. 10670 10671 * mpn/generic/toom_eval_pm2exp.c (mpn_toom_eval_pm2exp): Fixed 10672 output asserts. 10673 106742009-12-18 Torbjorn Granlund <tege@gmplib.org> 10675 10676 * tests/mpn/t-toom63.c: New test program. 10677 106782009-12-18 Marco Bodrato <bodrato@mail.dm.unipi.it> 10679 10680 * mpn/generic/invert.c: Nailify. 10681 * mpn/generic/invertappr.c: Nailify. 10682 * mpn/generic/mulmod_bnm1.c: Nailify. 10683 * mpn/generic/sqrmod_bnm1.c: Nailify. 10684 10685 * tests/mpn/t-invert.c: New test program. 10686 10687 * mpn/generic/toom63_mul.c: New file. 10688 * mpn/generic/toom_interpolate_8pts.c: New file. 10689 * gmp-impl.h: Provide corresponding declarations. 10690 * configure.in (gmp_mpn_functions): List toom_interpolate_8pts and 10691 toom63_mul. 10692 106932009-12-17 Torbjorn Granlund <tege@gmplib.org> 10694 10695 * mpn/generic/mul.c: Move allocation of ws to where it is used. 10696 Identify toom22, 32, 42, in that order (in two places). Use midline 10697 between toom22, 32, 42. 10698 * mpn/generic/toom22_mul.c (TOOM22_MUL_MN_REC): Call also 10699 mpn_toom32_mul. 10700 10701 * doc/gmp.texi: Update References section. Update Contributors 10702 section. Misc updates. 10703 10704 * gmp-impl.h: Renew default values for all THRESHOLDs. 10705 107062009-12-17 Niels Möller <nisse@lysator.liu.se> 10707 10708 * mpn/generic/divexact.c (mpn_divexact): Don't require that the 10709 dividend is normalized. Use MPN_DIVREM_OR_PREINV_DIVREM_1. When 10710 shifting, allocate and process only the low qn+1 limbs. Eliminated 10711 code for the impossible case nn < qn. 10712 10713 * mpn/generic/dcpi1_div_qr.c (mpn_dcpi1_div_qr): Added some input 10714 asserts. 10715 10716 * mpn/generic/dcpi1_div_qr.c (mpn_dcpi1_div_qr): In the case that 10717 the initial quotient block is a single limb, use 3/2 division, 10718 thereby eliminating the only use of gmp_pi1_t->inv21. 10719 107202009-12-17 Marco Bodrato <bodrato@mail.dm.unipi.it> 10721 10722 * mpn/generic/invert.c: Added some comment. 10723 * mpn/generic/invertappr.c: Slightly better threshold handling. 10724 * gmp-impl.h (INV_NEWTON_THRESHOLD): Default to 200. 10725 10726 * mpn/generic/nussbaumer_mul.c: New file. 10727 * configure.in (gmp_mpn_functions): Add nussbaumer_mul. 10728 * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add nussbaumer_mul. 10729 * gmp-impl.h (mpn_nussbaumer_mul): Added prototype and name-mangling. 10730 * tune/speed.h (speed_mpn_nussbaumer_mul): Declare function. 10731 * tune/common.c (speed_mpn_nussbaumer_mul): New function. 10732 * tune/speed.c (routine): Add speed_mpn_nussbaumer_mul. 10733 10734 * mpn/generic/sqrmod_bnm1.c: New file. 10735 * configure.in (gmp_mpn_functions): Add sqrmod_bnm1. 10736 * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add sqrmod_bnm1. 10737 * gmp-impl.h (mpn_sqrmod_bnm1): Added prototype and name-mangling. 10738 (SQRMOD_BNM1_THRESHOLD): support for the new threshold. 10739 * tune/speed.h (speed_mpn_sqrmod_bnm1): Declare function. 10740 * tune/common.c (speed_mpn_sqrmod_bnm1): New function. 10741 * tune/speed.c (routine): Add speed_mpn_sqrmod_bnm1. 10742 * tests/mpn/t-mulmod_bnm1.c: Attribution. 10743 * tests/mpn/t-sqrmod_bnm1.c: New test file. 10744 * tests/mpn/Makefile.am (check_PROGRAMS): Add t-sqrmod_bnm1. 10745 10746 * tune/tuneup.c: Tune SQRMOD_BNM1_THRESHOLD. 10747 10748 * mpn/generic/nussbaumer_mul.c (mpn_nussbaumer_mul): Mimic fft_mul, 10749 use squaring if operands coincide. 10750 * tune/speed.h (speed_mpn_nussbaumer_mul_sqr): Declare function. 10751 * tune/common.c (speed_mpn_nussbaumer_mul_sqr): New function. 10752 * tune/speed.c (routine): Add speed_mpn_nussbaumer_mul_sqr. 10753 107542009-12-17 Torbjorn Granlund <tege@gmplib.org> 10755 10756 * mpn/generic/bdiv_q.c (mpn_bdiv_q_itch): Rewrite. 10757 107582009-12-16 Torbjorn Granlund <tege@gmplib.org> 10759 10760 * tests/mpn/t-bdiv.c (bdiv_q_valid_p, bdiv_qr_valid_p): Call refmpn_mul 10761 instead of refmpn_mul_basecase. 10762 * tests/mpn/toom-shared.h: Likewise. 10763 * tests/refmpn.c (refmpn_mullo_n,refmpn_sqr,refmpn_mul_any): Likewise. 10764 10765 * minithres/gmp-mparam.h: Add new thresholds, trim old values. 10766 10767 * mpn/generic/powm.c: Use mp_bitcnt_t for bit counts. 10768 Handle REDC_1_TO_REDC_N_THRESHOLD < MUL_TOOM22_THRESHOLD in 10769 non-WANT_REDC_2 INNERLOOP expansion code. 10770 * mpn/generic/powm_sec.c: Use mp_bitcnt_t for bit counts. 10771 107722009-12-16 Niels Möller <nisse@lysator.liu.se> 10773 10774 * tests/mpz/t-gcd.c (main): Added test case to exercise the 10775 unlikely u0 == u1 case in mpn_gcdext_lehmer_n. 10776 10777 * mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_n): Get ASSERT 10778 right. 10779 107802009-12-16 Torbjorn Granlund <tege@gmplib.org> 10781 10782 * tests/mpz/t-mul.c: Misc cleanups. 10783 (mul_basecase): Remove. 10784 (ref_mpn_mul): Remove. 10785 * tests/refmpn.c (refmpn_mul): New function, mainly from t-mul.c's 10786 ref_mpn_mul. 10787 (refmpn_mullo_n): Add a missing free. 10788 10789 * tune/speed.c (routine): Measure speed_mpn_{sb,dc}pi1_div_qr, 10790 mpn_{sb,dc}pi1_divappr_q, mpn_{sb,dc}pi1_bdiv_qr, and 10791 mpn_{sb,dc}pi1_bdiv_q. 10792 10793 * mpn/generic/invertappr.c: New file, meat from invert.c. 10794 * mpn/generic/invert.c: Leave just mpn_invert.c. 10795 * configure.in (gmp_mpn_functions): Add invertappr. 10796 * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add invertappr.c. 10797 * gmp-impl.h (mpn_invert_itch, mpn_invertappr_itch): New macros. 10798 107992009-12-15 Torbjorn Granlund <tege@gmplib.org> 10800 10801 * mpn/generic/gcdext_subdiv_step.c: Get an ASSERT right. 10802 108032009-12-15 Niels Möller <nisse@lysator.liu.se> 10804 10805 * mpn/generic/sbpi1_div_qr.c (mpn_sbpi1_div_qr): A very small step 10806 towards nail support. 10807 108082009-12-15 Marco Bodrato <bodrato@mail.dm.unipi.it> 10809 10810 * gmp-impl.h (mpn_ni_invertappr): Added prototype and name-mangling. 10811 * mpn/generic/mulmod_bnm1.c: Comment representation of class [0]. 10812 108132009-12-14 Niels Möller <nisse@lysator.liu.se> 10814 10815 * mpn/generic/sbpi1_divappr_q.c (mpn_sbpi1_divappr_q): Use 10816 udiv_qr_3by2. 10817 108182009-12-14 Torbjorn Granlund <tege@gmplib.org> 10819 10820 * tune/tuneup.c (tune_binvert): Remove BINV_MULMOD_BNM1_THRESHOLD 10821 tuning, it was always zero and caused BINV_NEWTON_THRESHOLD to be 10822 wrong (as pointed out by Marco). 10823 * (BINV_MULMOD_BNM1_THRESHOLD): Clean from other files too. 10824 108252009-12-14 Marco Bodrato <bodrato@mail.dm.unipi.it> 10826 10827 * mpn/generic/invert.c: Improved comments. 10828 (mpn_bc_invertappr): Conditionally re-enable mpn_dcpi1_divappr_q. 10829 108302009-12-14 Niels Möller <nisse@lysator.liu.se> 10831 10832 * gmp-impl.h (udiv_qr_3by2): Fix typo in argument list. 10833 108342009-12-13 Niels Möller <nisse@lysator.liu.se> 10835 10836 * gmp-impl.h (udiv_qr_3by2): New macro. 10837 * mpn/generic/sbpi1_div_qr.c (mpn_sbpi1_div_qr): Use udiv_qr_3by2. 10838 108392009-12-13 Torbjorn Granlund <tege@gmplib.org> 10840 10841 * mpn/generic/dcpi1_divappr_q.c (mpn_dcpi1_divappr_q): Avoid a buffer 10842 overrun. 10843 10844 * mpn/generic/mul_fft.c (mpn_mul_fft_full): Handle carry-out from 2nd 10845 mpn_mul_fft, add an ASSERT for the 1st mpn_mul_fft. Replace some 10846 comments on cc's range with ASSERTs. 10847 10848 * mpn/generic/gcdext.c (compute_v): Normalise tp[] after mpn_mul. 10849 10850 * mpz/powm.c: Rework buffer handling. 10851 108522009-12-13 Niels Möller <nisse@lysator.liu.se> 10853 10854 * tests/mpn/toom-shared.h (main): Use refmpn_mul_basecase to check 10855 results (slow!). Iteration counts of all toom tests reduced 10856 considerably. 10857 108582009-12-13 Marco Bodrato <bodrato@mail.dm.unipi.it> 10859 10860 * mpn/generic/invert.c (mpn_invertapp): Split in _bc and _ni. 10861 (mpn_bc_invertappr): New function, the basecase. 10862 (mpn_ni_invertapp): New function, Newton iteration. 10863 (mpn_invert): Use mpn_ni_invertapp. 10864 * tune/tuneup.c (tune_invert): Min for INV_APPR_THRESHOLD. 10865 (tune_invertappr): Min for INV_NEWTON_THRESHOLD. 10866 10867 * tune/speed.h (SPEED_ROUTINE_MPN_NI_INVERTAPPR): New macro. 10868 (speed_mpn_ni_invertappr): Declare function. 10869 * tune/common.c (speed_mpn_ni_invertappr): New function. 10870 * tune/speed.c (routine): Add speed_mpn_ni_invertappr. 10871 10872 * tune/tuneup.c (tune_invertappr): Use speed_mpn_ni_invertappr to 10873 tune INV_MULMOD_BNM1_THRESHOLD. 10874 108752009-12-12 Torbjorn Granlund <tege@gmplib.org> 10876 10877 * mpn/generic/mu_bdiv_qr.c (mpn_mu_bdiv_qr_itch): Rewrite. 10878 108792009-12-12 Marco Bodrato <bodrato@mail.dm.unipi.it> 10880 10881 * tests/mpn/t-mulmod_bnm1.c (main): Disable B^n+1 stressing test 10882 for odd sizes. 10883 10884 * mpn/generic/invert.c: Complete rewrite. Uses Newton iterations. 10885 * gmp-impl.h (mpn_invertappr): Added prototype and name-mangling. 10886 (mpn_invertappr_itch): Added prototype and name-mangling. 10887 (INV_APPR_THRESHOLD): Support for a new tunable const. 10888 * tune/speed.h (SPEED_ROUTINE_MPN_INVERTAPPR): New macro. 10889 (speed_mpn_invertappr): Declare function. 10890 * tune/common.c (speed_mpn_invertappr): New function. 10891 * tune/speed.c (routine): Add speed_mpn_invertappr. 10892 * tune/tuneup.c (tune_invertappr): New function: was tune_invert. 10893 (tune_invert): Now tune only INV_APPR_THRESHOLD. 10894 (all): Enable call to tune_invert and tune_invertappr. 10895 108962009-12-11 Torbjorn Granlund <tege@gmplib.org> 10897 10898 * mpn/generic/binvert.c: Use mpn_mulmod_bnm1 instead of FFT wrapping. 10899 Old, evidently broken wrapping code removed. 10900 * tune/tuneup.c (tune_binvert): Tune BINV_MULMOD_BNM1_THRESHOLD. 10901 * gmp-impl.h: Provide declarations for corresponding threshold var. 10902 10903 * tests/mpn/t-bdiv.c (COUNT): Decrease to keep run time reasonable. 10904 10905 * tune/tuneup.c (tune_invert): Tune INV_MULMOD_BNM1_THRESHOLD. 10906 * gmp-impl.h: Provide declarations for corresponding threshold var. 10907 10908 * tests/mpn/t-mulmod_bnm1.c: Avoid a division by zero. 10909 10910 * configure.in: Set up different paths for different 64-bit sparc 10911 processors. 10912 * mpn/sparc64/ultrasparc34/gmp-mparam.h: New file. 10913 109142009-12-10 Torbjorn Granlund <tege@gmplib.org> 10915 10916 * mpn/*/gmp-mparam.h: Regenerate many of these files. 10917 109182009-12-10 Niels Möller <nisse@lysator.liu.se> 10919 10920 * gmp-impl.h (mpn_divexact): Removed scratch pointer from 10921 prototype. 10922 * mpn/generic/gcdext.c (divexact): Deleted, moved to... 10923 * mpn/generic/divexact.c (mpn_divexact): New implementation (moved 10924 from gcdext.c). The bidirectional divexact is kept but #if:ed out. 10925 Interface change, since the new code doesn't take a scratch 10926 argument. 10927 10928 * tests/mpn/t-mulmod_bnm1.c (main): Ensure that an >= bn. Lowered 10929 MIN_N to 1. Various fixes to handle n == 1 properly. 10930 10931 * mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1): Small interface 10932 change, require an >= bn. 10933 10934 * mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1): Fixed non-recursive 10935 case to not write beyond end of result area. 10936 109372009-12-09 Torbjorn Granlund <tege@gmplib.org> 10938 10939 * tune/speed.h (SPEED_ROUTINE_MPN_MULMOD_BNM1_CALL): New macro, made 10940 from now deleted SPEED_ROUTINE_MPN_MULMOD_BNM1. 10941 * tune/common.c (speed_mpn_bc_mulmod_bnm1): New function. 10942 (speed_mpn_mulmod_bnm1): Use SPEED_ROUTINE_MPN_MULMOD_BNM1_CALL. 10943 * tune/speed.c (routine): Add mpn_bc_mulmod_bnm1. 10944 10945 * mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1_next_size): Rewrite. 10946 10947 * tune/tuneup.c (tune_mulmod_bnm1): Rewrite. 10948 109492009-12-08 Marco Bodrato <bodrato@mail.dm.unipi.it> 10950 10951 * mpn/generic/mulmod_bnm1.c (mpn_bc_mulmod_bnm1, 10952 mpn_bc_mulmod_bnp1): Added a parameter for scratch area, possibly 10953 same as result area (as suggested by Niels Möller). 10954 (mpn_mulmod_bnm1): Calls changed accordingly. 10955 109562009-12-08 Niels Möller <nisse@lysator.liu.se> 10957 10958 * mpn/generic/gcdext_1.c (mpn_gcdext_1) [GCDEXT_1_USE_BINARY]: Use 10959 table lookup for count_trailing_zeros. Binary algorithm still 10960 disabled by default. 10961 10962 * mpn/generic/gcdext.c (divexact): Local definition of divexact, 10963 using mpn_bdiv_q. 10964 (compute_v): Use it. 10965 10966 * tests/mpn/Makefile.am (check_PROGRAMS): Added t-bdiv. 10967 10968 * tests/mpn/t-bdiv.c: New file. 10969 10970 * mpn/generic/bdiv_q.c (mpn_bdiv_q): Fixed bad quotient length, 10971 should have qn == nn. 10972 10973 * mpn/generic/bdiv_qr.c (mpn_bdiv_qr): Pass correct nn length to 10974 the lower-level functions. 10975 109762009-12-08 Torbjorn Granlund <tege@gmplib.org> 10977 10978 * tune/speed.h (SPEED_ROUTINE_MPN_MULMOD_BNM1_ROUNDED): New define. 10979 * tune/common.c (speed_mpn_mulmod_bnm1_rounded): New function. 10980 * tune/speed.c (routine): Add mpn_mulmod_bnm1_rounded for measuring 10981 mpn_mulmod_bnm1 at recommended sizes. 10982 10983 * mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1_next_size): Rewrite. 10984 (mpn_bc_mulmod_bnm1): Use mpn_add_n instead of mpn_add. 10985 10986 * tune/speed.c (routine): Add mpn_invert. 10987 10988 * tune/tuneup.c (tune_invert): New function. 10989 * tune/speed.h (SPEED_ROUTINE_MPN_INVERT): New macro. 10990 * tune/common.c (speed_mpn_invert): New function. 10991 * gmp-impl.h: Provide declarations for corresponding threshold var. 10992 * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add invert.c. 10993 109942009-12-08 Marco Bodrato <bodrato@mail.dm.unipi.it> 10995 10996 * tests/devel/try.c: Test mpn_addlsh2_n and mpn_{add,sub}lsh_n; 10997 mpn_rsblsh_n now tests all shift values. 10998 * tests/refmpn.c (refmpn_addlsh_n, refmpn_sublsh_n): New functions. 10999 (refmpn_addlsh1_n): Use generic refmpn_addlsh_n. 11000 (refmpn_sublsh1_n): Use generic refmpn_sublsh_n. 11001 (refmpn_addlsh2_n): New function. 11002 * tests/tests.h: Declare new functions. 11003 110042009-12-06 Torbjorn Granlund <tege@gmplib.org> 11005 11006 * tune/tuneup.c (tune_mulmod_bnm1): Up min_size to 12. 11007 11008 * Globally: Rename *mullow* to *mullo*, *MULLOW* to *MULLO*. 11009 11010 * configure.in: Don't include ev5 directory for ev6* and ev7. Misc 11011 alpha path cleanups. 11012 * mpn/alpha/add_n.asm: Replaced by mpn/alpha/ev5/add_n.asm. 11013 * mpn/alpha/sub_n.asm: Replaced by mpn/alpha/ev5/sub_n.asm. 11014 * mpn/alpha/lshift.asm: Replaced by mpn/alpha/ev5/lshift.asm. 11015 * mpn/alpha/rshift.asm: Replaced by mpn/alpha/ev5/rshift.asm. 11016 * mpn/alpha/com_n.asm: New, moved from mpn/alpha/ev5/rshift.asm. 11017 * mpn/alpha/ev5/diveby3.asm: New, moved from mpn/alpha/diveby3.asm. 11018 11019 * mpn/powerpc64/mode64/diveby3.asm: Remove, it is slower than 11020 mpn_bdiv_dbm1c on all hardware. 11021 11022 * mpn/generic/powm_sec.c: Rework logic for mpn_sqr_basecase size limit. 11023 11024 * gmp-impl.h (mpn_redc_1_sec): Declare. 11025 * configure.in (gmp_mpn_functions): Add redc_1_sec. 11026 110272009-12-06 Marco Bodrato <bodrato@mail.dm.unipi.it> 11028 11029 * tests/devel/try.c (try_one): DATA_SRC0_HIGHBIT sets the high bit. 11030 110312009-12-05 Marco Bodrato <bodrato@mail.dm.unipi.it> 11032 11033 * mpn/generic/toom_eval_dgr3_pm1.c: Change return value: 0 or ~0. 11034 * mpn/generic/toom_eval_dgr3_pm2.c: Likewise. 11035 * mpn/generic/toom_eval_pm1.c: Likewise. 11036 * mpn/generic/toom_eval_pm2exp.c: Likewise. 11037 * mpn/generic/toom_eval_pm2.c: Rewrite to use mpn_addlsh2_n. 11038 11039 * mpn/generic/toom_interpolate_5pts.c: Param sa is a flag, not a sign. 11040 11041 * mpn/generic/toom33_mul.c: Adapt to changes above. 11042 * mpn/generic/toom3_sqr.c: Likewise. 11043 * mpn/generic/toom42_mul.c: Likewise. 11044 * mpn/generic/toom43_mul.c: Reduce branches. 11045 * mpn/generic/toom44_mul.c: Likewise. 11046 * mpn/generic/toom53_mul.c: Likewise. 11047 * mpn/generic/toom62_mul.c: Likewise. 11048 11049 * mpn/generic/toom52_mul.c: Use toom_eval_ functions. 11050 11051 * mpn/generic/toom4_sqr.c: Avoid C99 construct. 11052 * mpn/generic/toom_interpolate_7pts.c: Likewise. 11053 110542009-12-05 Torbjorn Granlund <tege@gmplib.org> 11055 11056 * mpn/generic/redc_1_sec.c: New file. 11057 * mpn/generic/powm_sec.c: Use redc_1_sec. Use dummy full subtract 11058 instead of mpn_cmp since the latter leaks to the side channel. 11059 (mpn_local_sqr_n): New function, with associated macros. 11060 (mpn_powm_sec): Use mpn_local_sqr_n. 11061 11062 * configure.in (HAVE_NATIVE): Add missing functions, then sort. 11063 110642009-12-04 Torbjorn Granlund <tege@gmplib.org> 11065 11066 * tune/tuneup.c (tune_dc_div): Up min_size to 6. 11067 (tune_mod_1): Set MOD_1_1_THRESHOLD min_size to 2. 11068 11069 * tune/speed.h: Negate "binvert"-type inverses, as required. 11070 11071 * mpn/generic/redc_1.c: Add ASSERTs. 11072 * mpn/generic/redc_2.c: Likewise. 11073 11074 * mpn/generic/sbpi1_bdiv_q.c: Simplify loops, indexing. 11075 110762009-12-03 Yann Droneaud <yann@droneaud.fr> 11077 11078 * acinclude.m4 ([long long reliability test 1]): Add a "static" for C99 11079 inline semantics compatibility. 11080 110812009-12-03 Torbjorn Granlund <tege@gmplib.org> 11082 11083 * configure.in: Move intptr_t test into common AC_CHECK_TYPES. 11084 11085 * mpn/generic/gcdext.c: Add a TMP_FREE. 11086 110872009-12-03 Niels Möller <nisse@lysator.liu.se> 11088 11089 * mpn/generic/gcdext_1.c (mpn_gcdext_1) [GCDEXT_1_USE_BINARY]: 11090 Added various masking tricks. 11091 11092 * mpn/generic/gcdext_1.c (mpn_gcdext_1) [GCDEXT_1_USE_BINARY]: 11093 Reimplemented binary gcdext, with proper canonicalization. 11094 11095 * mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_n): Handle v == 0 11096 from mpn_gcdext_1. 11097 * mpn/generic/gcdext_1.c (mpn_gcdext_1): Allow inputs with a < b, 11098 assertions fixed accordingly. 11099 111002009-12-03 Torbjorn Granlund <tege@gmplib.org> 11101 11102 * tune/tuneup.c: Tune DC_DIVAPPR_Q_THRESHOLD. Rewrite 11103 DC_DIV_QR_THRESHOLD tuning code. 11104 (tune_dc_div): Rewrite. 11105 * tune/speed.h (SPEED_ROUTINE_MPN_PI1_DIV): New macro. 11106 * tune/common.c (speed_mpn_sbpi1_div_qr, speed_mpn_dcpi1_div_qr, 11107 speed_mpn_sbpi1_divappr_q, speed_mpn_sbpi1_bdiv_qr): New functions. 11108 * gmp-impl.h: Provide declarations for corresponding threshold vars. 11109 * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add dcpi1_divappr_q.c. 11110 11111 * tune/tuneup.c (tune_binvert): Up max_size. 11112 111132009-12-02 Marco Bodrato <bodrato@mail.dm.unipi.it> 11114 11115 * tests/devel/try.c: Test mpn_rsblsh2_n and mpn_rsblsh_n. 11116 * tests/refmpn.c (refmpn_rsblsh_n, refmpn_rsblsh2_n): New functions. 11117 (refmpn_rsblsh1_n): Use generic refmpn_rsblsh_n. 11118 * tests/tests.h: Declare new functions. 11119 111202009-12-03 Niels Möller <nisse@lysator.liu.se> 11121 11122 * mpn/generic/gcdext_subdiv_step.c (mpn_gcdext_subdiv_step): 11123 Select the right cofactor in the cases A == B or A == 2B. 11124 11125 * mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_n): Deleted 11126 handling of ap[0] == 0 and bp[0] == 0; these cases don't happen. 11127 Select the right cofactor in the case ap[0] == bp[0]. 11128 * mpn/generic/gcdext.c (mpn_gcdext): Analogous changes. 11129 111302009-12-02 Niels Möller <nisse@lysator.liu.se> 11131 11132 * gmp-h.in (mpn_gcdext_1): Updated prototype. 11133 * mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_n): Updated for 11134 signed cofactors from gcdext_1. 11135 * mpn/generic/gcdext_1.c (mpn_gcdext_1): Use Euclid's algorithm, 11136 and return signed cofactors. 11137 111382009-12-02 Torbjorn Granlund <tege@gmplib.org> 11139 11140 * doc/gmp.texi (Low-level Functions): Document mpn_sqr_n. 11141 11142 * tune/speed.c (routine): Add mpn_binvert. 11143 11144 * tune/tuneup.c: Tune BINV_NEWTON_THRESHOLD. 11145 (tune_binvert): New function. 11146 * tune/speed.h (SPEED_ROUTINE_MPN_BINVERT): New macro. 11147 * tune/common.c (speed_mpn_binvert): New function. 11148 * gmp-impl.h: Provide declarations for corresponding threshold var. 11149 * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add binvert.c. 11150 11151 * tune/tuneup.c: Tune DC_BDIV_QR_THRESHOLD and DC_BDIV_Q_THRESHOLD. 11152 (tune_dc_bdiv): New function. 11153 (tune_dc_div): New name for tune_dc. 11154 * tune/speed.h (SPEED_ROUTINE_MPN_PI1_BDIV_QR, 11155 SPEED_ROUTINE_MPN_PI1_BDIV_Q): New macros. 11156 * tune/common.c (speed_mpn_sbpi1_bdiv_qr, speed_mpn_dcpi1_bdiv_qr, 11157 speed_mpn_sbpi1_bdiv_q, speed_mpn_dcpi1_bdiv_q): New functions. 11158 * gmp-impl.h: Provide declarations for corresponding threshold vars. 11159 * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add dcpi1_bdiv_qr.c and 11160 dcpi1_bdiv_q.c. 11161 111622009-12-01 Marco Bodrato <bodrato@mail.dm.unipi.it> 11163 11164 * mpn/generic/toom53_mul.c: Removed double computation of vinf. 11165 11166 * mpn/x86_64/aorrlsh_n.asm: Correct return value for rsblsh_n. 11167 * mpn/asm-defs.m4 (define_mpn): Add rsblsh_n. 11168 * gmp-impl.h (mpn_rsblsh_n): Added prototype and name-mangling. 11169 11170 * mpn/generic/fib2_ui.c: Reduce the amount of temporary storage. 11171 Use mpn_rsblsh_n. 11172 111732009-12-01 Torbjorn Granlund <tege@gmplib.org> 11174 11175 * mpn/generic/redc_n.c: Rework temp allocation. 11176 11177 * mpn/generic/dcpi1_bdiv_qr.c (mpn_dcpi1_bdiv_qr_n_itch): Add pi1 also 11178 to this function. 11179 11180 * mpn/generic/dcpi1_bdiv_q.c: Get the mpn_sbpi1_bdiv_q call right. 11181 Misc cleanups. 11182 11183 * tune/speed.c (routine): Fix typo in last change. 11184 Add mpn_redc_2. 11185 11186 * tune/speed.h (SPEED_ROUTINE_REDC_N): Set min size properly. 11187 111882009-12-01 Niels Möller <nisse@lysator.liu.se> 11189 11190 * tune/speed.c (routine): Added mpn_toom42_mul and mpn_redc_n. 11191 * tune/speed.h (SPEED_ROUTINE_MPN_TOOM42_MUL): New macro. 11192 (speed_mpn_toom42_mul): Declare function. 11193 * tune/common.c (speed_mpn_toom42_mul): New function. 11194 * gmp-impl.h (MPN_TOOM42_MUL_MINSIZE): New constant. 11195 111962009-11-30 Marco Bodrato <bodrato@mail.dm.unipi.it> 11197 11198 * mpn/generic/fib2_ui.c: Use mpn_rsblsh2_n. 11199 112002009-11-29 Torbjorn Granlund <tege@gmplib.org> 11201 11202 * mpn/x86_64/pentium4/gmp-mparam.h 11203 (HAVE_NATIVE_mpn_addlsh1_n, HAVE_NATIVE_mpn_sublsh1_n): Don't undef. 11204 11205 * Makefile.am (EXTRA_DIST): Remove macos. 11206 112072009-11-28 Torbjorn Granlund <tege@gmplib.org> 11208 11209 * tune/tuneup.c (tune_redc): Set min_size to 16 for redc_n tuning. 11210 11211 * mpn/x86_64/sqr_basecase.asm (SQR_TOOM2_THRESHOLD_MAX): Avoid quoting 11212 to allow configure.in parse it more easily. Trim from 120 to 80. 11213 112142009-11-28 Marco Bodrato <bodrato@mail.dm.unipi.it> 11215 11216 * mpn/generic/mulmod_bnm1.c: Basecases made simpler, this also corrects 11217 a bug affecting previous version. 11218 112192009-11-28 Torbjorn Granlund <tege@gmplib.org> 11220 11221 * configure.in: Handle atom also in 32-bit mode. 11222 * mpn/x86/atom/gmp-mparam.h: New file. 11223 11224 * gmp-impl.h (MULMOD_BNM1_THRESHOLD): Default. 11225 11226 * mpn/generic/redc_n.c: Use mpn_mulmod_bnm1 instead of mpn_mul_n. 11227 11228 * Use TMP_ALLOC_LIMBS consistently. 11229 * Finish renaming BITS_PER_MP_LIMB to GMP_LIMB_BITS. 11230 11231 * macos: Remove entire directory. 11232 112332009-11-27 Torbjorn Granlund <tege@gmplib.org> 11234 11235 * mpn/x86_64/corei/gmp-mparam.h: New file. 11236 * mpn/x86_64/core2/gmp-mparam.h: Now for just core2. 11237 * mpn/powerpc64/mode64/p3/gmp-mparam.h: New file. 11238 * mpn/powerpc64/mode64/p4/gmp-mparam.h: New file. 11239 * mpn/powerpc64/mode64/p5/gmp-mparam.h: New file. 11240 11241 * config.guess: Return "corei" for core i7 and core i5. 11242 * config.sub: Recognise "corei". 11243 * acinclude.m4 (X86_64_PATTERN): Add corei. 11244 * configure.in (powerpc): Set up more CPU-specific paths. 11245 (x86): Handle corei. 11246 11247 * mpz/powm.c: Allow input operand overlap also when exponent = 1. 11248 Misc cleanups. 11249 112502009-11-26 Marco Bodrato <bodrato@mail.dm.unipi.it> 11251 11252 * tests/mpn/t-mulmod_bnm1.c: New test file. 11253 * tests/mpn/Makefile.am (check_PROGRAMS): Add t-mulmod_bnm1. 11254 11255 * mpn/generic/mullow_n.c: Comments on Mulders' trick implementation. 11256 112572009-11-26 Torbjorn Granlund <tege@gmplib.org> 11258 11259 * mpn/generic/powm.c: Make comments reflect current code state. 11260 11261 * tests/devel/try.c: Make mpn_mullow_n testing actually work. 11262 112632009-11-25 Torbjorn Granlund <tege@gmplib.org> 11264 11265 * mpz/powm.c: Clean up unused defs. 11266 112672009-11-24 Torbjorn Granlund <tege@gmplib.org> 11268 11269 * tune/tuneup.c (tune_redc): Rewrite. 11270 * mpn/generic/powm.c: Use REDC_1_TO_REDC_2_THRESHOLD, 11271 REDC_1_TO_REDC_N_THRESHOLD, and REDC_2_TO_REDC_N_THRESHOLD. 11272 Get rid of previous REDC params, including LOCAL_REDC_N_THRESHOLD. 11273 (WANT_REDC_2): Define. 11274 * gmp-impl.h: Corresponding changes. 11275 112762009-11-23 Torbjorn Granlund <tege@gmplib.org> 11277 11278 * mpn/generic/powm.c: Fix typo. 11279 Define LOCAL_REDC_N_THRESHOLD, use in REDC_2_THRESHOLD... 11280 REDC_N_THRESHOLD chain. 11281 112822009-11-22 Torbjorn Granlund <tege@gmplib.org> 11283 11284 * tune/tuneup.c (tune_mullow): Set min_size to 1. 11285 11286 * mpn/generic/powm_sec.c: Use just mpn_mul_basecase and 11287 mpn_sqr_basecase for multiplication and squaring. 11288 11289 * tune/tuneup.c: Tune REDC_2_THRESHOLD and REDC_N_THRESHOLD. 11290 (tune_redc): New function. 11291 (tune_powm): Remove function. 11292 * tune/speed.h (SPEED_ROUTINE_REDC_2, SPEED_ROUTINE_REDC_N): New. 11293 * tune/common.c (speed_mpn_redc_2, speed_mpn_redc_n): New. 11294 11295 * mpz/powm.c: Complete rewrite. Use mpn_powm and mpn_powlo. 11296 * mpn/generic/powm.c: Rewrite. 11297 * mpn/generic/redc_n.c: New file. 11298 * configure.in (gmp_mpn_functions): Add redc_n. 11299 * gmp-impl.h (REDC_2_THRESHOLD, REDC_N_THRESHOLD): Default, and define 11300 for tuneup. 11301 113022009-11-21 Marco Bodrato <bodrato@mail.dm.unipi.it> 11303 11304 * mpn/generic/mullow_n.c: Disable Mulders' trick for small operands, 11305 use fft for bigger ones. 11306 * tests/mpn/t-mullo.c: New test file. 11307 113082009-11-22 Torbjorn Granlund <tege@gmplib.org> 11309 11310 * tune/tuneup.c (tune_mullow): Rewrite. 11311 113122009-11-21 Marco Bodrato <bodrato@mail.dm.unipi.it> 11313 11314 * gmp-impl.h: Removed unused macros (CACHED_ABOVE_THRESHOLD and 11315 CACHED_BELOW_THRESHOLD). 11316 11317 * mpn/generic/mullow_n.c: Use Mulders' trick. 11318 * tune/tuneup.c (tune_mullow): MULLOW_MUL_N_THRESHOLD range of 11319 search depends on FFT tuning; 11320 (all): Anticipate tune_fft_{mul,sqr}. 11321 11322 * tune/speed.c (routine): Add entry related to mpn_mulmod_bnm1. 11323 113242009-11-19 Niels Möller <nisse@lysator.liu.se> 11325 11326 * mpn/generic/toom_eval_dgr3_pm2.c (mpn_toom_eval_dgr3_pm2) 11327 [HAVE_NATIVE_mpn_add_n_sub_n]: Fixed typo in mpn_add_n_sub_n call 11328 (spotted by Marco Bodrato). 11329 * mpn/generic/toom_eval_pm2.c (mpn_toom_eval_pm2): Likewise. 11330 * mpn/generic/toom_eval_pm2exp.c (mpn_toom_eval_pm2exp): Likewise. 11331 11332 * mpn/generic/toom_eval_pm2.c (mpn_toom_eval_pm2) [HAVE_NATIVE_mpn_addlsh_n]: 11333 Fixed missing declaration. 11334 11335 * mpn/asm-defs.m4 (define_mpn): Add addlsh_n. 11336 * gmp-impl.h (mpn_addlsh_n): Added prototype and name-mangling. 11337 113382009-11-19 Niels Möller <nisse@lysator.liu.se> 11339 11340 * mpn/generic/toom_eval_pm2.c (mpn_toom_eval_pm2): New file. 11341 * mpn/generic/toom53_mul.c (mpn_toom53_mul): Use mpn_toom_eval_pm2. 11342 * mpn/generic/toom62_mul.c (mpn_toom62_mul): Likewise. 11343 * configure.in (gmp_mpn_functions): Added toom_eval_dgr3_pm2. 11344 113452009-11-18 Torbjorn Granlund <tege@gmplib.org> 11346 11347 * gmp-impl.h (mpn_and_n, etc): Adapt to now-public logic functions. 11348 11349 * config.guess: Recognise VIA nano. 11350 * config.sub: Likewise. 11351 * configure.in: Generalise x86_64 support; recognise VIA nano. 11352 113532009-11-16 Torbjorn Granlund <tege@gmplib.org> 11354 11355 * tune/speed.c (routine): Add measurement of mpn_addlsh2_n, 11356 mpn_sublsh2_n, mpn_rsblsh2_n. 11357 * tune/common.c: Add speed routines for lsh2 functions. 11358 11359 * mpn/generic/divis.c: Use MU_BDIV_QR_THRESHOLD. 11360 11361 * configure.in (gmp_mpn_functions_optional): Add *lsh_n functions. 11362 11363 * mpn/generic/toom_eval_pm2exp.c: Make HAVE_NATIVE_mpn_addlsh_n code 11364 work. 11365 11366 * mpn/x86_64/aorrlsh2_n.asm: Optimise inner loop. 11367 11368 * configure.in (gmp_mpn_functions_optional): Remove copyi,copyd, they 11369 are now in gmp_mpn_functions. Analogously move logical functions. 11370 113712009-11-16 Marco Bodrato <bodrato@mail.dm.unipi.it> 11372 11373 * mpn/generic/toom53_mul.c: Use addlsh2 for evaluation (and fix typo). 11374 * mpn/generic/toom_eval_dgr3_pm2.c: Likewise (affects toom44 and 43). 11375 11376 * mpn/asm-defs.m4: Fix comments for op_lsh2 new functions. 11377 * gmp-impl.h: Likewise. 11378 * tests/mpz/t-fac_ui.c: Fix a comment. 11379 113802009-11-15 Torbjorn Granlund <tege@gmplib.org> 11381 11382 * mpn/x86_64/aorrlsh2_n.asm: New file. 11383 * configure.in: Add support for addlsh2_n, sublsh2_n, and rsblsh2_n, 11384 including mulfuncs. 11385 * gmp-impl.h (mpn_addlsh2_n, mpn_sublsh2_n, mpn_rsblsh2_n): Declare. 11386 * mpn/asm-defs.m4: Likewise. 11387 11388 * mpn/generic/copyi.c: New file. 11389 * mpn/generic/copyd.c: Likewise. 11390 * mpn/generic/zero.c: Likewise. 11391 * gmp-h.in: Declare new functions. 11392 * configure.in (gmp_mpn_functions): Add new functions. 11393 113942009-11-15 Marco Bodrato <bodrato@mail.dm.unipi.it> 11395 11396 * mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1_next_size): fix typo 11397 11398 * mpn/generic/toom33_mul.c: Use rsblsh1 for evaluation. 11399 * mpn/generic/toom3_sqr.c: Likewise. 11400 114012009-11-14 Torbjorn Granlund <tege@gmplib.org> 11402 11403 * mpn/generic/toom52_mul.c: Use mpn_addlsh1_n. 11404 11405 * mpn/generic/toom52_mul.c: Toggle the right flag bit in an 11406 HAVE_NATIVE_mpn_add_n_sub_n arm. 11407 11408 * tests/mpz/t-remove.c: New file. 11409 11410 * mpn/generic/remove.c: Major overhaul. Add parameter 'cap'. 11411 11412 * mpn/generic/binvert.c: Fix typo in last change. 11413 11414 * mpn/generic/bdiv_qr.c: Make it actually work. Also use passed-in 11415 scratch space. 11416 11417 * mpn/generic/mu_bdiv_qr.c: Reset FFT parameters for each call. 11418 114192009-11-12 Torbjorn Granlund <tege@gmplib.org> 11420 11421 * mpn/x86/k7/gcd_1.asm (MASK): Compute from MAXSHIFT. 11422 114232009-11-11 Torbjorn Granlund <tege@gmplib.org> 11424 11425 * mpn/generic/binvert.c: Simplify, fix comments. 11426 11427 * tests/devel/try.c: Test mpn_invert and mpn_binvert. 11428 11429 * tests/refmpn.c (refmpn_invert, refmpn_binvert): New functions. 11430 * tests/tests.h: Declare new functions. 11431 114322009-11-10 Torbjorn Granlund <tege@gmplib.org> 11433 11434 * configure.in: Supply compiler options for atom in 32-bit mode. 11435 11436 * acinclude.m4 (X86_64_PATTERN): New. 11437 * configure.in: Setup and use X86_64_PATTERN. 11438 11439 * mpn/x86_64/fat/fat.c: New file. 11440 * mpn/x86_64/fat/fat_entry.asm: New file. 11441 * mpn/x86_64/fat: Copy C placeholder files from mpn/x86/fat. 11442 * mpn/x86_64/x86_64-defs.m4 (CPUVEC_FUNCS_LIST): New, copied from 11443 mpn/x86/x86-defs.m4. 11444 * configure.in: Move down x86 fat setup code until after ABI has been 11445 determined; generalise to handle x86_64. 11446 114472009-11-09 Torbjorn Granlund <tege@gmplib.org> 11448 11449 * mpn/x86/fat/mod_1.c: New file. 11450 11451 * acinclude.m4 (GMP_C_FOR_BUILD_ANSI): Avoid poor quoting. 11452 114532009-11-08 Torbjorn Granlund <tege@gmplib.org> 11454 11455 * gmp-impl.h (MPN_LOGOPS_N_INLINE): Rewrite, update interface. Callers 11456 updated. 11457 * mpn/generic/logops_n.c: New file. 11458 * doc/gmp.texi (Low-level Functions): Document logical mpn functions. 11459 114602009-11-07 Torbjorn Granlund <tege@gmplib.org> 11461 11462 * tune/speed.h (SPEED_ROUTINE_MPN_MULMOD_BNM1): Adapt to new 11463 mpn_mulmod_bnm1 interface. 11464 114652009-11-07 Marco Bodrato <bodrato@mail.dm.unipi.it> 11466 11467 * mpn/generic/mulmod_bnm1.c: New interface, with size 11468 specified for all operands in mpn_mulmod_bnm1. 11469 * gmp-impl.h: Changed mpn_mulmod_bnm1 prototype. 11470 114712009-11-05 Torbjorn Granlund <tege@gmplib.org> 11472 11473 * mpn/x86/k7/gcd_1.asm: Actually use div-reduced value. 11474 Mnemonic cleanup. 11475 11476 * mpn/x86_64/gcd_1.asm: New file. 11477 114782009-11-03 Torbjorn Granlund <tege@gmplib.org> 11479 11480 * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add sqr_n.c. 11481 114822009-11-03 Marco Bodrato <bodrato@mail.dm.unipi.it> 11483 11484 * mpn/generic/toom_interpolate_6pts.c: removed an addmul_1 and cleanup. 11485 114862009-11-02 Torbjorn Granlund <tege@gmplib.org> 11487 11488 * configure.in (gmp_mpn_functions): Remove obsolete functions 11489 dc_divrem_n and sb_divrem_mn. 11490 * gmp-impl.h: Misc cleanup. 11491 (mpn_sb_divrem_mn, mpn_dc_divrem_n): Remove. 11492 (DIV_DC_THRESHOLD): Remove. 11493 * mpn/generic/dc_divrem_n.c: Remove. 11494 * mpn/generic/sb_divrem_mn.c: Remove. 11495 * mpn/generic/tdiv_qr.c: Use DC_DIV_QR_THRESHOLD, not DIV_DC_THRESHOLD. 11496 11497 * tests/devel/try.c: Replace mpn_sb_divrem_mn by mpn_sbpi1_div_qr. 11498 * tests/refmpn.c (refmpn_sb_div_qr): New name for refmpn_sb_divrem_mn. 11499 11500 * tune/Makefile.am (libspeed_la_SOURCES): Remove sb_div.c and sb_inv.c. 11501 (TUNE_MPN_SRCS_BASIC): Remove sb_divrem_mn.c. 11502 * tune/common.c (speed_mpn_dcpi1_div_qr_n): New function. 11503 Remove mpn_sb_divrem_mn related functions. 11504 * tune/speed.c (routine): Remove entries related to mpn_dc_divrem and 11505 mpn_sb_divrem. 11506 (routine): New entry for mpn_dc_div_qr_n. 11507 * tune/speed.h (SPEED_ROUTINE_MPN_DC_DIVREM_CALL): Compute inverse 11508 needed by pi1 calls. 11509 (SPEED_ROUTINE_MPN_SB_DIVREM_M3): Remove. 11510 * tune/tuneup.c (tune_sb_preinv): Remove. 11511 (tune_dc): Update to measure DC_DIV_QR_THRESHOLD. 11512 11513 * mpn/generic/sb_divappr_q.c: Remove. 11514 115152009-11-01 Torbjorn Granlund <tege@gmplib.org> 11516 11517 * gmp-impl.h: Misc minor cleanups. 11518 115192009-10-31 Torbjorn Granlund <tege@gmplib.org> 11520 11521 * gmp-impl.h (toom itch functions): Simplify, make some into macros. 11522 (MPN_KARA_MUL_N_TSIZE, MPN_KARA_SQR_N_TSIZE): Remove. 11523 * mpn/generic/mul_n.c (mpn_toom3_mul_n, mpn_toom3_sqr_n): Remove. 11524 * mpn/generic/mul_n.c (mpn_sqr_n): Move from here... 11525 * mpn/generic/sqr_n.c: ...to this new file. 11526 * configure.in (gmp_mpn_functions): Add sqr_n. 11527 11528 * Globally change 11529 MUL_TOOM3_THRESHOLD => MUL_TOOM33_THRESHOLD, 11530 MUL_KARATSUBA_THRESHOLD => MUL_TOOM22_THRESHOLD, 11531 SQR_KARATSUBA_THRESHOLD => SQR_TOOM2_THRESHOLD, 11532 and associated names analogously. 11533 115342009-10-31 Niels Möller <nisse@lysator.liu.se> 11535 11536 * mpn/generic/toom_interpolate_7pts.c: Changed evaluation points, 11537 replacing -1/2 by -2. 11538 * mpn/generic/toom44_mul.c: Updated to use new evaluation points, 11539 and use mpn_toom_eval_dgr3_pm2. 11540 * mpn/generic/toom4_sqr.c (mpn_toom4_sqr): Likewise. 11541 * mpn/generic/toom53_mul.c (mpn_toom53_mul): Updated to use new 11542 evaluation points, and use mpn_toom_eval_pm1 and 11543 mpn_toom_eval_pm2exp. 11544 * mpn/generic/toom62_mul.c (mpn_toom62_mul): Likewise. 11545 11546 * mpn/generic/toom_eval_pm2exp.c: New file. 11547 * mpn/generic/toom_eval_pm1.c: New file. 11548 11549 * mpn/generic/toom43_mul.c (mpn_toom43_mul): Use 11550 mpn_toom_eval_dgr3_pm2. 11551 115522009-10-30 Torbjorn Granlund <tege@gmplib.org> 11553 11554 * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add toom2* and toom3* files. 11555 115562009-10-30 Niels Möller <nisse@lysator.liu.se> 11557 11558 * configure.in (gmp_mpn_functions): Added toom_eval_dgr3_pm2. 11559 * gmp-impl.h: Added prototype for mpn_toom_eval_dgr3_pm2. 11560 * mpn/generic/toom_eval_dgr3_pm2.c: New file. 11561 115622009-10-29 Niels Möller <nisse@lysator.liu.se> 11563 11564 * mpn/generic/toom43_mul.c (mpn_toom43_mul): Use 11565 mpn_toom_eval_dgr3_pm1. 11566 * mpn/generic/toom42_mul.c (mpn_toom42_mul): Likewise. 11567 115682009-10-29 Torbjorn Granlund <tege@gmplib.org> 11569 11570 * mpn/generic/mulmod_bnm1.c: Replace some add_1 by INCR. 11571 11572 * gmp-impl.h (mpn_mulmod_bnm1_itch): New macro. 11573 11574 * mpn/generic/mulmod_bnm1.c (mpn_mulmod_bnm1): Call mpn_mul_fft. 11575 (mpn_mulmod_bnm1_next_size): Adopt to SS FFT. 11576 11577 * mpn/generic/mul_fft.c (mpn_mul_fft): Make it return high limb. 11578 (mpn_mul_fft_internal): Likewise. 11579 11580 * mpn/generic/mulmod_bnm1.c: New file, by Niels Möller. 11581 * configure.in (gmp_mpn_functions): Add mulmod_bnm1. 11582 * gmp-impl.h: Add related declarations. 11583 * tune/tuneup.c: Tune MULMOD_BNM1_THRESHOLD. 11584 * tune/speed.h (SPEED_ROUTINE_MPN_MULMOD_BNM1): New macro. 11585 * tune/common.c (speed_mpn_mulmod_bnm1): New function. 11586 * Makefile.am (TUNE_MPN_SRCS_BASIC): Add mulmod_bnm1.c. 11587 11588 * gmp-impl.h (mpn_kara_mul_n, mpn_kara_sqr_n): Remove declarations. 11589 * tune/common.c: Remove/rename kara functions. 11590 * tune/speed.h: Likewise. 11591 11592 * tests/devel/try.c: Clean up usage of %p printf arguments. 11593 11594 * gmp-impl.h: Update MUL/SQR MINSIZE macros to reflect new function 11595 names and limitations 11596 * tune/tuneup.c: Use updated macro names. 11597 * tune/speed.h: Likewise. 11598 * tests/devel/try.c: Test new mul/sqr functions, remove old tests. 11599 116002009-10-29 Niels Möller <nisse@lysator.liu.se> 11601 11602 * tune/speed.c: Added support for mpn_toom4_sqr. 11603 11604 * tune/speed.h (SPEED_ROUTINE_MPN_TOOM4_SQR): New macro. 11605 (SPEED_ROUTINE_MPN_KARA_MUL_N): Deleted. 11606 (SPEED_ROUTINE_MPN_TOOM3_MUL_N): Deleted. 11607 (SPEED_ROUTINE_MPN_TOOM2_SQR): Use mpn_toom2_sqr_itch. 11608 11609 * gmp-impl.h (mpn_toom3_mul_n, mpn_toom3_sqr_n): Remove 11610 declarations. 11611 (mpn_toom2_sqr_itch): Add margin for recursive calls. 11612 116132009-10-28 Niels Möller <nisse@lysator.liu.se> 11614 11615 * mpn/generic/mul_n.c (mpn_kara_mul_n): Deleted old Karatsuba 11616 implementation. 11617 (mpn_kara_sqr_n): Likewise deleted. 11618 11619 * mpn/generic/mul_n.c (mpn_sqr_n): Use mpn_toom2_sqr and 11620 mpn_toom3_sqr, not the old implementations. 11621 11622 * gmp-impl.h (MPN_TOOM3_MUL_N_TSIZE): Deleted, replaced by 11623 mpn_toom33_mul_itch. 11624 (MPN_TOOM3_SQR_N_TSIZE): Deleted, replaced by 11625 mpn_toom3_sqr_itch. 11626 (mpn_toom33_mul_itch): Needs more scratch. 11627 (mpn_toom3_sqr_itch): Likewise. 11628 * tune/speed.h (SPEED_ROUTINE_MPN_TOOM3_MUL_N): Use 11629 mpn_toom33_mul_itch. 11630 (SPEED_ROUTINE_MPN_TOOM3_SQR_N): Use mpn_toom3_sqr_itch. 11631 * mpn/generic/mul_n.c (mpn_mul_n): Use mpn_toom33_mul_itch. 11632 (mpn_sqr_n): Use mpn_toom3_sqr_itch. 11633 11634 * mpn/generic/toom33_mul.c (mpn_toom33_mul): Avoid TMP_ALLOC. Needs 11635 some more supplied scratch instead. 11636 * mpn/generic/toom3_sqr.c (mpn_toom3_sqr): Likewise. 11637 116382009-10-26 Torbjorn Granlund <tege@gmplib.org> 11639 11640 * gmp-impl.h (invert_pi1): Streamline, as suggested by Niels. 11641 116422009-10-24 Torbjorn Granlund <tege@gmplib.org> 11643 11644 * mpn/generic/bdiv_q.c: Update to call new functions. 11645 * mpn/generic/bdiv_qr.c: Likewise. 11646 * mpn/generic/binvert.c: Likewise. 11647 * mpn/generic/divexact.c: Likewise. 11648 * mpn/generic/divis.c: Likewise. 11649 * mpn/generic/perfpow.c: Likewise. 11650 * mpn/generic/tdiv_qr.c: Likewise. 11651 * mpn/generic/dcpi1_bdiv_q.c: New file. 11652 * mpn/generic/dcpi1_bdiv_qr.c: New file. 11653 * mpn/generic/dcpi1_div_q.c: New file. 11654 * mpn/generic/dcpi1_div_qr.c: New file. 11655 * mpn/generic/dcpi1_divappr_q.c: New file. 11656 * mpn/generic/sbpi1_bdiv_q.c: New file. 11657 * mpn/generic/sbpi1_bdiv_qr.c: New file. 11658 * mpn/generic/sbpi1_div_q.c: New file. 11659 * mpn/generic/sbpi1_div_qr.c: New file. 11660 * mpn/generic/sbpi1_divappr_q.c: New file. 11661 * mpn/generic/dc_bdiv_q.c: Removed. 11662 * mpn/generic/dc_bdiv_qr.c: Removed. 11663 * mpn/generic/dc_div_q.c: Removed. 11664 * mpn/generic/dc_div_qr.c: Removed. 11665 * mpn/generic/dc_divappr_q.c: Removed. 11666 * mpn/generic/sb_bdiv_q.c: Removed. 11667 * mpn/generic/sb_bdiv_qr.c: Removed. 11668 * mpn/generic/sb_div_q.c: Removed. 11669 * mpn/generic/sb_div_qr.c: Removed. 11670 11671 * configure.in (gmp_mpn_functions): Add new division functions, remove 11672 obsolete division functions. 11673 11674 * gmp-impl.h: Add declarations of new division functions, remove 11675 corresponding obsolete declarations. 11676 (gmp_pi1_t, gmp_pi2_t): New types. 11677 (invert_pi1): New macro for computing 2/1 and 3/2 inverses. 11678 116792009-10-23 Niels Möller <nisse@lysator.liu.se> 11680 11681 * gmp-impl.h (mpn_toom62_mul_itch): New function. 11682 11683 * tests/mpn/t-toom53.c: New test program. 11684 * tests/mpn/t-toom62.c: New test program. 11685 116862009-10-23 Torbjorn Granlund <tege@gmplib.org> 11687 11688 * mpn/generic/get_d.c: Fix code handling denorms for 64-bit machines. 11689 * tests/mpf/t-get_d.c (test_denorms): New function. 11690 116912009-10-23 Niels Möller <nisse@lysator.liu.se> 11692 11693 * mpn/generic/toom52_mul.c (mpn_toom52_mul): Use supplied scratch 11694 space, not TMP_ALLOC. Interface change, now requires input sizes 11695 such that s + t >= 5. 11696 11697 * gmp-impl.h (mpn_toom52_mul_itch): New function. 11698 11699 * tests/mpn/t-toom52.c: New test program. 11700 117012009-10-22 Torbjorn Granlund <tege@gmplib.org> 11702 11703 * mpn/x86_64/sqr_basecase.asm: Tune for speed and a 7% size decrease. 11704 117052009-10-22 Niels Möller <nisse@lysator.liu.se> 11706 11707 * tests/mpn/t-toom44.c: New test program. 11708 * tests/mpn/t-toom33.c: New test program. 11709 11710 * tests/mpn/toom-shared.h (main): Reorganized input generation. 11711 Users are now supposed to define macros MAX_AN, MIN_BN and MAX_BN. 11712 Updated existing toom test programs. 11713 117142009-10-22 Torbjorn Granlund <tege@gmplib.org> 11715 11716 * tests/devel/try.c: Fix typos in last change. 11717 117182009-10-21 Torbjorn Granlund <tege@gmplib.org> 11719 11720 * mpn/asm-defs.m4 (define_mpn): Add mullow_basecase. 11721 11722 * tests/devel/try.c: Test mpn_mullow_n. 11723 11724 * tests/refmpn.c (refmpn_mullow_n): New function. 11725 * tests/tests.h: Declare it. 11726 117272009-10-21 Niels Möller <nisse@lysator.liu.se> 11728 11729 * tests/mpn/toom-shared.h (main): Check for writes outside of the 11730 product or scratch area. 11731 11732 * gmp-impl.h (mpn_toom43_mul_itch): New function. 11733 11734 * mpn/generic/toom43_mul.c (mpn_toom43_mul): Use supplied scratch 11735 space, not TMP_ALLOC. Interface change, now requires input sizes 11736 such that s + t >= 5. 11737 117382009-10-20 Niels Möller <nisse@lysator.liu.se> 11739 11740 * tests/mpn/toom-shared.h (MIN_BLOCK): New constant, which can be 11741 overridden by users. Needed by t-toom42 and t-toom43. 11742 11743 * tests/mpn/Makefile.am (check_PROGRAMS): Added t-toom32, 11744 t-toom42 and t-toom43. 11745 * tests/mpn/t-toom43.c: New test program. 11746 * tests/mpn/t-toom42.c: New test program. 11747 * tests/mpn/t-toom32.c: New test program. 11748 11749 * tests/mpn/Makefile.am (check_PROGRAMS): Added t-toom22. 11750 * tests/mpn/t-toom22.c: New test file. 11751 * tests/mpn/toom-shared.h: New file. Test framework for Toom 11752 functions. 11753 117542009-10-14 Niels Möller <nisse@lysator.liu.se> 11755 11756 * mpn/generic/hgcd.c (mpn_hgcd_itch): Thanks to the new 11757 mpn_matrix22_mul_strassen, the scratch need is reduced by 16%. 11758 117592009-10-14 Marco Bodrato <bodrato@mail.dm.unipi.it> 11760 11761 * mpn/generic/matrix22_mul.c (mpn_matrix22_mul_strassen): New 11762 Strassen-like algorithm, to reduce the amount of temporary 11763 storage. 11764 (mpn_matrix22_mul_itch): Updated to reflect the reduced storage 11765 need. 11766 117672009-10-03 Torbjorn Granlund <tege@gmplib.org> 11768 11769 * Rename mpn_addsub_n to mpn_add_n_sub_n. 11770 117712009-10-01 Torbjorn Granlund <tege@gmplib.org> 11772 11773 * mpn/generic/tdiv_qr.c: Call mpn_divrem_1 and mpn_dc_div_qr instead of 11774 old functions. 11775 11776 * mpn/generic/mul_n.c: Call toom22 and toom33 instead of old functions. 11777 11778 * mpn/generic/toom42_mul.c (TOOM42_MUL_N_REC): Renamed from 11779 TOOM22_MUL_N_REC. Unconditionally call the generic mpn_mul_n. 11780 * mpn/generic/toom32_mul.c: Analogous changes. 11781 117822009-09-28 Niels Möller <nisse@lysator.liu.se> 11783 11784 * mpn/x86_64/invert_limb.asm: Rewrite. Exploit cancellation in the 11785 Newton iteration. 11786 117872009-09-27 Niels Möller <nisse@lysator.liu.se> 11788 11789 * mpn/x86/invert_limb.asm: Reduce register usage. Eliminated $1 11790 arguments to add, sub and shift. 11791 117922009-09-25 Niels Möller <nisse@lysator.liu.se> 11793 11794 * mpn/x86/invert_limb.asm: New file. 11795 117962009-09-24 Torbjorn Granlund <tege@gmplib.org> 11797 11798 * mpn/generic/toom33_mul.c: Use new toom functions for all recursive 11799 products. 11800 * mpn/generic/toom3_sqr.c: Likewise. 11801 * mpn/generic/toom44_mul.c: Likewise. 11802 * mpn/generic/toom4_sqr.c: Likewise. 11803 11804 * mpn/generic/add_n.c: Relax operand overlap ASSERTs. 11805 * mpn/generic/sub_n.c: Likewise. 11806 118072009-09-15 Torbjorn Granlund <tege@gmplib.org> 11808 11809 Suggested by Uwe Mueller: 11810 * printf/doprnt.c: Use "%ld" for exponent printing. 11811 * printf/doprntf.c (__gmp_doprnt_mpf): Make expval "long". 11812 118132009-09-14 Torbjorn Granlund <tege@gmplib.org> 11814 11815 * configure.in: Handle mingw64. 11816 * gmp-impl.h (gmp_intptr_t): Declare. 11817 * tests/amd64check.c (calling_conventions_values): Use CNST_LIMB. 11818 * tests/memory.c: Use gmp_intptr_t; print pointers using C90 "%p". 11819 * tests/misc.c: Use gmp_intptr_t. 11820 * tests/mpq/t-get_str.c: Print pointers using C90 "%p". 11821 118222009-08-12 Torbjorn Granlund <tege@gmplib.org> 11823 11824 * mpn/generic/mod_1_1.c (mpn_mod_1_1p_cps): Remove silly ASSERT code. 11825 11826 * mpn/asm-defs.m4 (define_mpn): Remove mod_1s_1p, add mod_1_1p. 11827 11828 * mpn/arm/invert_limb.asm: Complete rewrite. 11829 11830 * longlong.h: Document LONGLONG_STANDALONE and NO_ASM. 11831 118322009-08-05 Torbjorn Granlund <tege@gmplib.org> 11833 11834 * tests/mpz/dive_ui.c (check_random): Avoid zero divisors. 11835 118362009-07-31 Torbjorn Granlund <tege@gmplib.org> 11837 11838 * mpn/generic/mod_1_1.c: Tweak to handle any modulus (possibility 11839 pointed out by Per Austrin). 11840 (mpn_mod_1_1p): Renamed from mpn_mod_1s_1p. 11841 (mpn_mod_1_1p_cps): Renamed from mpn_mod_1s_1p_cps. 11842 *mpn/generic/mod_1.c (mpn_mod_1): Reorganise to call mpn_mod_1_1p for 11843 any modulus. 11844 118452009-07-28 Torbjorn Granlund <tege@gmplib.org> 11846 11847 * configure.in: Pass arch for x86 also in 64-bit mode. 11848 118492009-07-26 Torbjorn Granlund <tege@swox.com> 11850 11851 * config.guess (_cpuid): Recognise more Intel "Core" processors. 11852 118532009-07-13 Torbjorn Granlund <tege@gmplib.org> 11854 11855 * mpf/eq.c: Rewrite. 11856 11857 * tests/mpf/t-eq.c: New test. 11858 118592009-07-06 Torbjorn Granlund <tege@gmplib.org> 11860 11861 * gmp-impl.h (__mp_bases): Remove this alias. 11862 11863 * mpf/get_str.c: Use less overflow prone expression for computing limb 11864 allocation. 11865 * mpz/inp_str.c: Likewise. 11866 * mpf/set_str.c: Likewise. 11867 * mpz/set_str.c: Likewise. 11868 118692009-07-03 Niels Möller <nisse@lysator.liu.se> 11870 11871 * mpn/generic/gcd_1.c (mpn_gcd_1): Use masking tricks to reduce 11872 the number of branches in the loop. 11873 118742009-06-28 Torbjorn Granlund <tege@gmplib.org> 11875 11876 * demos/factorize.c (factor_using_pollard_rho): Rewrite. 11877 11878 * mpz/clears.c: New file. 11879 * mpq/clears.c: New file. 11880 * mpf/clears.c: New file. 11881 * gmp-h.in (mpz_clears, mpq_clears, mpf_clears): Declare. 11882 * mpz/Makefile.am: Add clears.c. 11883 * mpq/Makefile.am: Add clears.c. 11884 * mpf/Makefile.am: Add clears.c. 11885 * Makefile.am: Add these also to respective OBJECTS variables. 11886 * doc/gmp.texi: Document inits function and clears functions. 11887 118882009-06-20 Torbjorn Granlund <tege@gmplib.org> 11889 11890 * mp-h.in (mp_bitcnt_t): Declare here too. 11891 118922009-06-19 Torbjorn Granlund <tege@gmplib.org> 11893 11894 * mpq/inits.c: New file. 11895 * mpf/inits.c: New file. 11896 * gmp-h.in (mpz_inits, mpq_inits, mpf_inits): Declare . 11897 11898 * mpn/generic/remove.c: New file. 11899 * configure.in (gmp_mpn_functions): Add remove. 11900 * gmp-impl.h (mpn_remove): Declare. 11901 11902 * gmp-h.in (mp_bitcnt_t): New basic type. 11903 * mpn/generic/perfpow.c (mp_bitcnt_t): Remove private definition. 11904 11905 * mpn/generic/bdiv_qr.c: Make it actually work. 11906 11907 * mpn/x86_64/core2/aorsmul_1.asm: Rewrite to use shorter pipeline and 11908 to need fewer registers. 11909 119102009-06-17 Torbjorn Granlund <tege@gmplib.org> 11911 11912 * mpn/x86_64/rsh1aors_n.asm: New file. 11913 * mpn/x86_64/rsh1add_n.asm: Remove. 11914 * mpn/x86_64/rsh1sub_n.asm: Remove. 11915 11916 * mpz/inits.c: New file. 11917 11918 * gen-trialdivtab.c: Wrap limb constants into CNST_LIMB. 11919 11920 With Martin Boij: 11921 * mpn/generic/perfpow.c (binv_root, binv_sqroot): Change from being 11922 recursive to being iterative. 11923 (mpn_perfect_power_p): Reorganise temp memory usage to avoid a buffer 11924 overrun. Trim allocation of next and prev. Never create oversize 11925 products in the multiplicity binary search. 11926 11927 * mpn/generic/dc_div_q.c: Add missing TMP_FREE. 11928 119292009-06-16 Torbjorn Granlund <tege@gmplib.org> 11930 11931 Revert: 11932 * mpn/generic/perfpow.c (perfpow): Test exponents up to ub, inclusive. 11933 119342009-06-16 Martin Boij <mboij@kth.se> 11935 11936 * mpn/generic/perfpow.c (logs): Use more conservative table. 11937 119382009-06-15 Torbjorn Granlund <tege@gmplib.org> 11939 11940 * mpn/pa64/aors_n.asm: New file. 11941 * mpn/pa64/add_n.asm: Remove. 11942 * mpn/pa64/sub_n.asm: Remove. 11943 11944 * mpn/generic/perfpow.c (perfpow): Test exponents up to ub, inclusive. 11945 119462009-06-14 Torbjorn Granlund <tege@gmplib.org> 11947 11948 * mpn/x86_64/bdiv_q_1.asm: Optimise away a mov insn. 11949 * mpn/x86_64/dive_1.asm: Likewise. 11950 11951 * mpn/generic/perfpow.c (binv_root): Use mpn_bdiv_q_1, not 11952 mpn_divexact_itch for 2-adic division. 11953 (all functions): Micro optimise. 11954 11955 * Makefile.am (libmp_la_SOURCES): Add nextprime.c. 11956 119572009-06-13 Torbjorn Granlund <tege@gmplib.org> 11958 11959 * gmp-h.in (mpn_perfect_power_p): Declare. 11960 * configure.in (gmp_mpn_functions): Add perfpow. 11961 * mpz/perfpow.c: Now trivial, simply calls mpn_perfect_power_p. 11962 119632009-06-13 Martin Boij <mboij@kth.se> 11964 11965 * mpn/generic/perfpow.c: New file. 11966 * tests/mpz/t-perfpow.c: Rewrite. 11967 119682009-06-12 Torbjorn Granlund <tege@gmplib.org> 11969 11970 * mpn/generic/bdiv_qr.c: New file. 11971 * mpn/generic/bdiv_q.c: New file. 11972 * configure.in (gmp_mpn_functions): Add bdiv_qr and bdiv_q. 11973 * gmp-impl.h: Declare new functions. 11974 11975 * nextprime.c: New file. 11976 * gmp-impl.h (gmp_primesieve_t, gmp_init_primesieve, gmp_nextprime): 11977 Declare. 11978 * Makefile.am (libgmp_la_SOURCES): Add nextprime.c. 11979 119802009-06-11 Torbjorn Granlund <tege@gmplib.org> 11981 11982 * mpn/generic/trialdiv.c: New file. 11983 * gen-trialdivtab.c: New file. 11984 * configure.in (gmp_mpn_functions): Add trialdiv. 11985 * gmp-impl.h (mpn_trialdiv): Declare 11986 * Makefile.am: Add rules for gen-trialdivtab and trialdiv. 11987 11988 * longlong.h (arm count_leading_zeros): Define for armv5. 11989 11990 * gmp-impl.h: Move down toom itch functions to after we've #defined 11991 all THRESHOLDs. 11992 11993 * dumbmp.c (isprime): Replace with slightly less inefficient code. 11994 (mpz_tdiv_r): New function. 11995 119962009-06-11 Niels Möller <nisse@lysator.liu.se> 11997 11998 Support for mpn_toom32_mul in speed: 11999 * tune/speed.c (routine): Added mpn_toom32_mul. 12000 * tune/speed.h (SPEED_ROUTINE_MPN_TOOM32_MUL): New macro. 12001 * tune/common.c (speed_mpn_toom32_mul): New function. 12002 12003 * gmp-impl.h (mpn_toom32_mul_itch): Count scratch space needed 12004 for the calls to mpn_toom22_mul. 12005 (ABOVE_THRESHOLD): Moved this and related macros so it can be used 12006 by mpn_toom32_mul_itch. 12007 (mpn_toom22_mul_itch): Count scratch space for recursive calls. 12008 120092009-06-11 Torbjorn Granlund <tege@gmplib.org> 12010 12011 * mpn/x86/k7/mod_1_4.asm: New file, mainly for k7, but perhaps useful 12012 also for k6 and non-sse p6. 12013 120142009-06-10 Torbjorn Granlund <tege@gmplib.org> 12015 12016 * mpn/x86_64/mod_1_4.asm: Minor size reducing tweaks. 12017 12018 * mpn/x86/mod_1.asm: Remove obsolete file. 12019 * mpn/x86/k7/mmx/mod_1.asm: Likewise. 12020 * mpn/x86/pentium4/sse2/mod_1.asm: Likewise. 12021 * mpn/x86/p6/mod_1.asm: Likewise. 12022 * mpn/x86/pentium/mod_1.asm: Likewise. 12023 120242009-06-08 Niels Möller <nisse@lysator.liu.se> 12025 12026 * mpn/generic/toom4_sqr.c (mpn_toom4_sqr): Reorganized, to reduce 12027 the need for scratch space, and get rid of TMP_ALLOC. Also use 12028 mpn_toom_eval_dgr3_pm1. 12029 12030 * mpn/generic/toom_interpolate_6pts.c (mpn_toom_interpolate_6pts): 12031 Stricter ASSERTs based on maximum size of polynomial coefficients. 12032 Improved comments on the signedness of intermediate values. 12033 120342009-06-07 Torbjorn Granlund <tege@gmplib.org> 12035 12036 * mpn/generic/toom2_sqr.c: Make it actually work. 12037 12038 * mpn/generic/toom3_sqr.c: Reduce local scratch space. 12039 120402009-06-05 Torbjorn Granlund <tege@gmplib.org> 12041 12042 * mpn/generic/mul_fft.c (FFT_TABLE2_SIZE): Default to 200. 12043 (MUL_FFT_TABLE2_SIZE, SQR_FFT_TABLE2_SIZE): Let these decide 12044 FFT_TABLE2_SIZE if they are defined. 12045 (struct nk): Use bit field. 12046 120472009-06-05 Niels Möller <nisse@lysator.liu.se> 12048 12049 * mpn/generic/toom44_mul.c (mpn_toom44_mult): Use 12050 mpn_toom_eval_dgr3_pm1. 12051 12052 * mpn/generic/toom_eval_dgr3_pm1.c: New file. 12053 12054 * mpn/generic/toom_interpolate_7pts.c (mpn_toom_interpolate_7pts): 12055 Minor cleanup, use mpn_add rather than mpn_add_n + MPN_INCR_U. 12056 12057 * mpn/generic/toom44_mul.c (mpn_toom44_mul): Reorganized, to 12058 reduce the need for scratch space, and get rid of TMP_ALLOC. 12059 120602009-06-05 Torbjorn Granlund <tege@gmplib.org> 12061 12062 * mpn/generic/toom_interpolate_7pts.c: Fall back mpn_divexact_byN to 12063 mpn_bdiv_q_1_pi1, if the latter is NATIVE. 12064 120652009-06-04 Torbjorn Granlund <tege@gmplib.org> 12066 12067 * mpn/x86_64/bdiv_q_1.asm: New file. 12068 12069 * configure.in (HAVE_NATIVE): Add recently added functions. 12070 (GMP_MULFUNC_CHOICES): Handle addlsh_n, sublsh_n, rsblsh_n. 12071 12072 * tune/common.c (speed_mpn_bdiv_q_1, speed_mpn_bdiv_q_1_pi1): 12073 New functions. 12074 * tune/speed.c (routine): Add mpn_bdiv_q_1 and mpn_bdiv_q_1_pi1. 12075 * tune/speed.h (SPEED_ROUTINE_MPN_BDIV_Q_1_PI1): New #define. 12076 (SPEED_ROUTINE_MPN_BDIV_Q_1): Mew #define. 12077 12078 * configure.in (gmp_mpn_functions): Add bdiv_q_1. 12079 * mpn/generic/bdiv_q_1.c: New file. 12080 * mpn/asm-defs.m4 (define_mpn): Add mpn_bdiv_q_1 and mpn_bdiv_q_1_pi1. 12081 * gmp-impl.h (mpn_bdiv_q_1, mpn_bdiv_q_1_pi1): Declare. 12082 12083 * mpn/x86_64/lshift.asm: Cleanup. 12084 * mpn/x86_64/rshift.asm: Cleanup. 12085 12086 * mpn/x86_64/addlsh1_n.asm: Removed. 12087 * mpn/x86_64/aorrlsh1_n.asm: Generalised addlsh1_n.asm to handle 12088 addlsh1_n and rsblsh1_n functionality. 12089 12090 * tests/refmpn.c (refmpn_rsblsh1_n): New function. 12091 * tests/devel/try.c: Test mpn_rsblsh1_n. 12092 * tests/tests.h: Declare refmpn_rsblsh1_n. 12093 * tune/common.c (speed_mpn_rsblsh1_n): New function. 12094 * tune/speed.c (routine): Add mpn_rsblsh1_n. 12095 * tune/speed.h (mpn_rsblsh1_n): Declare. 12096 12097 * configure.in (gmp_mpn_functions_optional): Add rsblsh1_n. 12098 (GMP_MULFUNC_CHOICES): Handle rsblsh1_n defined with a mulfunc. 12099 * mpn/asm-defs.m4 (define_mpn): Add rsblsh1_n. 12100 * gmp-impl.h (mpn_rsblsh1_n): Declare. 12101 12102 * mpn/generic/toom32_mul.c: Consistently use TOOM22_MUL_N_REC. 12103 121042009-06-03 Marco Bodrato <bodrato@mail.dm.unipi.it> 12105 12106 * mpn/generic/toom43_mul.c: New file. 12107 * mpn/generic/toom52_mul.c: New file. 12108 * mpn/generic/toom_interpolate_6pts.c: New file. 12109 121102009-06-03 Torbjorn Granlund <tege@gmplib.org> 12111 12112 * configure.in (gmp_mpn_functions): Add toom43_mul, toom52_mul, and 12113 toom_interpolate_6pts, but also some previously forgotten functions. 12114 * mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Likewise. 12115 * gmp-impl.h: Declare new functions. Sort toom function declarations. 12116 12117 * gmp-impl.h: Rename toom4_* flags enum to toom7_*. Relevant C files 12118 updated. 12119 12120 * mpn/generic/toom_interpolate_7pts (divexact_2exp): Remove. 12121 121222009-06-02 Torbjorn Granlund <tege@gmplib.org> 12123 12124 * demos/factorize.c: Add -q command line option. 12125 121262009-06-02 Marco Bodrato <bodrato@mail.dm.unipi.it> 12127 12128 * mpn/generic/toom_interpolate_7pts.c: Streamline, resulting in speed 12129 improvements. 12130 12131 * mpn/generic/toom_interpolate_5pts.c: Likewise, but also completely 12132 do away with explicit scratch space. 12133 * gmp-impl.h (mpn_toom_interpolate_5pts): Update prototype. 12134 12135 * mpn/generic/mul_n.c (mpn_toom3_sqr_n, mpn_toom3_mul_n): 12136 Update toom_interpolate_5pts call without scratch space parameter. 12137 * mpn/generic/toom3_sqr.c: Likewise. 12138 * mpn/generic/toom42_mul.c: Likewise. 12139 * mpn/generic/toom33_mul.c: Likewise. 12140 12141 * mpn/generic/toom33_mul.c: Reduce local scratch space. 12142 * mpn/generic/toom32_mul.c: Rewrite to not use local scratch space. 12143 121442009-06-02 Torbjorn Granlund <tege@gmplib.org> 12145 12146 * mpn/generic/toom22_mul.c (TOOM22_MUL_MN_REC): New macro, use it for 12147 oo point. 12148 121492009-06-01 Torbjorn Granlund <tege@gmplib.org> 12150 12151 * mpn/generic/mul.c: Loop to avoid excessive recursion in toom33 and 12152 toom44 slicing code. 12153 12154 * mpz/remove.c: Correctly handle multiplicity that does not fit an int. 12155 12156 * Makefile.am (dist-hook): Check library version consistency. 12157 12158 * mpn/generic/mul.c: Rewrite. 12159 121602009-05-29 Torbjorn Granlund <tege@gmplib.org> 12161 12162 * tests/mpz/t-divis.c (check_random): Create huge test operands. 12163 12164 * mpn/generic/toom44_mul.c: Allocate temp space using one TMP_ALLOC 12165 call, not multiple TMP_SALLOC. 12166 * mpn/generic/toom4_sqr.c: Likewise. 12167 12168 * gmp-impl.h (mpn_toom22_mul_itch): Replace totally wrong code. 12169 12170 * mpn/generic/mullow_n.c: Relax overlap requirement implied by ASSERT. 12171 12172 * mpn/generic/divis.c: Rewrite. 12173 12174 * gmp-impl.h (mpn_mu_bdiv_qr): Now returns mp_limb_t. 12175 (mpn_toom2_sqr_itch): Simplify. 12176 12177 * mpn/generic/mu_bdiv_qr.c: Implement properly. 12178 121792009-05-27 Torbjorn Granlund <tege@gmplib.org> 12180 12181 * mpn/generic/mod_1_1.c: Add proper ASSERT functionality cps function. 12182 * mpn/generic/mod_1_2.c: Likewise. 12183 * mpn/generic/mod_1_3.c: Likewise. 12184 * mpn/generic/mod_1_4.c: Likewise. 12185 12186 * tune: Add speed measuring of toom22, toom33, and toom44. 12187 12188 * mpn/generic/toom22_mul.c: Handle potentially unbalanced coefficient 12189 product better. 12190 121912009-05-26 Torbjorn Granlund <tege@gmplib.org> 12192 12193 * tests/mpz/t-mul.c (ref_mpn_mul): Use mpn_toom44_mul in FFT range for 12194 better huge-operands performance. 12195 121962009-05-24 Torbjorn Granlund <tege@gmplib.org> 12197 12198 * acinclude.m4 (GMP_ASM_LSYM_PREFIX): Try "$L" too, before "$". 12199 122002009-05-23 Torbjorn Granlund <tege@gmplib.org> 12201 12202 * gmp-impl.h (mpn_mod_1s_1p,mpn_mod_1s_2p,mpn_mod_1s_3p,mpn_mod_1s_4p): 12203 Declare using __GMP_ATTRIBUTE_PURE. 12204 12205 * tune/tuneup.c (tune_mod_1): Specify check_size for measuring mod_1_N 12206 functions. 12207 (one): Remove redundant size loop exit condition. 12208 122092009-05-20 Torbjorn Granlund <tege@gmplib.org> 12210 12211 * mpn/x86/pentium4/sse2/mod_1_4.asm: New file. 12212 * mpn/x86/p6/sse2/mod_1_4.asm: New file (grabbing pentium4 code). 12213 122142009-05-18 Torbjorn Granlund <tege@gmplib.org> 12215 12216 * gmp-h.in (__GNU_MP_VERSION_MINOR): Bump to 4. 12217 (__GNU_MP_VERSION_PATCHLEVEL): Set to -1. 12218 12219 * mpn/x86_64/mod_1_4.asm: New file. 12220 12221 * mpn/asm-defs.m4: Correct names for mod_1_N functions. 12222 Add defines for corresponding cps functions. 12223 12224 * mpn/generic/mod_1_2.c: Support any sizes > 1. 12225 * mpn/generic/mod_1_3.c: Likewise. 12226 * mpn/generic/mod_1_4.c: Likewise. 12227 122282009-05-12 Torbjorn Granlund <tege@gmplib.org> 12229 12230 * Version 4.3.1 released. 12231 122322009-05-11 Torbjorn Granlund <tege@gmplib.org> 12233 12234 * gmp-h.in (__GNU_MP_VERSION_MINOR): Bump. 12235 12236 * Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*, LIBMP_LT_*): 12237 Bump version info. 12238 122392009-05-09 Torbjorn Granlund <tege@gmplib.org> 12240 12241 * tests/mpz: Add MPZ_CHECK_FORMAT to many tests. 12242 122432009-05-07 Torbjorn Granlund <tege@gmplib.org> 12244 12245 * mpn/x86/pentium4/sse2/mul_basecase.asm: Avoid L(ret), "ret" is 12246 defined in x86-defs.m4. 12247 122482009-05-06 Torbjorn Granlund <tege@gmplib.org> 12249 12250 * mpn/x86/p6/aors_n.asm: Use L() for labels. 12251 * mpn/x86/pentium4/sse2/addmul_1.asm: Likewise. 12252 * mpn/x86/pentium4/sse2/mul_1.asm: Likewise. 12253 * mpn/x86/pentium4/sse2/mul_basecase.asm: Likewise. 12254 * mpn/x86/pentium4/sse2/sqr_basecase.asm: Likewise. 12255 * mpn/x86_64/lshift.asm: Likewise. 12256 * mpn/x86_64/rshift.asm: Likewise. 12257 12258 * tests/cxx/t-locale.cc (point_string): Declare as extern "C" to 12259 placate compilers that mangle variable names. 12260 122612009-05-04 Torbjorn Granlund <tege@gmplib.org> 12262 12263 * tests/mpz/t-gcd.c: Generate operands that are multiple of each other. 12264 122652009-05-01 Torbjorn Granlund <tege@gmplib.org> 12266 12267 * gmp-h.in (__GMP_EXTERN_INLINE): Support for more systems. 12268 (gmp_randinit_set): Add missing __GMP_DECLSPEC. 12269 122702009-04-28 Torbjorn Granlund <tege@gmplib.org> 12271 12272 * mpn/generic/neg_n.c: New file. 12273 * configure.in (gmp_mpn_functions): Add neg_n. 12274 * mpn/asm-defs.m4 (define_mpn): Add neg_n. 12275 * mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Add neg_n.c. 12276 * gmp-h.in: Handle mpn_neg_n properly. 12277 12278 * mpn/generic/toom_interpolate_7pts.c (divexact_2exp): Nailify. 12279 12280 * mpn/generic/gcdext.c: Change some MPN_NORMALIZE to 12281 MPN_NORMALIZE_NOT_ZERO. 12282 * mpn/generic/gcdext_lehmer.c: Likewise. 12283 Add a MPN_NORMALIZE_NOT_ZERO. 12284 12285 * mpn/generic/binvert.c: Remove own mpn_neg_n. 12286 12287 * tests/mpz/t-gcd.c: Add some MPZ_CHECK_FORMAT calls. 12288 122892009-04-27 Torbjorn Granlund <tege@gmplib.org> 12290 12291 * mpn/Makefile.am (TARG_DIST): Add minithres. 12292 12293 * mpn/generic/bdiv_dbm1c.c: Handle nails. 12294 122952009-04-26 Torbjorn Granlund <tege@gmplib.org> 12296 12297 * config.guess: Recognise more POWER processor types. 12298 122992009-04-25 Torbjorn Granlund <tege@gmplib.org> 12300 12301 * mpn/x86/pentium4/sse2/popcount.asm: Work around Apple reloc bug. 12302 * mpn/x86/darwin.m4: Define symbol "DARWIN". 12303 123042009-04-19 Torbjorn Granlund <tege@gmplib.org> 12305 12306 * mpn/generic/powm.c (mpn_redc_n): Use ASSERT_ALWAYS, not abort(). 12307 * mpn/generic/powm_sec.c: Likewise. 12308 12309 * mpn/powerpc64/aix.m4 (EXTERN_FUNC): New define. Add dummy variants 12310 for other m4 files. 12311 * mpn/powerpc64/mode64/divrem_1.asm: Use EXTERN_FUNC. 12312 * mpn/powerpc64/mode64/divrem_1.asm: Likewise. 12313 123142009-04-16 Torbjorn Granlund <tege@gmplib.org> 12315 12316 * mpn/x86_64/x86_64-defs.m4 (JUMPTABSECT): New define. 12317 * mpn/x86_64/darwin.m4: Likewise. 12318 * mpn/x86_64/sqr_basecase.asm: Rework switch code using JUMPTABSECT. 12319 12320 * tune/common.c (speed_mpn_hgcd, speed_mpn_hgcd_lehmer): 12321 Remove an unused variable. 12322 12323 * mpn/x86/x86-defs.m4 (LEA): Get SIZE arguments right. 12324 123252009-04-14 Torbjorn Granlund <tege@gmplib.org> 12326 12327 * Version 4.3.0 released. 12328 12329 * scanf/doscan.c (__gmp_doscan): Pad 3-operand scanf call with dummy 12330 argument. 12331 * scanf/sscanffuns.c (scan): Disable vsscanf variant for now. 12332 123332009-04-13 Torbjorn Granlund <tege@gmplib.org> 12334 12335 * scanf/sscanffuns.c (scan): Rewrite to use stdarg. 12336 12337 * tests/mpz/t-root.c: Rewrite. Add unconditional gcc 4.3.2 tests. 12338 123392009-04-09 Torbjorn Granlund <tege@gmplib.org> 12340 12341 * mpn/generic/powm.c: New file. 12342 * mpn/generic/powlo.c: New file. 12343 * mpn/generic/powm_sec.c: New file. 12344 * configure.in (gmp_mpn_functions): List new functions. 12345 123462009-04-08 Torbjorn Granlund <tege@gmplib.org> 12347 12348 * mpz/urandomm.c: Amend last fix. 12349 123502009-04-06 Torbjorn Granlund <tege@gmplib.org> 12351 12352 * configure.in: Support Sun cc for x86_64. 12353 12354 * mpz/urandomm.c: Handle operand overlap. 12355 123562009-03-11 Torbjorn Granlund <tege@gmplib.org> 12357 12358 * configure.in (powerpc): Brave removing -Wa,-mppc64, in the hope that 12359 GCC now passes the proper options. 12360 123612009-03-09 Torbjorn Granlund <tege@gmplib.org> 12362 12363 * mpn/x86_64/divrem_1.asm: Add a nop to save a cycle in unnormalised 12364 case. 12365 123662009-03-05 Torbjorn Granlund <tege@gmplib.org> 12367 12368 * ia64/gmp-mparam.h, arm/gmp-mparam.h, x86/p6/mmx/gmp-mparam.h, 12369 pa32/hppa2_0/gmp-mparam.h sparc32/v9/gmp-mparam.h: Update. 12370 123712009-03-03 Torbjorn Granlund <tege@gmplib.org> 12372 12373 * mpn/ia64/bdiv_dbm1c.asm: Accept/return carry. 12374 123752009-03-02 Torbjorn Granlund <tege@gmplib.org> 12376 12377 * configure.in (64-bit sparc/solaris): Pass -xO3, not -O3 to solaris 12378 system compiler. 12379 123802009-03-01 Torbjorn Granlund <tege@gmplib.org> 12381 12382 * longlong.h (mips, powerpc): Provide assembly-free umul_ppmm for newer 12383 gcc. 12384 123852009-02-04 Torbjorn Granlund <tege@gmplib.org> 12386 12387 * mpn/generic/redc_2.c: Remove code for testing and timing. Update 12388 to current FSF header. 12389 * mpn/generic/redc_1.c: Update to current FSF header. 12390 123912009-01-21 Torbjorn Granlund <tege@gmplib.org> 12392 12393 * mpz/powm.c (redc): Remove. 12394 (mpz_powm): Use mpn_redc_1 instead of redc. 12395 12396 * tests/mpz/t-powm.c: Rewrite reference code. 12397 123982009-01-18 Torbjorn Granlund <tege@gmplib.org> 12399 12400 * tests/mpz: Increase reps for many tests. 12401 12402 * mpn/generic/rootrem.c (mpn_rootrem_internal): Use MPN_DECR_U instead of 12403 mpn_sub_1 (works around gcc 4.3 bugs and is also faster). 12404 124052009-01-16 Torbjorn Granlund <tege@gmplib.org> 12406 12407 * tests/tests.h: Declare refmpn_divrem_2. 12408 124092009-01-15 Torbjorn Granlund <tege@gmplib.org> 12410 12411 * mpz/perfpow.c: Add TMP_FREE before every return statement. 12412 12413 * mpn/generic/rootrem.c (mpn_rootrem_internal): Add a missing TMP_FREE. 12414 12415 * configure.in (gcc_cflags, gcc_64_cflags): Revert from -O3 to -O2, 12416 the change was accidental and cause too much miscompilation. 12417 124182009-01-14 Torbjorn Granlund <tege@gmplib.org> 12419 12420 * tune/tuneup.c (tune_mod_1): Run MOD_1_x_THRESHOLD tests also when 12421 longlong.h specified UDIV_PREINV_ALWAYS. 12422 12423 * mpn/generic/mod_1.c (mpn_mod_1): Properly check for normalisation 12424 divisor. 12425 124262009-01-13 Torbjorn Granlund <tege@gmplib.org> 12427 12428 * tune/tuneup.c (tune_mod_1): Tune for MOD_1_1_THRESHOLD, 12429 MOD_1_2_THRESHOLD, and MOD_1_4_THRESHOLD. 12430 12431 * mpn/generic/mod_1.c: Rewrite. 12432 * mpn/generic/mod_1_1.c: New file. 12433 * mpn/generic/mod_1_2.c: New file. 12434 * mpn/generic/mod_1_3.c: New file. 12435 * mpn/generic/mod_1_4.c: New file. 12436 * configure.in (gmp_mpn_functions): Add mod_1_*. 12437 * mpn/asm-defs.m4 (define_mpn): Add mod_1_*. 12438 * mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Add mod_1_*.c. 12439 * gmp-impl.h: Declare new mpn_mod_1s_* functions and associated 12440 THRESHOLD macros. 12441 (udiv_rnd_preinv): New macro. 12442 124432009-01-12 Torbjorn Granlund <tege@gmplib.org> 12444 12445 * tune/tuneup.c (tune_gcd_dc,tune_gcdext_dc): Lower step_factor to 0.1. 12446 124472009-01-08 Torbjorn Granlund <tege@gmplib.org> 12448 12449 * tests/mpz/t-nextprime.c: New test file. 12450 * tests/mpz/Makefile.am (check_PROGRAMS): Add t-nextprime. 12451 12452 From Niels Möller: 12453 * mpz/nextprime.c: Handle large prime gaps by limiting incr. 12454 124552009-01-04 Torbjorn Granlund <tege@gmplib.org> 12456 12457 * mpz/and.c, mpz/ior.c, mpz/xor.c: Re-read only necessary source 12458 pointers after reallocation. Misc cleanup. 12459 12460 * gmp-impl.h (MPN_TOOM44_MAX_N): New define, replaces MPN_TOOM3_MAX_N. 12461 12462 * mpn/x86/fat/diveby3.c: New file. 12463 124642008-12-30 Niels Möller <nisse@lysator.liu.se> 12465 12466 * doc/gmp.texi (Greatest Common Divisor Algorithms): Updated 12467 section on GCD algorithms. 12468 124692008-12-29 Torbjorn Granlund <tege@gmplib.org> 12470 12471 * doc/gmp.texi (Multiplication Algorithms): Add descriptions of Toom-4 12472 and unbalanced multiplication. 12473 (Radix to Binary): Add warning that text is outdated, 12474 (Contributors): Fix typos. 12475 12476 * mpn/generic/toom*.c: Use coherent MAYBE_ macros for trimming 12477 unreachable recursive functions. 12478 * gmp-impl.h: Update toom itch functions. 12479 12480 * mpn/x86_64/sqr_basecase.asm: Slightly increase stack allocation, to 12481 placate tuneup. 12482 124832008-12-28 Torbjorn Granlund <tege@gmplib.org> 12484 12485 * mpn/x86_64/pentium4/aors_n.asm: Tune prologue code. 12486 12487 * mpn/x86_64/pentium4/aorslsh1_n.asm: New file. 12488 12489 * mpn/x86_64/darwin.m4: Define symbol "DARWIN". 12490 * mpn/x86_64/invert_limb.asm: Work around darwin quirks. 12491 12492 * mpn/x86_64/sqr_basecase.asm: Further optimize, support Darwin. 12493 12494 * mpn/x86_64/invert_limb.asm: New file. 12495 124962008-12-27 Torbjorn Granlund <tege@gmplib.org> 12497 12498 * mpn/x86_64/core2/aorslsh1_n.asm: New file. 12499 125002008-12-26 Torbjorn Granlund <tege@gmplib.org> 12501 12502 * mpz/perfpow.c: Handle negative arguments properly. 12503 * tests/mpz/t-perfpow.c: New file. 12504 * tests/mpz/Makefile.am (check_PROGRAMS): Add t-perfpow. 12505 125062008-12-23 Torbjorn Granlund <tege@gmplib.org> 12507 12508 * tests/mpz/t-mul.c (dump_abort): Improve error message. 12509 12510 * gcd.c gcd_subdiv_step.c gcdext.c gcdext_subdiv_step.c: 12511 Remove private mpn_zero_p. 12512 12513 * tune/tuneup.c (tune_mul): Tune for MUL_TOOM44_THRESHOLD. 12514 (tune_sqr): Tune for SQR_TOOM4_THRESHOLD. 12515 12516 * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Add toom44_mul.c and 12517 toom4_sqr.c. 12518 12519 * configure.in (gmp_mpn_functions): Toom function updates. 12520 12521 * Rename mpn/mul_toomMN.c to mpn/toomMN_mul.c. Function names changed 12522 accordingly. 12523 12524 * mpn/toomMN_mul.c: Add scratch parameter. Do recursive multiplies 12525 properly. Misc tuning. Remove CHECK and TIMING code. 12526 12527 * mpn/toom2_sqr.c, mpn/toom3_sqr.c, mpn/toom4_sqr.c: New files. 12528 12529 * gmp-impl.h (mpn_toomMN_mul_itch): Several new functions. 12530 (mpn_zero_p): New functions. 12531 Add various TOOM4/TOOM44 related parameters. 12532 Update mpn_toomMN_mul prototypes. 12533 12534 * mpn/generic/mul_n.c (mpn_mul_n): Call mpn_toom44_mul. Use TMP_BALLOC 12535 instead of malloc. 12536 (mpn_sqr_n): Analogous changes. 12537 12538 * mpn/generic/mul.c: Update unbalanced toom code to pass scratch space. 12539 125402008-12-21 Torbjorn Granlund <tege@gmplib.org> 12541 12542 * mpz/nextprime.c: Add TMP_SDECL/MARK/FREE. 12543 125442008-12-20 Torbjorn Granlund <tege@gmplib.org> 12545 12546 * mpn/generic/sqrtrem.c (mpn_sqrtrem1): Rewrite, improve interface. 12547 (invsqrttab): New table, remove table approx_tab. 12548 (mpn_sqrtrem2): Optimize, update mpn_sqrtrem1 call. 12549 (mpn_sqrtrem): Update mpn_sqrtrem1 call. 12550 125512008-12-18 Torbjorn Granlund <tege@gmplib.org> 12552 12553 * mpz/nextprime.c: Run 10 mpz_millerrabin tests (was 5). 12554 Give credit to authors. 12555 12556 * mpn/x86_64/redc_1.asm: Align stack as mandated by ABI. 12557 12558 * mpn/x86_64/divrem_2.asm: Add some comments. 12559 12560 * mpn/x86_64/darwin.m4: New file. 12561 * configure.in: Use x86_64/darwin.m4. 12562 125632008-12-15 Torbjorn Granlund <tege@gmplib.org> 12564 12565 * doc/projects.html: Remove GCD and division projects, update text on 12566 multiplication. 12567 12568 * doc/tasks.html: Add a caution about that the file is somewhat 12569 outdated. 12570 125712008-12-14 Torbjorn Granlund <tege@gmplib.org> 12572 12573 * mpn/alpha/ev6/aorsmul_1.asm: New file (same code for mpn_addmul_1, 12574 much improved for mpn_submul_1). 12575 * mpn/alpha/ev6/addmul_1: File removed. 12576 * mpn/alpha/ev6/submul_1: File removed. 12577 125782008-12-09 Torbjorn Granlund <tege@gmplib.org> 12579 12580 From David Harvey: 12581 * mpn/x86_64/mul_basecase.asm: Further tweaks for code size and speed. 12582 12583 * mpn/powerpc64/mode64/divrem_1.asm: Rewrite. 12584 12585 * mpn/powerpc64/mode64/mul_basecase.asm: New file. 12586 125872008-12-08 Torbjorn Granlund <tege@gmplib.org> 12588 12589 * mpn/powerpc64/mode64/gmp-mparam.h: New file. 12590 12591 * gmp-impl.h: Additional cleanups. 12592 (mpn_set_str_compute_powtab): New prototype. 12593 (mpn_powm, mpn_powlo): New prototypes. 12594 12595 * mpz/pow_ui.c: Handle some small exponents locally. 12596 125972008-12-07 Torbjorn Granlund <tege@gmplib.org> 12598 12599 * mpn/generic/set_str.c: Remove prototypes (they are in gmp-impl.h). 12600 12601 * tune/set_strs.c, tune/set_strb.c: Make prototypes effective by moving 12602 the #define mpn_set_str* before including gmp-impl.h. 12603 12604 * All files: Change _PROTO => __GMP_PROTO. 12605 12606 * tune/speed.c (routine): Remove non-working choice mpn_set_str_subquad. 12607 * tune/common.c (speed_mpn_dc_set_str): Remove, it is broken. 12608 12609 * mpn/generic/toom_interpolate_7pts.c (divexact_2exp): Make this static, 12610 and inline it. 12611 12612 * gmp-impl.h: Major cleanup. 12613 (Remove formal parameter names. Use __GMP_PROTO consistently. Move 12614 __GMP_PROTO and __MPN use to adjacent lines for declared function. 12615 Fix typos. Remove code inside #if 0.) 12616 12617 * configure.in (gmp_mpn_functions): Add mul_toom33. Reformat. 12618 126192008-12-05 Torbjorn Granlund <tege@gmplib.org> 12620 12621 * mpn/generic/redc_1.c: New file. 12622 * mpn/generic/redc_2.c: New file. 12623 12624 * configure.in (gmp_mpn_functions): List redc_1 and redc_2. 12625 (HAVE_NATIVE): Likewise. 12626 12627 * tune/common.c (speed_mpn_redc_1): Renamed from speed_redc. 12628 * tune/speed.c (routine): Remove "redc", and "mpn_redc_1". 12629 * tune/speed.h (SPEED_ROUTINE_REDC_1): Renamed from SPEED_ROUTINE_REDC. 12630 Updated call. 12631 * tune/tuneup.c (tune_powm): Update redc call. 12632 126332008-12-04 Torbjorn Granlund <tege@gmplib.org> 12634 12635 * mpn/x86_64/sqr_basecase.asm: Inline a combined diagonal product code 12636 and addlsh1 loop. Misc cleanup. 12637 126382008-12-02 Torbjorn Granlund <tege@gmplib.org> 12639 12640 * mpn/x86_64/sqr_basecase.asm: New file. 12641 126422008-11-30 Torbjorn Granlund <tege@gmplib.org> 12643 12644 * mpn/generic/sqr_basecase.c: Fix typo in mpn_addmul_2s variant. 12645 126462008-11-28 Torbjorn Granlund <tege@gmplib.org> 12647 12648 * mpn/x86_64/redc_1.asm: Rewrite. 12649 126502008-11-27 Torbjorn Granlund <tege@gmplib.org> 12651 12652 * tests/refmpn.c (refmpn_redc_1): New function. 12653 126542008-11-25 Torbjorn Granlund <tege@gmplib.org> 12655 12656 * mpn/x86/k7/aorsmul_1.asm: Actually handle mpn_submul_1. 12657 126582008-11-23 Torbjorn Granlund <tege@gmplib.org> 12659 12660 * mpn/x86_64/divrem_1.asm: Rewrite. 12661 12662 * alpha/divrem_2.asm: New file. 12663 * powerpc32/divrem_2.asm: New file. 12664 * powerpc64/mode64/divrem_2.asm: New file. 12665 * x86/divrem_2.asm: New file. 12666 * x86_64/divrem_2.asm: New file. 12667 * tests/refmpn.c (refmpn_divrem_2): New function. 12668 126692008-11-22 Torbjorn Granlund <tege@gmplib.org> 12670 12671 * mpn/x86/k7/mul_1.asm: Rewrite for smaller size and better speed. 12672 * mpn/x86/k7/aorsmul_1.asm: Likewise. 12673 12674 * acinclude.m4 (GMP_VERSION): Include last component even when zero. 12675 126762008-11-21 Torbjorn Granlund <tege@gmplib.org> 12677 12678 * mpn/x86_64/README: Rewrite. 12679 12680 * tests/devel/try.c (malloc_region, mprotect_maybe): Add casts for 12681 printf type correctness. 12682 12683 * gmp-h.in (__GNU_MP_VERSION_MINOR): Bump. 12684 12685 * Makefile.am (LIBGMP_LT_*, LIBGMPXX_LT_*, LIBMP_LT_*): 12686 Bump version info. 12687 126882008-11-20 Torbjorn Granlund <tege@gmplib.org> 12689 12690 * gmp-impl.h: Rename modlimb_invert to binvert_limb. 12691 * tune/speed.h: Likewise. 12692 * tune/modlinv.c: Likewise. 12693 * tune/common.c: Likewise. 12694 * tests/t-modlinv.c: Likewise. 12695 * tests/t-constants.c: Likewise. 12696 * mpn/sparc64/mode1o.c: Likewise. 12697 * mpn/alpha/dive_1.c: Likewise. 12698 * mpn/sparc64/dive_1.c: Likewise. 12699 * mpn/generic/mode1o.c: Likewise. 12700 * mpn/generic/dive_1.c: Likewise. 12701 * mpn/generic/bdivmod.c: Likewise. 12702 * mpn/alpha/mode1o.asm: Likewise. 12703 * mpn/asm-defs.m4: Likewise. 12704 * mpn/ia64/mode1o.asm: Likewise. 12705 * mpn/powerpc32/README: Likewise. 12706 * mpn/powerpc32/mode1o.asm: Likewise. 12707 * mpn/powerpc64/mode64/dive_1.asm: Likewise. 12708 * mpn/powerpc64/mode64/mode1o.asm: Likewise. 12709 * mpn/x86/dive_1.asm: Likewise. 12710 * mpn/x86/k6/mmx/dive_1.asm: Likewise. 12711 * mpn/x86/k6/mode1o.asm: Likewise. 12712 * mpn/x86/k7/dive_1.asm: Likewise. 12713 * mpn/x86/k7/mode1o.asm: Likewise. 12714 * mpn/x86/p6/dive_1.asm: Likewise. 12715 * mpn/x86/p6/mode1o.asm: Likewise. 12716 * mpn/x86/pentium/dive_1.asm: Likewise. 12717 * mpn/x86/pentium/mode1o.asm: Likewise. 12718 * mpn/x86/pentium4/sse2/dive_1.asm: Likewise. 12719 * mpn/x86/pentium4/sse2/mode1o.asm: Likewise. 12720 * mpn/x86_64/dive_1.asm: Likewise. 12721 * mpn/x86_64/mode1o.asm: Likewise. 12722 12723 * mpn/x86_64/aors_n.asm: Replace with slightly faster, more alignment 12724 neutral loop. 12725 127262008-11-18 Torbjorn Granlund <tege@gmplib.org> 12727 12728 * configure.in: Remove gcd_finda related declarations. 12729 * gmp-impl.h (mpn_gcd_finda): Remove declaration. 12730 * mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Remove gcd_finda. 12731 * mpn/asm-defs.m4: Remove define_mpn(gcd_finda). 12732 * mpn/x86/k6/gcd_finda.asm: Remove file. 12733 * tests/devel/try.c (param_init): Remove mpn_gcd_finda. 12734 (choice_array): Remove mpn_gcd_finda. 12735 * tests/mpn/t-instrument.c (check): Remove testing of mpn_gcd_finda. 12736 * tests/refmpn.c (refmpn_gcd_finda): Remove. 12737 * tests/tests.h (refmpn_gcd_finda): Remove declaration. 12738 * tune/common.c (speed_mpn_gcd_finda): Remove. 12739 * tune/gcd_finda_gen.c: Remove file. 12740 * tune/speed.h (speed_mpn_gcd_finda): Remove declaration. 12741 * tune/speed.c (routine): Remove mpn_gcd_finda entry. 12742 12743 * tests/mpz/t-powm.c: Print test number when failing a test. 12744 12745 * mpn/x86_64/redc_1.asm (CALL): Move from here... 12746 * mpn/x86_64/x86_64-defs.m4: ...to here. 12747 12748 * gmp-impl.h (mpn_jacobi_base): Remove parameter names. 12749 127502008-11-11 Torbjorn Granlund <tege@gmplib.org> 12751 12752 * tests/mpf/t-conv.c: Add some specific tests, supplementing the random 12753 tests. 12754 127552008-11-09 Torbjorn Granlund <tege@gmplib.org> 12756 12757 * mpf/set_str.c: Default 'base' before letting exp_base inherit it. 12758 12759 * tests/cxx/t-prec.cc: Use the right precision for all float constants. 12760 127612008-11-08 Torbjorn Granlund <tege@gmplib.org> 12762 12763 * doc/gmp.texi (Float Comparison): Update mpf_eq documentation. 12764 12765 * mpf/eq.c: Compare the right number of bits. 12766 127672008-11-02 Torbjorn Granlund <tege@gmplib.org> 12768 12769 Undo, it made testing too slow: 12770 * tests/mpz/t-mul.c: Use slower geometric progression for operand 12771 sizes. 12772 12773 * mpn/x86/k7/mod_34lsub1.asm: Use movzb for masking low 8 bits. 12774 127752008-10-31 Niels Möller <nisse@lysator.liu.se> 12776 12777 * mpn/generic/hgcd2.c (div1): New function (taken from old gcdext 12778 implementation) 12779 (mpn_hgcd2): Use single precision for the second half of the work. 12780 127812008-10-30 Torbjorn Granlund <tege@gmplib.org> 12782 12783 * mpn/x86/p6/sse2/gmp-mparam.h: New file. 12784 127852008-10-29 Torbjorn Granlund <tege@gmplib.org> 12786 12787 * configure.in (x86 fat_path): Add "x86/p6/sse2". 12788 12789 * mpn/x86/fat/fat.c (__gmpn_cpuvec_init): Recognize sse2 capable p6 12790 (pentiumm, core2). 12791 12792 * mpn/x86/p6/sse2/mul_1.asm: New file. 12793 * mpn/x86/p6/sse2/addmul_1.asm: New file. 12794 * mpn/x86/p6/sse2/submul_1.asm: New file. 12795 * mpn/x86/p6/sse2/mul_basecase.asm: New file. 12796 * mpn/x86/p6/sse2/sqr_basecase.asm: New file. 12797 * mpn/x86/p6/sse2/popcount.asm: New file. 12798 12799 * mpn/x86/fat/fat.c (__gmpn_cpuvec_init): Handle "extended" fields for 12800 model and family. 12801 128022008-10-28 Torbjorn Granlund <tege@gmplib.org> 12803 12804 From Mickael Gastineau: 12805 * gmp-h.in (gmp_urandomm_ui, gmp_urandomb_ui): Add __GMP_DECLSPEC. 12806 128072008-10-27 Torbjorn Granlund <tege@gmplib.org> 12808 12809 * gmp-h.in (mpn_gcdext_1): Remove bogus __GMP_ATTRIBUTE_PURE. 12810 128112008-10-27 Niels Möller <nisse@lysator.liu.se> 12812 12813 * tune/common.c (speed_mpn_hgcd): Call mpn_hgcd_matrix_init once 12814 for each call to mpn_hgcd. 12815 (speed_mpn_hgcd_lehmer): Likewise. 12816 128172008-10-26 Torbjorn Granlund <tege@gmplib.org> 12818 12819 * configure.in: Point to p6/sse2 for pentiumm and core2. 12820 12821 * gmp-impl.h (mpn_add_nc, mpn_sub_nc): Move these macros to after fat 12822 definitions. 12823 12824 * tune/common.c, tune/speed.c, tune/speed.h: 12825 Add speed measurement of mpn_bdiv_dbm1c. 12826 128272008-10-24 Torbjorn Granlund <tege@gmplib.org> 12828 12829 * mpn/x86_64/gmp-mparam.h (MUL_FFT_TABLE2, SQR_FFT_TABLE2): Extend. 12830 12831 * mpz/nextprime.c: Move declarations to function beginning. 12832 128332008-10-23 Niels Möller <nisse@lysator.liu.se> 12834 12835 * gmp-impl.h (DECL_gcdext_1): Deleted. 12836 128372008-10-22 Torbjorn Granlund <tege@gmplib.org> 12838 12839 * mpn/x86_64/atom/aors_n.asm: New file. 12840 * mpn/x86_64/atom/gmp-mparam.h: New file. 12841 128422008-10-21 Torbjorn Granlund <tege@gmplib.org> 12843 12844 With Neils Möller: 12845 * mpz/nextprime.c: Rewrite. 12846 12847 * tests/devel/try.c (main): Use strtol for 's' and 'S' optargs. 12848 12849 * mpn/x86_64/pentium4/rshift.asm: Misc cleanups. 12850 * mpn/x86_64/pentium4/lshift.asm: Likewise. 12851 12852 * mpn/x86_64/pentium4/aors_n.asm: Use fewer registers. 12853 12854 * configure.in: Set up specific path for x86_64/atom. 12855 128562008-10-21 Niels Möller <nisse@lysator.liu.se> 12857 12858 * mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Removed 12859 qstack.c. 12860 * mpn/generic/qstack.c: Deleted obsolete file. 12861 128622008-10-20 Torbjorn Granlund <tege@gmplib.org> 12863 12864 * mpn/x86_64/core2/aorsmul_1.asm: New file. 12865 128662008-10-19 Torbjorn Granlund <tege@gmplib.org> 12867 12868 * mpn/x86_64/aors_n.asm: Remove redundant MULFUNC_PROLOGUE. 12869 12870 * gmp-impl.h (popc_limb): Remove redundant checks of GMP_LIMB_BITS 12871 inside several of these macros. 12872 128732008-10-17 Torbjorn Granlund <tege@gmplib.org> 12874 12875 * tests/mpz/t-mul.c: Use slower geometric progression for operand 12876 sizes. Do every other tests for same size operands. 12877 128782008-10-15 Torbjorn Granlund <tege@gmplib.org> 12879 12880 * mpn/x86_64/mul_basecase.asm: Simplify addressing in epilogue. 12881 12882 * mpn/mips64/divrem_1.asm: Remove file, it is n32-only, and uses an old 12883 algorithm. 12884 12885 * config.guess, config.sub, configure.in: Support Intel Atom processor. 12886 128872008-10-10 Torbjorn Granlund <tege@gmplib.org> 12888 12889 * mpq/mul.c: Fix typo in last change. 12890 128912008-10-09 Torbjorn Granlund <tege@gmplib.org> 12892 12893 * tests/refmpn.c (refmpn_sb_divrem_mn): Work around a gcc bug. 12894 128952008-10-08 Torbjorn Granlund <tege@gmplib.org> 12896 12897 * mpq/mul.c: Use TMP_ALLOC. Cleanup. 12898 * mpq/div.c: Likewise. 12899 12900 * mpn/x86_64/mul_basecase.asm: Use lea directly for loading entry point 12901 addresses. 12902 129032008-10-09 Niels Möller <nisse@lysator.liu.se> 12904 12905 * mpn/x86/k7/gmp-mparam.h: Updated GCD-related values. 12906 129072008-10-05 Torbjorn Granlund <tege@gmplib.org> 12908 12909 * mpn/generic/mul_fft.c (mpn_mul_fft_internal): Do store 12910 mpn_fft_norm_modF return value, if (rec). 12911 129122008-10-04 Torbjorn Granlund <tege@gmplib.org> 12913 12914 * mpn/x86_64/aorsmul_1.asm: Replace with faster code. 12915 * mpn/x86_64/mul_1.asm: Likewise. 12916 * mpn/x86_64/addmul_2.asm: Likewise. 12917 * mpn/x86_64/mul_2.asm: Likewise. 12918 * mpn/x86_64/mul_basecase.asm: Likewise. 12919 129202008-10-02 Torbjorn Granlund <tege@gmplib.org> 12921 12922 * mpn/minithres/gmp-mparam.h: Update FFT values. 12923 129242008-10-02 Niels Möller <nisse@lysator.liu.se> 12925 12926 * hgcd.c (mpn_hgcd_matrix_mul): Fixed normalization bug. 12927 129282008-09-24 Torbjorn Granlund <tege@gmplib.org> 12929 12930 * configure.in: Handle --enable-minithres. 12931 * mpn/minithres/gmp-mparam.h: Update all values. 12932 129332008-09-22 Torbjorn Granlund <tege@gmplib.org> 12934 12935 * tune/speed.c (routine): New entry for mpn_mul. 12936 * tune/speed.h (SPEED_ROUTINE_MPN_MUL): Renamed from 12937 SPEED_ROUTINE_MPN_MUL_BASECASE. 12938 (speed_mpn_mul): Renamed from speed_mpn_mul_basecase. 12939 (SPEED_ROUTINE_MPN_MUL): Allocate our own memory of xp operand. 12940 12941 * tune/common.c: Corresponding changes. 12942 129432008-09-22 Niels Möller <nisse@lysator.liu.se> 12944 12945 * mpn/generic/gcdext.c (hgcd_mul_matrix_vector): New function, 12946 replaces addmul2_n. Needs less copying. 12947 (mpn_gcdext): Use hgcd_mul_matrix_vector. Updated for interface 12948 change in mpn_gcdext_subdiv_step 12949 12950 * mpn/generic/hgcd.c (hgcd_matrix_mul_1): Rewritten to use 12951 mpn_hgcd_mul_matrix1_vector. 12952 (hgcd_step): Updated for interface change in 12953 mpn_hgcd_mul_matrix1_inverse_vector. 12954 12955 * mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_n): Updated for 12956 interface changes in mpn_hgcd_mul_matrix1_vector, 12957 mpn_hgcd_mul_matrix1_inverse_vector and mpn_gcdext_subdiv_step. 12958 12959 * mpn/generic/gcd_lehmer.c (mpn_gcd_lehmer_n): Updated for 12960 interface change in mpn_hgcd_mul_matrix1_inverse_vector. 12961 12962 * mpn/generic/gcdext_subdiv_step.c (mpn_gcdext_subdiv_step): Use 12963 separate scratch arguments for the quotient and for the cofactor 12964 update. 12965 12966 * mpn/generic/hgcd2.c (mpn_hgcd_mul_matrix1_vector): Interface 12967 change. Store first element in rp and leave ap unmodified. No 12968 additional scratch space or copying needed. Callers that require 12969 modification in place still need to copy one of the inputs. 12970 (mpn_hgcd_mul_matrix1_inverse_vector): Likewise. 12971 129722008-09-22 Niels Möller <nisse@lysator.liu.se> <nisse@king.swox.se> 12973 12974 * mpn/generic/hgcd.c (hgcd_matrix_mul_1): Use mpn_addaddmul_1msb0. 12975 * mpn/generic/hgcd2.c (mpn_hgcd_mul_matrix1_vector): Likewise. 12976 12977 * mpn/generic/gcd.c: Use libspeed for timing measurements. 12978 12979 * gmp-impl.h: Declare mpn_addaddmul_1msb0. 12980 * mpn/asm-defs.m4: Added addaddmul_1msb0. 12981 * mpn/x86_64/addaddmul_1msb0.asm: New file. 12982 * configure.in (gmp_mpn_functions_optional): Added 12983 addaddmul_1msb0. 12984 (HAVE_NATIVE): List addaddmul_1msb0. 12985 129862008-09-21 Torbjorn Granlund <tege@gmplib.org> 12987 12988 * mpn/generic/get_str.c (GET_STR_DC_THRESHOLD): Remove default. 12989 (GET_STR_PRECOMPUTE_THRESHOLD): Likewise. 12990 Misc code cleanups. 12991 12992 * gmp-impl.h (mpn_dc_set_str_itch): Allocate GMP_LIMB_BITS more limbs. 12993 12994 Revert: 12995 * mpn/generic/set_str.c: 12996 (mpn_dc_set_str): Remove impossible case, replace by an ASSERT. 12997 129982008-09-18 Torbjorn Granlund <tege@gmplib.org> 12999 13000 * mpn/alpha/ev6/gmp-mparam.h (DIVEXACT_BY3_METHOD): Define. 13001 13002 * mpn/ia64/diveby3.asm: Remove. 13003 * mpn/x86/diveby3.asm: Remove. 13004 * mpn/x86/k6/diveby3.asm: Remove. 13005 * mpn/x86/k7/diveby3.asm: Remove. 13006 * mpn/x86/p6/diveby3.asm: Remove. 13007 * mpn/x86/pentium/diveby3.asm: Remove. 13008 * mpn/x86_64/diveby3.asm: Remove. 13009 * mpn/x86/pentium4/sse2/diveby3.asm: Remove. 13010 13011 * configure.in (HAVE_NATIVE): List divexact_by3c. 13012 13013 * gmp-impl.h (mpn_divexact_by3c): Override gmp-h.in's definition. 13014 (DIVEXACT_BY3_METHOD): Don't default to 0 if 13015 HAVE_NATIVE_mpn_divexact_by3c. 13016 130172008-09-18 Niels Möller <nisse@lysator.liu.se> 13018 13019 * mpn/generic/gcd.c (main): Added code for tuning of CHOOSE_P. 13020 13021 * mpn/generic/hgcd.c (mpn_hgcd_matrix_mul): Assert that inputs are 13022 normalized. 13023 130242008-09-17 Niels Möller <nisse@lysator.liu.se> <nisse@king.swox.se> 13025 13026 * mpn/generic/gcdext.c (mpn_gcdext): p = n/5 caused a 13027 slowdown for large inputs. As a compromise, use p = n/2 for the 13028 first iteration, and p = n/3 for the rest. Handle the first 13029 iteration specially, since the initial u0 and u1 are trivial. 13030 13031 * mpn/x86_64/gmp-mparam.h (GCDEXT_DC_THRESHOLD): Reduced threshold 13032 from 409 to 390. 13033 13034 * mpn/generic/gcdext.c (CHOOSE_P): New macro. Use p = n/5. 13035 (mpn_gcdext): Use CHOOSE_P, and generalized the calculation of 13036 scratch space. 13037 13038 * tune/tuneup.c (tune_hgcd): Use default step factor. 13039 13040 * mpn/x86_64/gmp-mparam.h: (GCD_DC_THRESHOLD): Reduced from 493 to 13041 412. 13042 13043 * mpn/generic/gcd.c (CHOOSE_P): New macro, to determine the 13044 split when calling hgcd. Use p = 2n/3, as that seems better than 13045 the more obvious split p = n/2. 13046 (mpn_gcd): Use CHOOSE_P, and generalized the calculation of 13047 scratch space. 13048 130492008-09-16 Torbjorn Granlund <tege@gmplib.org> 13050 13051 * mpn/generic/toom_interpolate_7pts.c: Use new mpn_divexact_byN 13052 functions. 13053 13054 * gmp-impl.h (mpn_divexact_by3, mpn_divexact_by5, mpn_divexact_by7, 13055 mpn_divexact_by9, mpn_divexact_by11, mpn_divexact_by13, 13056 mpn_divexact_by15): New macros, defined in terms of mpn_bdiv_dbm1. 13057 13058 * configure.in (gmp_mpn_functions): List bdiv_dbm1c. 13059 (HAVE_NATIVE): Likewise. 13060 * mpn/asm-defs.m4: Define bdiv_dbm1c. 13061 * gmp-impl.h (mpn_bdiv_dbm1c): Declare. 13062 (mpn_bdiv_dbm1): New macro. 13063 * mpn/generic/bdiv_dbm1c.c: New file. 13064 * mpn/alpha/bdiv_dbm1c.asm: New file. 13065 * mpn/ia64/bdiv_dbm1c.asm: New file. 13066 * mpn/powerpc32/bdiv_dbm1c.asm: New file. 13067 * mpn/powerpc64/mode64/bdiv_dbm1c.asm: New file. 13068 * mpn/x86/bdiv_dbm1c.asm: New file. 13069 * mpn/x86_64/bdiv_dbm1c.asm: New file. 13070 13071 * mpn/generic/diveby3.c: Add mpn_bdiv_dbm1c based function. 13072 Choose function depending on DIVEXACT_BY3_METHOD. 13073 * gmp-impl.h (DIVEXACT_BY3_METHOD): Provide default. 13074 130752008-09-16 Niels Möller <nisse@lysator.liu.se> 13076 13077 * mpn/generic/hgcd.c (mpn_hgcd_addmul2_n): Moved function to 13078 gcdext.c, where it is used. 13079 * mpn/generic/gcdext.c (addmul2_n): Moved and renamed, was 13080 mpn_hgcd_addmul2_n. Made static. Deleted input normalization. 13081 Deleted rn argument. 13082 (mpn_gcdext): Updated calls to addmul2_n, and added assertions. 13083 13084 * gmp-impl.h (MPN_HGCD_MATRIX_INIT_ITCH): Increased storage by 4 limbs. 13085 (MPN_HGCD_LEHMER_ITCH): Reduced storage by one limb. 13086 (MPN_GCD_SUBDIV_STEP_ITCH): Likewise. 13087 (MPN_GCD_LEHMER_N_ITCH): Likewise. 13088 13089 * mpn/generic/hgcd.c (mpn_hgcd_matrix_init): Use two extra limbs. 13090 (hgcd_step): Use overlapping arguments to mpn_tdiv_qr. 13091 (mpn_hgcd_matrix_mul): Deleted normalization code. Tighter bounds 13092 for the element size of the product. Needs two extra limbs of 13093 storage for the elements. 13094 (mpn_hgcd_itch): Updated storage calculation. 13095 13096 * mpn/generic/gcd_subdiv_step.c (mpn_gcd_subdiv_step): Use 13097 overlapping arguments to mpn_tdiv_qr. Use mpn_zero_p. 13098 13099 * mpn/generic/gcd.c (mpn_gcd): Use mpn_zero_p. 13100 131012008-09-15 Niels Möller <nisse@lysator.liu.se> 13102 13103 * mpn/generic/hgcd.c (mpn_hgcd_matrix_init): Updated for deleted 13104 tp pointer. 13105 (hgcd_matrix_update_q): Likewise. 13106 (mpn_hgcd_matrix_mul): Likewise. 13107 (mpn_hgcd_itch): Updated calculation of scratch space. 13108 13109 * gmp-impl.h (struct hgcd_matrix): Deleted tp pointer. 13110 (MPN_HGCD_MATRIX_INIT_ITCH): Reduced storage. 13111 (mpn_hgcd_step, MPN_HGCD_STEP_ITCH): Deleted declarations. 13112 131132008-09-15 Niels Möller <nisse@lysator.liu.se> <nisse@king.swox.se> 13114 13115 * mpn/x86_64/gmp-mparam.h (MATRIX22_STRASSEN_THRESHOLD): New 13116 threshold. 13117 13118 * mpn/generic/hgcd.c (mpn_hgcd_matrix_mul): Use mpn_matrix22_mul. 13119 (mpn_hgcd_itch): Updated calculation of scratch space. Use 13120 count_leading_zeros to get the recursion depth. 13121 13122 * mpn/generic/gcd.c (mpn_gcd): Fixed calculation of scratch space, 13123 and use mpn_hgcd_itch. 13124 131252008-09-15 Niels Möller <nisse@lysator.liu.se> 13126 13127 * tune/tuneup.c (tune_matrix22_mul): New function. 13128 (all): Use it. 13129 13130 * tune/common.c (speed_mpn_matrix22_mul): New function. 13131 13132 * tune/Makefile.am (TUNE_MPN_SRCS_BASIC): Added matrix22_mul.c. 13133 13134 * tests/mpn/t-matrix22.c: Use MATRIX22_STRASSEN_THRESHOLD to 13135 select sizes for tests. 13136 13137 * gmp-impl.h (MATRIX22_STRASSEN_THRESHOLD): New threshold 13138 13139 * configure.in (gmp_mpn_functions): Added matrix22_mul. 13140 * gmp-impl.h: Added declarations for mpn_matrix22_mul and related 13141 functions. 13142 13143 * mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Added 13144 matrix22_mul.c. 13145 * tests/mpn/Makefile.am (check_PROGRAMS): Added t-matrix22. 13146 13147 * tests/mpn/t-matrix22.c: New file. 13148 * mpn/generic/matrix22_mul.c: New file. 13149 131502008-09-11 Niels Möller <nisse@king.swox.se> 13151 13152 * tune/tuneup.c: Updated tuning of gcdext. 13153 13154 * mpn/x86_64/gmp-mparam.h (GCDEXT_DC_THRESHOLD): Reduced threshold 13155 from 713 to 409. 13156 131572008-09-11 Niels Möller <nisse@lysator.liu.se> 13158 13159 * gmp-impl.h: Updated for gcdext changes. 13160 (GCDEXT_DC_THRESHOLD): New constant, renamed from 13161 GCDEXT_SCHOENHAGE_THRESHOLD. 13162 13163 * mpn/generic/gcdext.c (compute_v): Accept non-normalized a and b 13164 as inputs. 13165 (mpn_gcdext): Rewrote and simplified. Now uses the new mpn_hgcd 13166 interface. 13167 13168 * mpn/generic/hgcd.c (mpn_hgcd_addmul2_n): Renamed from addmul2_n 13169 and made non-static. Changed interface to take non-normalized 13170 inputs, and only two size arguments. 13171 (mpn_hgcd_matrix_mul): Simplified using new mpn_hgcd_addmul2_n. 13172 13173 * mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_itch): Deleted 13174 function. 13175 (mpn_gcdext_lehmer_n): Renamed from mpn_gcd_lehmer. Now takes 13176 inputs of equal size. Moved the code for the division step to a 13177 separate function... 13178 * mpn/generic/gcdext_subdiv_step.c (mpn_gcdext_subdiv_step): New 13179 file, new function. 13180 13181 * configure.in (gmp_mpn_functions): Added gcdext_subdiv_step. 13182 131832008-09-10 Torbjorn Granlund <tege@gmplib.org> 13184 13185 * tests/devel/anymul_1.c: Include <string.h>. 13186 13187 * gmp-h.in: Unconditionally include <cstdio>. 13188 131892008-09-10 Niels Möller <nisse@lysator.liu.se> 13190 13191 * tune/common.c: #if:ed out speed_mpn_gcd_binary and 13192 speed_mpn_gcd_accel. 13193 * tune/speed.c (routine): #if:ed out mpn_gcd_binary, mpn_gcd_accel 13194 and find_a. 13195 * tune/Makefile.am (libspeed_la_SOURCES): Removed gcd_bin.c 13196 gcd_accel.c gcd_finda_gen.c. 13197 * tune/tuneup.c: Enable tuning of GCD_DC_THRESHOLD. 13198 13199 * mpn/generic/gcd.c (mpn_gcd): Rewrote and simplified. Now uses 13200 the new mpn_hgcd interface. 13201 13202 * */gmp-mparam.h: Renamed GCD_SCHOENHAGE_THRESHOLD to 13203 GCD_DC_THRESHOLD. 13204 13205 * mpn/generic/gcd_lehmer.c (mpn_gcd_lehmer_n): Renamed (was 13206 mpn_gcd_lehmer). Now takes inputs of equal size. 13207 13208 * mpn/generic/gcd_lehmer.c (mpn_gcd_lehmer): Reintroduced gcd_2, 13209 to get better performance for small inputs. 13210 13211 * mpn/generic/hgcd.c: Don't hardcode small HGCD_THRESHOLD. 13212 * mpn/x86_64/gmp-mparam.h (HGCD_THRESHOLD): Reduced from 145 to 13213 120. 13214 * */gmp-mparam.h: Renamed HGCD_SCHOENHAGE_THRESHOLD to 13215 HGCD_THRESHOLD. 13216 132172008-09-09 Torbjorn Granlund <tege@gmplib.org> 13218 13219 * doc/gmp.texi: Fix a typo and clarify mpn_gcdext docs. 13220 132212008-09-09 Niels Möller <nisse@lysator.liu.se> 13222 13223 * tune/common.c (speed_mpn_hgcd, speed_mpn_hgcd_lehmer): Adapted 13224 to new hgcd interface. 13225 13226 * gmp-impl.h (MPN_HGCD_LEHMER_ITCH): New macro. 13227 13228 * hgcd.c (mpn_hgcd_lehmer): Renamed function, from hgcd_base. Made 13229 non-static. 13230 13231 * gcd_lehmer.c (mpn_gcd_lehmer): Use hgcd2 also for n == 2. 13232 13233 * gcdext_lehmer.c (mpn_gcdext_lehmer): Simplified code for 13234 division step. Added proper book-keeping of swaps, which affect 13235 the sign of the returned cofactor. 13236 13237 * tests/mpz/t-gcd.c (one_test): Display co-factor when mpn_gcdext 13238 fails. 13239 13240 * gcd_lehmer.c (mpn_gcd_lehmer): At end of loop, need to handle 13241 the special case n == 1 correctly. 13242 13243 * gcd_subdiv_step.c (mpn_gcd_subdiv_step): Simplified function. 13244 The special cancellation logic is not needed here. 13245 132462008-09-08 Torbjorn Granlund <tege@gmplib.org> 13247 13248 * mpn/generic/invert.c: Add working but slow code. 13249 13250 * mpn/x86_64/x86_64-defs.m4 (R32, R8): New macros. 13251 13252 * mpn/ia64/submul_1.asm: Move some labels for broader assembler 13253 compatibility. 13254 13255 * gmp-impl.h (mpn_mul_3, mpn_mul_4): Declare. 13256 * tests/tests.h (refmpn_mul_3, refmpn_mul_4): Declare. 13257 * tests/try.c (param_init): Set things up for mpn_mul_3 and mpn_mul_4. 13258 (choice_array): Likewise. 13259 (call): Likewise. 13260 * mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): 13261 Add mul_3.c and mul_4. 13262 * mpn/asm-defs.m4: Define mul_3 and mul_4. 13263 * tests/refmpn.c (refmpn_mul_N): New function. 13264 (refmpn_mul_2): Remove old definition, call refmpn_mul_N. 13265 (refmpn_mul_3, refmpn_mul_4): New functions. 13266 * tune/common.c (speed_mpn_mul_3, speed_mpn_mul_4): New functions. 13267 * tune/speed.h (speed_mpn_mul_3, speed_mpn_mul_4): Declare. 13268 * tune/speed.c (routine): New entries for mpn_mul_2 and mpn_mul_3. 13269 13270 * ltmain.sh: Update to libtool 1.5.24. 13271 13272 * mpn/generic/mul_toom22.c: Compute s and t more cleverly. 13273 132742008-09-08 Niels Möller <nisse@lysator.liu.se> 13275 13276 * tests/mpn/t-hgcd.c: Updated tests. Rewrite of hgcd_ref. 13277 13278 * mpn/generic/gcdext_lehmer.c (mpn_gcdext_lehmer_itch): New function. 13279 (mpn_gcdext_lehmer): Various bugfixes. 13280 13281 * gcdext.c (mpn_gcdext): Allocate scratch space for gcdext_lehmer. 13282 13283 * mpn/generic/gcd_lehmer.c (gcd_2): ASSERT that inputs are odd. 13284 (mpn_gcd_lehmer): Added tp argument, for scratch space. Make both 13285 arguments odd before calling gcd_2. 13286 13287 * mpn/generic/hgcd.c (mpn_hgcd): Allow the trivial case n <= 2, 13288 and return 0 immediately. 13289 13290 * gmp-impl.h (MPN_EXTRACT_NUMB): New macro. 13291 13292 * configure.in (gmp_mpn_functions): Added gcdext_lehmer. 13293 132942008-09-05 Torbjorn Granlund <tege@gmplib.org> 13295 13296 * mpn/generic/toom_interpolate_7pts.c: Use mpn_divexact_by3c instead of 13297 divexact_odd. 13298 13299 * doc/texinfo.tex: Update to 2007-06-29.13. 13300 13301 * doc/gmp.texi: Update GMP site URL. Fix some typos. 13302 13303 * demos/pexpr.c (main): Allow bases up to 62. 13304 13305 * gmp-impl.h: Remove formal parameter names from function prototypes. 13306 13307 * config.guess: Recognize recent AMD and Itanium CPUs. 13308 Default X86 CPU recognition to configfsf.guess' value. 13309 13310 * configure.in: Handle core2 separately from athlon64. 13311 133122008-09-05 Niels Möller <nisse@lysator.liu.se> 13313 13314 * */Makefile.in, configure, aclocal.m4, config.in: Removed files 13315 from repository. They're instead generated by automake and 13316 autoconf before distribution. 13317 133182008-08-25 Torbjorn Granlund <tege@gmplib.org> 13319 13320 * mpf/set_str.c: Allocate mantissa space based on mantissa size, 13321 not on destination variable space. 13322 * mpf/set_str.c: Accept unary plus before exponent. 13323 133242008-08-06 Torbjorn Granlund <tege@gmplib.org> 13325 13326 * mpn/generic/mul_toom22.c: Add statistics gathering functionality, 13327 triggered by cpp predef STAT. 13328 13329 From David Harvey: 13330 * mpn/generic/mul_toom22.c: Decrease scratch space usage. 13331 133322008-08-02 Torbjorn Granlund <tege@gmplib.org> 13333 13334 * tests/misc/t-scanf.c: Avoid negative arguments to _ui functions. 13335 * tests/misc/t-printf.c: Likewise. 13336 13337 * acinclude.m4 (X86_PATTERN): Add geode. 13338 13339 * acinclude.m4 (CL_AS_NOEXECSTACK): Avoid -q flag to grep. 13340 133412008-08-01 Torbjorn Granlund <tege@gmplib.org> 13342 13343 * acinclude.m4 (CL_AS_NOEXECSTACK): New. 13344 * configure.in: Use CL_AS_NOEXECSTACK. 13345 * mpn/Makeasm.am: Use ASM_FLAGS (defined by CL_AS_NOEXECSTACK). 13346 13347 * gmpxx.h (__GMP_DBL_LIMBS): Use DBL_MAX_EXP instead of 13348 std::numeric_limits<double>::max_exponent for better portability. 13349 133502008-07-29 Torbjorn Granlund <tege@gmplib.org> 13351 13352 * gmpxx.h (__GMP_DBL_LIMBS): New #define. 13353 (__GMP_ULI_LIMBS): New #define. 13354 (__GMPXX_TMP_UI): New macro. 13355 (__GMPXX_TMP_SI): New macro. 13356 (__GMPXX_TMP_D): New macro. 13357 (struct __gmp_binary_and): Rewrite, using the new macros. 13358 (struct __gmp_binary_ior): Likewise. 13359 (struct __gmp_binary_xor): Likewise. 13360 133612008-07-28 Torbjorn Granlund <tege@gmplib.org> 13362 13363 * tests/cxx/t-binary.cc: Add some tests for logical operations. 13364 133652008-07-24 Torbjorn Granlund <tege@gmplib.org> 13366 13367 * gmpxx.h: Use __GMPZ_* instead of __GMPZZ_* for bitwise ops, remove 13368 __GMPZZ_*. 13369 Remove repeated #undefs. 13370 (__gmp_alloc_cstring): Declare freefunc as extern "C". 13371 133722008-07-23 Torbjorn Granlund <tege@gmplib.org> 13373 13374 * gmp-h.in (__GMP_CC): New define, undocumented for now. 13375 (__GMP_CFLAGS): Likewise. 13376 133772008-07-21 Torbjorn Granlund <tege@gmplib.org> 13378 13379 * tests/amd64check.c: Fix a printf type clash. 13380 13381 * mpz/realloc.c: Amend last fix. 13382 13383 * gmp-h.in: Include <cstdlib> for C++. 13384 * gmp-h.in: Handle new gcc 4.3 inline semantics defaults. 13385 13386 * configfsf.guess: Update to version of 2008-04-14. 13387 * configfsf.sub: Update to version of 2008-06-16. 13388 13389 * configure.in: Separate core2 and athlon64 flags handling. 13390 133912008-06-19 Torbjorn Granlund <tege@gmplib.org> 13392 13393 * config.guess: Recognize pentiumm and AMD geode. 13394 * config.sub: Likewise. 13395 * configure.in: Likewise. 13396 133972008-06-02 Torbjorn Granlund <tege@gmplib.org> 13398 13399 * configure.in: Disallow odd nails sizes. 13400 * configure.in: Inherit default gcc_cflags/gcc_64_cflags everywhere. 13401 134022008-05-23 Torbjorn Granlund <tege@gmplib.org> 13403 13404 * mpz/init2.c: Rewrite to avoid internal overflow and to detect mpz_t 13405 overflow. 13406 * mpz/realloc2.c: Likewise. 13407 * mpz/realloc.c: Detect mpz_t overflow. 13408 134092008-05-22 Torbjorn Granlund <tege@gmplib.org> 13410 13411 * configure.in (sparc): Remove -fast, it causes documented 13412 miscompilation. 13413 13414 * config.guess: Properly handle the "extended" variants of x86 cpuid. 13415 134162008-05-09 Torbjorn Granlund <tege@gmplib.org> 13417 13418 * gmp-impl.h (mpn_mul_fft): Now void. 13419 (udiv_qrnnd_preinv3): Special case for constant (nl). 13420 134212008-05-08 Torbjorn Granlund <tege@gmplib.org> 13422 13423 * mpn/generic/mul_fft.c: Clean up types in TRACE (printf (...)). 13424 (TRACE): Redefine to allow command line control. 13425 (mpn_mul_fft_internal): Now void, remove return value. 13426 (mpn_mul_fft): Likewise. 13427 (MPN_FFT_TABLE2_SIZE): Up size fro 256 to 512. 13428 (mpn_fft_fft): Call mpn_fft_mul_2exp_modF just once instead of twice, 13429 then add/subtract result. Get rid of temp allocation as a result. 13430 Remove some redundant CNST_LIMB. 13431 (mpn_fft_fftinv): Analogous changes. 13432 (mpn_fft_sub_modF): Re-enable, now needed by mpn_fft_fft and 13433 mpn_fft_fftinv. 13434 134352008-03-10 Torbjorn Granlund <tege@gmplib.org> 13436 13437 * tests/mpz/t-mul.c (main): Let GMP_CHECK_FFT mean largest allowed 13438 power-of-2 of test operands. 13439 134402008-02-28 Torbjorn Granlund <tege@gmplib.org> 13441 13442 * tests/cxx/t-binary.cc (check_mpz): Expect floor rounding for right 13443 shift. 13444 134452008-02-27 Torbjorn Granlund <tege@gmplib.org> 13446 13447 * mpz/mul_i.h: Check sml's size (not the signed small_mult). 13448 13449 * longlong.h (umul_ppmm) [alpha]: Define using __builtin_alpha_umulh 13450 when possible. 13451 13452 * longlong.h (count_trailing_zeros): Force destination register mode. 13453 13454 * gmpxx.h (struct __gmp_binary_rshift): Use floor rounding, not 13455 truncation. 13456 13457 * gmpxx.h (__gmp_binary_and, __gmp_binary_ior, __gmp_binary_xor): 13458 Add variants with unsigned long int argument. 13459 13460 * config.sub: Recog geode. 13461 * config.guess: Likewise. 13462 * acinclude.m4 (X86_PATTERN): Likewise. 13463 134642008-02-10 Torbjorn Granlund <tege@gmplib.org> 13465 13466 * mpn/x86/p6/aors_n.asm: Use Zdisp to work around GNU as bug. 13467 * mpn/x86/x86-defs.m4 (Zdisp): Add more instructions. 13468 134692008-02-08 Torbjorn Granlund <tege@gmplib.org> 13470 13471 * mpn/x86_64/aors_n.asm: New file. 13472 * mpn/x86_64/add_n.asm: Delete. 13473 * mpn/x86_64/sub_n.asm: Delete. 13474 134752008-02-07 Torbjorn Granlund <tege@gmplib.org> 13476 13477 * mpn/x86/k6/mmx/dive_1.asm: Fix typo in last change. 13478 134792007-12-10 Torbjorn Granlund <tege@swox.com> 13480 13481 * mpf/set_str.c (mpf_set_str): Write own code for converting the 13482 exponent, avoids strtol base < 36 limitation. 13483 134842007-10-28 Torbjorn Granlund <tege@swox.com> 13485 13486 * gmp-impl.h (mpn_dc_get_str_itch): New macro. 13487 (mpn_dc_get_str_powtab_alloc): New macro. 13488 (struct powers): Add field "shift". 13489 13490 * mpn/generic/get_str.c: Compute powers without low zero limbs; all 13491 functions modified. Correct temporary allocation. Misc cleanups. 13492 13493 * mpn/generic/set_str.c: Compute powers without low zero limbs; all 13494 functions modified. 13495 (mpn_dc_set_str): Remove impossible case, replace by an ASSERT. 13496 134972007-10-26 Torbjorn Granlund <tege@swox.com> 13498 13499 * mpn/generic/set_str.c: Remove default thresholds, not in gmp-impl.h. 13500 (mpn_dc_set_str): Insert ASSERT_ALWAYS in a presumably dead code arm. 13501 135022007-10-22 Torbjorn Granlund <tege@swox.com> 13503 13504 * gmp-impl.h (mpn_add_nc): Define as inline function, unless NATIVE. 13505 (mpn_sub_nc): Likewise. 13506 135072007-10-17 Torbjorn Granlund <tege@swox.com> 13508 13509 * tests/misc/t-printf.c: Fix a printf type clash. 13510 * tests/mpq/t-get_str.c: Likewise. 13511 * tests/mpz/t-import.c: Likewise. 13512 13513 * acinclude.m4: Conditionally disable some tests when compiled by a C++ 13514 compiler. 13515 13516 * gmp-impl.h (udiv_qrnnd_preinv3): Remove an unused variable. 13517 13518 * mpn/generic/hgcd.c: Add some WANT_ASSERTs to shut up warnings. 13519 135202007-10-08 Torbjorn Granlund <tege@swox.com> 13521 13522 * mpn/powerpc64/elf.m4 (LEAL): Define as an alias for LEA. 13523 * mpn/powerpc32/darwin.m4 (LEAL): Likewise. 13524 * mpn/powerpc64/aix.m4: Likewise. 13525 13526 * mpn/powerpc64/vmx/popcount.asm: Use LEAL. 13527 13528 * mpn/powerpc64/darwin.m4 (LEAL): New name for LEA, since it is only 13529 usable for local symbols. 13530 (LEA): Replace with code for external references. 13531 13532 * mpn/powerpc32/vmx/mod_34lsub1.asm: Use LEAL. 13533 135342007-10-07 Torbjorn Granlund <tege@swox.com> 13535 13536 * mpn/x86/dive_1.asm: Use LEA, remove explicit movl_eip_*. 13537 * mpn/x86/k6/mode1o.asm: Likewise. 13538 * mpn/x86/k6/mmx/dive_1.asm: Likewise. 13539 * mpn/x86/k7/dive_1.asm: Likewise. 13540 * mpn/x86/k7/mode1o.asm: Likewise. 13541 * mpn/x86/p6/dive_1.asm: Likewise. 13542 * mpn/x86/p6/mode1o.asm: Likewise. 13543 * mpn/x86/pentium4/sse2/dive_1.asm: Likewise. 13544 * mpn/x86/pentium4/sse2/mode1o.asm: Likewise. 13545 * mpn/x86/pentium4/sse2/popcount.asm: Likewise. 13546 13547 * mpn/x86/p6/aors_n.asm: Table cycle counts. 13548 13549 * mpn/x86/k7/mod_34lsub1.asm: Fix over-optimistic cycle count claims. 13550 13551 * mpn/x86/x86-defs.m4 (DEF_OBJECT, END_OBJECT): New define's. 13552 13553 * mpn/x86/darwin.m4 (LEA): Put also movl_eip_XX into EPILOGUE_cpu. 13554 Expect target register to have prepended %. 13555 13556 * mpn/x86_64/add_n.asm: Use L() for labels. 13557 * mpn/x86_64/addlsh1_n.asm: Likewise. 13558 * mpn/x86_64/addmul_2.asm: Likewise. 13559 * mpn/x86_64/aorrlsh_n.asm: Likewise. 13560 * mpn/x86_64/aorsmul_1.asm: Likewise. 13561 * mpn/x86_64/com_n.asm: Likewise. 13562 * mpn/x86_64/copyd.asm: Likewise. 13563 * mpn/x86_64/copyi.asm: Likewise. 13564 * mpn/x86_64/diveby3.asm: Likewise. 13565 * mpn/x86_64/logops_n.asm: Likewise. 13566 * mpn/x86_64/lshsub_n.asm: Likewise. 13567 * mpn/x86_64/mul_1.asm: Likewise. 13568 * mpn/x86_64/mul_2.asm: Likewise. 13569 * mpn/x86_64/mul_basecase.asm: Likewise. 13570 * mpn/x86_64/popham.asm: Likewise. 13571 * mpn/x86_64/redc_1.asm: Likewise. 13572 * mpn/x86_64/rsh1add_n.asm: Likewise. 13573 * mpn/x86_64/rsh1sub_n.asm: Likewise. 13574 * mpn/x86_64/rshift.asm: Likewise. 13575 * mpn/x86_64/sub_n.asm: Likewise. 13576 * mpn/x86_64/sublsh1_n.asm Likewise. 13577 * mpn/x86_64/pentium4/aors_n.asm: Likewise. 13578 * mpn/x86_64/pentium4/lshift.asm: Likewise. 13579 * mpn/x86_64/pentium4/rshift.asm: Likewise. 13580 13581 * mpn/x86_64/x86_64-defs.m4: New file, defining LEA, DEF_OBJECT, and 13582 END_OBJECT. 13583 13584 * mpn/generic/mul.c: Put TMP_DECL as last decl. 13585 135862007-10-06 Torbjorn Granlund <tege@swox.com> 13587 13588 * mpn/x86/pentium4/sse2/popcount.asm: New file. 13589 135902007-09-26 Torbjorn Granlund <tege@swox.com> 13591 13592 * mpz/get_str.c: Cast a char index to int to shut up compilers. 13593 13594 * mpn/generic/dc_div_qr.c: Pass dummy scratch argument to mpn_invert. 13595 * mpn/generic/dc_divappr_q.c: Likewise. 13596 * mpn/generic/mu_div_qr.c: Likewise. 13597 * mpn/generic/mu_divappr_q.c: Likewise. 13598 * mpn/generic/mu_div_q.c: Likewise. 13599 * mpn/generic/divexact.c: Likewise. 13600 13601 * mpn/generic/invert.c: New file, placeholder for now. 13602 136032007-09-24 Torbjorn Granlund <tege@swox.com> 13604 13605 * mpn/generic/toom_interpolate_5pts.c: New file, contents from 13606 mpn/generic/mul_n.c 13607 * mpn/generic/mul_n.c (mpn_toom3_interpolate): Function removed. 13608 13609 * mpn/generic/toom_interpolate_7pts.c: New file. 13610 13611 * mpn/x86/k7/mmx/popham.asm: Table cycle counts. 13612 13613 * mpn/x86/k6/README: Update URLs. 13614 13615 * mpn/powerpc32/README: Update URL's, company names. 13616 13617 * mpn/generic/get_d.c: Complete rewrite. 13618 13619 * mpn/generic/mul_toom33.c: New file. 13620 13621 * mpn/generic/mul_toom22.c: Make orthogonal with other toomXY files. 13622 * mpn/generic/mul_toom32.c: Likewise. 13623 * mpn/generic/mul_toom42.c: Likewise. 13624 13625 * mpn/alpha/invert_limb.asm: Update cycle counts. Fix a comment typo. 13626 13627 * mpf/get_str.c: Include stdlib.h, not stdio.h for NULL. 13628 13629 * doc/gmp.texi: Fix a typo. 13630 13631 * memory.c (__gmp_default_allocate, __gmp_default_reallocate): 13632 Cast size operands in error fprintf's. 13633 13634 * longlong.h (sub_ddmmss) [powerpc 64]: Add more variants for constant 13635 args. 13636 13637 * gmp-impl.h (udiv_qrnnd_preinv3): New define. 13638 * gmp-impl.h (ULONG_PARITY): Exclude masquerading __INTEL_COMPILER from 13639 ia64 asm. 13640 13641 * gmp-h.in (mpn_neg_n): New function. 13642 136432007-09-18 Torbjorn Granlund <tege@swox.com> 13644 13645 * demos/pexpr.c (main): Add -v option. 13646 (enum op_t): New tag TIMING. 13647 (mpz_eval_expr): Execute TIMING. 13648 (fns): Add TIMING entry. 13649 13650 * gmp-impl.h: Add decls and THRESHOLDs for new toom multiplication 13651 functions and division functions. 13652 136532007-09-10 Torbjorn Granlund <tege@swox.com> 13654 13655 * mpn/powerpc32/addlsh1_n.asm: Use L() for labels. 13656 * mpn/powerpc32/sublsh1_n.asm: Likewise. 13657 136582007-09-09 Torbjorn Granlund <tege@swox.com> 13659 13660 * mpn/x86/x86-defs.m4 (LEA): New define. 13661 * mpn/x86/darwin.m4: New file, for now just defining LEA. 13662 * configure.in: Pick up x86/darwin.m4. 13663 * mpn/x86/*: Use LEA for PIC references. 13664 13665 * configure.in: For X86/32, treat core2 like pentium3. 13666 136672007-09-06 Torbjorn Granlund <tege@swox.com> 13668 13669 * tests/amd64check.c (calling_conventions_values): Put constants, 13670 dynamic values in this array (was in scalars). 13671 (calling_conventions_check): Corresponding changes. 13672 * tests/amd64call.asm: Rewrite to be PIC, smaller, using amd64check.c's 13673 array. 13674 136752007-09-04 Torbjorn Granlund <tege@swox.com> 13676 13677 * mpn/x86/pentium4/sse2/mul_basecase.asm: Misc cleanups. 13678 * mpn/x86/pentium4/sse2/sqr_basecase.asm: Likewise. 13679 13680 * mpn/x86_64/mod_34lsub1.asm: Optimize loop, reduce code size. 13681 13682 * tests/amd64call.asm: Remove bogus no-op moves. 13683 136842007-09-03 Torbjorn Granlund <tege@swox.com> 13685 13686 From Richard Guenther: 13687 * gmp-h.in (__GMP_EXTERN_INLINE): Declare conditionally on 13688 __GNUC_STDC_INLINE__. 13689 13690 * tests/cxx/t-locale.cc: #include <cstdlib>, for abort. 13691 13692 * mpn/x86_64/core2/popcount.asm: New file. 13693 * mpn/x86_64/pentium4/popcount.asm: New file. 13694 13695 * mpn/x86_64/addmul_2.asm: New file. 13696 * mpn/x86_64/mul_2.asm: New file. 13697 13698 * mpn/x86_64/aorsmul_1.asm: Use 32-bit mov for zeroing registers 13699 (saves space). 13700 137012007-09-01 Torbjorn Granlund <tege@swox.com> 13702 13703 * configure.in: Handle athlon64, core2, and pentium4 separately for 13704 64-bit ABI. 13705 13706 * config.sub: Recog athlon64, core2, and opteron. 13707 13708 * config.guess: Do two x86 variants, for 32-bit ABI and 64-bit ABI. 13709 Return "athlon64" and "core2", not x86_64. 13710 137112007-08-31 Torbjorn Granlund <tege@swox.com> 13712 13713 From Patrick Pelissier: 13714 * gmp-h.in: Don't refer to FILE from C++ unless we've seen FILE. 13715 137162007-08-30 Torbjorn Granlund <tege@swox.com> 13717 13718 * demos/isprime.c: Include string.h for strcmp. 13719 13720 * demos/factorize.c (main): Declare to int. 13721 137222007-06-22 Torbjorn Granlund <tege@swox.com> 13723 13724 * mpn/x86_64/pentium4/lshift.asm: Minor tuning. 13725 * mpn/x86_64/pentium4/rshift.asm: Likewise. 13726 137272007-05-30 Torbjorn Granlund <tege@swox.com> 13728 13729 * mpn/powerpc64/mode64/aors_n.asm: Add _nc entry points. 13730 137312007-05-22 Torbjorn Granlund <tege@swox.com> 13732 13733 * tests/memory.c: Cast calls to new mem* calls to avoid unaligned ops. 13734 137352007-05-16 Torbjorn Granlund <tege@swox.com> 13736 13737 * tests/mpz/convert.c: Tweak operand sizes for best coverage. 13738 13739 * tests/memory.c: Add red zones around allocations. 13740 137412007-05-15 Torbjorn Granlund <tege@swox.com> 13742 13743 * mpn/ia64/mul_1.asm: Make mul_1c entry point actually work. 13744 13745 * mpn/generic/set_str.c (mpn_dc_set_str): Avoid calling mpn_add_n when 13746 ln == 0. 13747 13748 * tests/mpz/convert.c (string_urandomb): New function. 13749 (main): Use it by enabling ifdef'ed out code. 13750 137512007-04-30 Torbjorn Granlund <tege@swox.com> 13752 13753 * mpn/x86_64/mul_basecase.asm: Complete rewrite. 13754 13755 * mpn/x86_64/copyi.asm: Use short shift-by-one form. Misc cleanups. 13756 * mpn/x86_64/copyi.asm: Likewise. 13757 * mpn/x86_64/popham.asm: Likewise. 13758 13759 * mpn/x86_64/aorsmul_1.asm: Cleanup formatting. 13760 137612007-04-25 Torbjorn Granlund <tege@swox.com> 13762 13763 * mpz/divexact.c: Handle undefined case of |N| < |D| to avoid segfaults. 13764 137652007-02-24 Torbjorn Granlund <tege@swox.com> 13766 13767 * doc/gmp.texi (Toom 3-Way Multiplication): Fix typo. 13768 (mpz_scan0, mpz_scan1): Fix typos. 13769 (Float Internals): Rewrite paragraph about struct types. 13770 137712007-02-12 Torbjorn Granlund <tege@swox.com> 13772 13773 * mpn/x86/pentium4/sse2/sqr_basecase.asm: Complete rewrite (except 13774 diagonal code). 13775 137762007-02-05 Torbjorn Granlund <tege@swox.com> 13777 13778 * mpn/generic/mul_fft.c (mpn_fft_fft): New name for mpn_fft_fft_sqr, 13779 old mpn_fft_fft removed. 13780 (mpn_mul_fft_internal): Call mpn_fft_fft separately for each operand. 13781 (mpn_fft_add_modF): Rewrite to avoid random branches. 13782 (mpn_fft_sub_modF): Likewise. 13783 13784 * mpn/x86/pentium4/sse2/addmul_1.asm: Complete rewrite. 13785 * mpn/x86/pentium4/sse2/mul_1.asm: Complete rewrite. 13786 * mpn/x86/pentium4/sse2/mul_basecase.asm: Complete rewrite, based on 13787 new addmul and mul code. 13788 137892007-01-31 Torbjorn Granlund <tege@swox.com> 13790 13791 * mpn/generic/get_str.c (mpn_sb_get_str): Get loop count for frac 13792 development right. 13793 13794 * mpn/powerpc32/vmx/mod_34lsub1.asm: New file. 13795 13796 * mpn/powerpc32/aors_n.asm: New file, complete rewrite. 13797 * mpn/powerpc32/add_n.asm: Remove. 13798 * mpn/powerpc32/sub_n.asm: Remove. 13799 138002007-01-25 Torbjorn Granlund <tege@swox.com> 13801 13802 * mpn/x86_64/core2/aors_n.asm: Add _nc entry points, minor cleanups. 13803 13804 * mpn/x86_64/core2/lshift.asm: Rewrite. 13805 * mpn/x86_64/core2/rshift.asm: Rewrite. 13806 13807 * mpn/x86_64/pentium4/lshift.asm: Swap some loop insns for a small 13808 speedup. 13809 * mpn/x86_64/pentium4/rshift.asm: New file, based on lshift.asm. 13810 13811 * mpn/x86_64/pentium4/gmp-mparam.h: New file. 13812 13813 * mpn/x86_64/pentium4/aors_n.asm: Complete rewrite of add/subtract 13814 code. 13815 * mpn/x86_64/pentium4/add_n.asm: Remove. 13816 * mpn/x86_64/pentium4/sub_n.asm: Remove. 13817 138182007-01-20 Torbjorn Granlund <tege@swox.com> 13819 13820 * mpn/x86_64/lshift.asm: Add special case for cnt=1. 13821 138222007-01-19 Torbjorn Granlund <tege@swox.com> 13823 13824 * mpn/x86_64/aorsmul_1.asm: New file, written from scratch, finally at 13825 3.0 c/l on K8 (addmul_1 was 3.3; submul_1 was 3.5). 13826 * mpn/x86_64/addmul_1.asm: Remove. 13827 * mpn/x86_64/submul_1.asm: Remove. 13828 138292006-12-29 Torbjorn Granlund <tege@swox.com> 13830 13831 * randmt.c (__gmp_randclear_mt): Initialize ALLOC field, like in 13832 __gmp_randinit_mt_noseed. 13833 (__gmp_randclear_mt, __gmp_randinit_mt_noseed): Make similar functions 13834 look similar. 13835 (__gmp_randclear_mt): Pass actually allocated size. 13836 13837 * mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Add mul_toom22.c, 13838 mul_toom32.c, mul_toom42.c. 13839 13840 * configure.in: Recognize athlon64 and core2 as alternatives to x86_64. 13841 Provide special settings for core2. 13842 13843 * configure.in (gmp_mpn_functions): Add mul_toom22, mul_toom32, 13844 mul_toom42. 13845 13846 * mpn/generic/mul_toom22.c: New file. 13847 * mpn/generic/mul.c: Use mpn_mul_toom22. Trim cutoff points between 13848 the mpn_mul_toomN2 functions. Handle balanced operands at function 13849 entry. 13850 138512006-12-29 Marco Bodrato <bodrato@mail.dm.unipi.it> 13852 13853 * mpn/generic/mul_n.c: Rewrite interpolation code. 13854 138552006-12-28 Torbjorn Granlund <tege@swox.com> 13856 13857 * mpn/generic/mul_toom32.c: New file. 13858 * mpn/generic/mul_toom42.c: New file. 13859 * mpn/generic/mul.c: Use mpn_mul_toom32 and mpn_mul_toom42 for 13860 unbalanced operands. 13861 138622006-12-17 Torbjorn Granlund <tege@swox.com> 13863 13864 * mpn/x86_64/aorrlsh_n.asm: New file. 13865 * mpn/x86_64/lshsub_n.asm: New file. 13866 13867 * mpn/x86_64/core2/aors_n.asm: New file. 13868 * mpn/x86_64/core2/lshift.asm: New file. 13869 * mpn/x86_64/core2/rshift.asm: New file. 13870 13871 * mpn/x86/p6/aors_n.asm: Replace K7 grabbing code with P6 specific 13872 code. 13873 13874 * mpn/x86/p6/lshsub_n.asm: New file. 13875 138762006-11-23 Torbjorn Granlund <tege@swox.com> 13877 13878 * tune/speed.h (SPEED_ROUTINE_MPN_MUL_BASECASE): Allocate space for xp 13879 locally, s->xp might be insufficient. 13880 138812006-11-22 Torbjorn Granlund <tege@swox.com> 13882 13883 * randmt.c (__gmp_randinit_mt_noseed): Initialize ALLOC field of result 13884 param. 13885 138862006-11-06 Torbjorn Granlund <tege@swox.com> 13887 13888 * tune/set_strp.c: New file. 13889 138902006-11-04 Torbjorn Granlund <tege@swox.com> 13891 13892 * extract-dbl.c: Rewrite to handle nails better, and for general 13893 optimization. 13894 13895 * mpz/bin_uiui.c: Simplify. 13896 13897 * longlong.h (umul_ppmm) [mmix]: New. 13898 13899 * tune/tuneup.c, tune/common.c, tune/speed.c, tune/speed.h, 13900 tune/set_strb.c, tune/set_strs.c: Add tuning and speed measurements 13901 of separate SET_STR_DC_THRESHOLD and SET_STR_PRECOMPUTE_THRESHOLD. 13902 Add tuning and speed measurement of mpn_addsub_n. 13903 139042006-10-31 Torbjorn Granlund <tege@swox.com> 13905 13906 * gmpxx.h: Remove ternary stuff, it is hardly an optimization and it 13907 writes to destination before reading all source operands. 13908 139092006-10-25 Torbjorn Granlund <tege@swox.com> 13910 13911 * mpn/generic/set_str.c: Complete rewrite. 13912 * mpn/generic/get_str.c: Likewise. 13913 13914 * gmp-impl.h (struct powers, powers_t): New types. 13915 Restructure GET_STR_* and SET_STR_* thresholds. 13916 139172006-09-21 Torbjorn Granlund <tege@swox.com> 13918 13919 * mpn/generic/rootrem.c: Remove some redundant casts. 13920 139212006-07-12 Torbjorn Granlund <tege@swox.com> 13922 13923 * mpn/alpha/ev6/nails/addmul_2.asm: Make it run at claimed speed. 13924 * mpn/alpha/ev6/nails/addmul_4.asm: Likewise. 13925 13926 * mpf/get_str.c: Avoid copying result when not needed. Misc cleanups. 13927 13928 * tests/amd64call.asm: Use jmp instead of jmpq to placate Solaris. 13929 139302006-06-30 Torbjorn Granlund <tege@swox.com> 13931 13932 * configure.in (powerpc-*): Remove repeated path component. 13933 139342006-06-15 Torbjorn Granlund <tege@swox.com> 13935 13936 * configure.in: (ia64-*-linux*): Don't use -O3. 13937 139382006-06-14 Torbjorn Granlund <tege@swox.com> 13939 13940 * mpq/get_str.c: Fix upper base limit boundary in an ASSERT. 13941 13942 * tests/refmpn.c (refmpn_sb_divrem_mn): Use ASSERT_CARRY for add-back. 13943 139442006-05-31 Torbjorn Granlund <tege@swox.com> 13945 13946 * tests/mpz/t-set_d.c (check_data): Add more data points. 13947 13948 * mpz/set_d.c: Handle negative return values from __gmp_extract_double. 13949 139502006-05-17 Torbjorn Granlund <tege@swox.com> 13951 13952 * configure.in: Clear out gcc_cflags_cpu and gcc_cflags_arch for a fat 13953 build. 13954 139552006-05-16 Torbjorn Granlund <tege@swox.com> 13956 13957 * demos/primes.c (find_primes): Increase mpz_probab_prime_p cnt to 10. 13958 13959 * mpn/generic/addsub_n.c: Fix criteria for when to call _nc functions. 13960 139612006-05-12 Torbjorn Granlund <tege@swox.com> 13962 13963 * config.guess: Recognize more ppc processor types. 13964 139652006-05-11 Torbjorn Granlund <tege@swox.com> 13966 13967 * tune/speed.c (usage): Update URL for gnuplot and quickplot. 13968 139692006-05-10 Torbjorn Granlund <tege@swox.com> 13970 13971 * configure.in (powerpc-*-*): Pass -maltivec to assembler for 13972 appropriate CPUs. 13973 139742006-05-08 Torbjorn Granlund <tege@swox.com> 13975 13976 * mpn/powerpc32/aix.m4 (LEA): Remove [RW] attribute. 13977 139782006-05-03 Torbjorn Granlund <tege@swox.com> 13979 13980 * mpn/powerpc64/vmx/popcount.asm: Conditionally zero extend n. 13981 139822006-04-27 Torbjorn Granlund <tege@swox.com> 13983 13984 * mpz/divexact.c: Call mpz_tdiv_q for large operands. 13985 13986 * configure.in (powerpc-*-darwin): Remove -fast, it affects PIC. 13987 139882006-04-26 Torbjorn Granlund <tege@swox.com> 13989 13990 * config.guess: Try to recognize Ultrasparc T1 (as ultrasparct1). 13991 * config.sub: Handle ultrasparct1. 13992 139932006-04-25 Torbjorn Granlund <tege@swox.com> 13994 13995 * mpn/sparc64/gmp-mparam.h: Retune, without separation of GNUC and 13996 non-GNUC data. 13997 139982006-04-20 Torbjorn Granlund <tege@swox.com> 13999 14000 * tests/mpz/convert.c: Increase operands range. 14001 140022006-04-19 Torbjorn Granlund <tege@swox.com> 14003 14004 * configure.in: Support powerpc eABI. 14005 * mpn/powerpc32/eabi.m4: New file. 14006 14007 * configure.in: Support powerpc *bsd. 14008 * mpn/powerpc64/elf.m4: New name for mpn/powerpc64/linux64.m4. 14009 * mpn/powerpc32/elf.m4: New name for mpn/powerpc32/linux.m4. 14010 14011 * mpn/powerpc64/linux64.m4 (ASM_END): Quote TOC_ENTRY. 14012 140132006-04-18 Torbjorn Granlund <tege@swox.com> 14014 14015 * configure.in (gmp_mpn_functions_optional): Add lshiftc. 14016 (HAVE_NATIVE): Add lshiftc. 14017 14018 * mpn/powerpc64/mode64/invert_limb.asm: Use LEA, not LDSYM. 14019 * mpn/powerpc64/mode64/mode1o.asm: Likewise. 14020 * mpn/powerpc64/mode64/dive_1.asm: Likewise. 14021 14022 * mpn/powerpc64/linux64.m4 (TOC_ENTRY): Define to empty. 14023 * mpn/powerpc64/aix.m4 (TOC_ENTRY): Likewise. 14024 * mpn/powerpc32/aix.m4 (TOC_ENTRY): Likewise. 14025 14026 * mpn/powerpc32/aix.m4 (EXTERN): New, copied form powerpc64/aix.m4. 14027 * mpn/powerpc32/mode1o.asm: Use EXTERN. 14028 * mpn/powerpc32/linux.m4 (EXTERN): Provide dummy definition. 14029 * mpn/powerpc32/darwin.m4 (EXTERN): Likewise. 14030 140312006-04-13 Torbjorn Granlund <tege@swox.com> 14032 14033 * mpn/generic/mul_fft.c: Use new thresholds mechanism if MUL_FFT_TABLE2 14034 is defined. 14035 (mpn_lshiftc): New name for mpn_lshift_com (for consistency with some 14036 stuff already in 4.1.4. 14037 (mpn_fft_mul_2exp_modF): Reorganize initial operand reductions to avoid 14038 divisions. 14039 14040 * tests/devel/try.c (choice_array): Add mpn_addsub_n[c]. 14041 140422006-04-11 Torbjorn Granlund <tege@swox.com> 14043 14044 * aclocal.m4: Regenerate with patched libtool. 14045 14046 * mpn/asm-defs.m4 (ASM_END): Provide (empty) default. 14047 140482006-04-08 Torbjorn Granlund <tege@swox.com> 14049 14050 * configure.in (gmp_mpn_functions_optional): Add addsub. 14051 14052 * gmpxx.h: Remove missed MPFR references. 14053 14054 * gmp-impl.h (LIMBS_PER_DOUBLE): Adjust formula to not be pessimistic. 14055 14056 * gmp-impl.h (TMP_*, WANT_TMP_DEBUG): Don't expect marker argument; 14057 define TMP_SALLOC and TMP_BALLOC. 14058 14059 * mpn/minithres/gmp-mparam.h: New file. 14060 14061 * tests/mpz/t-io_raw.c: Fix printf type/arg mismatches. 14062 * tests/mpz/t-export.c: Likewise. 14063 * tests/mpz/io.c: Likewise. 14064 * tests/t-constants.c: Likewise. 14065 14066 * mpn/ia64/popcount.asm: Append "cond.dptk" to conditional branches to 14067 placate icc. 14068 * mpn/ia64/hamdist.asm: Likewise. 14069 * mpn/ia64/lorrshift.asm: Likewise. 14070 * mpn/ia64/dive_1.asm: Likewise. 14071 140722006-04-05 Torbjorn Granlund <tege@swox.com> 14073 14074 * tal-notreent.c (__gmp_tmp_mark): Add "struct" tag for tmp_marker. 14075 (__gmp_tmp_free): Likewise. 14076 14077 * mpn/generic/mul_fft.c: Optimize many scalar divisions and mod 14078 operations into masks and shifts. 14079 (mpn_fft_mul_modF_K): Fix a spurious ASSERT_NOCARRY. 14080 140812006-03-26 Torbjorn Granlund <tege@swox.com> 14082 14083 * Version 4.2 released. 14084 14085 * mpn/powerpc64/aix.m4 (LEA): Renamed from LDSYM. 14086 * mpn/powerpc64/darwin.m4: Likewise. 14087 * mpn/powerpc64/linux64.m4: Likewise. 14088 * mpn/powerpc64/vmx/popcount.asm: Use LEA, not LDSYM. 14089 140902006-03-23 Torbjorn Granlund <tege@swox.com> 14091 14092 * gmp-impl.h: (class gmp_allocated_string): Prefix strlen with std::. 14093 14094 * gmpxx.h (__GMP_DEFINE_TERNARY_EXPR2): Remove for now. 14095 (struct __gmp_ternary_addmul2): Likewise. 14096 (struct __gmp_ternary_submul2): Likewise. 14097 14098 * gmpxx.h: #include <cstring>. 14099 (struct __gmp_alloc_cstring): Prefix strlen with std::. 14100 14101 * mpn/x86/pentium/com_n.asm: Add TEXT and ALIGN. 14102 * mpn/x86/pentium/copyi.asm: Likewise. 14103 * mpn/x86/pentium/copyd.asm: Likewise. 14104 141052006-03-22 Torbjorn Granlund <tege@swox.com> 14106 14107 * gmp-h.in: Add a "using std::FILE" for C++. 14108 (_GMP_H_HAVE_FILE): Check also _ISO_STDIO_ISO_H. 14109 14110 * gmpxx.h: Remove mpfr code. 14111 * tests/cxx: Likewise. 14112 14113 * gmp-impl.h (FORCE_DOUBLE): Rename a tempvar to avoid a clash with 14114 GNU/Linux public include file. 14115 14116 * configure.in (powerpc64, darwin): New optional, gcc_cflags_subtype. 14117 Grab powerpc32/darwin.m4 for ABI=mode32. 14118 14119 * configure.in: Use host_cpu whenever just the cpu type is needed. 14120 141212006-03-08 Torbjorn Granlund <tege@swox.com> 14122 14123 * mpz/get_si.c: Fix a typo. 14124 14125 * tests/mpq/t-get_d.c (check_random): Improve random generation for 14126 nails. 14127 141282006-02-28 Torbjorn Granlund <tege@swox.com> 14129 14130 * tests/mpq/t-get_d.c (check_random): New function. 14131 (main): Call check_random. 14132 14133 * mpq/set_d.c: Make choices based on LIMBS_PER_DOUBLE, not 14134 BITS_PER_MP_LIMB. Make it work for LIMBS_PER_DOUBLE == 4. 14135 Use MPZ_REALLOC. 14136 14137 * mpz/set_d.c: Make it work for LIMBS_PER_DOUBLE == 4. 14138 14139 * extract-dbl.c: Make it work for LIMBS_PER_DOUBLE > 3. 14140 141412006-02-27 Torbjorn Granlund <tege@swox.com> 14142 14143 * mpz/cmp_d.c: Declare `i'. 14144 * mpz/cmpabs_d.c: Likewise. 14145 141462006-02-23 Torbjorn Granlund <tege@swox.com> 14147 14148 * mpn/powerpc32/vmx/copyd.asm: Set right VRSAVE bits. 14149 * mpn/powerpc32/vmx/copyi.asm: Likewise. 14150 141512006-02-22 Torbjorn Granlund <tege@swox.com> 14152 14153 * mpn/powerpc32/vmx/logops_n.asm: New file. 14154 14155 * mpn/powerpc32/diveby3.asm: Rewrite. 14156 141572006-02-21 Torbjorn Granlund <tege@swox.com> 14158 14159 * mpn/powerpc32/vmx/copyi.asm: New file. 14160 * mpn/powerpc32/vmx/copyd.asm: New file. 14161 141622006-02-17 Torbjorn Granlund <tege@swox.com> 14163 14164 * mpn/alpha/ev6/nails/aors_n.asm (CYSH): Import proper setting from 14165 deleted mpn_sub_n. 14166 141672006-02-16 Torbjorn Granlund <tege@swox.com> 14168 14169 * mpn/alpha/ev6/addmul_1.asm: Correct slotting comments. 14170 141712006-02-15 Torbjorn Granlund <tege@swox.com> 14172 14173 * tests/devel/anymul_1.c: Copy error reporting code from addmul_N.c. 14174 14175 * tests/devel/addmul_N.c: New file. 14176 * tests/devel/mul_N.c: New file. 14177 14178 * mpn/alpha/default.m4 (PROLOGUE_cpu): Align functions at 16-byte 14179 boundary. 14180 14181 * mpn/alpha/ev6/nails/aors_n.asm: New file. 14182 * mpn/alpha/ev6/nails/add_n.asm: Remove. 14183 * mpn/alpha/ev6/nails/sub_n.asm: Remove. 14184 14185 * mpn/alpha/ev6/nails/addmul_1.asm: Rewrite. 14186 * mpn/alpha/ev6/nails/submul_1.asm: Likewise. 14187 * mpn/alpha/ev6/nails/mul_1.asm: Likewise. 14188 14189 * mpn/alpha/ev6/nails/addmul_2.asm: Use L() for labels. 14190 * mpn/alpha/ev6/nails/addmul_3.asm: Use L() for labels. 14191 * mpn/alpha/ev6/nails/addmul_4.asm: Use L() for labels. 14192 141932006-02-13 Torbjorn Granlund <tege@swox.com> 14194 14195 * mpn/powerpc32/diveby3.asm: Trivially reorder loop insns to save 14196 1 c/l. 14197 14198 * mpn/x86_64/dive_1.asm: Use movabsq to support large model non-PIC. 14199 14200 * mpn/x86_64/rsh1add_n.asm: Replace high register with rbx. 14201 * mpn/x86_64/rsh1sub_n.asm: Likewise. 14202 142032006-02-10 Torbjorn Granlund <tege@swox.com> 14204 14205 * mpn/powerpc64/sqr_diagonal.asm: Software pipeline. 14206 14207 * mpn/powerpc64/vmx/popcount.asm: Add prefetching. 14208 142092006-02-07 Torbjorn Granlund <tege@swox.com> 14210 14211 * mpn/powerpc64/mode64/diveby3.asm: Rewrite. 14212 142132006-02-04 Torbjorn Granlund <tege@swox.com> 14214 14215 * mpn/powerpc64/vmx/popcount.asm: Remove mpn_hamdist partial code. 14216 Move compare for huge n so that it is always executed. 14217 142182006-02-03 Torbjorn Granlund <tege@swox.com> 14219 14220 * mpn/powerpc32/linux.m4 (LEA): Add support for PIC. 14221 14222 * configure.in (powerpc): New optional, gcc_cflags_subtype. 14223 14224 * mpn/x86_64/pentium4/add_n.asm: New file. 14225 * mpn/x86_64/pentium4/sub_n.asm: New file. 14226 * mpn/x86_64/pentium4/lshift.asm: New file. 14227 14228 * mpn/powerpc64/linux64.m4 (PROLOGUE_cpu): Align function start to 14229 16-multiple. 14230 * mpn/powerpc64/aix.m4: Likewise. 14231 * mpn/powerpc64/darwin.m4: Likewise. 14232 14233 * mpn/powerpc64/copyi.asm: Align loop to 16-multiple. 14234 * mpn/powerpc64/copyd.asm: Likewise 14235 14236 * configure.in (powerpc): Add vmx to relevant paths. 14237 14238 * mpn/powerpc64/linux64.m4 (DEF_OBJECT): Accept 2nd argument, for 14239 alignment. 14240 * mpn/powerpc64/aix.m4: Likewise. 14241 * mpn/powerpc64/darwin.m4: Likewise. 14242 14243 * mpn/powerpc32/linux.m4 (DEF_OBJECT, END_OBJECT): New macros, 14244 inherited from powerpc64 versions. 14245 * mpn/powerpc32/aix.m4: Likewise. 14246 * mpn/powerpc32/darwin.m4: Likewise. 14247 14248 * mpn/powerpc64/vmx/popcount.asm: New file, for ppc32 and ppc64. 14249 * mpn/powerpc32/vmx/popcount.asm: New file, grabbing above file. 14250 142512006-01-22 Torbjorn Granlund <tege@swox.com> 14252 14253 * configure.in: Generalize OS-dependent patterns for powerpcs. 14254 142552006-01-20 Torbjorn Granlund <tege@swox.com> 14256 14257 * mpn/x86_64/popham.asm: Optimize. 14258 14259 * config.guess: Recognize power4 and up under linux-gnu. 14260 * config.sub: Generalize power recognition code. 14261 * acinclude.m4 (POWERPC64_PATTERN): Add 64-bit powerpc processors. 14262 * configure.in: Recognize powerpc processors masquerading as power 14263 processors. 14264 142652006-01-19 Torbjorn Granlund <tege@swox.com> 14266 14267 * mpn/x86_64/logops_n.asm: Rewrite for more stable speed and smaller 14268 code. 14269 * mpn/x86_64/com_n.asm: Likewise. 14270 142712006-01-18 Torbjorn Granlund <tege@swox.com> 14272 14273 * mpn/x86_64/addlsh1_n.asm: Rewrite to use indexed addressing. 14274 * mpn/x86_64/sublsh1_n.asm: Likewise. 14275 142762006-01-17 Torbjorn Granlund <tege@swox.com> 14277 14278 * mpn/generic/diveby3.c: Use GMP standard parameter names. Nailify 14279 alternative code. Use restrict for params. 14280 14281 * configure.in: Recognize andn_n as not needing nailification. 14282 14283 * tests/mpq/t-equal.c (check_various): Disable a test that gives common 14284 factors for GMP_NUMB_BITS == 62. 14285 142862006-01-16 Torbjorn Granlund <tege@swox.com> 14287 14288 * mpn/generic/get_str.c (mpn_sb_get_str): Fix digit count computation, 14289 was inaccurate for nails. 14290 142912006-01-15 Torbjorn Granlund <tege@swox.com> 14292 14293 * mpn/x86_64/mode1o.asm: Remove unneeded carry register zeroing. 14294 142952006-01-08 Torbjorn Granlund <tege@swox.com> 14296 14297 * mpn/alpha/ev6/sqr_diagonal.asm: New file. 14298 142992006-01-06 Torbjorn Granlund <tege@swox.com> 14300 14301 * mpn/powerpc64/mode64/mod_34lsub1.asm: Tune to 1.5 c/l. 14302 14303 * mpn/generic/mullow_n.c (MUL_BASECASE_ALLOC): New #define. 14304 (mpn_mullow_n): Use it. 14305 14306 * mpn/powerpc64/mode64/dive_1.asm: Use EXTERN. 14307 * mpn/powerpc64/mode64/mode1o.asm: Likewise. 14308 14309 * mpn/powerpc64/aix.m4 (EXTERN): Define to import symbol. 14310 (LDSYM): Remove [RW] attribute. 14311 * mpn/powerpc64/linux64.m4 (EXTERN): Dummy definition. 14312 * mpn/powerpc64/darwin.m4 (EXTERN): Likewise. 14313 143142006-01-05 Torbjorn Granlund <tege@swox.com> 14315 14316 * mpn/powerpc64/mode64/mode1o.asm: New file. 14317 14318 * mpn/powerpc64/mode64/dive_1.asm: Use L() for labels. Invoke ASM_END. 14319 14320 * mpn/powerpc64/mode64/invert_limb.asm: Invoke ASM_END. 14321 14322 * mpn/powerpc64/linux64.m4: Move toc entry generation from direct at 14323 DEF_OBJECT to delayed via LDSYM, define ASM_END to output it. 14324 * mpn/powerpc64/aix.m4: Likewise. 14325 * mpn/powerpc64/darwin.m4: Define a dummy ASM_END. 14326 14327 * mpn/powerpc64/mode64/addmul_1.asm: Add POWER5 timings. 14328 * mpn/powerpc64/mode64/mul_1.asm: Likewise. 14329 14330 * mpn/powerpc64/mode64/submul_1.asm: Tweak to save 1.5 c/l for POWER5. 14331 143322006-01-04 Torbjorn Granlund <tege@swox.com> 14333 14334 * mpn/powerpc64/mode64/dive_1.asm: New file. 14335 14336 * mpn/powerpc64/mode64/invert_limb.asm: Add missing ASM_START. 14337 14338 * mpn/powerpc64/mode64/addmul_1.asm: Fix a comment typo. 14339 14340 * mpn/x86_64/diveby3.asm: Rewrite. 14341 143422006-01-03 Torbjorn Granlund <tege@swox.com> 14343 14344 * configure.in: Update bugs reporting address. 14345 14346 * mpn/powerpc64/mode64/diveby3.asm: Trim a cycle off of POWER4 timing. 14347 Misc cleanup. 14348 143492006-01-02 Torbjorn Granlund <tege@swox.com> 14350 14351 * mpn/powerpc64/linux64.m4 (CALL): New macro. 14352 * mpn/powerpc64/aix.m4: Likewise. 14353 * mpn/powerpc64/darwin.m4: Likewise, also define macro "DARWIN". 14354 143552005-12-28 Torbjorn Granlund <tege@swox.com> 14356 14357 * mpn/powerpc64/mode64/mod_34lsub1.asm: New file. 14358 143592005-12-26 Torbjorn Granlund <tege@swox.com> 14360 14361 * mpn/x86_64/mod_34lsub1.asm: New file. 14362 143632005-12-20 Torbjorn Granlund <tege@swox.com> 14364 14365 * mpn/x86_64/submul_1.asm: Save a push/pop by not using register r12. 14366 Use addq instead of leaq for pointer updates; schedule them. (These 14367 changes shaves one cycle of overhead and 0.25 c/l.) 14368 143692005-12-18 Torbjorn Granlund <tege@swox.com> 14370 14371 * mpf/ui_div.c: Implement workaround for GCC bug triggered on alpha. 14372 * mpf/set_q.c: Likewise. 14373 143742005-12-16 Torbjorn Granlund <tege@swox.com> 14375 14376 * mpn/generic/tdiv_qr.c: Remove statement with no effect. 14377 Rename dead variable to `dummy'. 14378 143792005-12-15 Torbjorn Granlund <tege@swox.com> 14380 14381 * demos/pexpr.c (setup_error_handler): Add a missing ";". 14382 143832005-11-27 Torbjorn Granlund <tege@swox.com> 14384 14385 * mpn/generic/mul.c: Crudely call mpn_mul_fft_full before checking 14386 for unbalanced operands. 14387 14388 * mpn/generic/mul_fft.c: Remove many scalar divisions. 14389 (mpn_mul_fft_lcm): Simplify. 14390 (mpn_mul_fft_decompose): Rewrite to handle arbitrarily unbalanced 14391 operands. 14392 143932005-11-22 Torbjorn Granlund <tege@swox.com> 14394 14395 * configure.in: Properly recognize all 32-bit Solaris releases. 14396 143972005-11-10 Torbjorn Granlund <tege@swox.com> 14398 14399 * mpn/generic/mul_fft.c: Inline mpn_fft_mul_2exp_modF, 14400 mpn_fft_add_modF and mpn_fft_normalize. 14401 144022005-11-02 Torbjorn Granlund <tege@swox.com> 14403 14404 * tests/mpz/reuse.c: Increase operand size, decrease # of reps. 14405 14406 * mpz/rootrem.c: Adapt to new mpn_rootrem. 14407 * mpz/root.c: Likewise. 14408 14409 * tests/mpz/reuse.c: Test mpz_rootrem. 14410 14411 With Paul Zimmermann: 14412 * mpn/generic/rootrem.c: Complete rewrite. 14413 144142005-10-31 Torbjorn Granlund <tege@swox.com> 14415 14416 * mpz/pprime_p.c (mpz_probab_prime_p): Considerably limit trial 14417 dividing. 14418 14419 * mpz/perfpow.c (mpz_perfect_power_p): Use mpz_divisible_ui_p instead 14420 of mpz_tdiv_ui. 14421 14422 * mpz/divegcd.c: Correct probability number for GCD == 1. 14423 14424 * mpn/x86_64/mul_basecase.asm: Remove an obsolete comment. 14425 14426 * mpn/x86: Add cycle counts for array of x86 processors. 14427 14428 * mpn/x86/k7/mod_34lsub1.asm: Remove spurious mentions of ebp. 14429 14430 * mpn/powerpc32: Add POWER5 timings. 14431 14432 * mpn/powerpc32/README: Describe global reference variations. 14433 14434 * mpn/ia64/divrem_2.asm: Add some comments. 14435 14436 * mpn/ia64/divrem_1.asm: Reformat. 14437 14438 * mpn/ia64/addmul_2.asm: Correct a comment on slotting. 14439 * mpn/ia64/logops_n.asm: Likewise. 14440 14441 * mpn/ia64/addmul_1.asm: Remove a redundant preg mutex decl. 14442 14443 * mpn/generic/dive_1.c: Whitespace cleanup. 14444 14445 * mpn/alpha/ev6/nails/addmul_1.asm: Correct comments on slotting. 14446 * mpn/alpha/ev6/nails/addmul_2.asm: Likewise. 14447 * mpn/alpha/ev6/nails/addmul_4.asm: Likewise. 14448 14449 * mpf/out_str.c: List some allocation improvement ideas. 14450 14451 * doc/gmp.texi: Update many URLs and email addresses. 14452 14453 * gmp-h.in (_GMP_H_HAVE_FILE): Check also _STDIO_H_INCLUDED. 14454 144552005-10-26 Torbjorn Granlund <tege@swox.com> 14456 14457 * tune/tuneup.c (tune_mullow): Update param.max_size for each threshold 14458 measurement. 14459 14460 * configure.in (POWERPC64_PATTERN/*-*-darwin*): Set 14461 SPEED_CYCLECOUNTER_OBJ_mode64 and cyclecounter_size_mode64. 14462 (POWERPC64_PATTERN/*-*-linux*): Likewise. 14463 144642005-10-03 Torbjorn Granlund <tege@swox.com> 14465 14466 * demos/factorize.c (factor_using_division_2kp): Honor verbose flag. 14467 (factor_using_pollard_rho): Divide out new factor before it's 14468 clobbered. Don't stop factoring after a composite factor was found. 14469 144702005-09-17 Torbjorn Granlund <tege@swox.com> 14471 14472 * demos/pexpr.c (fns): Add factorial keywords. 14473 144742005-08-16 Torbjorn Granlund <tege@swox.com> 14475 14476 * tune/Makefile.am (EXTRA_DIST): Change "amd64" => "x86_64". 14477 * mpn/Makefile.am (TARG_DIST): Change "amd64" => "x86_64". 14478 144792005-08-15 Torbjorn Granlund <tege@swox.com> 14480 14481 * configure.in: Change "amd64" => "x86_64". 14482 144832005-06-13 Torbjorn Granlund <tege@swox.com> 14484 14485 * mpn/generic/pre_mod_1.c: Canonicalize variable names. 14486 14487 * mpn/generic/divrem.c: Rate qxn test as UNLIKELY. 14488 14489 * mpn/generic/gcdext.c (sanity_check_row): Invoke TMP_MARK. 14490 14491 * tune/tuneup.c (tune_mullow): Fix all max_size fields. 14492 14493 * gmp-impl.h (SQR_TOOM3_THRESHOLD_LIMIT): New #define. 14494 * tune/tuneup.c (tune_sqr): Use SQR_TOOM3_THRESHOLD_LIMIT. 14495 (sqr_toom3_threshold): Initialize from SQR_TOOM3_THRESHOLD_LIMIT. 14496 14497 * mpn/generic/mul_n.c (mpn_sqr_n): Use SQR_TOOM3_THRESHOLD_LIMIT. 14498 14499 * gmp-impl.h (mpn_nand_n, mpn_iorn_n, mpn_nior_n, mpn_xnor_n): 14500 Handle nails. 14501 145022005-06-13 Niels Möller <nisse@lysator.liu.se> 14503 14504 * mpn/generic/gcdext.c (gcdext_schoenhage): Check for the 14505 (unlikely) case that one of the hgcd/euclid steps results in two 14506 remainders of one limb each. Then use gcdext_1. 14507 145082005-06-12 Torbjorn Granlund <tege@swox.com> 14509 14510 * mpn/alpha/ev6/sub_n.asm: Analogous changes as to add_n.asm last. 14511 145122005-06-11 Torbjorn Granlund <tege@swox.com> 14513 14514 * mpn/alpha/ev6/add_n.asm: Rewrite inner loop to load later. 14515 Add mpn_add_nc entry. 14516 14517 * mpn/alpha/ev6/addmul_1.asm: Remove redundant initial loads. 14518 145192005-06-09 Torbjorn Granlund <tege@swox.com> 14520 14521 * mpn/ia64/dive_1.asm: Fix issues with HP-UX. 14522 145232005-06-08 Torbjorn Granlund <tege@swox.com> 14524 14525 * mpn/ia64/diveby3.asm: Update TODO list. 14526 14527 * mpn/ia64/mode1o.asm: Fix comment typos. 14528 14529 * mpn/ia64/dive_1.asm: New file. 14530 145312005-06-07 Torbjorn Granlund <tege@swox.com> 14532 14533 * mpn/ia64/mode1o.asm: Add prefetching. 14534 14535 * mpn/generic/dive_1.c: Use variable h for upper umul_ppmm result. 14536 145372005-06-06 Torbjorn Granlund <tege@swox.com> 14538 14539 * mpn/ia64/hamdist.asm: Complete rewrite. 14540 * mpn/ia64/popcount.asm: Rewrite to use multi-pronged feed-in. 14541 14542 * mpn/ia64/aors_n.asm: Rewrite feed-in code. 14543 * mpn/ia64/rsh1aors_n.asm: Likewise. 14544 * mpn/ia64/aorslsh1_n.asm: Likewise. 14545 * mpn/ia64/lorrshift.asm: Likewise. 14546 145472005-06-04 Torbjorn Granlund <tege@swox.com> 14548 14549 * tests/devel/try.c (choice_array): Exclude mpn_preinv_mod_1 unless 14550 USE_PREINV_MOD_1. 14551 (choice_array): Exclude mpn_sqr_basecase if SQR_KARATSUBA_THRESHOLD 14552 is zero. 14553 145542005-06-03 Torbjorn Granlund <tege@swox.com> 14555 14556 * mpn/alpha/ev6/addmul_1.asm: Prefix all labels with "$". 14557 * mpn/alpha/ev6/mul_1.asm: Likewise. 14558 145592005-06-02 Torbjorn Granlund <tege@swox.com> 14560 14561 * tests/refmpn.c (refmpn_divmod_1c_workaround): Implement workaround 14562 to gcc 3.4.x bug triggered on powerpc64 with 32-bit ABI. 14563 145642005-06-01 Torbjorn Granlund <tege@swox.com> 14565 14566 * tests/devel/try.c (main): Fix a typo. 14567 145682005-05-31 Torbjorn Granlund <tege@swox.com> 14569 14570 * mpn/alpha/ev6/addmul_1.asm: Rewrite for L1 cache, add prefetch. 14571 145722005-05-30 Torbjorn Granlund <tege@swox.com> 14573 14574 * tests/misc.c (tests_rand_start): Mask random seed to 32 bits. 14575 145762005-05-29 Torbjorn Granlund <tege@swox.com> 14577 14578 * mpn/powerpc64/mode32/mul_1.asm: Handle BROKEN_LONGLONG_PARAM. 14579 * mpn/powerpc64/mode32/addmul_1.asm: Likewise. 14580 * mpn/powerpc64/mode32/submul_1.asm: Likewise. 14581 14582 * mpn/powerpc32/mode1o.asm: Rewrite to actually work. 14583 14584 * mpn/powerpc32/aix.m4 (LEA): New macro. 14585 (ASM_END): New macro. 14586 14587 * mpn/powerpc32/linux.m4: New file. 14588 * mpn/powerpc32/darwin.m4: New file. 14589 * configure.in: Use linux.m4 and darwin.m4. 14590 (powerpc64-linux-gnu): Add support for mode32. 14591 145922005-05-25 Torbjorn Granlund <tege@swox.com> 14593 14594 * mpn/generic/mullow_n.c: Remove FIXME mentioning fixed flaw. 14595 14596 * tests/mpz/t-cmp_d.c (check_one): Fix printf fmt string typo. 14597 14598 * demos/isprime.c: #include stdlib.h. 14599 * tests/rand/t-urbui.c: Likewise. 14600 * tests/rand/t-urmui.c: Likewise. 14601 14602 * tests/mpz/t-popcount.c (check_random): Remove spurious printf arg. 14603 14604 * mpn/ia64/lorrshift.asm: Cleanup code layout. 14605 * mpn/ia64/popcount.asm: Likewise. 14606 146072005-05-24 Torbjorn Granlund <tege@swox.com> 14608 14609 * tests/devel/try.c (param_init) [TYPE_GET_STR]: Set retval field. 14610 (compare): Handle SIZE_GET_STR as SIZE_RETVAL. 14611 14612 * tests/refmpn.c (refmpn_get_str): Rewrite to make it work. 14613 146142005-05-23 Torbjorn Granlund <tege@swox.com> 14615 14616 * mpn/amd64/add_n.asm: Add mpn_add_nc entry point. 14617 * mpn/amd64/sub_n.asm: Add mpn_sub_nc entry point. 14618 14619 * longlong.h (many places): Remove lvalue casts. 14620 14621 * gmp-impl.h (MPF_SIGNIFICANT_DIGITS): Cast prec to avoid overflow 14622 for > 4G digits. 14623 14624 * mpn/alpha/ev6/add_n.asm: Prefetch using ldl. 14625 * mpn/alpha/ev6/sub_n.asm: Likewise. 14626 14627 * mpn/alpha/ev6/slot.pl (optable): Recognize negq and ldl. 14628 14629 * mpn/ia64/aors_n.asm: Prefetch using lfetch. 14630 * mpn/ia64/lorrshift.asm: Likewise. 14631 * mpn/ia64/popcount.asm: Likewise. 14632 * mpn/ia64/diveby3.asm: Likewise. 14633 146342005-05-22 Torbjorn Granlund <tege@swox.com> 14635 14636 * mpn/alpha/ev67/popcount.asm: Prefetch. 14637 * mpn/alpha/ev67/hamdist.asm: Prefetch. 14638 14639 * longlong.h (add_ssaaaa) [x86]: Remove lvalue casts. 14640 (sub_ddmmss) [x86]: Likewise. 14641 14642 * tests/devel/try.c (param_init) [TYPE_MPZ_JACOBI]: Add DATA_SRC1_ODD. 14643 (param_init) [TYPE_MPZ_KRONECKER]: Clear inherited DATA_SRC1_ODD. 14644 (param_init) [TYPE_DIVEXACT_1]: Use symbolic name DIVISOR_LIMB. 14645 146462005-05-21 Torbjorn Granlund <tege@swox.com> 14647 14648 * tests/devel/try.c (param_init) [TYPE_MPZ_JACOBI]: Initialize divisor 14649 field according to UDIV_NEEDS_NORMALIZATION. 14650 14651 * mpz/mul_i.h: Remove left-over TMP_XXXX marker arguments. 14652 146532005-05-20 Torbjorn Granlund <tege@swox.com> 14654 14655 * mpn/x86/pentium4/sse2/addmul_1.asm (mpn_addmul_1c): Put carry in 14656 proper register. 14657 14658 * mpn/generic/sqr_basecase.c (mpn_sqr_basecase, addmul_2 version): 14659 Avoid accesses out-of-bound in MPN_SQR_DIAGONAL applicate code. 14660 146612005-05-19 Torbjorn Granlund <tege@swox.com> 14662 14663 * mpn/alpha/diveby3.asm: Make it actually work. 14664 14665 * gmp-impl.h (MULLOW_BASECASE_THRESHOLD_LIMIT): New #define. 14666 * mpn/generic/mullow_n.c: Use fixed stack allocation for the smallest 14667 operands; use TMP_S* allocation for medium operands. 14668 14669 * gmp-impl.h: Remove nested TUNE_PROGRAM_BUILD test. 14670 146712005-05-18 Torbjorn Granlund <tege@swox.com> 14672 14673 * mpn/generic/mul_n.c: Make squaring and multiplication code more 14674 similar. Use TMP_S* functions. 14675 14676 * gmp-impl.h (TMP_DECL, TMP_MARK, TMP_FREE): Get rid of argument. 14677 (TMP_SALLOC): New macro for "small" allocations. 14678 (TMP_BALLOC): New macro for "big" allocations. 14679 (TMP_SDECL, TMP_SMARK, TMP_SFREE): New macros for functions that use 14680 just TMP_SALLOC. 14681 (WANT_TMP_ALLOCA): Make default functions choose alloca or reentrant 14682 functions, depending on size. 14683 14684 * *.c: Remove TMP_XXXX marker arguments. 14685 14686 * acinclude.m4 (WANT_TMP): Want tal-reent.lo also for alloca case. 14687 146882005-05-16 Torbjorn Granlund <tege@swox.com> 14689 14690 * mpn/ia64/gmp-mparam.h: Further extend FFT tables. 14691 146922005-05-15 Torbjorn Granlund <tege@swox.com> 14693 14694 * gmp-impl.h (udiv_qrnnd_preinv2): Pull an add into add_ssaaaa. 14695 (udiv_qrnnd_preinv2gen): Likewise. 14696 146972005-05-14 Torbjorn Granlund <tege@swox.com> 14698 14699 * longlong.h (add_ssaaaa) [x86_64]: Restrict allowed immediate 14700 operands. 14701 * (sub_ddmmss) [x86_64]: Likewise. 14702 147032005-05-02 Torbjorn Granlund <tege@swox.com> 14704 14705 * acinclude.m4 (GMP_HPC_HPPA_2_0): Make gmp_tmp_v1 sed pattern handle 14706 version numbers like B.11.X.32509-32512.GP. 14707 14708 * mpn/m68k/aors_n.asm: Correct MULFUNC_PROLOGUE. 14709 14710 * mpn/powerpc64/mode64/aors_n.asm: Add a MULFUNC_PROLOGUE. 14711 14712 * mpf/inp_str.c: Use plain int for mpf_set_str return value (works 14713 around gcc 4 bug). 14714 14715 * acinclude.m4 (GMP_ASM_POWERPC_PIC_ALWAYS): Handle darwin's assembly 14716 syntax. 14717 (long long reliability test 1): New GMP_PROG_CC_WORKS_PART test. 14718 (long long reliability test 2): New GMP_PROG_CC_WORKS_PART test. 14719 14720 * configure.in: Add mode64 support for darwin. Use darwin.m4. 14721 Add cflags_opt flags for mode32 darwin. 14722 14723 * mpn/powerpc64: Use L() for all asm files. 14724 14725 * mpn/asm-defs.m4 (PIC_ALWAYS): Define PIC just iff PIC_ALWAYS = "yes". 14726 14727 * mpn/powerpc64/darwin.m4: New file. 14728 14729 * mpn/powerpc64/linux64.m4: Remove TOCREF, add LDSYM. 14730 Rework DEF_OBJECT to need just one argument. 14731 * mpn/powerpc64/aix.m4: Likewise. 14732 14733 * mpn/powerpc64/mode64/invert_limb.asm: Load approx_tab address with 14734 LDSYM. Optimize somewhat. Remove 2nd DEF_OBJECT operand. 14735 147362005-05-01 Torbjorn Granlund <tege@swox.com> 14737 14738 * mpn/generic/popham.c: Compute final summation differently for 64-bit. 14739 14740 * tests/mpz/t-popcount.c (check_random): New function. 14741 (main): Call it. 14742 147432005-04-28 Torbjorn Granlund <tege@swox.com> 14744 14745 * mpn/amd64/add_n.asm: Use r9 instead of rbx to save push/pop. 14746 * mpn/amd64/sub_n.asm: Likewise. 14747 147482005-04-09 Torbjorn Granlund <tege@swox.com> 14749 14750 * mpn/powerpc64/copyi.asm: If HAVE_ABI_mode32, ignore upper 32 bits of 14751 mp_size_t argument. 14752 * mpn/powerpc64/copyd.asm: Likewise. 14753 * mpn/powerpc64/sqr_diagonal.asm: Likewise. 14754 * mpn/powerpc64/lshift.asm: Likewise. 14755 * mpn/powerpc64/rshift.asm: Likewise. 14756 * mpn/powerpc64/logops_n.asm: Likewise. 14757 * mpn/powerpc64/com_n.asm: Likewise. 14758 147592005-04-08 Torbjorn Granlund <tege@swox.com> 14760 14761 * mpn/generic/rootrem.c: Allocate PP_ALLOC limbs also for qp. 14762 147632005-04-07 Torbjorn Granlund <tege@swox.com> 14764 14765 * mpn/powerpc32/add_n.asm: Add nc entry point. 14766 * mpn/powerpc32/sub_n.asm: Likewise. 14767 14768 * mpn/amd64/*.asm: Add Prescott/Nocona cycle/limb numbers. 14769 14770 * mpn/alpha/add_n.asm: Add correct cycle/limb numbers. 14771 * mpn/alpha/sub_n.asm: Likewise. 14772 * mpn/alpha/ev5/add_n.asm: Likewise. 14773 * mpn/alpha/ev5/sub_n.asm: Likewise. 14774 147752005-03-31 Torbjorn Granlund <tege@swox.com> 14776 14777 * mpn/x86/k7/gmp-mparam.h: Fix typo in last change. 14778 147792005-03-19 Torbjorn Granlund <tege@swox.com> 14780 14781 * mpn/amd64/gmp-mparam.h: Update. 14782 14783 * mpn/alpha/gmp-mparam.h: Update. 14784 * mpn/alpha/ev5/gmp-mparam.h: Update. 14785 * mpn/alpha/ev6/gmp-mparam.h: Update. 14786 14787 * mpn/ia64/gmp-mparam.h: Update. 14788 14789 * mpn/x86/p6/mmx/gmp-mparam.h: Update. 14790 * mpn/x86/pentium4/sse2/gmp-mparam.h: Update. 14791 * mpn/x86/k7/gmp-mparam.h: Update. 14792 14793 * tests/mpz/t-gcd.c (main): Honor command line reps argument. 14794 14795 * tune/speed.h (SPEED_ROUTINE_MPN_GCD_CALL): Simplify and correct code 14796 for generating test operands. 14797 147982005-03-17 Niels Möller <nisse@lysator.liu.se> 14799 14800 * mpn/generic/hgcd.c (qstack_adjust): New argument d, saying how much 14801 to adjust the top quotient. 14802 (hgcd_adjust): The quotient can be off by either 1 or 2. 14803 148042005-03-16 Torbjorn Granlund <tege@swox.com> 14805 14806 * tests/mpz/t-gcd.c (MAX_SCHOENHAGE_THRESHOLD): Set to largest of 14807 gcd,gcdext thresholds. 14808 148092005-03-15 Niels Möller <nisse@lysator.liu.se> 14810 14811 * mpn/generic/gcdext.c (gcdext_schoenhage): When calling gcdext_lehmer, 14812 reuse all temporary limb storage, including the storage used for the 14813 qstack. 14814 148152005-03-09 Torbjorn Granlund <tege@swox.com> 14816 14817 * mpn/amd64/logops_n.asm: Add MULFUNC_PROLOGUE. 14818 148192005-03-05 Torbjorn Granlund <tege@swox.com> 14820 14821 * mpn/amd64/gmp-mparam.h: Extend MUL_FFT_TABLE and SQR_FFT_TABLE. 14822 * mpn/ia64/gmp-mparam.h: Likewise. 14823 148242005-02-17 Torbjorn Granlund <tege@swox.com> 14825 14826 * mpn/ia64/divrem_1.asm: Add preinv entry point. 14827 148282005-01-13 Torbjorn Granlund <tege@swox.com> 14829 14830 * gmp-impl.h (MPN_SIZEINBASE): Count bits in type size_t. 14831 (MPN_SIZEINBASE_16): Likewise. 14832 148332004-12-17 Torbjorn Granlund <tege@swox.com> 14834 14835 * tune/speed.c (run_gnuplot): Use lines, not linespoints. 14836 Output a reset gnuplot command initially. 14837 148382004-12-04 Torbjorn Granlund <tege@swox.com> 14839 14840 * mpn/generic/random2.c (gmp_rrandomb): Rework again. 14841 * mpz/rrandomb.c (gmp_rrandomb): Likewise. 14842 14843 * mpn/amd64/redc_1.asm: Call via PLT when PIC. 14844 148452004-11-29 Torbjorn Granlund <tege@swox.com> 14846 14847 * mpn/amd64/divrem_1.asm: Add preinv entry point. 14848 * mpn/amd64/gmp-mparam.h: Set USE_PREINV_DIVREM_1 to 1. 14849 148502004-11-24 Torbjorn Granlund <tege@swox.com> 14851 14852 * mpn/alpha/diveby3.asm: Use correct prefetch instruction. 14853 148542004-11-19 Torbjorn Granlund <tege@swox.com> 14855 14856 * mpn/alpha/diveby3.asm: Add ",gp" glue in PROLOGUE. 14857 Add r31 dummy operand to `br' instruction. 14858 148592004-11-17 Torbjorn Granlund <tege@swox.com> 14860 14861 * mpn/powerpc64/mode64/addmul_1.asm: Rewrite. 14862 * mpn/powerpc64/mode64/mul_1.asm: Rewrite. 14863 14864 * configure.in: Invoke AC_C_RESTRICT. 14865 148662004-11-16 Torbjorn Granlund <tege@swox.com> 14867 14868 * mpn/alpha/diveby3.asm: New file. 14869 148702004-11-13 Torbjorn Granlund <tege@swox.com> 14871 14872 * mpn/amd64/popham.asm: New file. 14873 148742004-11-12 Torbjorn Granlund <tege@swox.com> 14875 14876 * mpn/amd64/add_n.asm: Correct cycle count. 14877 * mpn/amd64/sub_n.asm: Likewise. 14878 14879 * mpn/amd64/dive_1.asm: Speed divisors with many factors of 2. 14880 148812004-11-11 Torbjorn Granlund <tege@swox.com> 14882 14883 * mpn/amd64/dive_1.asm: New file. 14884 148852004-11-10 Torbjorn Granlund <tege@swox.com> 14886 14887 * mpn/generic/popham.c: Add comment. 14888 148892004-11-09 Torbjorn Granlund <tege@swox.com> 14890 14891 * mpn/amd64/com_n.asm: New file. 14892 14893 * mpn/amd64/logops_n.asm: New file. 14894 148952004-11-08 Torbjorn Granlund <tege@swox.com> 14896 14897 * mpn/powerpc64/com_n.asm: New file. 14898 148992004-11-05 Torbjorn Granlund <tege@swox.com> 14900 14901 * mpn/amd64/diveby3.asm: New file. 14902 14903 * config.guess: Strip any PPC string in /proc/cpuinfo. 14904 Recognize 970 in that code. 14905 149062004-11-01 Torbjorn Granlund <tege@swox.com> 14907 14908 * mpn/amd64/mul_basecase.asm: New file. 14909 14910 * mpn/amd64/redc_1.asm: New file. 14911 149122004-10-25 Torbjorn Granlund <tege@swox.com> 14913 14914 * mpn/powerpc64/mode64/addlsh1_n.asm: Correct cycle counts. 14915 14916 * mpn/powerpc64/README: Update POWER5/PPC970 pipeline information. 14917 14918 * mpn/generic/mul_basecase.c (MAX_LEFT): Add comment. 14919 14920 * doc/gmp.texi: Consistently use "x86" denotation. 14921 (Assembler SIMD Instructions): Mention SSE2 usage. 14922 14923 * demos/pexpr.c (main): Handle "negative" base in mpz_sizeinbase call. 14924 149252004-10-18 Torbjorn Granlund <tege@swox.com> 14926 14927 * mpn/powerpc64/mode64/submul_1.asm: Shave 2 cycles/limb with new carry 14928 inversion trick. 14929 149302004-10-16 Torbjorn Granlund <tege@swox.com> 14931 14932 * configure.in: Support icc under x86. 14933 (ia64-*-linux*): Pass -no-gcc to icc. 14934 149352004-10-15 Torbjorn Granlund <tege@swox.com> 14936 14937 * longlong.h (ia64 umul_ppmm): Add version for icc. 14938 14939 * configure.in: Support icc under ia64-*-linux*. 14940 14941 * acinclude.m4: New "compiler works" test for icc 8.1 bug. 14942 (GMP_PROG_CC_IS_GNU): Don't let Intel's icc fool us it is GCC. 14943 149442004-10-14 Torbjorn Granlund <tege@swox.com> 14945 14946 * mpn/generic/gcdext.c: Add a few missing TMP_MARK. 14947 149482004-10-14 Torbjorn Granlund <tege@swox.com> 14949 14950 * acinclude.m4 (GMP_ASM_W32): Try also "data4". 14951 14952 * mpn/ia64/logops_n.asm: Don't use naked "br", rejected by Intel 14953 assembler. 14954 * mpn/ia64/aors_n.asm: Likewise. 14955 14956 * mpn/ia64/divrem_2.asm: Add ".prologue". 14957 14958 * mpn/ia64/hamdist.asm: Put alloc first in bundle, enforced by the 14959 Intel assembler. 14960 14961 * longlong.h: Exclude masquerading __INTEL_COMPILER from ia64 asm. 14962 * gmp-impl.h: Likewise. 14963 149642004-10-12 Torbjorn Granlund <tege@swox.com> 14965 14966 * mpn/ia64/mul_2.asm: Rewrite function entry code, write new code for 14967 n=2. 14968 * mpn/ia64/addmul_2.asm: Likewise. 14969 14970 * tests/devel/try.c: Handle mpn_mul_2 like mpn_addmul_2. 14971 14972 * tune/speed.c (routine): Make R parameter optional for mpn_mul_2. 14973 149742004-10-11 Torbjorn Granlund <tege@swox.com> 14975 14976 * mpn/sparc64/addmul_1.asm: Update a comment. 14977 14978 * tests/devel/aors_n.c: #include tests.h. 14979 * tests/devel/anymul_1.c: Likewise. 14980 * tests/devel/shift.c: Likewise. 14981 * tests/devel/copy.c: Likewise. 14982 14983 * tests/devel/aors_n.c: Handle also mpn_addlsh1_n, mpn_sublsh1_n, 14984 mpn_rsh1add_n, and mpn_rsh1sub_n. 14985 14986 * mpn/ia64/submul_1.asm: Add TODO item. 14987 14988 * mpn/ia64/aors_n.asm: Rewrite function entry code (again). 14989 * mpn/ia64/aorslsh1_n.asm: Likewise. 14990 * mpn/ia64/logops_n.asm: Likewise. 14991 14992 * mpn/ia64/rsh1aors_n.asm: Tune function entry and feed-in code. 14993 * mpn/ia64/lorrshift.asm: Likewise. Remove several spurious loads. 14994 14995 * tests/devel/Makefile.am (EXTRA_PROGRAMS): Updates for yesterday's 14996 file removals and additions. 14997 149982004-10-10 Torbjorn Granlund <tege@swox.com> 14999 15000 * mpn/ia64/copyi.asm: Tune function entry code. 15001 * mpn/ia64/copyd.asm: Likewise. 15002 15003 * mpn/ia64/logops_n.asm: Tune function entry and feed-in code for speed 15004 and size. 15005 * mpn/ia64/aors_n.asm: Likewise. 15006 15007 * mpn/powerpc64/logops_n.asm: Correct cycles counts. 15008 * mpn/powerpc64/mode64/aors_n.asm: Likewise. 15009 15010 * tests/devel/copy.c: Handle both MPN_COPY_INCR and MPN_COPY_DECR. 15011 15012 * tests/devel/logops_n.c: New file, handle all logical operations. 15013 15014 * tests/devel/anymul_1.c: New file, handle mpn_mul_1, mpn_addmul_1, and 15015 mpn_submul_1 15016 * tests/devel/mul_1.c: Remove. 15017 * tests/devel/addmul_1.c: Remove. 15018 * tests/devel/submul_1.c: Remove. 15019 15020 * tests/devel/shift.c: New file, handle mpn_lshift and mpn_rshift. 15021 * tests/devel/lshift.c: Remove. 15022 * tests/devel/rshift.c: Remove. 15023 15024 * tests/devel/aors_n.c: New file, handle mpn_add_n and mpn_sub_n. 15025 * tests/devel/add_n.c: Remove. 15026 * tests/devel/sub_n.c: Remove. 15027 150282004-10-09 Torbjorn Granlund <tege@swox.com> 15029 15030 * mpn/powerpc64/linux64.m4: Define DEF_OBJECT, END_OBJECT, and TOCREF. 15031 * mpn/powerpc64/aix.m4: Likewise. 15032 * mpn/powerpc64/mode64/invert_limb.asm: Use DEF_OBJECT, END_OBJECT, and 15033 TOCREF for approx_tab. 15034 15035 * mpn/amd64/mul_1.asm: Add mpn_mul_1c entry point. 15036 150372004-10-08 Torbjorn Granlund <tege@swox.com> 15038 15039 * mpn/powerpc64/copyi.asm: New file. 15040 * mpn/powerpc64/copyd.asm: New file. 15041 * gmp-h.in: Remove PPC MPN_COPY variants. 15042 * gmp-impl.h: Likewise. 15043 15044 * mpn/powerpc64/logops_n.asm: New file. 15045 15046 * mpn/powerpc64/mode64/invert_limb.asm: New file. 15047 150482004-10-07 Torbjorn Granlund <tege@swox.com> 15049 15050 * mpn/powerpc64/mode64/aors_n.asm: New file, optimized for POWER4 and 15051 its derivatives. 15052 * mpn/powerpc64/mode64/add_n.asm: Delete. 15053 * mpn/powerpc64/mode64/sub_n.asm: Delete. 15054 15055 * configfsf.guess: Patch HP-UX code to accommodate HP compiler's new 15056 inability to read from stdin. 15057 15058 * mpn/powerpc64/mode64/addsub_n.asm: Remove accidentally added file. 15059 150602004-10-02 Torbjorn Granlund <tege@swox.com> 15061 15062 * mpn/amd64/README: Update for new developments, fix typos. 15063 15064 * mpn/amd64/mul_1.asm: Tweak addressing (3.25 => 3.0 cycles/limb). 15065 15066 * mpn/amd64/addmul_1.asm: Remove unreachable code block. 15067 150682004-09-30 Torbjorn Granlund <tege@swox.com> 15069 15070 * mpn/amd64/addmul_1.asm: Rewrite, now 3.25 cycles/limb. 15071 15072 * mpn/ia64/addmul_1.asm: Slightly enhance cross-jumping for code 15073 density. 15074 * mpn/ia64/mul_1.asm: Analogous changes. 15075 150762004-09-29 Torbjorn Granlund <tege@swox.com> 15077 15078 * gmp-impl.h (x86 ULONG_PARITY): Work around GCC change of "q" register 15079 flag. 15080 150812004-09-28 Torbjorn Granlund <tege@swox.com> 15082 15083 * mpn/ia64/divrem_1.asm: Add cycle counts to loop. 15084 15085 * mpn/ia64/divrem_2.asm: New file. 15086 150872004-09-28 Paul Zimmermann <Paul.Zimmermann@loria.fr> 15088 15089 * mpn/generic/mul_fft.c (mpn_mul_fft): Fix a bug in the choice of the 15090 recursive fft parameters. 15091 150922004-09-20 Torbjorn Granlund <tege@swox.com> 15093 15094 * tests/misc.c (tests_rand_start): Default to strtoul for re-seeding. 15095 15096 * tests/mpz/t-mul.c (ref_mpn_mul): Fudge tmp allocation for toom3. 15097 150982004-09-19 Torbjorn Granlund <tege@swox.com> 15099 15100 * tests/misc.c (tests_rand_start): Shift tv_usec for better seeding. 15101 151022004-09-18 Torbjorn Granlund <tege@swox.com> 15103 15104 * tests/misc.c (tests_rand_start): Invoke fflush after printing seed. 15105 15106 * tests/mpz/t-mul.c (main): Check environment for GMP_CHECK_FFT, run 15107 extra FFT tests if set. 15108 (ref_mpn_mul): Use library code for kara and toom, but skewded so that 15109 we never use the same algorithm that we're testing. 15110 (mul_kara): Delete. 15111 (debug_mp): Print just one line of large numbers. 15112 (ref_mpn_mul): Rework usage of tp temporary space. 15113 151142004-09-15 Torbjorn Granlund <tege@swox.com> 15115 15116 * mpn/ia64/mul_2.asm: For HAVE_ABI_32, convert vp. 15117 * mpn/ia64/addmul_2.asm: Likewise. 15118 151192004-09-13 Torbjorn Granlund <tege@swox.com> 15120 15121 * mpn/ia64/invert_limb.asm: Rewrite. 15122 15123 * mpn/ia64/logops_n.asm: Insert some more stops. 15124 151252004-09-12 Torbjorn Granlund <tege@swox.com> 15126 15127 * mpn/ia64/gmp-mparam.h: Update. 15128 * mpn/amd64/gmp-mparam.h: Update. 15129 15130 * mpn/ia64/sqr_diagonal.asm: Shave off a few cycles. 15131 151322004-09-11 Torbjorn Granlund <tege@swox.com> 15133 15134 * mpn/ia64/mul_2.asm: New file. 15135 * mpn/ia64/addmul_2.asm: New file. 15136 15137 * mpn/ia64/addmul_1.asm: Tune a cycle from prologue. 15138 15139 * mpn/ia64/lorrshift.asm: Insert stops after several branches. 15140 * mpn/ia64/aorslsh1_n.asm: Likewise. 15141 * mpn/ia64/rsh1aors_n.asm: Likewise. 15142 15143 * mpn/generic/sqr_basecase.c: In variant for HAVE_NATIVE_mpn_addmul_2, 15144 accumulate carry also for when HAVE_NATIVE_mpn_addlsh1_n. 15145 151462004-09-07 Torbjorn Granlund <tege@swox.com> 15147 15148 * mpn/ia64/submul_1.asm: Rewrite. 15149 15150 * mpn/ia64/addmul_1.asm: Format to placate HP-UX assembler. 15151 * mpn/ia64/mul_1.asm: Likewise. 15152 151532004-09-02 Torbjorn Granlund <tege@swox.com> 15154 15155 * mpn/ia64/mul_1.asm: Optimize feed-in code. 15156 * mpn/ia64/addmul_1.asm: Rewrite feed-in code. 15157 151582004-08-29 Torbjorn Granlund <tege@swox.com> 15159 15160 * tests/mpz/t-sizeinbase.c: Disable mpz_fake_bits and check_sample. 15161 151622004-07-16 Torbjorn Granlund <tege@swox.com> 15163 15164 * mpn/ia64/addmul_1.asm: Format to placate HP-UX assembler. 15165 151662004-06-17 Kevin Ryde <kevin@swox.se> 15167 15168 * doc/gmp.texi: Use @. when sentence ends with a capital, for good 15169 spacing in tex. 15170 (Language Bindings): Add gmp-d, reported by Ben Hinkle. Update SWI 15171 Prolog URL, reported by Jan Wielemaker. 15172 151732004-06-09 Torbjorn Granlund <tege@swox.com> 15174 15175 * configure.in: Handle --enable-fat. Use that to enable x86 fat 15176 builds, remove magic meaning of i386-*-*. 15177 151782004-06-03 Kevin Ryde <kevin@swox.se> 15179 15180 * gmp-impl.h (memset): Use a local char* pointer, in case parameter is 15181 something else (eg. tune/common.c). Reported by Emmanuel Thomé. 15182 151832004-06-01 Kevin Ryde <kevin@swox.se> 15184 15185 * config.guess (i?86-*-*): Avoid "Illegal instruction" message which 15186 goes to stdout on 80386 freebsd4.9. 15187 151882004-05-23 Niels Möller <nisse@lysator.liu.se> 15189 15190 * mpn/generic/gcdext.c (gcdext_1_u): New function. 15191 (mpn_gcdext): Use it. 15192 151932004-05-23 Torbjorn Granlund <tege@swox.com> 15194 15195 * mpn/generic/gcdext.c (gcdext_1_odd): Use masking to avoid jumps. 15196 151972004-05-22 Torbjorn Granlund <tege@swox.com> 15198 15199 * mpn/x86/pentium4/sse2/addmul_1.asm: Add Prescott cycle numbers. 15200 15201 * mpn/amd64/divrem_1.asm: Shave a cycle from fraction development code. 15202 15203 * mpn/powerpc32/lshift.asm: Add more cycle numbers. 15204 * mpn/powerpc32/rshift.asm: Likewise. 15205 15206 * mpn/ia64/addmul_1.asm: Reformat. 15207 152082004-05-21 Torbjorn Granlund <tege@swox.com> 15209 15210 * gmp-impl.h (mpn_mullow_n, mpn_mullow_basecase): Declare. 15211 15212 * tune/Makefile.am: Compile gcdext.c. 15213 15214 * gmp-impl.h (GET_STR_THRESHOLD_LIMIT): Lower outrageous value to 150. 15215 (GCDEXT_SCHOENHAGE_THRESHOLD): Set reasonable default. Override when 15216 TUNE_PROGRAM_BUILD. 15217 (GCDEXT_THRESHOLD): Remove. 15218 15219 * tune/tuneup.c (gcdext_schoenhage_threshold): New variable. 15220 (gcdext_threshold): Remove variable. 15221 (tune_gcd_schoenhage): Lower step_factor to 0.1. 15222 (tune_gcdext_schoenhage): New function, based on tune_gcd_schoenhage. 15223 (tune_gcdext): Remove function. 15224 (all): Corresponding changes. 15225 152262004-05-21 Niels Möller <nisse@lysator.liu.se> 15227 15228 * mpn/generic/gcdext.c: Complete rewrite. Uses fast Lehmer code for 15229 small operands, and Schoenhage code for large operands. 15230 15231 * tune/speed.h (SPEED_ROUTINE_MPN_GCD_CALL): Ensure first operand is 15232 not smaller than 2nd operand. 15233 152342004-05-17 Kevin Ryde <kevin@swox.se> 15235 15236 * gmp-h.in (mpz_get_ui): Use #if instead of plain if, and for nails 15237 use ?: same as normal case, to avoid warnings from Borland C++ 6.0. 15238 Reported by delta trinity. 15239 152402004-05-15 Kevin Ryde <kevin@swox.se> 15241 15242 * tune/time.c (getrusage_backwards_p): New function 15243 (speed_time_init): Use it to exclude broken netbsd1.4.1 getrusage. 15244 * configure.in (m68*-*-netbsd1.4*): Remove code pretending getrusage 15245 doesn't exist. 15246 * tune/README (NetBSD 1.4.1 m68k): Update notes. 15247 15248 * configure.in (mips*-*-* ABI=n32): Remove gcc_n32_ldflags and 15249 cc_n32_ldflags, libtool knows to put the linker in n32 mode. 15250 152512004-05-15 Torbjorn Granlund <tege@swox.com> 15252 15253 * config.guess (powerpc*-*-*): Add more processor types to mfpvr code. 15254 * configure.in: Generalize powerpc subtype matching code. 15255 15256 * mpz/fac_ui.c: Misc cleanups, spelling corrections. 15257 152582004-05-14 Kevin Ryde <kevin@swox.se> 15259 15260 * mpf/sub.c: When one operand cancels high limbs of the other, strip 15261 high zeros on the balance before truncating to destination precision. 15262 Truncating first loses accuracy and can lead to a result 0 despite 15263 operands being not equal. Reported by John Abbott. 15264 Also, ensure exponent is zero when result is zero, for instance if 15265 operands are exactly equal. 15266 * tests/mpf/t-sub.c (check_data): New function, exercising these. 15267 152682004-05-12 Kevin Ryde <kevin@swox.se> 15269 15270 * configure.in (AC_PROG_RANLIB): New macro, supposedly required by 15271 automake, though it doesn't complain. 15272 15273 * demos/expr/Makefile.am (ARFLAGS): Add a default setting, to 15274 workaround an automake bug. 15275 152762004-05-10 Kevin Ryde <kevin@swox.se> 15277 15278 * */Makefile.in, install-sh, aclocal.m4: Update to automake 1.8.4. 15279 15280 * doc/gmp.texi (Demonstration Programs): Add a remark about expression 15281 evaluation in the main gmp library. 15282 15283 * demos/expr/exprfa.c (mpf_expr_a): Correction to mpX_init, use 15284 mpf_init2 to follow requested precision. 15285 * demos/expr/exprza.c, demos/expr/exprqa.c: Use wrappers for mpX_init, 15286 to make parameters match. 15287 15288 * demos/expr/run-expr.c: Don't use getopt, to avoid needing configury 15289 for optarg declaration. Remove TRY macro, rename foo and bar to var_a 15290 and var_b, for clarity. 15291 * demos/expr/expr-impl.h: Don't use expr-config.h. 15292 * configure.in (demos/expr/expr-config.h): Remove. 15293 * demos/expr/expr-config.in: Remove file. 15294 152952004-05-08 Kevin Ryde <kevin@swox.se> 15296 15297 * doc/configuration (Configure): Update for current automake not 15298 copying acinclude.m4 into aclocal.m4. 15299 15300 * configure.in, Makefile.am, doc/gmp.texi, doc/configuration, 15301 tests/cxx/Makefile.am, demos/expr/Makefile.am, demos/expr/README, 15302 demos/expr/expr.c, demos/expr/expr.h, demos/expr/expr-config-h.in, 15303 demos/expr/expr-impl.h, demos/expr/run-expr.c, demos/expr/t-expr.c: 15304 MPFR now published separately, remove various bits. 15305 * mpfr/*, tests/cxx/t-headfr.cc, demos/expr/exprfr.c, 15306 demos/expr/exprfra.c: Remove. 15307 153082004-05-07 Kevin Ryde <kevin@swox.se> 15309 15310 * tests/cxx/Makefile.am (TESTS_ENVIRONMENT): Amend c++ shared library 15311 path hack, on k62-unknown-dragonfly1.0 /usr/bin/make runs its commands 15312 "set -e", so we need an "|| true" in case there's nothing to copy (for 15313 instance in a static build). 15314 153152004-05-06 Kevin Ryde <kevin@swox.se> 15316 15317 * mpn/alpha/mode1o.c: Remove, in favour of ... 15318 * mpn/alpha/mode1o.asm: New file. 15319 * mpn/alpha/alpha-defs.m4 (bwx_available_p): New macro. 15320 15321 * tune/amd64.asm: Save rbx in r10 rather than on the stack. 15322 15323 * configure.in (x86_64-*-*): Try also "-march=k8 -mno-sse2", in case 15324 we're in ABI=32 on an old OS not supporting xmm regs. 15325 (GMP_GCC_PENTIUM4_SSE2, GMP_OS_X86_XMM): Run these tests under 15326 -march=k8 too, and not under ABI=64. 15327 15328 * doc/gmp.texi (Converting Integers): For mpz_get_d, note truncation 15329 and overflows. For mpz_get_d_2exp note truncation, note result if 15330 OP==0, and cross reference libc frexp. 15331 (Rational Conversions): For mpq_get_d, note truncation and overflows. 15332 (Converting Floats): For mpf_get_d, note truncation and overflows. 15333 For mpf_get_d_2exp, note truncation, note result if OP==0. 15334 (Assembler Code Organisation): Note nails subdirectories. 15335 Clarification of get_d_2exp OP==0 reported by Sylvain Pion. 15336 153372004-05-05 Torbjorn Granlund <tege@swox.com> 15338 15339 * mpn/generic/mullow_n.c, mpn/generic/mullow_basecase.c: New files 15340 (mainly by Niels Möller). 15341 * configure.in, mpn/Makefile.am: Add them. 15342 15343 * gmp-impl.h (MULLOW_BASECASE_THRESHOLD, MULLOW_DC_THRESHOLD, 15344 MULLOW_MUL_N_THRESHOLD): Override for TUNE_PROGRAM_BUILD. 15345 15346 * tune/Makefile.am: Compile mullow_n.c. 15347 * tune/common.c (speed_mpn_mullow_n, speed_mpn_mullow_basecase): 15348 New functions. 15349 * tune/speed.c (routine): Add entries for mpn_mullow_n and 15350 mpn_mullow_basecase. 15351 * tune/speed.h (SPEED_ROUTINE_MPN_MULLOW_N_CALL, 15352 SPEED_ROUTINE_MPN_MULLOW_BASECASE): New #defines. 15353 * tune/tuneup.c (tune_mullow): New function. 15354 15355 * gmp-impl.h (invert_limb): Compute branch-freely. 15356 153572004-05-02 Kevin Ryde <kevin@swox.se> 15358 15359 * mpn/amd64/mode1o.asm: Use movabsq to support large model non-PIC. 15360 Use 32-bit insns to save code bytes, and to save a couple of cycles on 15361 the initial setup multiplies. 15362 153632004-05-01 Kevin Ryde <kevin@swox.se> 15364 15365 * doc/gmp.texi (References): Update gcc online docs url to 15366 gcc.gnu.org. 15367 15368 * configure.in (mips*-*-irix[6789]*): Correction to m4 quoting of this 15369 pattern. (Believe the mips64*-*-* part also used picks up all current 15370 irix6 tuples anyway.) Reported by Rainer Orth. 15371 153722004-04-30 Kevin Ryde <kevin@swox.se> 15373 15374 * acinclude.m4 (GMP_PROG_CC_X86_GOT_EAX_EMITTED, 15375 GMP_ASM_X86_GOT_EAX_OK): New macros. 15376 (GMP_PROG_CC_WORKS): Use them to detect an old gas bug tickled by 15377 recent gcc. Reported by David Newman. 15378 15379 * doc/gmp.texi (Reentrancy): Note also gmp_randinit_default as an 15380 alternative to gmp_randinit. 15381 153822004-04-29 Torbjorn Granlund <tege@swox.com> 15383 15384 * configfsf.guess: Update to 2004-03-12. 15385 * configfsf.sub: Likewise. 15386 153872004-04-27 Torbjorn Granlund <tege@swox.com> 15388 15389 * mpz/rrandomb.c (gmp_rrandomb): Rework to avoid extra limb allocation 15390 and to generate even numbers. 15391 * mpn/generic/random2.c (gmp_rrandomb): Likewise. 15392 153932004-04-25 Kevin Ryde <kevin@swox.se> 15394 15395 * gmp-impl.h (FORCE_DOUBLE): Don't use an asm with a match constraint 15396 on a memory output, apparently not supported and provokes a warning 15397 from gcc 3.4. 15398 153992004-04-24 Kevin Ryde <kevin@swox.se> 15400 15401 * longlong.h (count_leading_zeros_gcc_clz, 15402 count_trailing_zeros_gcc_ctz): New macros. 15403 (count_leading_zeros, count_trailing_zeros) [x86]: Use them on gcc 15404 3.4. 15405 15406 * configure.in (x86-*-* gcc_cflags_cpu): Give a -mtune at the start of 15407 each option list, for use by gcc 3.4 to avoid deprecation warnings 15408 about -mcpu. 15409 15410 * mpz/aorsmul.c, mpz/aorsmul_i.c, mpz/cfdiv_q_2exp.c, 15411 mpz/cfdiv_r_2exp.c, mpq/aors.c, mpf/ceilfloor.c: Give REGPARM_ATTR() 15412 on function definition too, as demanded by gcc 3.4. 15413 154142004-04-22 Kevin Ryde <kevin@swox.se> 15415 15416 * tests/rand/t-lc2exp.c (check_bigc1): New test. 15417 15418 * doc/fdl.texi: Tweak @appendixsubsec -> @appendixsec to match our 15419 preference for this in an @appendix, and because texi2pdf doesn't 15420 support @appendixsubsec directly within an @appendix. 15421 154222004-04-20 Kevin Ryde <kevin@swox.se> 15423 15424 * doc/texinfo.tex: Update to 2004-04-07.08 from texinfo 4.7. 15425 * doc/gmp.texi, mpfr/mpfr.texi (@copying): Don't put a line break in 15426 @ref within @copying, recent texinfo.tex doesn't like that. 15427 15428 * demos/perl/GMP.xs (static_functable): Treat cygwin the same as mingw 15429 DLLs. 15430 15431 * */Makefile.in, install-sh: Update to automake 1.8.3. 15432 * ltmain.sh, aclocal.m4, configure: Update to libtool 1.5.6. 15433 15434 * gmp-impl.h (LIMB_HIGHBIT_TO_MASK): Use a compile-time constant 15435 expression, rather than a configure test. 15436 * acinclude.m4, configure.in (GMP_C_RIGHT_SHIFT): Remove, no longer 15437 needed. 15438 * tests/t-hightomask.c: New file. 15439 * tests/Makefile.am (check_PROGRAMS): Add it. 15440 15441 * macos/configure (parse_top_configure): Look for PACKAGE_NAME and 15442 PACKAGE_VERSION now used by autoconf. 15443 (what_objects): Only demand 9 object files, as for instance occurs in 15444 the scanf directory. 15445 (asm files): Transform labels L(foo) -> Lfoo. Take func name from 15446 PROLOGUE to support empty "EPILOGUE()". Recognise and substitute 15447 register name "define()"s. 15448 * macos/Makefile.in (CmnObjs): Add tal-notreent.o. 15449 154502004-04-19 Torbjorn Granlund <tege@swox.com> 15451 15452 * tune/speed.h (SPEED_ROUTINE_MPN_ROOTREM): New #define. 15453 (speed_mpn_rootrem): Declare. 15454 * tune/common.c (speed_mpn_rootrem): New function. 15455 * tune/speed.c (routine): Add entry for mpn_rootrem. 15456 154572004-04-16 Kevin Ryde <kevin@swox.se> 15458 15459 * doc/fdl.texi: Update from FSF, just fixing a couple of typos. 15460 15461 * macos/configure, macos/Makefile.in: Add printf and scanf directories. 15462 15463 * tests/mpz/t-gcd.c (check_data): New function, exercising K6 15464 gcd_finda bug. 15465 154662004-04-14 Kevin Ryde <kevin@swox.se> 15467 15468 * doc/gmp.texi (Reentrancy, Random State Initialization): Note 15469 gmp_randinit use of gmp_errno is not thread safe. Reported by Vincent 15470 Lefèvre. 15471 15472 * doc/gmp.texi (Random State Initialization): Add index entries for 15473 gmp_errno and constants. 15474 15475 * mpn/m68k/README: Update _SHORT_LIMB -> __GMP_SHORT_LIMB. 15476 15477 * configure.in (--enable-mpbsd): Typo Berkley -> Berkeley in help msg. 15478 154792004-04-12 Kevin Ryde <kevin@swox.se> 15480 15481 * demos/perl/GMP.xs (static_functable): New macro, use it for all 15482 function tables, to support mingw DLL builds. 15483 * demos/perl/INSTALL (NOTES FOR PARTICULAR SYSTEMS): Remove note on 15484 DLLs, should be ok now. 15485 15486 * demos/perl/sample.pl: Print the module and library versions in use. 15487 15488 * demos/perl/GMP.pm, Makefile.PL (VERSION): Set to '2.00'. 15489 * demos/perl/GMP.pm (COPYRIGHT): New in the doc section. 15490 15491 * Makefile.am: Note 4.1.3 libtool versioning info, and REVISION policy. 15492 15493 * tal-debug.c: Add <stdlib.h> for abort. 15494 154952004-04-07 Torbjorn Granlund <tege@swox.com> 15496 15497 * tests/refmpf.c (refmpf_add_ulp): Adjust exponent when needed. 15498 15499 * mpn/generic/random2.c: Rewrite (clone mpz/rrandomb.c). 15500 155012004-04-07 Kevin Ryde <kevin@swox.se> 15502 15503 * mpn/x86/k6/gcd_finda.asm: Correction jbe -> jb in initial setups. 15504 Zero flag is wrong here, it relects only the high limb of the compare, 15505 leading to n1>=n2 not satisfied and wrong results. cp[1]==0x7FFFFFFF 15506 with cp[0]>=0x80000001 provokes this. 15507 15508 * doc/gmp.texi (BSD Compatible Functions): Note "pow" name clash under 15509 the pow function description too. 15510 (Language Bindings): Add XEmacs (betas at this stage). Reported by 15511 Jerry James. 15512 15513 * tests/refmpn.c (refmpn_mod2): Correction to ASSERTs, r==a is allowed. 15514 15515 * gen-psqr.c (generate_mod): Cast mpz_invert_ui_2exp args, for K&R. 15516 * gen-bases.c, gen-fib.c, gen-psqr.c: For mpz_out_str, use stdout 15517 instead of 0, in case a K&R treats int and FILE* params differently. 15518 155192004-04-04 Kevin Ryde <kevin@swox.se> 15520 15521 * gmp-impl.h (BSWAP_LIMB) [amd64]: New macro. 15522 (FORCE_DOUBLE): Use this for amd64 too. 15523 15524 * tests/amd64check.c, tests/amd64call.asm: New files, derived in part 15525 from x86check.c and x86call.asm. 15526 * tests/Makefile.am (EXTRA_libtests_la_SOURCES): Add them. 15527 * configure.in (x86_64-*-* ABI=64): Use them. 15528 155292004-04-03 Kevin Ryde <kevin@swox.se> 15530 15531 * mpn/amd64/mode1o.asm: New file. 15532 * mpn/amd64/amd64-defs.m4 (ASSERT): New macro. 15533 15534 * mpn/x86/k7/mmx/divrem_1.asm, mpn/x86/pentium4/sse2/divrem_1.asm: Add 15535 note on how "dr" part of algorithm is handled. 15536 15537 * mpn/x86/k7/dive_1.asm, mpn/x86/k7/mod_34lsub1.asm, 15538 mpn/x86/k7/mode1o.asm: Note Hammer (32-bit mode) speeds. 15539 155402004-03-31 Kevin Ryde <kevin@swox.se> 15541 15542 * doc/gmp.texi (Language Bindings): Add GOO, MLGMP and Numerix. 15543 15544 * mpf/mul_2exp.c, mpf/div_2exp.c: Rate u==0 as UNLIKELY. 15545 155462004-03-28 Torbjorn Granlund <tege@swox.com> 15547 15548 * mpn/amd64/divrem_1.asm: Trim a few cycles. 15549 155502004-03-27 Torbjorn Granlund <tege@swox.com> 15551 15552 * mpn/amd64/sublsh1_n.asm: Fix typo. 15553 15554 * mpn/generic/divrem_1.c: Fix typo. 15555 15556 * mpn/generic/sqr_basecase.c: Fix typo. 15557 15558 * mpn/amd64/divrem_1.asm: New file. 15559 155602004-03-20 Kevin Ryde <kevin@swox.se> 15561 15562 * longlong.h (power, powerpc): Add comments on how we select this code. 15563 15564 * gmp-h.in (mpz_get_ui): Use ?: instead of mask style, gcc treats the 15565 two identically but ?: is a bit clearer. 15566 15567 * insert-dbl.c: Remove file, no longer used, scaling is now integrated 15568 in mpn_get_d. 15569 * Makefile.am (libgmp_la_SOURCES): Remove insert-dbl.c. 15570 * gmp-impl.h (__gmp_scale2): Remove prototype. 15571 155722004-03-17 Kevin Ryde <kevin@swox.se> 15573 15574 * mpn/x86/fat/fat.c (__gmpn_cpuvec_init, fake_cpuid_table): Add x86_64. 15575 15576 * mpq/get_d.c: Use mpn_tdiv_qr, demand den>0 per canonical form. 15577 155782004-03-16 Torbjorn Granlund <tege@swox.com> 15579 15580 * mpn/generic/sqr_basecase.c: Add versions using mpn_addmul_2 and 15581 mpn_addmul_2s. 15582 155832004-03-14 Kevin Ryde <kevin@swox.se> 15584 15585 * mpf/mul_ui.c: Incorporate carry from low limbs, for exactness. 15586 * tests/mpf/t-mul_ui.c: New file. 15587 * tests/mpf/Makefile.am (check_PROGRAMS): Add it. 15588 15589 * mpf/div.c: Use mpn_tdiv_qr. Use just one TMP_ALLOC. Use full 15590 divisor, since truncating can lose accuracy. 15591 * tests/mpf/t-div.c: New file. 15592 * tests/mpf/Makefile.am (check_PROGRAMS): Add it. 15593 15594 * tests/mpf/t-set_q.c, tests/mpf/t-ui_div.c (check_various): Amend 15595 bogus 99/4 test. 15596 * tests/mpf/t-ui_div.c (check_rand): Exercise r==v overlap. 15597 15598 * tests/refmpf.c, tests/tests.h (refmpf_set_overlap): New function. 15599 15600 * mpf/cmp_si.c [nails]: Correction, cast vval in exp comparisons, for 15601 when vval=-0x800..00 and limb==longlong. 15602 15603 * mpf/cmp_si.c [nails]: Correction, return usign instead of 1 when 15604 uexp==2 but value bigger than an mp_limb_t. 15605 * tests/mpf/t-cmp_si.c (check_data): Add test cases. 15606 15607 * tests/trace.c (mpf_trace): Use ABS(mp_trace_base) to allow for 15608 negative bases used for upper case hex in integer traces. 15609 156102004-03-12 Torbjorn Granlund <tege@swox.com> 15611 15612 * mpn/generic/sb_divrem_mn.c: Correct header comment. 15613 156142004-03-11 Kevin Ryde <kevin@swox.se> 15615 15616 * aclocal.m4, configure, ltmain.sh: Downgrade to libtool 1.5, version 15617 1.5.2 doesn't remove .libs/*.a files when rebuilding, which is bad for 15618 development when changing contents or with duplicate named files like 15619 we have. 15620 15621 Revert this, ie restore AR_FLAGS=cq: 15622 * acinclude.m4 (GMP_PROG_AR): Remove AR_FLAGS=cq, libtool 1.5.2 now 15623 does this itself on detecting duplicate object filenames in piecewise 15624 linking mode. 15625 15626 * randbui.c, randmui.c [longlong+nails]: Correction to conditionals 15627 for second limb. 15628 15629 * mpz/aors_ui.h, mpz/cdiv_q_ui.c, mpz/cdiv_qr_ui.c, mpz/cdiv_r_ui.c, 15630 mpz/cdiv_ui.c, mpz/fdiv_q_ui.c, mpz/fdiv_qr_ui.c, mpz/fdiv_r_ui.c, 15631 mpz/fdiv_ui.c, mpz/gcd_ui.c, mpz/iset_ui.c, mpz/lcm_ui.c, 15632 mpz/set_ui.c, mpz/tdiv_q_ui.c, mpz/tdiv_qr_ui.c, mpz/tdiv_r_ui.c, 15633 mpz/tdiv_ui.c, mpz/ui_sub.c, mpf/div_ui.c, mpf/mul_ui.c 15634 [longlong+nails]: Amend #if to avoid warnings about shift amount. 15635 156362004-03-07 Kevin Ryde <kevin@swox.se> 15637 15638 * mpf/reldiff.c: Use rprec+ysize limbs for d, to ensure accurate 15639 result. Inline mpf_abs(d,d) and mpf_cmp_ui(x,0), and rate the latter 15640 UNLIKELY. 15641 15642 * mpf/ui_div.c: Use mpn_tdiv_qr. Use just one TMP_ALLOC. Use full 15643 divisor, since truncating can lose accuracy. 15644 * tests/mpf/t-ui_div.c: New file. 15645 * tests/mpf/Makefile.am (check_PROGRAMS): Add it. 15646 15647 * mpf/set_q.c: Expand TMP_ALLOC_LIMBS_2, to make conditional clearer 15648 and avoid 1 limb alloc when not wanted. 15649 15650 * gmp-impl.h (WANT_TMP_DEBUG): Define to 0 if not defined. 15651 (TMP_ALLOC_LIMBS_2): Use "if" within macro rather than "#if", for less 15652 preprocessor conditionals. 15653 15654 * mpf/mul_2exp.c, mpf/div_2exp.c: Add some comments. 15655 15656 * tests/refmpn.c (refmpn_sb_divrem_mn, refmpn_tdiv_qr): Nailify. 15657 156582004-03-04 Kevin Ryde <kevin@swox.se> 15659 15660 * gen-psqr.c (print): Add CNST_LIMB in PERFSQR_MOD_TEST, for benefit 15661 of K&R. 15662 * tests/mpn/t-perfsqr.c (PERFSQR_MOD_1): Use CNST_LIMB for K&R. 15663 15664 * doc/configuration (Configure): Remove mkinstalldirs, no longer used. 15665 15666 * acinclude.m4 (GMP_PROG_AR): Remove AR_FLAGS=cq, libtool 1.5.2 now 15667 does this itself on detecting duplicate object filenames in piecewise 15668 linking mode. 15669 15670 * configure.in (hppa2.0*-*-*): Test sizeof(long) == 4 or 8 to verify 15671 ABI=2.0n versus ABI=2.0w. In particular this lets CC=cc_bundled 15672 correctly fall back to ABI=2.0n (we don't automatically add CC=+DD64 15673 to that compiler, currently). 15674 15675 * doc/gmp.texi (Reentrancy): Note C++ mpf_class constructors using 15676 global default precision. 15677 (Random State Miscellaneous): Describe gmp_urandomb_ui as giving N 15678 bits. 15679 (C++ Interface Floats): Describe operator= copying the value, not the 15680 precision, and what this can mean about copy constructor versus 15681 default constructor plus assignment. 15682 15683 * mpf/set_q.c: Use mpn_tdiv_qr rather than mpn_divrem, so no shifting. 15684 Don't truncate the divisor, it can make the result inaccurate. 15685 * tests/mpf/t-set_q.c: New file. 15686 * tests/mpf/Makefile.am (check_PROGRAMS): Add it. 15687 15688 * mpf/set.c: Use MPN_COPY_INCR, in case r==u and ABSIZ(u) > PREC(r)+1. 15689 No actual bug here, because MPN_COPY has thusfar been an alias for 15690 MPN_COPY_INCR, only an ASSERT failure. 15691 * tests/mpf/t-set.c: New file. 15692 * tests/mpf/Makefile.am (check_PROGRAMS): Add it. 15693 15694 * mpf/set.c, mpf/iset.c: Do MPN_COPY last, for possible tail call. 15695 15696 * mpf/set_d.c: Rate d==0 as UNLIKELY. Store size before extract call, 15697 to shorten lifespan of "negative". 15698 15699 * mpf/init.c, mpf/init2.c, mpf/iset_d.c, mpf/iset_si.c, 15700 mpf/iset_str.c, mpf/iset_ui.c: Store prec before alloc call, for one 15701 less live quantity across that call. 15702 * mpf/init.c, mpf/init2.c, mpf/iset_str.c: Store size and exp before 15703 alloc call, to overlap with other operations. 15704 15705 * tests/refmpf.c, tests/tests.h (refmpf_fill, refmpf_normalize, 15706 refmpf_validate, refmpf_validate_division): New functions. 15707 15708 * tests/refmpn.c, tests/tests.h (refmpn_copy_extend, 15709 refmpn_lshift_or_copy_any, refmpn_rshift_or_copy_any): New functions. 15710 15711 * tal-debug.c: Add <string.h> for strcmp. 15712 15713 * tests/cxx/t-istream.cc (check_mpz, check_mpq, check_mpf): Use size_t 15714 for loop index, to quieten g++ warning. 15715 157162004-03-02 Kevin Ryde <kevin@swox.se> 15717 15718 * tests/mpn/t-hgcd.c: Use __GMP_PROTO on prototypes. 15719 157202004-03-01 Torbjorn Granlund <tege@swox.com> 15721 15722 With Karl Hasselström: 15723 * mpn/generic/dc_divrem_n.c (mpn_dc_div_2_by_1): New function, with 15724 meat from old mpn_dc_divrem_n. Accept scratch parameter. Rewrite to 15725 avoid a recursive call. 15726 (mpn_dc_div_3_by_2): New function, with meat from old 15727 mpn_dc_div_3_halves_by_2. Accept scratch parameter. 15728 (mpn_dc_divrem_n): Now just allocate scratch space and call new 15729 mpn_dc_div_2_by_1. 15730 157312004-02-29 Kevin Ryde <kevin@swox.se> 15732 15733 * longlong.h (count_leading_zeros) [alpha gcc]: New version, inlining 15734 mpn/alpha/cntlz.asm cmpbge technique. 15735 15736 * aclocal.m4, configure, install-sh, missing, ltmain.sh, 15737 */Makefile.in: Update to automake 1.8.2 and libtool 1.5.2. 15738 15739 * doc/gmp.texi (C++ Interface Integers): Note / and % rounding follows 15740 C99 / and %. 15741 (Exact Remainder): Index entries for divisibility testing algorithm. 15742 15743 * tune/time.c (speed_endtime): Return 0.0 for negative time measured. 15744 Revise usage comments for clarity. 15745 * tune/common.c (speed_measure): Recognise speed_endtime 0.0 for 15746 failed measurement. 15747 15748 * tests/mpn/t-get_d.c (check_rand): Correction to nhigh_mask setup. 15749 157502004-02-27 Torbjorn Granlund <tege@swox.com> 15751 15752 * tune/tuneup.c (tune_dc, tune_set_str): Up param.step_factor. 15753 15754 * tests/mpz/t-gcd.c: Decrease # of tests to 50. 15755 157562004-02-27 Kevin Ryde <kevin@swox.se> 15757 15758 * tests/devel/try.c: Add a comment that this is not for Cray systems. 15759 15760 * mpf/set_q.c: Don't support den(q)<0, demand canonical form in the 15761 usual way. 15762 157632004-02-24 Torbjorn Granlund <tege@swox.com> 15764 15765 From Kevin: 15766 * mpn/generic/mul_fft.c (mpn_fft_add_modF): Loop until normalization 15767 criterion met. 15768 157692004-02-22 Kevin Ryde <kevin@swox.se> 15770 15771 * acinclude.m4 (GMP_PROG_CC_WORKS, GMP_OS_X86_XMM, GMP_PROG_CXX_WORKS): 15772 Remove files that might look like compiler output, so our "||" 15773 alternatives are not fooled. 15774 15775 * acinclude.m4 (GMP_PROG_CC_WORKS): Add test for lshift_com code 15776 mis-compiled by certain IA-64 HP cc at +O3. 15777 15778 * gmp-impl.h (USE_LEADING_REGPARM): Disable under prof or gprof, for 15779 the benefit of freebsd where .mcount clobbers registers. Spotted by 15780 Torbjorn. 15781 * configure.in (WANT_PROFILING_PROF, WANT_PROFILING_GPROF): New 15782 AC_DEFINEs. 15783 157842004-02-21 Kevin Ryde <kevin@swox.se> 15785 15786 * configure.in (sparc64-*-*bsd*): Amend -m32 setup for ABI=32, so it's 15787 not used in ABI=64 on the BSD systems. 15788 157892004-02-18 Niels Möller <nisse@lysator.liu.se> 15790 15791 * tests/mpz/t-gcd.c (gcdext_valid_p): New function. 15792 (ref_mpz_gcd): Deleted function. 15793 (one_test): Rearranged to call mpz_gcdext first, so that the 15794 returned value can be validated. 15795 (main): Don't use ref_mpz_gcd. 15796 157972004-02-18 Torbjorn Granlund <tege@swox.com> 15798 15799 * gmp-impl.h (MPN_TOOM3_MAX_N): Move to !WANT_FFT section. 15800 15801 * tests/mpz/t-mul.c: Exclude special huge operands unless WANT_FFT. 15802 15803 * mpz/rrandomb.c (gmp_rrandomb): Rewrite. 15804 15805 * mpn/generic/mul_n.c (mpn_toom3_sqr_n): Remove write-only variable c5. 15806 158072004-02-18 Kevin Ryde <kevin@swox.se> 15808 15809 * mpf/iset_si.c, mpf/iset_ui.c, mpf/set_si.c, mpf/set_ui.c [nails]: 15810 Always store second limb, to avoid a conditional. 15811 15812 * tests/mpf/t-get_ui.c: New file. 15813 * tests/mpf/Makefile.am (check_PROGRAMS): Add it. 15814 * tests/mpf/t-get_si.c (check_limbdata): Further tests. 15815 * gmp-impl.h (MP_EXP_T_MAX, MP_EXP_T_MIN): New defines. 15816 15817 * mpf/get_ui.c, mpf/get_si.c: Remove size==0 test, it's covered by 15818 other conditions. Attempt greater clarity by expressing conditions as 15819 based on available data range. 15820 * mpf/get_si.c [nails]: Correction, don't bail on exp > abs_size, 15821 since may still have second limb above radix point available. 15822 * mpf/get_ui.c: Nailify. 15823 158242004-02-16 Kevin Ryde <kevin@swox.se> 15825 15826 * mpz/scan0.c, mpz/scan1.c: Use count_trailing_zeros, instead of 15827 count_leading_zeros on limb&-limb. 15828 15829 * mpf/sqrt.c: Use "/ 2" for exp, avoiding C undefined behaviour on 15830 ">>" of negatives. Correction to comment, exp is rounded upwards. 15831 SIZ(r) always prec now, no need for tsize expression. Store EXP(r) 15832 and SIZ(r) where calculated to reduce variable lifespans. Make tsize 15833 mp_size_t not mp_exp_t, though of course those are currently the same. 15834 15835 * gmp-h.in (GMP_ERROR_ALLOCATE, GMP_ERROR_BAD_STRING, 15836 GMP_ERROR_UNUSED_ERROR): Remove, never used or documented, and we 15837 don't want to use globals for communicating error information. 15838 15839 * mpz/gcd_ui.c [nails]: Correction, actually return a value. 15840 15841 * mpn/generic/addmul_1.c, mpn/generic/submul_1.c [nails==1]: Add code. 15842 158432004-02-15 Kevin Ryde <kevin@swox.se> 15844 15845 * tests/mpz/t-jac.c (check_data): Remove unnecessary variable 15846 "answer". 15847 158482004-02-14 Torbjorn Granlund <tege@swox.com> 15849 15850 * mpn/ia64/aors_n.asm: Break a group with a RAW conflict. 15851 158522004-02-14 Kevin Ryde <kevin@swox.se> 15853 15854 * acinclude.m4 (GMP_C_RIGHT_SHIFT): Note that it's "long"s which we're 15855 concerned about. 15856 15857 * mpn/generic/mul_n.c: Add some remarks about toom3 high zero 15858 stripping. 15859 15860 * mpn/generic/scan0.c, mpn/generic/scan1.c: Remove design issue 15861 remarks. What to do about going outside `up' space is a problem, but 15862 anything to address it would be an incompatible change. 15863 158642004-02-12 Torbjorn Granlund <tege@swox.com> 15865 15866 * tests/mpn/t-hgcd.c: Remove unused variables. 15867 15868 * mpn/ia64/hamdist.asm: Remove bundling incompatible with HP-UX 15869 assembler. Misc HP-UX changes. 15870 * mpn/ia64/gcd_1.asm: Add some syntax to placid the HP-UX assembler. 15871 158722004-02-11 Kevin Ryde <kevin@swox.se> 15873 15874 * longlong.h (power, powerpc): Use HAVE_HOST_CPU_FAMILY_power and 15875 HAVE_HOST_CPU_FAMILY_powerpc rather than various cpp defines. 15876 15877 * gmp-impl.h: Add remarks about limits.h and Cray etc. 15878 15879 * mpn/ia64/mul_1.asm: Don't put .pred directives on labelled lines, 15880 hpux 11.23 assembler doesn't like that. 15881 * mpn/ia64/README: Add a note on this. 15882 15883 * dumbmp.c (mpz_mul): Set ALLOC(r) for new data block used. Reported 15884 by Jason Moxham. 15885 15886 * mpn/pa32/README, mpn/pa64/README (REFERENCES): New sections. 15887 158882004-02-10 Torbjorn Granlund <tege@swox.com> 15889 15890 * tests/mpz/t-gcd.c: Decrease # of tests run. 15891 15892 * mpn/*/gmp-mparam.h: Add HGCD values, update TOOM values. 15893 158942004-02-01 Torbjorn Granlund <tege@swox.com> 15895 15896 From Kevin: 15897 * config.guess: Recognize AMD's hammer processors, return x86_64. 15898 158992004-01-31 Niels Möller <nisse@lysator.liu.se> 15900 15901 * mpn/generic/hgcd.c (mpn_cmp_sum3): Declare static. 15902 159032004-01-25 Niels Möller <nisse@lysator.liu.se> 15904 15905 * tests/mpn/Makefile.am (check_PROGRAMS): Add t-hgcd. 15906 15907 * mpn/generic/hgcd.c (hgcd_jebelean): Simplify, use mpn_cmp_sum3. 15908 (mpn_cmp_sum3): New function. 15909 (mpn_diff_smaller_p): Remove. 15910 (hgcd_final, hgcd_jebelean, hgcd_small_1, hgcd_small_2, euclid_step): 15911 Remove tp,talloc arguments. Callers changed. 15912 159132004-01-25 Torbjorn Granlund <tege@swox.com> 15914 15915 * tune/tuneup.c (all): Reenable calls of tune_gcd_schoenhage and 15916 tune_hgcd. 15917 15918 * mpn/generic/gcd.c: Reenable Schoenhage code. 15919 15920 With Niels Möller: 15921 * mpn/generic/hgcd.c: Add const and inline to several functions. 15922 (qstack_push_start qstack_push_end qstack_push_quotient): Remove. 15923 (euclid_step): Insert removed functions here. 15924 (hgcd_adjust): Simplify, don't handle d != 1. 15925 (qstack_adjust): Corresponding changes. 15926 (mpn_hgcd2_lehmer_step): Remove redundant tests for bh against zero. 15927 (hgcd_start_row_p): Tweak. 15928 (hgcd_final): Shorten life of ralloc. 15929 159302004-01-24 Kevin Ryde <kevin@swox.se> 15931 15932 * tests/mpf/t-sqrt.c (check_rand1): Further diagnostic printouts. 15933 15934 * mpn/generic/sqrtrem.c (mpn_sqrtrem): Add ASSERT_MPN. 15935 (mpn_dc_sqrtrem): Add casts for K&R. 15936 15937 * mpf/sqrt_ui.c: Nailify. 15938 15939 * mpf/set_z.c: Do MPN_COPY last, for possible tail call. 15940 15941 * doc/gmp.texi (Miscellaneous Float Functions): For mpf_random2, note 15942 exponent is in limbs. 15943 15944 * mpn/ia64/README: Add remark about concentrating on itanium-2. 15945 159462004-01-22 Kevin Ryde <kevin@swox.se> 15947 15948 * mpf/sqrt.c: Change tsize calculation to get prec limbs result 15949 always, previously got prec+1 when exp was odd. 15950 * tests/mpf/t-sqrt.c (check_rand1): New function, code from main. 15951 (check_rand2): New function. 15952 15953 * mpf/sqrt_ui.c: Change rsize calculation to get prec limbs result, 15954 previously got prec+1. 15955 * tests/mpf/t-sqrt_ui.c: New file. 15956 * tests/mpf/Makefile.am (check_PROGRAMS): Add it. 15957 15958 * tests/refmpf.c, tests/tests.h (refmpf_add_ulp, 15959 refmpf_set_prec_limbs): New functions. 15960 15961 * mpz/get_d_2exp.c, mpf/get_d_2exp.c: Remove x86+m68k force to double, 15962 mpn_get_d now does this. Remove res==1.0 check for round upwards, 15963 mpn_get_d now rounds towards zero. Move exp store to make mpn_get_d a 15964 tail call. 15965 15966 * configure.in (x86-*-*): Use ABI=32 rather than ABI=standard. 15967 Use gcc -m32 when available, to force mode on bi-arch amd64 gcc. 15968 * configure.in, acinclude.m4 (x86_64-*-*): Merge into plain x86 setups 15969 as ABI=64. Support ABI=32, using athlon code. Use gcc -mcpu=k8, 15970 -march=k8. 15971 (amd64-*-*): Remove pattern, config.sub only gives x86_64. 15972 * doc/gmp.texi (ABI and ISA): Add x86_64 dual ABIs. 15973 15974 * mpn/amd64/README: Add reference to ABI spec. 15975 159762004-01-17 Niels Möller <nisse@lysator.liu.se> 15977 15978 * mpn/generic/hgcd.c (hgcd_adjust): Backed out mpn_addlsh1_n 15979 change for now. 15980 15981 * mpn/generic/hgcd.c (hgcd_adjust): Fixed calls of mpn_addlsh1_n. 15982 159832004-01-17 Kevin Ryde <kevin@swox.se> 15984 15985 * tune/README: Remove open/mpn versions of toom3, no longer exist. 15986 * tune/powerpc64.asm: Remove unused L(again). 15987 * tune/time.c (mftb): Note single mftb possible for powerpc64. 15988 15989 * mpn/generic/mode1o.c: Use "c<s" to do underflow detection in last 15990 step, for better parallelism. 15991 15992 * mpn/generic/get_d.c: Preserve comments about hppa fcnv,udw,dbl from 15993 previous mpz_get_d code. 15994 15995 * tune/freq.c: Add some comments about systems not covered. 15996 15997 * gmp-h.in (_GMP_H_HAVE_FILE): Add _MSL_STDIO_H for Metrowerks. 15998 Reported by Tomas Zahradnicky. 15999 160002004-01-16 Niels Möller <nisse@lysator.liu.se> 16001 16002 * mpn/generic/hgcd.c (mpn_diff_smaller_p): Use MPN_DECR_U. 16003 (hgcd_adjust): Use mpn_addlsh1_n when available. 16004 160052004-01-16 Kevin Ryde <kevin@swox.se> 16006 16007 * configure.in (powerpc64-*-linux*): Try gcc64. Try -m64 with 16008 "cflags_maybe" to get it used in all probing. Add sizeof-long-8 test 16009 to check the mode is right if -m64 is not applicable. 16010 160112004-01-15 Kevin Ryde <kevin@swox.se> 16012 16013 * configure.in (--with-readline=detect): Check for readline/readline.h 16014 and readline/history.h. Report result of detection. 16015 160162004-01-14 Niels Möller <nisse@lysator.liu.se> 16017 16018 * tune/speed.c (routine): Disabled speed_mpn_hgcd_lehmer. 16019 * tune/common.c (speed_mpn_hgcd_lehmer): Disabled function. 16020 16021 * mpn/generic/hgcd.c (mpn_hgcd_lehmer_itch, mpn_hgcd_lehmer) 16022 (mpn_hgcd_equal): Deleted functions. 16023 16024 * mpn/generic/gcd.c (hgcd_start_row_p): Deleted function. 16025 (gcd_schoenhage): Deleted assertion code using mpn_hgcd_lehmer. 16026 16027 * mpn/generic/hgcd.c (hgcd_final): Fixed ASSERT typos. 16028 (mpn_hgcd): To use Lehmer's algorithm, call hgcd_final directly, 16029 not mpn_hgcd_lehmer. 16030 16031 * mpn/generic/gcd.c (gcd_schoenhage): Updated for changes to 16032 mpn_hgcd and mpn_hgcd_fix. (Schoenhage code is still disabled). 16033 16034 * gmp-impl.h (mpn_hgcd_fix): Updated prototype. 16035 16036 * mpn/generic/hgcd.c (mpn_hgcd_fix): Replaced a bunch of arguments 16037 by a pointer const struct hgcd_row *s. Updated callers. 16038 16039 * mpn/generic/hgcd.c (hgcd_start_row_p): Use const for the input. 16040 Moved function definition before hgcd_jebelean. 16041 (hgcd_jebelean): Interface change, analogous to hgcd2. 16042 (mpn_hgcd_fix): Normalize v. Require that v > 0. 16043 (hgcd_adjust): Fix bug in carry update. 16044 (mpn_hgcd): Reorganized again, to adapt to mpn_hgcd/hgcd_jebelean 16045 now sometimes returning 1. Reintroduced hgcd_adjust. 16046 16047 * mpn/generic/hgcd.c (hgcd_final): Streamlined logic for the first 16048 hgcd2 call. 16049 16050 * mpn/generic/hgcd2.c (mpn_hgcd2): Interface change. Return 1 16051 instead of 2, in the no progress case r0=A, r1=B. 16052 16053 * mpn/generic/hgcd.c (hgcd_adjust): Changed arguments and return 16054 value. Now takes a struct hgcd_row * and the uv size, and returns 16055 updated uvsize. 16056 (hgcd_final): Special handling of the case hgcd2 returning 1. Now 16057 uses hgcd_adjust, instead of a full Euclid division. 16058 160592004-01-13 Niels Möller <nisse@lysator.liu.se> 16060 16061 * mpn/generic/hgcd.c (euclid_step, hgcd_case0): Merged into a 16062 single function euclid_step. 16063 (mpn_hgcd): Reorganized the logic for the second recursive call. 16064 Avoid unnecessary Euclid steps. 16065 16066 * tests/mpn/t-hgcd.c (hgcd_values): One more test value. 16067 16068 * tests/mpn/t-hgcd.c (hgcd_values): Added values that trigged the 16069 hgcd_jebelean bug. 16070 16071 * mpn/generic/hgcd.c (hgcd_jebelean): Fixed off by one error. 16072 (mpn_hgcd): Simplified the logic for the first recursive call. Now 16073 it uses only the correct values from the recursive call, and 16074 doesn't do tricks with hgcd_adjust (hgcd_adjust will probably be 16075 reintroduced later, though). 16076 16077 * tests/mpn/t-hgcd.c (mpz_mpn_equal, hgcd_ref_equal) 16078 (hgcd_ref_init, hgcd_ref_clear): New functions. 16079 (hgcd_ref): Reference implementation of hgcd, using mpz. 16080 (one_test): Use hgcd_ref. Don't use mpn_hgcd_lehmer. 16081 (main): Skip one_step if both input values are zero. 16082 160832004-01-12 Niels Möller <nisse@lysator.liu.se> 16084 16085 * mpn/generic/hgcd.c (hgcd_final): Rewritten, now uses Lehmer 16086 steps instead of a division loop. 16087 (mpn_hgcd_lehmer): Deleted old Lehmer code, instead just 16088 initialize and then call hgcd_final. 16089 16090 * tests/tests.h: Added refmpn_free_limbs prototype. 16091 * tests/refmpn.c (refmpn_free_limbs): New function. 16092 16093 * tests/mpn/t-hgcd.c: Try the same kind of random inputs as for 16094 mpz/t-gcd. 16095 160962004-01-11 Niels Möller <nisse@lysator.liu.se> 16097 16098 * mpn/generic/hgcd.c (mpn_hgcd_lehmer): Rewritten, after some more 16099 analysis of the size reduction for one Lehmer step. 16100 16101 * tests/mpn/t-hgcd.c: New file. 16102 161032004-01-11 Torbjorn Granlund <tege@swox.com> 16104 16105 With Niels Möller: 16106 * mpn/generic/hgcd.c (hgcd_normalize): Fix ASSERTs. 16107 (hgcd_mul): Normalize R[1].uvp[1]. Add some more ASSERTs. 16108 (hgcd_update_uv): Streamline. ASSERT that input and output is 16109 normalized. 16110 161112004-01-11 Kevin Ryde <kevin@swox.se> 16112 16113 * mpn/alpha/ev6/slot.pl: New file, derived in part from 16114 mpn/x86/k6/cross.pl. 16115 16116 * mpn/alpha/alpha-defs.m4 (ASSERT): New macro. 16117 16118 * mpn/asm-defs.m4 (m4_ifdef): New macro, avoiding OSF 4.0 m4 bug. 16119 (m4_assert_defined): Use it. 16120 16121 * mpn/alpha/default.m4, mpn/alpha/unicos.m4 (LDGP): New macro. 16122 * mpn/alpha/ev67/gcd_1.asm: Use it to re-establish gp after jsr. 16123 16124 * configure.in, demos/calc/Makefile.am: Use -lcurses or -lncurses with 16125 readline, when available. 16126 16127 * longlong.h (sub_ddmmss) [generic]: Use al<bl for the borrow rather 16128 than __x>al, since the former can be done without waiting for __x, 16129 helping superscalar chips, in particular alpha ev5 and ev6. 16130 16131 * longlong.h (sub_ddmmss) [ia64]: New macro. 16132 16133 * tests/t-sub.c: New file. 16134 * tests/Makefile.am (check_PROGRAMS): Add it. 16135 * tests/refmpn.c, tests/tests.h (refmpn_sub_ddmmss): New function. 16136 161372004-01-09 Kevin Ryde <kevin@swox.se> 16138 16139 * mpn/x86/p6/mod_34lsub1.asm: New file, derived in part from 16140 mpn/x86/mod_34lsub1.asm. 16141 16142 * configure.in (IA64_PATTERN): Use -mtune on gcc 3.4. 16143 161442004-01-07 Kevin Ryde <kevin@swox.se> 16145 16146 * gmp-h.in, mp-h.in (__GMP_SHORT_LIMB): Renamed from _SHORT_LIMB, to 16147 keep in our namespace. (Not actually used anywhere currently.) 16148 Reported by Patrick Pelissier. 16149 16150 * mp-h.in: Use "! defined (__GMP_WITHIN_CONFIGURE)" in the same style 16151 as gmp-h.in (though mp-h.in is not actually used during configure). 16152 16153 * mp-h.in (__GMP_DECLSPEC_EXPORT, __GMP_DECLSPEC_IMPORT) [__GNUC__]: 16154 Use __dllexport__ and __dllimport__ to keep out of application 16155 namespace. Same previously done in gmp-h.in. 16156 161572004-01-06 Kevin Ryde <kevin@swox.se> 16158 16159 * configfsf.sub, configfsf.guess: Update to 2004-01-05. 16160 * configure.in (amd64-*-* | x86_64-*-*): Update comments on what 16161 configfsf.sub does. 16162 161632004-01-04 Kevin Ryde <kevin@swox.se> 16164 16165 * mpn/alpha/README (REFERENCES): Add tru64 assembly manuals. 16166 (ASSEMBLY RULES): Note what gcc says about !literal! etc. 16167 161682004-01-03 Kevin Ryde <kevin@swox.se> 16169 16170 * mpn/alpha/ev67/gcd_1.asm: New file. 16171 16172 * mpn/x86/pentium4/sse2/rsh1add_n.asm: New file, derived in part from 16173 mpn/x86/pentium4/sse2/addlsh1_n.asm. 16174 16175 * mpn/x86/p6/p3mmx/popham.asm: Note measured speeds. 16176 16177 * mpn/ia64/hamdist.asm: Correction to inputs vs locals in alloc (makes 16178 no difference to the generated code). Corrections to a couple of 16179 comments. 16180 16181 * mpn/x86/pentium4/sse2/addlsh1_n.asm (PARAM_CARRY): Remove macro, not 16182 used, no such parameter. 16183 16184 * mpn/generic/gcd.c: Use <stdio.h> for NULL. 16185 16186 * doc/gmp.texi (Single Limb Division): Correction to tex expression 16187 for (1/2)x1. And minor wording tweaks elsewhere. 16188 16189 * gmp-impl.h (mpn_rsh1add_n, mpn_rsh1sub_n): Correction to comments 16190 about how carries returned. 16191 16192 * longlong.h (umul_ppmm) [generic]: Add comments about squaring 16193 (dropped from tasks list) 16194 161952003-12-31 Kevin Ryde <kevin@swox.se> 16196 16197 * demos/perl/GMP.xs (scan0, scan1): Return ~0 for not-found. 16198 * demos/perl/GMP.pm: Describe this, remove the note about ULONG_MAX 16199 being the same as ~0 (which is not true in old perl). 16200 * demos/perl/test.pl: Update tests. 16201 * demos/perl/typemap (gmp_UV): New type. 16202 16203 * demos/perl/test.pl (fits_slong_p): Comment out uv_max test, it won't 16204 necessarily exceed a long. 16205 16206 * demos/perl/GMP.pm: Add a remark about get_str to the bugs section. 16207 16208 * mpn/generic/sqrtrem.c, mpz/fac_ui.c, tests/mpf/reuse.c: Add casts 16209 for K&R. 16210 * tests/mpf/t-muldiv.c: Make ulimb, vlimb into ulongs, which is how 16211 they're used, for the benefit of K&R calling. 16212 16213 * doc/gmp.texi (Square Root Algorithm): Add a summary of the algorithm. 16214 And add further index entries in various places. 16215 16216 * mpz/lucnum_ui.c, mpz/lucnum2_ui.c: Use mpn_addlsh1_n when available. 16217 16218 * gmp-impl.h, mpn/generic/mul_n.c (mpn_addlsh1_n, mpn_sublsh1_n, 16219 mpn_rsh1add_n, mpn_rsh1sub_n): Move descriptions to gmp-impl.h with 16220 the prototypes, for ease of locating. 16221 162222003-12-30 Torbjorn Granlund <tege@swox.com> 16223 16224 * tune/tuneup.c (all): Disable calls of tune_gcd_schoenhage and 16225 tune_hgcd for now. 16226 162272003-12-29 Torbjorn Granlund <tege@swox.com> 16228 16229 * tests/mpz/t-gcd.c: Rewrite, based on suggestions by Kevin. 16230 16231 * mpn/ia64/mul_1.asm: Amend TODO list. 16232 16233 * mpn/sparc64/README: Remove mpn_Xmul_2, done. 16234 Add blurb about L1 cache conflicts. 16235 16236 * mpn/generic/gcd.c: Disable Schoenhage code for now. 16237 162382003-12-29 Kevin Ryde <kevin@swox.se> 16239 16240 * mpn/generic/mul_fft.c, mpz/root.c, mpq/cmp_ui.c: Add casts for K&R. 16241 162422003-12-27 Kevin Ryde <kevin@swox.se> 16243 16244 * tests/mpz/t-mul.c (mul_kara, mul_basecase): Use __GMP_PROTO. 16245 16246 * mpn/generic/gcd.c (NHGCD_SWAP4_2, NHGCD_SWAP3_LEFT), 16247 mpn/generic/hgcd.c (HGCD_SWAP4_LEFT, HGCD_SWAP4_RIGHT, HGCD_SWAP4_2, 16248 HGCD_SWAP3_LEFT): Aggregate initializers for automatics is an 16249 ANSI-ism, avoid. 16250 16251 * Makefile.am (AUTOMAKE_OPTIONS): Restore this, giving no directory on 16252 ansi2knr to avoid a circular build rule. 16253 * configure.in (AM_INIT_AUTOMAKE): Note options also in Makefile.am. 16254 16255 * configure.in (cflags_maybe): Don't loop adding cflags_maybe if the 16256 user has set CFLAGS. 16257 162582003-12-24 Torbjorn Granlund <tege@swox.com> 16259 16260 * mpn/generic/gcd.c (gcd_schoenhage_itch): Avoid unary "+". 16261 (mpn_gcd): Allocate scratch space on heap for gcd_schoenhage. 16262 (mpn_gcd): Don't invoke MPN_NORMALIZE on input operands. 16263 162642003-12-23 Kevin Ryde <kevin@swox.se> 16265 16266 * configure.in (*sparc*-*-*): Test sizeof(long)==4 or 8 for ABIs, to 16267 get the right mode when the user sets the CFLAGS. 16268 (testlist): Introduce "any_<abi>_testlist" to apply to all compilers. 16269 16270 * demos/perl/typemap (MPZ_ASSUME, MPQ_ASSUME, MPF_ASSUME): Remove 16271 output rules, these are only meant for inputs. 16272 (MPZ_MUTATE): Remove, not used since changes for magic. 16273 16274 * demos/perl/GMP.xs (mpz_class_hv, mpq_class_hv, mpf_class_hv): New 16275 variables, initialized in BOOT. 16276 * demos/perl/GMP.xs, demos/perl/typemap: Use them and explicit 16277 sv_bless, to save a gv_stashpv for every new object. 16278 162792003-12-22 Kevin Ryde <kevin@swox.se> 16280 16281 * mpn/alpha/mode1o.c, mpn/alpha/dive_1.c: Moved from ev5/mode1o.c and 16282 ev5/dive_1.c, these are good for ev4, and would like them in a generic 16283 alpha build. 16284 162852003-12-21 Kevin Ryde <kevin@swox.se> 16286 16287 * doc/gmp.texi (Integer Logic and Bit Fiddling): Say "bitwise" in 16288 mpz_and, mpz_ior and mpz_xor, to avoid any confusion with what C means 16289 by "logical". Reported by Rüdiger Schütz. 16290 16291 * gmp-h.in (_GMP_H_HAVE_FILE): Note why defined(EOF) is not good. 16292 162932003-12-20 Torbjorn Granlund <tege@swox.com> 16294 16295 * mpn/generic/hgcd.c (mpn_diff_smaller_p): Use mpn_cmp instead of 16296 mpn_sub_n where possible. Use mp_size_t for relevant variables. 16297 162982003-12-20 Kevin Ryde <kevin@swox.se> 16299 16300 * tune/speed.h (SPEED_TMP_ALLOC_LIMBS): Correction to last change, 16301 don't want "- 1" on the TMP_ALLOC_LIMBS. 16302 16303 * demos/expr/expr.h: Test #ifdef MPFR_VERSION_MAJOR for when mpfr.h is 16304 included, not GMP_RNDZ which is now an enum. 16305 16306 * demos/expr/exprfra.c (e_mpfr_ulong_p): Use mpfr_integer_p and 16307 mpfr_fits_ulong_p. 16308 (e_mpfr_get_ui_fits): Use mpfr_get_ui. 16309 16310 * mpfr/*: Update to mpfr cvs head 2003-12-20. 16311 16312 * configure, config.in: Update to autoconf 2.59. 16313 * */Makefile.in, configure, aclocal.m4, ansi2knr.c, install-sh, 16314 doc/mdate-sh: Update to automake 1.8. 16315 16316 * mkinstalldirs: Remove, not required by automake 1.8. 16317 * doc/gmp.texi (Build Options): HTML is a usual target in automake 1.8. 16318 16319 * configure.in (AC_PREREQ): Require autoconf 2.59. 16320 (AM_INIT_AUTOMAKE): Require automake 1.8. 16321 (AC_C_INLINE): Use rather than GMP_C_INLINE, now has #ifndef 16322 __cplusplus we want. 16323 (gettimeofday): Use AC_CHECK_FUNCS rather than our workaround code, 16324 autoconf now ok. 16325 16326 * acinclude.m4 (GMP_C_INLINE): Remove. 16327 (GMP_H_EXTERN_INLINE): Use AC_C_INLINE. 16328 (GMP_PROG_AR): Comment on automake $ARFLAGS. 16329 163302003-12-19 Niels Möller <nisse@lysator.liu.se> 16331 16332 * mpn/generic/hgcd.c (mpn_diff_smaller_p): Rewrote function. Tried 16333 to explain how it works. 16334 (slow_diff_smaller_p, wrap_mpn_diff_smaller_p) [WANT_ASSERT]: Use 16335 CPP to wrap assertion checks around all calls to 16336 mpn_diff_smaller_p. 16337 16338 * mpn/generic/hgcd.c (mpn_addmul2_n_1) [nails]: Fixed carry handling. 16339 16340 * mpn/generic/hgcd.c (mpn_diff_smaller_p) [nails]: Use 16341 GMP_NUMB_MAX, not MP_LIMB_T_MAX. 16342 (mpn_hgcd_itch): Improved size calculation. 16343 (mpn_hgcd_max_recursion): Moved function from qstack.c. Should to 16344 be recompiled when HGCD_SCHOENHAGE_THRESHOLD is tuned. 16345 16346 * mpn/generic/qstack.c (mpn_hgcd_max_recursion): ... moved from 16347 here. 16348 163492003-12-19 Torbjorn Granlund <tege@swox.com> 16350 16351 * tests/mpf/t-get_d.c: Print message before aborting. 16352 16353 * mpn/generic/hgcd2.c (mpn_hgcd2): Substitute always-zero variable 16354 with 0. Remove bogus comment. 16355 16356 * mpn/generic/get_d.c: Make ONE_LIMB case actually work for nails. 16357 163582003-12-18 Niels Möller <niels@lysator.liu.se> 16359 16360 * mpn/generic/hgcd.c (hgcd_update_r): Assert that the output r2 is 16361 smaller than the input r1. 16362 163632003-12-18 Torbjorn Granlund <tege@swox.com> 16364 16365 * mpz/get_d.c: Don't include longlong.h. 16366 16367 * tests/mpz/t-mul.c (ref_mpn_mul): Handle un == vn specially, to avoid 16368 a dummy r/w outside of allocated area. 16369 163702003-12-18 Kevin Ryde <kevin@swox.se> 16371 16372 * mpn/alpha/unicos.m4 (ALIGN): Add comments on what GCC does. 16373 16374 * configure.in (fat setups), acinclude.m4 (GMP_INIT): Obscure 16375 include() from automake 1.8 aclocal. 16376 * acinclude.m4: Quote names in AC_DEFUN, for automake 1.8 aclocal. 16377 163782003-12-17 Niels Möller <nisse@lysator.liu.se> 16379 16380 * tune/common.c (speed_mpn_hgcd, speed_mpn_hgcd_lehmer) [nails]: 16381 Enabled code also for GMP_NAIL_BITS > 0. 16382 * tune/speed.c [nails]: Enable speed_mpn_hgcd and 16383 speed_mpn_hgcd_lehmer. 16384 * tune/tuneup.c (tune_hgcd) [nails]: Likewise. 16385 16386 * mpn/generic/gcd.c [nails]: Use Schönhage's algorithm also for 16387 GMP_NAIL_BITS > 0. 16388 16389 * mpn/generic/hgcd.c [nails]: Enable the code for GMP_NAIL_BITS > 0. 16390 (MPN_EXTRACT_LIMB) [nails]: Handle nails. 16391 (__gmpn_hgcd_sanity): Allocate temporaries on the heap, not on the 16392 stack. Also check that r[i] >= r[i+1]. 16393 (mpn_hgcd2_lehmer_step) [nails]: Handle nails. 16394 (mpn_hgcd_lehmer): When we temporarily have r3 > r2, avoid 16395 trigging that assert in __gmpn_hgcd_sanity. 16396 (mpn_hgcd): Likewise. 16397 16398 * mpn/generic/hgcd2.c (div2) [nails]: Alternative nail-aware 16399 version. 16400 (SUB_2): New macro of Kevin's, which reduces do sub_ddmmss in the 16401 non-nail case. 16402 (HGCD2_STEP): Use SUB_2, not sub_ddmmss. Added alternative version 16403 for K&R compilers. 16404 (mpn_hgcd2) [nails]: Use SUB_2, not sub_ddmmss. New nail-aware 16405 code for checking Jebelean's condition. 16406 164072003-12-13 Kevin Ryde <kevin@swox.se> 16408 16409 * mpq/get_d.c: Amend comments per mpn_get_d change. 16410 (limb2dbl): Remove, no longer used. 16411 16412 * gmp-impl.h (DIVREM_1_NORM_THRESHOLD etc) [nails]: Correction to 16413 comments, MP_SIZE_T_MAX means preinv never. 16414 16415 * gmp-impl.h (DIVEXACT_1_THRESHOLD, MODEXACT_1_ODD_THRESHOLD) [nails]: 16416 Remove overrides, divexact_1 and modexact_1 have been nailified. 16417 16418 * mpz/inp_str.c (mpz_inp_str_nowhite): Use ASSERT_ALWAYS for EOF value 16419 requirement. 16420 16421 * tests/refmpn.c (refmpn_rsh1add_n, refmpn_rsh1sub_n): Parens around 16422 GMP_NUMB_BITS - 1 with ">>", to quieten gcc -Wall. 16423 * tests/t-constants.c (main), tests/t-count_zeros.c (check_clz), 16424 tests/t-modlinv.c (one), tests/mpz/t-jac.c (try_si_zi), 16425 tests/mpq/t-get_d.c (check_onebit): : Correction to printfs. 16426 * tests/mpn/t-fat.c: Add <string.h> for memcpy. 16427 * tests/mpz/t-scan.c (check_ref): Remove unused variable "isigned". 16428 * tests/mpq/t-get_d.c (check_onebit): Remove unused variable "limit". 16429 * tests/mpf/t-set_si.c, tests/mpf/t-set_ui.c (check_data): Braces for 16430 initializers. 16431 * tests/devel/try.c (mpn_divexact_by3_fun, mpn_modexact_1_odd_fun): 16432 Correction to return values. 16433 16434 * doc/gmp.texi (Miscellaneous Integer Functions): Note mpz_sizeinbase 16435 can be used to locate the most significant bit. Reword a bit for 16436 clarity. 16437 164382003-12-12 Niels Möller <niels@lysator.liu.se> 16439 16440 * mpn/generic/hgcd.c (__gmpn_hgcd_sanity): Fixed stack buffer 16441 overrun. 16442 * mpn/generic/hgcd.c: Improved comments. 16443 164442003-12-11 Torbjorn Granlund <tege@swox.com> 16445 16446 * gmp-impl.h: Change asm => __asm__, tabify. 16447 * mpz/get_d_2exp.c: Likewise. 16448 * mpf/get_d_2exp.c: Likewise. 16449 16450 * tests/cxx/t-ops.cc: #if .. #endif out tests that cause ambiguities. 16451 164522003-12-10 Torbjorn Granlund <tege@swox.com> 16453 16454 * tests/mpz/t-gcd.c: Generate operands with sizes as a geometric 16455 progression, to allow for larger operands and less varying timing. 16456 16457 * tune/tuneup.c (tune_gcd_schoenhage): Set param.step_factor. 16458 (tune_hgcd): Likewise. 16459 164602003-12-10 Kevin Ryde <kevin@swox.se> 16461 16462 * demos/perl/test.pl: Should be $] for perl version in old perl. 16463 16464 * configure.in (sparc64-*-*): Single block of gcc configs for all 16465 systems, on unknown systems try both ABI 32 and 64. 16466 16467 * configure.in (LIBGMP_LDFLAGS, LIBGMPXX_LDFLAGS): New AC_SUBSTs with 16468 options to generate .def files with windows DLLs. 16469 * Makefile.am (libgmp_la_LDFLAGS, libgmpxx_la_LDFLAGS): Use them. 16470 16471 * mpn/generic/gcd.c: Use ABOVE_THRESHOLD / BELOW_THRESHOLD, to follow 16472 convention and cooperate with tune/tuneup.c. 16473 16474 * tune/tuneup.c (tune_gcd_schoenhage): Increase max_size to 3000, side 16475 default 1000 is approx the crossover point on athlon. 16476 16477 * tune/common.c, tune/speed.c, tune/speed.h, tune/speed-ext.c, 16478 tune/tuneup.c (SPEED_TMP_ALLOC_LIMBS): Take variable as parameter 16479 rather than returning a value, avoids alloca in a function call. 16480 * tune/common.c, tune/speed.h (speed_tmp_alloc_adjust): Remove, now 16481 inline in SPEED_TMP_ALLOC_LIMBS, and using ptr-NULL for alignment 16482 extraction. 16483 16484 * gmpxx.h (__gmp_binary_equal, __gmp_binary_not_equal, 16485 __gmp_binary_less, __gmp_binary_less_equal, __gmp_binary_greater, 16486 __gmp_binary_greater_equal, __gmp_cmp_function): Use mpfr_cmp_si and 16487 mpfr_cmp_d. 16488 * tests/cxx/t-ops.cc: Exercise this. 16489 16490 * demos/perl/Makefile.PL: Don't install sample.pl and test2.pl. 16491 16492 * demos/perl/GMP.xs (use_sv): Prefer PV over IV or NV to avoid any 16493 rounding. 16494 * demos/perl/test.pl: Exercise this. 16495 16496 * demos/perl/GMP/Mpf.pm (overload_string): Corrections to $# usage. 16497 * demos/perl/test.pl: Exercise this. 16498 164992003-12-08 Kevin Ryde <kevin@swox.se> 16500 16501 * demos/perl/GMP.pm: Correction to canonicalize example. 16502 16503 * demos/perl/GMP.xs: New type check scheme, support magic scalars, 16504 support UV when available. Remove some unused local variables. 16505 (coerce_long): Check range of double. 16506 (get_d_2exp): Remove stray printf. 16507 16508 * demos/perl/test.pl: Exercise magic, rearrange to make it clearer 16509 what's being tested. 16510 165112003-12-07 Kevin Ryde <kevin@swox.se> 16512 16513 * mpn/generic/hgcd.c (mpn_hgcd): Use BELOW_THRESHOLD, to follow the 16514 convention of N<THRESH for the lower algorithm, not <=. Fixes 16515 algorithm selection in tuneup.c. 16516 16517 * tune/common.c (speed_mpn_hgcd, speed_mpn_hgcd_lehmer): Use intended 16518 align_xp, align_yp. 16519 16520 * tune/tuneup.c (mul_toom3_threshold): Use MUL_TOOM3_THRESHOLD_LIMIT, 16521 for the benefit of ASSERT in mpn_mul_n. 16522 16523 * tune/tuneup.c (tune_mul): Correction to toom3 param.min_size, should 16524 use MPN_TOOM3_MUL_N_MINSIZE. 16525 16526 * tune/speed.c (check_align_option): Correction to printf format. 16527 * tune/freq.c (freq_sysctl_hw_model): Remove unused "i" variable. 16528 16529 * scanf/doscan.c: Correction to a couple of trace printfs. 16530 Add <stdlib.h> for strtol. 16531 16532 * tests/misc/t-scanf.c (test_sscanf_eof_ok): New function. 16533 (check_misc): Use it to suppress tests broken by libc. 16534 And should be EOF rather than -1 in various places. 16535 165362003-12-06 Torbjorn Granlund <tege@swox.com> 16537 16538 * tune/common.c (speed_mpn_hgcd, speed_mpn_hgcd_lehmer): 16539 Move SPEED_TMP_ALLOC_LIMBS invocations out from calls. 16540 16541 * mpn/generic/get_str.c (mpn_get_str, POW2_P case): 16542 Don't append extra '\0' byte. 16543 165442003-12-05 Niels Möller <niels@lysator.liu.se> 16545 16546 * tune/common.c (speed_mpn_hgcd_lehmer, speed_mpn_hgcd): 16547 Updated for the renaming hgcd_sanity -> ASSERT_HGCD. 16548 16549 * mpn/generic/gcd.c (gcd_schoenhage): TMP_DECL must be the final 16550 declaration in the declaration section of a block. 16551 16552 * tune/speed.h (mpn_gcd_accel): Added prototype. 16553 165542003-12-05 Torbjorn Granlund <tege@swox.com> 16555 16556 * randmt.c (__gmp_mt_recalc_buffer): Put parens around "&" expressions 16557 inside "!=". 16558 16559 * mpf/get_str.c: Remove unused variable "fracn". 16560 165612003-12-03 Kevin Ryde <kevin@swox.se> 16562 16563 * configure.in, Makefile.am (LIBGMP_LDFLAGS, LIBGMPXX_LDFLAGS): New 16564 AC_SUBSTs, use them to create .def files with Windows DLLs. 16565 * doc/gmp.texi (Notes for Particular Systems): Update notes on mingw 16566 DLL with MS C. 16567 16568 * mpz/export.c: Allow NULL for countp. 16569 * doc/gmp.texi (Integer Import and Export): Describe this. 16570 Suggested by Jack Lloyd. 16571 16572 * mpn/x86/p6/aors_n.asm: New file, grabbing the K7 code. 16573 Superiority of this reported by Patrick Pelissier. 16574 165752003-11-30 Kevin Ryde <kevin@swox.se> 16576 16577 * mpn/alpha/ev67/popcount.asm, mpn/alpha/ev67/hamdist.asm: New files. 16578 16579 * mpn/alpha/ev67: New directory. 16580 * configure.in (alphaev67, alphaev68, alphaev7*): Use it. 16581 16582 * doc/gmp.texi (GMPrefu, GMPpxrefu): Change back to plain ref and 16583 pxref, remove macros. 16584 (GMPreftopu, GMPpxreftopu): Remove URL parameter, rename to GMPreftop 16585 and GMPpxreftop. 16586 (Debugging): Remove debauch, seems to have disappeared. 16587 (Language Bindings): Corrections to URLs for CLN, Omni F77, Pike. 16588 165892003-11-29 Kevin Ryde <kevin@swox.se> 16590 16591 * demos/perl/GMP/Mpf.pm (overload_string): Use $OFMT to avoid warnings 16592 about $#. 16593 16594 * demos/perl/GMP.xs (fits_slong_p): Use LONG_MAX+1 to avoid possible 16595 rounding of 0x7F..FF in a double on 64-bit systems. 16596 16597 * configure.in (ppc601-*-*): Remove this case, it never matched 16598 anything, the name adopted is powerpc601. 16599 (powerpc601-*-*): Use gcc -mcpu=601, xlc -qarch=601. 16600 16601 * configure.in: Introduce ${cc}_cflags_maybe, used if they work. 16602 (*sparc*-*-*) [ABI=32]: Add gcc_cflags_maybe=-m32 to force that mode. 16603 16604 * doc/gmp.texi (Introduction to GMP): Add AMD64 to optimizations list. 16605 (Build Options): Add cpu types alphaev7 and amd64. Update texinfo 16606 html cross reference. 16607 166082003-11-28 Niels Möller <nisse@lysator.liu.se> 16609 16610 * tune/tuneup.c (tune_hgcd): Disable if GMP_NAIL_BITS > 0. 16611 * tune/speed.c (routine): Likewise. 16612 * tune/common.c (speed_mpn_hgcd, speed_mpn_hgcd_lehmer): Likewise. 16613 16614 * mpn/generic/gcd.c, mpn/generic/hgcd.c, mpn/generic/hgcd2.c 16615 [GMP_NAIL_BITS]: Disabled new code if we have nails. 16616 16617 * mpn/generic/gcd.c (MPN_LEQ_P): Copied macro definition (needed 16618 for compilation with --enable-assert). 16619 16620 * tune/tuneup.c (hgcd_schoenhage_threshold, 16621 gcd_schoenhage_threshold): New variables. 16622 (tune_hgcd, tune_gcd_schoenhage): New functions. 16623 (all): Call tune_hgcd and tune_gcd_schoenhage. 16624 16625 * tune/common.c (speed_mpn_hgcd, speed_mpn_hgcd_lehmer) 16626 (speed_mpn_gcd_accel): New functions. 16627 * tune/speed.c (routine): Added mpn_hgcd, mpn_hgcd_lehmer and 16628 mpn_gcd _accel. 16629 * tune/speed.h: Added corresponding prototypes. 16630 16631 * tune/gcd_accel.c: New file. 16632 16633 * tune/gcd_bin.c (GCD_SCHOENHAGE_THRESHOLD): Set to MP_SIZE_T_MAX. 16634 16635 * tune/Makefile.am (libspeed_la_SOURCES): Added gcd_accel.c. 16636 (TUNE_MPN_SRCS_BASIC): Added hgcd.c. 16637 16638 * mpn/x86/k7/gmp-mparam.h (HGCD_SCHOENHAGE_THRESHOLD) 16639 (GCD_SCHOENHAGE_THRESHOLD): Tuned values. 16640 16641 * mpn/generic/gcd.c (mpn_gcd, gcd_binary_odd): Renamed the 16642 old mpn_gcd function (which implements accelerated binary gcd) to 16643 gcd_binary_odd. 16644 (gcd_binary): New function, with the additional book keeping 16645 needed when using gcd_binary_odd to compute the gcd of non-odd 16646 numbers. 16647 (hgcd_tdiv): New function. 16648 (gcd_lehmer): New function, currently #if:ed out. 16649 (hgcd_start_row_p): New function, duplicated from hgcd.c. 16650 (gcd_schoenhage_itch): New function. 16651 (gcd_schoenhage): New function. 16652 (mpn_gcd): New advertised gcd function, which calls 16653 mpn_gcd_binary_odd or mpn_gcd_schoenhage, depending on the size of 16654 the input. 16655 16656 * mpn/generic/hgcd.c (mpn_hgcd2_lehmer_step): Renamed function 16657 (was lehmer_step), and made non-static. Updated callers. 16658 16659 * gmp-impl.h (GCD_LEHMER_THRESHOLD): #if:ed out this macro. 16660 (mpn_hgcd2_lehmer_step): Added prototype. 16661 166622003-11-27 Niels Möller <nisse@lysator.liu.se> 16663 16664 * tests/mpz/t-gcd.c (gcd_values): Moved definition, so that we 16665 don't need to forward declare the array. 16666 166672003-11-26 Niels Möller <nisse@lysator.liu.se> 16668 16669 * mpn/generic/hgcd.c (mpn_hgcd2_fix): Deleted duplicate definition 16670 (the function belongs to hgcd2.c). 16671 166722003-11-26 Torbjorn Granlund <tege@swox.com> 16673 16674 * tests/mpz/t-gcd.c: Generate random operands up to 32767 bits; 16675 decrease # of test to 1000. 16676 (gcd_values): Remove oversize test case. 16677 166782003-11-26 Niels Möller <niels@lysator.liu.se> 16679 16680 * gmp-impl.h: Added name mangling for hgcd-related functions. Also 16681 use __GMP_PROTO. 16682 (MPN_LEQ_P, MPN_EXTRACT_LIMB): Moved macros to hgcd.c. 16683 * mpn/generic/hgcd.c, mpn/generic/hgcd2.c, mpn/generic/qstack.c: 16684 Adapted to name changes. 16685 16686 * tests/mpz/t-gcd.c (main): Added some tests with non-random 16687 input. 16688 166892003-11-25 Niels Möller <nisse@lysator.liu.se> 16690 16691 * gmp-impl.h (MPN_LEQ_P, MPN_EXTRACT_LIMB): New macros. 16692 (struct qstack, struct hgcd2_row, struct hgcd2, struct hgcd_row) 16693 (struct hgcd): New structs. Also added prototypes for new hgcd, 16694 hgcd2, qstack and gcd functions. 16695 16696 * configure.in (gmp_mpn_functions): Added hgcd2, hgcd and qstack. 16697 16698 * mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Added hgcd2.c, 16699 hgcd.c and qstack.c. 16700 16701 * mpn/generic/hgcd.c, mpn/generic/hgcd2.c, mpn/generic/qstack.c: 16702 New files, needed for the sub-quadratic gcd. 16703 167042003-11-25 Kevin Ryde <kevin@swox.se> 16705 16706 * doc/gmp.texi (Language Bindings): Add Axiom. 16707 167082003-11-22 Kevin Ryde <kevin@swox.se> 16709 16710 * mpn/alpha/README: More notes on assembler syntax variations. 16711 16712 * mpn/alpha/alpha-defs.m4, mpn/alpha/unicos.m4 (unop): Should be ldq_u 16713 not bis, and move to alpha-defs.m4 since it can be happily used 16714 everywhere. 16715 16716 * mpn/alpha/alpha-defs.m4, mpn/alpha/default.m4, mpn/alpha/unicos.m4 16717 (bigend): Move to alpha-defs.m4 and base it on HAVE_LIMB_BIG_ENDIAN or 16718 HAVE_LIMB_LITTLE_ENDIAN, so as not to hard code system endianness. 16719 16720 * mpn/alpha/alpha-defs.m4: New file. 16721 * configure.in (alpha*-*-*): Use it. 16722 167232003-11-21 Kevin Ryde <kevin@swox.se> 16724 16725 * mpfr/*: Update to mpfr-2-0-2-branch 2003-11-21. 16726 16727 * mpn/alpha/ev5/com_n.asm: Change "not" to "ornot r31", since "not" 16728 isn't recognised by on Cray Unicos. Add missing "gp" to PROLOGUE. 16729 * mpn/alpha/README: Add a note on "not". 16730 167312003-11-19 Torbjorn Granlund <tege@swox.com> 16732 16733 * mpn/alpha/aorslsh1_n.asm: Slightly rework feed-in code, avoiding 16734 spurious reads beyond operand limits. 16735 16736 * mpn/alpha/ev5/com_n.asm: Add ASM_START/ASM_END. 16737 16738 * mpn/generic/mul_fft.c (mpn_fft_zero_p): Remove unused function. 16739 (mpn_lshift_com): Make static, nailify properly. 16740 167412003-11-19 Kevin Ryde <kevin@swox.se> 16742 16743 * mpn/generic/diveby3.c: Use a "q" variable to make it clearer what 16744 the code is doing. 16745 16746 * mpn/powerpc32/750/lshift.asm, mpn/powerpc32/750/rshift.asm: New 16747 files. 16748 16749 * mpn/alpha/ev5/com_n.asm: New file. 16750 16751 * doc/gmp.texi (Assembler Functional Units, Assembler Writing Guide): 16752 New sections by Torbjorn, tweaked by me. 16753 167542003-11-17 Torbjorn Granlund <tege@swox.com> 16755 16756 * mpn/powerpc32: Add power4/powerpc970 cycle counts. 16757 Use cmpwi instead of cmpi to placate darwin. 16758 167592003-11-15 Kevin Ryde <kevin@swox.se> 16760 16761 * config.guess: Add comments on MacOS "machine" command. 16762 16763 * tests/devel/try.c (main): Use gmp_randinit_default explicitly on 16764 __gmp_rands, since RANDS doesn't allow seeding. 16765 16766 * doc/gmp.texi (Assigning Integers): Remove notes on possible change 16767 to disallow whitespace, this would be an incompatible change and 16768 really can't be made. 16769 (Toom 3-Way Multiplication): Updates for Paul's new code. 16770 16771 * mpn/generic/mul_n.c (toom3_interpolate, mpn_toom3_mul_n): Put 16772 if/else braces around whole of #if code, for readability. 16773 16774 * tests/refmpn.c (refmpn_addlsh1_n, refmpn_sublsh1_n, 16775 refmpn_rsh1add_n, refmpn_rsh1sub_n): Add ASSERTs for operand overlaps 16776 etc. 16777 16778 * mpfr/*: Update to mpfr-2-0-2-branch 2003-11-15. 16779 167802003-11-14 Torbjorn Granlund <tege@swox.com> 16781 16782 * mpn/alpha/aorslsh1_n.asm: Use Cray-friendly syntax for "br". 16783 167842003-11-13 Torbjorn Granlund <tege@swox.com> 16785 16786 * mpn/alpha/aorslsh1_n.asm: New file. 16787 167882003-11-12 Kevin Ryde <kevin@swox.se> 16789 16790 * acinclude.m4 (GMP_PROG_CC_WORKS): Add case provoking AIX power2 16791 assembler, test code by Torbjorn. 16792 * configure.in (power*-*-*): Add a comment about -mcpu=rios2 fallback. 16793 16794 * tune/speed.c (main): Use gmp_randinit_default explicitly on 16795 __gmp_rands, since RANDS doesn't allow seeding. 16796 16797 * mpfr/*: Update to mpfr-2-0-2-branch 2003-11-12. 16798 16799 * gmp-impl.h, randmt.h (__gmp_randinit_mt_noseed): Move prototype to 16800 gmp-impl.h, for use by RANDS. 16801 16802 * mpn/Makeasm.am (.s, .S, .asm): Quote $< in test -f, per automake. 16803 (.obj): Use test -f and $(CYGPATH_W) as per automake. 16804 168052003-11-11 Kevin Ryde <kevin@swox.se> 16806 16807 * configure.in: Make umul and udiv standard-optional objects, rather 16808 than under various extra_functions. 16809 16810 * mpn/pa32/hppa1_1/pa7100/add_n.asm, 16811 mpn/pa32/hppa1_1/pa7100/addmul_1.asm, 16812 mpn/pa32/hppa1_1/pa7100/lshift.asm, 16813 mpn/pa32/hppa1_1/pa7100/rshift.asm, 16814 mpn/pa32/hppa1_1/pa7100/sub_n.asm, 16815 mpn/pa32/hppa1_1/pa7100/submul_1.asm: Use LDEF for labels. 16816 16817 * mpf/set_str.c: Don't use memcmp for decimal point testing, just a 16818 loop is enough and avoids any chance of memcmp reading past the end of 16819 the given string. 16820 16821 * randmts.c, randmt.h: New files. 16822 * Makefile.am (libgmp_la_SOURCES): Add them. 16823 * randmt.c: Move seeding to randmts.c, common defines in randmt.h. 16824 * gmp-impl.h (RANDS): Use __gmp_randinit_mt_noseed. 16825 * tests/misc.c (tests_rand_start): Use gmp_randinit_default 16826 explicitly, not RANDS. 16827 16828 * mpn/ia64/ia64-defs.m4 (PROLOGUE_cpu): Use 32-byte alignment, for the 16829 benefit of itanium 2. 16830 * mpn/ia64/gcd_1.asm: Remove own .align 32. 16831 16832 * mpn/ia64/ia64-defs.m4 (ALIGN): New define, using IA64_ALIGN_OK. 16833 * mpn/ia64/hamdist.asm: Use ALIGN instead of .align. 16834 16835 * acinclude.m4 (GMP_ASM_IA64_ALIGN_OK): New macro. 16836 * configure.in (IA64_PATTERN): Use it. 16837 * mpn/ia64/README: Add notes on gas big endian align problem. 16838 168392003-11-10 Torbjorn Granlund <tege@swox.com> 16840 16841 * mpn/ia64/mul_1.asm: Rewrite. 16842 168432003-11-08 Torbjorn Granlund <tege@swox.com> 16844 16845 * mpn/x86/aors_n.asm: Align loop to a multiple of 16. Also align 16846 M4_function_n to a multiple of 16, to minimize alignment padding. 16847 Update P6 cycle counts reflecting improvements with new alignment. 16848 168492003-11-07 Kevin Ryde <kevin@swox.se> 16850 16851 * gmp-impl.h (HAVE_HOST_CPU_alpha_CIX): New define. 16852 (ULONG_PARITY, popc_limb): Use it, to pick up ev7 as well as 67 and 68. 16853 * longlong.h (count_leading_zeros, count_trailing_zeros): Ditto. 16854 16855 * doc/gmp.texi (Notes for Package Builds): Add notes on multi-ABI 16856 system packaging. 16857 (ABI and ISA): Add GNU/Linux ABI=64. 16858 (Binary GCD): Add notes on 1x1 GCD algorithms. 16859 16860 * mpn/alpha/README: Add some literature references. 16861 16862 * mpn/ia64/mode1o.asm: Various corrections to initial checkin. 16863 * mpn/ia64/ia64-defs.m4 (ASSERT): Correction to arg quoting. 16864 168652003-11-05 Torbjorn Granlund <tege@swox.com> 16866 16867 * mpn/powerpc64/linux64.m4: New file. 16868 * configure.in (POWERPC64_PATTERN): Handle *-*-linux*. 16869 Use linux64.m4. 16870 16871 * mpn/ia64/logops_n.asm: New file. 16872 168732003-11-05 Kevin Ryde <kevin@swox.se> 16874 16875 * tune/freq.c (freq_sysctl_hw_model): Relax to just look for "%u MHz", 16876 for the benefit of sparc cypress under netbsd 1.6.1. 16877 16878 * mpfr/*: Update to mpfr-2-0-2-branch 2003-11-05. 16879 16880 * mpn/alpha/ev5/dive_1.c: New file. 16881 16882 * configure.in (x86_64-*-*): Accept together with amd64-*-*. 16883 16884 * tune/speed.c: Check range of -x,-y,-w,-W alignment specifiers. 16885 * tune/speed.h (CACHE_LINE_SIZE): Amend comments. 16886 168872003-11-04 Torbjorn Granlund <tege@swox.com> 16888 16889 * tune/speed.c: Fix typo in testing HAVE_NATIVE_mpn_modexact_1_odd. 16890 168912003-11-03 Kevin Ryde <kevin@swox.se> 16892 16893 * mpn/ia64/hamdist.asm: New file. 16894 * mpn/ia64/mode1o.asm: New file. 16895 * mpn/ia64/ia64-defs.m4 (ASSERT): New macro. 16896 16897 * tests/mpz/t-set_d.c (check_2n_plus_1): New test. 16898 168992003-11-01 Kevin Ryde <kevin@swox.se> 16900 16901 * mpz/fac_ui.c (BSWAP_ULONG) [limb==2*long]: Remove this case, it 16902 provokes code gen problems on HP cc. 16903 (BSWAP_ULONG) [generic]: Rename __dst variable to avoid conflicts with 16904 BITREV_ULONG. 16905 Fix by Jason Moxham. 16906 16907 * mpn/powerpc32/mode1o.asm: Use 16-bit i*i for early out, no need to 16908 truncate divisor. Amend stated 750/7400 speeds, and note operands 16909 that give the extremes. 16910 16911 * mpz/set_d.c: Don't use a special case for d < MP_BASE_AS_DOUBLE, gcc 16912 3.3 -mpowerpc64 on darwin gets ulonglong->double casts wrong. 16913 16914 * mpn/generic/diveby3.c: Show a better style carry handling in the 16915 alternative pipelined sample code. 16916 16917 Revert this, the longlong.h macros need -mpowerpc64: 16918 * acinclude.m4 (GMP_GCC_POWERPC64): New macro. 16919 * configure.in (powerpc64-*-darwin*): Use it to exclude -mpowerpc64 16920 when bad. 16921 169222003-10-31 Torbjorn Granlund <tege@swox.com> 16923 16924 * mpn/powerpc64/mode64/submul_1.asm: Move an instruction to save a 16925 cycle on POWER4. 16926 16927 * mpn/powerpc64/mode64/divrem_1.asm: Fix several syntax problems 16928 revealed on Mac OS X. 16929 16930 * mpn/powerpc64/mode64/*.asm: Add cycle counts for POWER4. 16931 16932 * mpn/powerpc64/sqr_diagonal.asm: Rewrite to save a cycle on POWER4. 16933 169342003-10-31 Kevin Ryde <kevin@swox.se> 16935 16936 * mpfr/*: Update to mpfr-2-0-2-branch 2003-10-31. 16937 16938 * mpn/powerpc64/README: Add subdirectory organisation notes. 16939 16940 * tests/mpn/t-get_d.c: Don't use limits.h, LONG_MIN is wrong on gcc 16941 2.95 with -mcpu=ultrasparc. 16942 16943 * acinclude.m4 (GMP_GCC_POWERPC64): New macro. 16944 * configure.in (powerpc64-*-darwin*): Use it to exclude -mpowerpc64 16945 when bad. 16946 16947 * configure.in (powerpc64-*-darwin*) [ABI=mode32]: Use gcc -mcpu flags. 16948 16949 * mpn/ia64/divrem_1.asm, mpn/ia64/gcd_1.asm: Use "C" for comments. 16950 * mpn/ia64/README, mpn/ia64/ia64-defs.m4: Note this. 16951 16952 * mpn/ia64/ia64-defs.m4: Renamed from default.m4, per other defs files. 16953 * configure.in (IA64_PATTERN): Update GMP_INCLUDE_MPN. 16954 16955 * doc/gmp.texi (Notes for Particular Systems): Remove m68k ABI notes 16956 for -mshort and PalmOS, now works. 16957 (References): Correction, GMP Square Root proof already there, just 16958 wanting URL from RRRR 4475. 16959 169602003-10-29 Kevin Ryde <kevin@swox.se> 16961 16962 * configure.in (sparc*-*-*): Use gcc -m32 when that option works, to 16963 force 32-bit mode on dual 32/64 configurations like GNU/Linux. 16964 (sparc64-*-linux*): Add support for ABI=64. 16965 16966 * mpn/generic/pre_divrem_1.c: In fraction part, use CNST_LIMB(0) with 16967 udiv_qrnnd_preinv to avoid warning about shift > type. 16968 16969 * mpfr/*: Update to mpfr-2-0-2-branch 2003-10-29. 16970 16971 * tests/cxx/t-istream.cc: Avoid tellg() checks if putback() doesn't 16972 update that, avoids certain g++ 2.96 problems. 16973 16974 * tests/mpn/t-fat.c: New file. 16975 * tests/mpn/Makefile.am (check_PROGRAMS): Add it. 16976 16977 * configure.in (CPUVEC_INSTALL, ITERATE_FAT_THRESHOLDS): New macros 16978 for fat.h. 16979 * mpn/x86/fat/fat.c (__gmpn_cpuvec_init): Use CPUVEC_INSTALL instead 16980 of memcpy. Correction to location of "initialized" set. Improve 16981 various comments. 16982 169832003-10-27 Torbjorn Granlund <tege@swox.com> 16984 16985 * mpn/sparc64/mul_1.asm: Change addcc => add in a few places. 16986 * mpn/sparc64/addmul_1.asm: Likewise. 16987 16988 * mpn/sparc32/v9/mul_1.asm: Apply cross-jumping. 16989 * mpn/sparc32/v9/addmul_1.asm: Likewise. 16990 * mpn/sparc32/v9/submul_1.asm: Likewise. 16991 * mpn/sparc32/v9/sqr_diagonal.asm: Likewise. 16992 169932003-10-27 Kevin Ryde <kevin@swox.se> 16994 16995 * tests/cxx/t-misc.cc: Don't use <climits>, on g++ 2.95.4 (debian 3.0) 16996 -mcpu=ultrasparc LONG_MIN is wrong and kills the compile. 16997 16998 * tests/cxx/t-istream.cc: Correction to tellg tests, don't assume 16999 streampos is zero based. 17000 17001 * configure.in (HAVE_HOST_CPU_FAMILY_alpha): New define for config.h. 17002 * mpn/generic/get_d.c: Use it instead of __alpha for alpha workaround, 17003 since Cray cc doesn't define __alpha. 17004 17005 * mpn/x86/README: Revise PIC coding notes a bit, add gcc visibility 17006 attribute. 17007 170082003-10-25 Kevin Ryde <kevin@swox.se> 17009 17010 * mpn/ia64/gcd_1.asm: New file. 17011 17012 * tune/many.pl: Allow for PROLOGUE(fun,...), as used on alpha. 17013 17014 * doc/gmp.texi (C++ Formatted Input): Describe base indicator handling. 17015 17016 * tests/cxx/t-istream.cc: New file. 17017 * tests/cxx/Makefile.am: Add it. 17018 17019 * cxx/ismpznw.cc: New file, integer input without whitespace ... 17020 * cxx/ismpz.cc: ... from here. 17021 * gmp-impl.h (__gmpz_operator_in_nowhite): Add prototype. 17022 * cxx/ismpq.cc: Rewrite using mpz input routines. Change to accept a 17023 separate base indicator on numerator and denominator. Fix base 17024 indicator case where "123/0456" would stop at "123/0". 17025 * Makefile.am, cxx/Makefile.am: Add cxx/ismpznw.cc. 17026 17027 * tests/mpz/t-set_d.c: New file, derived from tests/mpz/t-set_si.c 17028 * tests/mpz/Makefile.am (check_PROGRAMS): Add it. 17029 17030 * mpn/m68k/lshift.asm, mpn/m68k/rshift.asm: Support 16-bit int and 17031 stack alignment. 17032 * mpn/m68k/README: Add notes on this. 17033 * configure.in (SIZEOF_UNSIGNED): New define in config.m4. 17034 * mpn/m68k/m68k-defs.m4 (m68k_definsn): Add cmpw, movew. 17035 Reported by Patrick Pelissier. 17036 17037 * mpn/m68k/t-m68k-defs.pl: Don't use -> with hashes, to avoid 17038 deprecation warnings from perl 5.8. 17039 17040 * configure.in (viac3-*-*): Use just x86/pentium in $path not x86/p6. 17041 If gcc is to be believed the old C3s don't have cmov. 17042 17043 * Makefile.am: Amend comments about not building from libtool 17044 convenience libraries. 17045 17046 * mpn/asm-defs.m4 (PROLOGUE): Use m4_file_seen, for correct filename 17047 in missing EPILOGUE error messages. 17048 (m4_file_seen): Amend comments about where used. 17049 17050 * Makefile.am (CXX_OBJECTS): Remove $U, C++ files are not subject to 17051 ansi2knr rules. 17052 17053 * gmp-h.in (mpn_divmod_1): Use __GMP_CAST, to avoid warnings in 17054 applications using g++ -Wold-style-cast. 17055 17056 * mpn/z8000/README: New file. 17057 170582003-10-22 Kevin Ryde <kevin@swox.se> 17059 17060 * mpn/generic/get_d.c (CONST_1024, CONST_NEG_1023, 17061 CONST_NEG_1022_SUB_53): Replace ALPHA_WORKAROUND with a non-gcc-ism, 17062 and use on Cray Unicos alpha too, which has the same problem. 17063 17064 * configure.in (powerpc64-*-darwin*): Make ABI=32 available as the 17065 final fallback, remove mode64 until we know how it will work. 17066 17067 * doc/gmp.texi (Build Options): Add powerpc970 to available CPUs. 17068 (ABI and ISA): Add mode32 for Darwin. 17069 17070 * configure.in (gettimeofday): Use an explicit AC_TRY_LINK, to avoid 17071 known autoconf 2.57 problems with gettimeofday in AC_CHECK_FUNCS on 17072 HP-UX. 17073 17074 * configure.in (powerpc*-*-*): Use ABI=32 instead of ABI=standard for 17075 the default 32-bit ABI. Fixes powerpc64-*-aix* which is documented as 17076 choices "aix64 32" but had "aix64 standard". 17077 17078 * mpfr/*: Update to mpfr-2-0-2-branch 2003-10-22. 17079 17080 * doc/gmp.texi (Notes for Particular Systems): Note m68k gcc -mshort 17081 and PalmOS calling conventions not supported. Reported by Patrick 17082 Pelissier. 17083 (References): Add Paul Zimmermann's Inria 4475 paper. 17084 170852003-10-21 Torbjorn Granlund <tege@swox.com> 17086 17087 * mpn/ia64/submul_1.asm: Slightly reschedule loop to accommodate 17088 Itanium 2 getf.sig latency. 17089 170902003-10-21 Kevin Ryde <kevin@swox.se> 17091 17092 * tests/mpn/t-instrument.c: Add mpn_addlsh1_n, mpn_rsh1add_n, 17093 mpn_rsh1sub_n, mpn_sub_nc, mpn_sublsh1_n. Typo in mpn_preinv_divrem_1 17094 conditional. 17095 170962003-10-20 Torbjorn Granlund <tege@swox.com> 17097 17098 * mpn/powerpc64/mode32/add_n.asm: New file. 17099 * mpn/powerpc64/mode32/sub_n.asm: New file. 17100 * mpn/powerpc64/mode32/mul_1.asm: New file. 17101 * mpn/powerpc64/mode32/addmul_1.asm: New file. 17102 * mpn/powerpc64/mode32/submul_1.asm: New file. 17103 171042003-10-19 Torbjorn Granlund <tege@swox.com> 17105 17106 * longlong.h (AMD64): __x86_64__ => __amd64__. 17107 (64-bit powerpc): Only define carry-dependent macros if 17108 !_LONG_LONG_LIMB. 17109 17110 * acinclude.m4 (POWERPC64_PATTERN): Add powerpc970-*-*. 17111 17112 * configure.in (POWERPC64_PATTERN): Handle *-*-darwin*. 17113 (POWERPC64_PATTERN, *-*-aix*): Prepend powerpc64/mode64 to path_aix64. 17114 17115 * mpn/powerpc64/mode64/mul_1.asm: Change cal => addi. 17116 * mpn/powerpc64/mode64/addmul_1.asm: Likewise. 17117 * mpn/powerpc64/mode64/submul_1.asm: Likewise. 17118 * mpn/powerpc64/sqr_diagonal.asm: Likewise. 17119 17120 * mpn/powerpc64/mode64/mul_1.asm: Move from "..". 17121 * mpn/powerpc64/mode64/addmul_1.asm: Likewise. 17122 * mpn/powerpc64/mode64/submul_1.asm: Likewise. 17123 * mpn/powerpc64/mode64/divrem_1.asm: Likewise. 17124 * mpn/powerpc64/mode64/rsh1sub_n.asm: Likewise. 17125 * mpn/powerpc64/mode64/add_n.asm: Likewise. 17126 * mpn/powerpc64/mode64/addsub_n.asm: Likewise. 17127 * mpn/powerpc64/mode64/sub_n.asm: Likewise. 17128 * mpn/powerpc64/mode64/addlsh1_n.asm: Likewise. 17129 * mpn/powerpc64/mode64/diveby3.asm: Likewise. 17130 * mpn/powerpc64/mode64/rsh1add_n.asm: Likewise. 17131 * mpn/powerpc64/mode64/sublsh1_n.asm: Likewise. 17132 17133 * mpn/powerpc64/lshift.asm: Handle mode32 ABI. 17134 * mpn/powerpc64/rshift.asm: Likewise. 17135 * mpn/powerpc64/umul.asm: Likewise. 17136 17137 * tune/powerpc64.asm: Make it actually work. 17138 171392003-10-19 Kevin Ryde <kevin@swox.se> 17140 17141 * mpn/generic/get_d.c: Add a workaround for alpha gcc signed constant 17142 comparison bug. 17143 17144 * gmpxx.h (gmp_randclass gmp_randinit_lc_2exp_size constructor): Throw 17145 std::length_error if size is too big. 17146 * tests/cxx/t-rand.cc (check_randinit): Exercise this. 17147 17148 * mpn/x86/pentium4/sse2/addlsh1_n.asm: New file, derived in part from 17149 mpn/x86/pentium4/sse2/add_n.asm. 17150 17151 * doc/gmp.texi (C++ Interface Integers, C++ Interface Rationals, C++ 17152 Interface Floats): Note std::invalid_argument exception for invalid 17153 strings to constructors and operator=. 17154 (C++ Interface Random Numbers): Note std::length_error exception for 17155 size too big in gmp_randinit_lc_2exp_size. 17156 171572003-10-18 Kevin Ryde <kevin@swox.se> 17158 17159 * mpfr/*: Update to mpfr-2-0-2-branch 2003-10-18. 17160 17161 * gmpxx.h (mpz_class, mpq_class, mpf_class, mpfr_class constructors 17162 and operator= taking string or char*): Throw std::invalid_argument if 17163 string cannot be converted. 17164 * tests/cxx/t-constr.cc, tests/cxx/t-assign.cc: Exercise this. 17165 17166 * cxx/ismpz.cc, cxx/ismpq.cc, cxx/ismpf.cc: Use istream std::locale 17167 ctype facet for isspace when available. Only accept space at the 17168 start of the input, same as g++ libstdc++. Use ASSERT_NOCARRY to 17169 check result of mpz_set_str etc. 17170 * cxx/ismpf.cc: Don't accept "@" for exponent indicator. 17171 17172 * tune/speed.c, tune/speed.h, tune/common.c, tune/Makefile.am: Remove 17173 _open and _mpn variants of mpn_toom3_mul_n, only one style now. 17174 * tune/mul_n_open.c, tune/mul_n_mpn.c: Remove files. 17175 17176 * gmp-impl.h (LIMB_HIGHBIT_TO_MASK): New macro. 17177 (udiv_qrnnd_preinv2, udiv_qrnnd_preinv2gen): Use it. 17178 17179 * tests/mpz/t-import.c, tests/mpz/t-export.c: Use octal for character 17180 constants, hex is an ANSI-ism. 17181 17182 * mpn/alpha/ev5/mode1o.c: Corrections to ASSERTs, as per 17183 mpn/generic/mode1o.c. 17184 17185 * mpn/generic/diveby3.c: Add commented out alternative code and notes 17186 for taking the multiply off the dependent chain. Amend/clarify some 17187 of the other comments. 17188 17189 * configure.in (powerpc970-*-*): Use gcc -mcpu=970 when available. 17190 (powerpc7400-*-*): Fallback on gcc -mcpu=750 if -mcpu=7400 not 17191 available. 17192 17193 * doc/gmp.texi (C++ Formatted Input): Note locale digit grouping not 17194 supported. 17195 (C++ Formatted Input, C++ Formatted Output): Cross reference class 17196 interface on overloading. 17197 17198 * mpn/m68k/README: Add various ideas from doc/tasks.html. 17199 17200 * mpn/m88k/README: New file. 17201 172022003-10-16 Torbjorn Granlund <tege@swox.com> 17203 17204 * config.sub: Recognize powerpc970. 17205 172062003-10-15 Torbjorn Granlund <tege@swox.com> 17207 17208 * config.guess: Recognize powerpc970 under MacOS. 17209 172102003-10-15 Kevin Ryde <kevin@swox.se> 17211 17212 * configure.in, acinclude.m4 (GMP_C_RIGHT_SHIFT): New test. 17213 * gmp-impl.h (LIMB_HIGHBIT_TO_MASK): New macro. 17214 (udiv_qrnnd_preinv2, udiv_qrnnd_preinv2gen): Use it. 17215 17216 * mpn/amd64/amd64-defs.m4: New file, with a non-aligning PROLOGUE. 17217 * configure.in (amd64-*-*): Use it. 17218 * mpn/amd64/addlsh1_n.asm: Add ALIGN(16). 17219 17220 * mpfr/*: Update to mpfr cvs 2003-10-15. 17221 17222 * mpn/generic/get_d.c: Rewrite, simplifying and truncating towards 17223 zero unconditionally. 17224 * tests/mpn/t-get_d.c: Add various further tests. 17225 * gmp-impl.h (FORCE_DOUBLE): New macro. 17226 17227 * gmp-h.in (__mpz_struct): Add comment on __mpz_struct getting into 17228 C++ mangled function names. 17229 17230 * doc/gmp.texi (Build Options): Update notes for new doc subdir. 17231 (Low-level Functions): Note mpn functions don't check for zero limbs 17232 etc, it's up to an application to strip. 17233 17234 * doc/configuration (Configure): mdate-sh now in doc subdir, add 17235 generated fat.h. 17236 172372003-10-14 Torbjorn Granlund <tege@swox.com> 17238 17239 * mpn/ia64/lorrshift.asm: Rewrite. 17240 17241 * mpn/ia64/diveby3.asm: Remove explicit bundling; add branch hints. 17242 172432003-10-13 Torbjorn Granlund <tege@swox.com> 17244 17245 * mpn/ia64/diveby3.asm: New file. 17246 172472003-10-13 Kevin Ryde <kevin@swox.se> 17248 17249 * mpn/powerpc32/mod_34lsub1.asm: New file. 17250 17251 * mpn/powerpc32/diveby3.asm, mpn/powerpc64/diveby3.asm: src[] in 17252 second operand of mullw, to allow possible early-out, which the 17253 0xAA..AB inverse cannot give. This improvement noticed by Torbjorn. 17254 17255 * acinclude.m4 (GMP_ASM_LSYM_PREFIX): Print to config.log whether 17256 local label is purely temporary or appears in object files, for 17257 development purposes. 17258 17259 * doc/gmp.texi, doc/fdl.texi, doc/texinfo.tex, doc/mdate-sh: Moved 17260 from top-level. 17261 * doc/Makefile.am: New file. 17262 * configure.in (AC_OUTPUT): Add doc/Makefile. 17263 * Makefile.am (SUBDIRS): Move doc subdirectory from EXTRA_DIST. 17264 (info_TEXINFOS, gmp_TEXINFOS): Moved to doc/Makefile.am. 17265 * mpfr/Makefile.am (mpfr_TEXINFOS): fdl.texi now in doc subdir. 17266 (TEXINFO_TEX): texinfo.tex now in doc subdir. 17267 (AM_MAKEINFOFLAGS): Set -I to doc subdir. 17268 17269 * mpz/and.c: For positive/positive, use mpn_and_n, rate a realloc as 17270 UNLIKELY. 17271 17272 * mpn/generic/mul_n.c (mpn_toom3_mul_n, mpn_toom3_sqr_n): Don't test 17273 for high zero limbs. 17274 172752003-10-12 Torbjorn Granlund <tege@swox.com> 17276 17277 * mpn/powerpc64/diveby3.asm: New file (trivial edits of 17278 powerpc32/diveby3.asm). 17279 17280 * mpn/powerpc32/diveby3.asm: Update cycle counts with more processors. 17281 * mpn/powerpc32/sqr_diagonal.asm: Likewise. 17282 17283 * mpn/pa64/add_n.asm: Correct PA8500 cycle counts. 17284 * mpn/pa64/sub_n.asm: Likewise. 17285 17286 * mpn/m68k/aors_n.asm (INPUT PARAMETERS): Fix typo. 17287 * mpn/m68k/lshift.asm: Likewise. 17288 * mpn/m68k/rshift.asm: Likewise. 17289 17290 * mpn/m68k/README: Correct an URL; add some STATUS comments. 17291 17292 * mpn/ia64/aorslsh1_n.asm: Avoid shrp when shl/shr works just as well. 17293 17294 * mpn/powerpc32/addlsh1_n.asm: New file. 17295 * mpn/powerpc32/sublsh1_n.asm: New file. 17296 172972003-10-12 Kevin Ryde <kevin@swox.se> 17298 17299 * mpn/sparc64/divrem_1.c, mpn/sparc64/mod_1.c: New files. 17300 * mpn/sparc64/sparc64.h (HALF_ENDIAN_ADJ, count_leading_zeros_32, 17301 invert_half_limb, udiv_qrnnd_half_preinv): New macros. 17302 17303 * gmp-impl.h (udiv_qrnnd_preinv2): Use a ? : for getting the n1 bit, 17304 so as not to depend on signed right shifts being arithmetic. 17305 17306 * mpn/powerpc32/diveby3.asm: New file. 17307 17308 * mpn/generic/divrem_1.c: Use CNST_LIMB(0) to avoid warnings from 17309 udiv_qrnnd_preinv about shift count when int<long. Do the same with 17310 udiv_qrnnd, for consistency. 17311 17312 * Makefile.am (install-data-hook): Print a warning recommending "make 17313 check" to watch out for compiler bugs. Proposed by Torbjorn. 17314 17315 * mpn/ia64/README (mpn_lshift, mpn_rshift): Amend prospective itanium2 17316 speed, 0.75 c/l with shrp plus shl/shr. 17317 17318 * mpn/ia64/popcount.asm: Add comment on optimality. 17319 173202003-10-11 Torbjorn Granlund <tege@swox.com> 17321 17322 * mpn/ia64/rsh1aors_n.asm: New file. 17323 17324 * mpn/asm-defs.m4: Handle rsh1aors_n. 17325 17326 * configure.in (tmp_mulfunc): Handle rsh1aors_n. 17327 173282003-10-11 Kevin Ryde <kevin@swox.se> 17329 17330 * mpn/x86/pentium4/sse2/diveby3.asm: Remove non-PIC RODATA memory 17331 access for 0xAAAAAAAB constant. 17332 17333 * gmp-impl.h (popc_limb, ULONG_PARITY) [ev67, ev68]: Add gcc asm 17334 versions using ctpop. 17335 17336 * mpn/x86/k6/aorsmul_1.asm: Tweak some comments, remove M4_description 17337 and M4_desc_retval used only in comments. 17338 17339 * mpn/x86/k6/mul_basecase.asm: Add comment on using mpn_mul_1. 17340 173412003-10-09 Torbjorn Granlund <tege@swox.com> 17342 17343 * mpn/powerpc64/addlsh1_n.asm: Tweak for 0.25 c/l better loop speed. 17344 * mpn/powerpc64/sublsh1_n.asm: Likewise. 17345 173462003-10-09 Kevin Ryde <kevin@swox.se> 17347 17348 * mpfr/*: Update to mpfr cvs 2003-10-09. 17349 17350 * tests/devel/try.c (_SC_PAGESIZE): Define from _SC_PAGE_SIZE on 17351 systems which use that, eg. hpux 9. 17352 173532003-10-07 Kevin Ryde <kevin@swox.se> 17354 17355 * tune/freq.c (freq_sysctl_hw_model): Correction to last sscanf change. 17356 17357 * configure.in: Check for psp_iticksperclktick in struct pst_processor. 17358 * tune/freq.c (freq_pstat_getprocessor): Use this. 17359 17360 * tests/devel/try.c (divisor_array): Add a couple of half-limb values. 17361 17362 * acinclude.m4 (GMP_PROG_CC_WORKS): Correction to last change, need to 17363 set result "yes" when cross compiling. 17364 173652003-10-06 Torbjorn Granlund <tege@swox.com> 17366 17367 * mpn/generic/mul_n.c: Use __GMPN_ADD_1/_GMPN_SUB_1 instead of 17368 mpn_add_1 and mpn_sub_1. 17369 17370 * mpn/pa64/aorslsh1_n.asm: Schedule register save and restore code. 17371 173722003-10-05 Torbjorn Granlund <tege@swox.com> 17373 17374 * mpn/pa64/mul_1.asm: Misc comment cleanups. 17375 * mpn/pa64/addmul_1.asm: Likewise. 17376 * mpn/pa64/submul_1.asm: Likewise. 17377 17378 * mpn/pa64/README: Correct cycle counts. 17379 17380 * mpn/pa64/aorslsh1_n.asm: New file. 17381 173822003-10-04 Kevin Ryde <kevin@swox.se> 17383 17384 * tune/freq.c (freq_sysctl_hw_model, freq_sunos_sysinfo, 17385 freq_sco_etchw, freq_bsd_dmesg, freq_irix_hinv): Demand matching of 17386 MHz etc at end of sscanf format string. In particular need this for 17387 freq_bsd_dmesg on i486-pc-freebsd4.7 to avoid the 486 cpu being used 17388 for the frequency. 17389 17390 * tests/misc.c, tests/tests.h (tests_setjmp_sigfpe, 17391 tests_sigfpe_handler, tests_sigfpe_done, tests_sigfpe_target, 17392 tests_dbl_mant_bits): New. 17393 17394 * configure.in (viac3*-*-*): Add gcc VIA c3 options. 17395 17396 * mpfr/*: Update to mpfr cvs 2003-10-04. 17397 17398 * tests/refmpn.c (refmpn_addlsh1_n, refmpn_sublsh1_n, 17399 refmpn_rsh1add_n, refmpn_rsh1sub_n): Add ASSERTs for operand overlaps. 17400 * tests/tests.h (refmpn_addlsh1_n, refmpn_sublsh1_n, refmpn_rsh1add_n, 17401 refmpn_rsh1sub_n): Add prototypes. 17402 17403 * tests/devel/try.c, tune/many.pl: Add mpn_addlsh1_n, mpn_sublsh1_n, 17404 mpn_rsh1add_n, mpn_rsh1sub_n. 17405 174062003-10-03 Torbjorn Granlund <tege@swox.com> 17407 17408 * tests/refmpn.c (refmpn_addlsh1_n, refmpn_sublsh1_n, refmpn_rsh1add_n, 17409 refmpn_rsh1sub_n): New functions. 17410 174112003-10-03 Paul Zimmermann <Paul.Zimmermann@loria.fr> 17412 17413 * mpn/generic/mul_n.c (toom3_interpolate): Use mpn_add_1/mpn_sub_1 17414 instead of MPN_INCR_/MPN_DECR_U. 17415 174162003-10-02 Torbjorn Granlund <tege@swox.com> 17417 17418 * configure.in (ia64*-*-hpux*): Fall back to +O1, not +O. 17419 174202003-10-02 Kevin Ryde <kevin@swox.se> 17421 17422 * configure.in (ia64*-*-hpux*): For cc, let +O optimization level 17423 fallback if +O3 doesn't work. 17424 17425 * acinclude.m4 (GMP_PROG_CC_WORKS): Add a test of __builtin_alloca 17426 when available, to pick up Itanium HP-UX cc internal errors in +O2. 17427 Provoking code by Torbjorn. 17428 174292003-10-01 Torbjorn Granlund <tege@swox.com> 17430 17431 * mpn/ia64/gmp-mparam.h: Retune. 17432 17433 * mpn/asm-defs.m4: Handle aorslsh1_n. 17434 17435 * configure.in (tmp_mulfunc): Handle aorslsh1_n. 17436 17437 * mpn/ia64/aorslsh1_n.asm: New file. 17438 17439 * mpn/ia64/aors_n.asm: New file, complete rewrite of mpn_add_n and 17440 mpn_sub_n. 17441 * mpn/ia64/add_n.asm: Replace by aors_n.asm. 17442 * mpn/ia64/sub_n.asm: Replace by aors_n.asm. 17443 174442003-10-01 Kevin Ryde <kevin@swox.se> 17445 17446 * acinclude.m4 (GMP_C_DOUBLE_FORMAT): Make bad ARM last byte into a 17447 separate case and consider it non-IEEE, since it looks like this is 17448 due to some sort of restricted or incorrect software floats. 17449 17450 * demos/calc/Makefile.am: Use automake yacc/lex support, seems fine in 17451 separate objdir now. 17452 17453 * cxx/dummy.cc: Moved from top-level dummy.cc. 17454 * Makefile.am (libgmpxx_la_SOURCES): Update to cxx/dummy.cc, 17455 correction to comment about this. 17456 174572003-09-30 Torbjorn Granlund <tege@swox.com> 17458 17459 * demos/pexpr.c: Correct documentation of -split. 17460 (TIME): Remove cast of result to double. 17461 (main): Change timing variables to int. 17462 (main): #ifdef LIMIT_RESOURCE_USAGE, don't convert numbers of more than 17463 100000 digits. 17464 174652003-09-28 Torbjorn Granlund <tege@swox.com> 17466 17467 * mpn/*/*.asm: Clean up spacing, tabify. 17468 17469 * mpn/alpha/rshift.asm: Table cycle counts. 17470 * mpn/alpha/lshift.asm: Likewise. 17471 * mpn/alpha/ev5/rshift.asm: Likewise. 17472 * mpn/alpha/ev5/lshift.asm: Likewise. 17473 * mpn/alpha/ev6/add_n.asm: Likewise. 17474 * mpn/alpha/ev6/sub_n.asm: Likewise. 17475 17476 * mpn/ia64/lorrshift.asm: Amend comments about performance. 17477 17478 * mpn/pa64/mul_1.asm: Fix comment typo. 17479 * mpn/pa64/addmul_1.asm: Likewise. 17480 * mpn/pa64/submul_1.asm: Likewise. 17481 17482 * mpn/amd64/addlsh1_n.asm: Save/restore carry using two insn to break 17483 recurrency. Add remarks about possible further speedup. 17484 * mpn/amd64/sublsh1_n.asm: Likewise. 17485 17486 * mpn/amd64/rsh1add_n.asm: Add remarks about possible further speedup. 17487 * mpn/amd64/rsh1sub_n.asm: Likewise. 17488 174892003-09-27 Torbjorn Granlund <tege@swox.com> 17490 17491 * mpn/powerpc64/README: Update with POWER4/PPC970 pipeline info. 17492 17493 * mpn/powerpc64/rsh1add_n.asm: New file. 17494 * mpn/powerpc64/rsh1sub_n.asm: New file. 17495 * mpn/powerpc64/rshift.asm: Rewrite. 17496 * mpn/powerpc64/lshift.asm: Rewrite. 17497 174982003-09-26 Torbjorn Granlund <tege@swox.com> 17499 17500 * mpn/powerpc64/addlsh1_n.asm: New file. 17501 * mpn/powerpc64/sublsh1_n.asm: New file. 17502 175032003-09-25 Torbjorn Granlund <tege@swox.com> 17504 17505 * tune/common.c (speed_mpn_addlsh1_n, speed_mpn_sublsh1_n, 17506 speed_mpn_rsh1add_n, speed_mpn_rsh1sub_n): Conditionalize on 17507 corresponding HAVE_NATIVE_*. 17508 175092003-09-25 Kevin Ryde <kevin@swox.se> 17510 17511 * mpz/combit.c: Use GMP_NUMB_BITS not BITS_PER_MP_LIMB. 17512 17513 * demos/expr/exprfr.c: Allow for mpfr_inf_p, mpfr_nan_p and 17514 mpfr_number_p merely returning non-zero, rather than 1 or 0. 17515 17516 * demos/expr/exprfr.c, demos/expr/t-expr.c: Add erf, integer_p, zeta. 17517 17518 * demos/expr/Makefile.am (LDADD): Update comments on $(LIBM). 17519 175202003-09-24 Torbjorn Granlund <tege@swox.com> 17521 17522 * tune/speed.c (routine): Add entries for mpn_addlsh1_n, mpn_sublsh1_n, 17523 mpn_rsh1add_n, and mpn_rsh1sub_n. 17524 17525 * tune/speed.h: Declare speed_mpn_addlsh1_n, speed_mpn_sublsh1_n, 17526 speed_mpn_rsh1add_n, and speed_mpn_rsh1sub_n. 17527 17528 * tune/common.c (speed_mpn_addlsh1_n, speed_mpn_sublsh1_n, 17529 speed_mpn_rsh1add_n, speed_mpn_rsh1sub_n): New functions. 17530 17531 * gmp-impl.h: Declare mpn_addlsh1_n, mpn_sublsh1_n, mpn_rsh1add_n, and 17532 mpn_rsh1sub_n. 17533 17534 * mpn/asm-defs.m4: Add define_mpn's for addlsh1_n, sublsh1_n, 17535 rsh1add_n, and rsh1sub_n. 17536 17537 * mpn/powerpc64/*.asm: Add cycle counts in consistent style. Misc 17538 styling edits. 17539 17540 * mpn/amd64/gmp-mparam.h: Retune. 17541 17542 * configure.in: Add #undefs for HAVE_NATIVE_mpn_addlsh1_n, 17543 HAVE_NATIVE_mpn_sublsh1_n, HAVE_NATIVE_mpn_rsh1add_n, 17544 HAVE_NATIVE_mpn_rsh1sub_n. 17545 (gmp_mpn_functions_optional): List addlsh1_n, sublsh1_n, rsh1add_n, 17546 and rsh1sub_n. 17547 17548 * mpn/amd64/addlsh1_n.asm: New file. 17549 * mpn/amd64/sublsh1_n.asm: New file. 17550 * mpn/amd64/rsh1add_n.asm: New file. 17551 * mpn/amd64/rsh1sub_n.asm: New file. 17552 175532003-09-24 Kevin Ryde <kevin@swox.se> 17554 17555 * mpfr/*: Update to mpfr cvs 2003-09-24. 17556 17557 * acinclude.m4 (GMP_C_DOUBLE_FORMAT): Remove conftest* temporary files. 17558 175592003-09-23 Torbjorn Granlund <tege@swox.com> 17560 17561 * gmp-impl.h (MUL_TOOM3_THRESHOLD, SQR_TOOM3_THRESHOLD): Now 128. 17562 175632003-09-23 Kevin Ryde <kevin@swox.se> 17564 17565 * gmp-h.in (gmp_randinit_set): Use __gmp_const rather than const. 17566 175672003-09-22 Torbjorn Granlund <tege@swox.com> 17568 17569 * tune/mul_n_mpn.c: (__gmpn_sqr_n): New #define. 17570 * tune/mul_n_open.c (__gmpn_sqr_n): New #define. 17571 17572 * mpn/generic/mul.c (mpn_sqr_n): Move from here... 17573 * mpn/generic/mul_n.c (mpn_sqr_n): ...to here. 17574 (mpn_sqr_n): Allocate workspace for toom3 using TMP_* mechanism except 17575 for very large operands when !WANT_FFT. 17576 17577 * mpn/generic/mul_n.c: Add a missing ";". Misc comment fixes. 17578 17579 * mpn/generic/mul.c: Remove spurious #include <stdio.h>. 17580 17581 * mpn/x86/k7/gmp-mparam.h: Retune. 17582 17583 * mpn/generic/mul_n.c (mpn_mul_n): Allocate workspace for toom3 using 17584 TMP_* mechanism except for very large operands when !WANT_FFT. 17585 17586 * gmp-impl.h (MPN_TOOM3_MUL_N_TSIZE, MPN_TOOM3_SQR_N_TSIZE): 17587 Define conditionally on WANT_FFT and HAVE_NATIVE_mpn_sublsh1_n. 17588 (MPN_TOOM3_MAX_N): New #define. 17589 17590 * mpn/amd64/gmp-mparam.h: Retune. 17591 17592 * mpn/Makefile.am (TARG_DIST): Add amd64. 17593 17594 * mpn/generic/sqr_basecase.c: Use mpn_addlsh1_n when available. 17595 17596 * mpn/generic/mul_n.c: Use proper form for HAVE_NATIVE macros. 17597 175982003-09-22 Kevin Ryde <kevin@swox.se> 17599 17600 * mpfr/*: Update to mpfr cvs 2003-09-22. 17601 176022003-09-21 Kevin Ryde <kevin@swox.se> 17603 17604 * mpn/x86/pentium4/sse2/gmp-mparam.h (USE_PREINV_DIVREM_1, 17605 USE_PREINV_MOD_1): Set to 1 for new asm versions. 17606 17607 * mpfr/*: Update to mpfr cvs 2003-09-21. 17608 176092003-09-21 Paul Zimmermann <Paul.Zimmermann@loria.fr> 17610 17611 * mpn/generic/mul_n.c (mpn_toom3_mul_n): Conditionally use 17612 mpn_sublsh1_n, mpn_rsh1add_n and mpn_rsh1sub_n, in addition to 17613 mpn_addlsh1_n. Avoid all copying, at the expense of some additional 17614 workspace. 17615 17616 * gmp-impl.h (MPN_TOOM3_MUL_N_TSIZE, MPN_TOOM3_SQR_N_TSIZE): Accommodate 17617 latest toom3 code. 17618 176192003-09-19 Kevin Ryde <kevin@swox.se> 17620 17621 * mpn/x86/pentium4/sse2/divrem_1.asm, mpn/x86/pentium4/sse2/mod_1.asm: 17622 New files. 17623 176242003-09-16 Kevin Ryde <kevin@swox.se> 17625 17626 * tune/speed.c (run_one): Don't scale the -1.0 not-available return. 17627 Print "n/a" for times not-available. 17628 176292003-09-13 Paul Zimmermann <Paul.Zimmermann@loria.fr> 17630 17631 * mpn/generic/mul_n.c (toom3_interpolate): New function. 17632 (mpn_toom3_mul_n, mpn_toom3_sqr_n): Call toom3_interpolate. 17633 176342003-09-12 Torbjorn Granlund <tege@swox.com> 17635 17636 * mpn/generic/mul_n.c (mpn_toom3_mul_n, mpn_toom3_sqr_n): Remove unused 17637 variables. 17638 (mpn_toom3_mul_n, mpn_toom3_sqr_n): Use offset `+ 1', not `+ 2' in last 17639 MPN_DECR_U calls. 17640 176412003-09-12 Paul Zimmermann <Paul.Zimmermann@loria.fr> 17642 17643 * mpn/generic/mul_n.c (mpn_toom3_mul_n, mpn_toom3_sqr_n): Rewrite. 17644 176452003-09-12 Torbjorn Granlund <tege@swox.com> 17646 17647 * gmp-impl.h (MPN_KARA_MUL_N_TSIZE, MPN_KARA_SQR_N_TSIZE): Reformulate 17648 to use the same form as MPN_TOOM3_MUL_N_TSIZE. 17649 (MPN_TOOM3_MUL_N_TSIZE, MPN_TOOM3_SQR_N_TSIZE): Update for new Toom3 17650 code requirements. 17651 * mpn/generic/mul_n.c (evaluate3, interpolate3, add2Times): Remove. 17652 (USE_MORE_MPN): Remove. 17653 176542003-08-31 Kevin Ryde <kevin@swox.se> 17655 17656 * mpfr/*: Update to mpfr cvs 2003-08-31. 17657 176582003-08-30 Kevin Ryde <kevin@swox.se> 17659 17660 * mpfr/*: Update to mpfr cvs 2003-08-30. 17661 176622003-08-29 Torbjorn Granlund <tege@swox.com> 17663 17664 * mpn/amd64/copyi.asm: New file. 17665 * mpn/amd64/copyd.asm: New file. 17666 * mpn/amd64/README: New file. 17667 176682003-08-28 Torbjorn Granlund <tege@swox.com> 17669 17670 * mpn/amd64/lshift.asm: New file. 17671 * mpn/amd64/rshift.asm: New file. 17672 * mpn/amd64/gmp-mparam.h: Retune. 17673 176742003-08-23 Kevin Ryde <kevin@swox.se> 17675 17676 * tune/freq.c (freq_getsysinfo): Correction to speed_cycletime value 17677 established. 17678 17679 * mpz/rootrem.c, gmp-h.in, gmp.texi (mpz_rootrem): Don't return 17680 exactness indication, can get that from testing the remainder. 17681 17682 * mpn/x86/k7/aors_n.asm, mpn/x86/k7/mmx/copyi.asm: Amend to comments 17683 about loads and stores and what speed should be possible. 17684 176852003-08-22 Torbjorn Granlund <tege@swox.com> 17686 17687 * mpn/amd64/add_n.asm: New file. 17688 * mpn/amd64/sub_n.asm: New file. 17689 * mpn/amd64/mul_1.asm: New file. 17690 * mpn/amd64/addmul_1.asm: New file. 17691 * mpn/amd64/submul_1.asm: New file. 17692 176932003-08-19 Kevin Ryde <kevin@swox.se> 17694 17695 * longlong.h (add_ssaaaa, sub_ddmmss) [hppa 64]: Move down into main 17696 __GNUC__ block. Exclude for _LONG_LONG_LIMB (ie. ABI=2.0n) since 17697 these forms are only for ABI=2.0w. 17698 17699 * longlong.h (count_leading_zeros) [__mcpu32__]: Check __mcpu32__ to 17700 avoid bfffo on GCC 3.4 in CPU32 mode. Reported by Bernardo Innocenti. 17701 17702 * longlong.h (count_trailing_zeros) [x86_64]: Use "%q0" to force 17703 64-bit register destination. Pointed out by Torbjorn. 17704 17705 * mpz/combit.c: Correction to carry handling when extending a 17706 negative, and use __GMPN_ADD_1. Correction to complement limb for a 17707 negative when there's a non-zero low limb. 17708 * tests/mpz/bit.c (check_clr_extend, check_com_negs): Exercise these. 17709 17710 * demos/perl/GMP.xs, demos/perl/GMP.pm, demos/perl/test.pl: Add 17711 get_d_2exp. 17712 * demos/perl/GMP.xs, demos/perl/GMP.pm, demos/perl/GMP/Rand.pm, 17713 demos/perl/test.pl: Add gmp_urandomb_ui, gmp_urandomm_ui. 17714 (GMP::Rand::randstate): Accept a randstate object to copy. 17715 * demos/perl/GMP.xs, demos/perl/GMP.pm, demos/perl/GMP/Mpz.pm, 17716 demos/perl/test.pl: Add combit, rootrem. 17717 177182003-08-19 Torbjorn Granlund <tege@swox.com> 17719 17720 * tune/Makefile.am (EXTRA_DIST): Add amd64.asm. 17721 177222003-08-17 Kevin Ryde <kevin@swox.se> 17723 17724 * gmpxx.h [__MPFR_H]: Include full <iostream> for inlines. 17725 * tests/cxx/t-headfr.cc: New file, exercising this. 17726 * tests/cxx/Makefile.am: Add it. 17727 17728 * tests/cxx/t-constr.cc: Include config.h for WANT_MPFR. 17729 17730 * gmpxx.h: Correction to temp variable type in mpf -> mpfr assignment. 17731 Reported by Derrick Bass. 17732 * tests/cxx/t-assign.cc (check_mpfr): Exercise this. 17733 17734 * configure.in (WANT_MPFR): AC_DEFINE this, for the benefit of 17735 tests/cxx/t-*.cc. (Was always meant to have been defined.) 17736 * tests/cxx/Makefile.am (INCLUDES): Add -I$(top_srcdir)/mpfr. 17737 17738 * gmpxx.h: __gmp_default_rounding_mode -> __gmpfr_default_rounding_mode 17739 (struct __gmp_hypot_function): Correction to mpfr_hypot addition. 17740 * tests/cxx/t-misc.cc (check_mpfr_hypot): Corrections to mpfr/long 17741 tests. 17742 177432003-08-16 Torbjorn Granlund <tege@swox.com> 17744 17745 * configure.in (amd64): New. 17746 17747 * mpn/amd64/gmp-mparam.h: New file. 17748 17749 * tune/amd64.asm: New file, derived in part from tune/pentium.asm. 17750 177512003-08-15 Kevin Ryde <kevin@swox.se> 17752 17753 * tune/freq.c (freq_irix_hinv): Reinstate, for the benefit of IRIX 6.2. 17754 (freq_attr_get_invent): Conditionalize on INFO_LBL_DETAIL_INVENT too. 17755 177562003-08-14 Kevin Ryde <kevin@swox.se> 17757 17758 * mpq/get_d.c: Use mpn_get_d. 17759 * tests/mpq/t-get_d.c (check_onebit): New test. 17760 17761 * gmp.texi (Notes for Particular Systems): Under x86 cpu types, note 17762 i386 is a fat binary, remove pentium4 recommendation since i386 is now 17763 quite reasonable for p4. 17764 (Notes for Particular Systems): Under Windows DLLs, remove caveat 17765 about --enable-cxx now ok, update .lib creation for new libtool, 17766 remove .exp not needed for MS C. 17767 (Notes for Package Builds): i386 is a fat binary. 17768 (Reentrancy): Remove SCO ctype.h note, don't want to list every system 17769 misfeature, and was quite possibly for non-threading mode anyway. 17770 (Autoconf): Remove notes on gmp 2 detection, too old to want to 17771 encourage anyone to use. 17772 (Karatsuba Multiplication): Correction to threshold increase/decrease 17773 for a and b terms. Reported by Richard Brent and Paul Zimmermann. 17774 Also add various further index entries. 17775 17776 * tune/freq.c (freq_attr_get_invent): New function. 17777 (freq_irix_hinv): Remove, in favour or freq_attr_get_invent. 17778 * configure.in (AC_CHECK_FUNCS): Add attr_get. 17779 (AC_CHECK_HEADERS): Add invent.h, sys/attributes.h, sys/iograph.h. 17780 177812003-08-03 Kevin Ryde <kevin@swox.se> 17782 17783 * tune/tuneup.c (tune_mul): Use MUL_KARATSUBA_THRESHOLD_LIMIT. 17784 177852003-08-02 Kevin Ryde <kevin@swox.se> 17786 17787 * mpn/asm-defs.m4: Tweak some comments, add hpux11 to m4wrap 0xFF 17788 problem systems. 17789 17790 * configure.in (*-*-sco3.2v5*): Remove lt_cv_archive_cmds_need_lc=no, 17791 since libtool no longer uses it. This was a workaround fixing ctype.h 17792 in SCO 5 shared libraries; not sure if libtool now gets it right on 17793 its own, let's hope so. 17794 17795 * configure.in, acinclude.m4 (GMP_PROG_HOST_CC): Remove, libtool no 17796 longer demands HOST_CC. 17797 17798 * configure.in: When C or C++ compiler not found, refer user to 17799 config.log. 17800 17801 * configure.in (i386-*-*): Turn i386 into a fat binary build. 17802 * mpn/x86/fat/fat.c, mpn/x86/fat/fat_entry.asm, 17803 mpn/x86/fat/gmp-mparam.h, mpn/x86/fat/gcd_1.c, mpn/x86/fat/mode1o.c: 17804 New files. 17805 * gmp-impl.h (struct cpuvec_t) [x86 fat]: New structure. 17806 * longlong.h (COUNT_LEADING_ZEROS_NEED_CLZ_TAB) [x86 fat]: Define. 17807 * mpn/asm-defs.m4 (foreach): New macro. 17808 * mpn/x86/x86-defs.m4 (CPUVEC_FUNCS_LIST): New define. 17809 * mpn/x86/sqr_basecase.asm: New file, primarily as a fallback for fat 17810 binaries. 17811 * mpn/x86/p6/gmp-mparam.h, mpn/x86/p6/mmx/gmp-mparam.h: Add comments 17812 about fat binary SQR_KARATSUBA_THRESHOLD for p6 and p6/mmx. 17813 17814 * configure.in: Add various supports for fat binaries, via fat_path, 17815 fat_functions and fat_thresholds variables. 17816 * acinclude.m4 (GMP_STRIP_PATH): Mung $fat_path too. 17817 (GMP_FAT_SUFFIX, GMP_REMOVE_FROM_LIST): New macros. 17818 * gmp-impl.h: Add various supports for fat binaries. 17819 (DECL_add_n etc): New macros. 17820 (mpn_mul_basecase etc): Define only if not already defined. 17821 * mpn/asm-defs.m4 (m4_config_gmp_mparam): Mention fat binary. 17822 (MPN): Use m4_unquote, for the benefit of fat binary name expansion. 17823 * doc/configuration: Notes on fat binaries. 17824 * gmp-impl.h (MUL_TOOM3_THRESHOLD_LIMIT): Define always. 17825 (MUL_KARATSUBA_THRESHOLD_LIMIT): New define. 17826 * mpn/generic/mul.c, mpn/generic/mul_n.c: Use these. 17827 * tune/divrem1div.c, tune/divrem1inv.c, tune/mod_1_div.c, 17828 tune/mod_1_inv.c: Define OPERATION_divrem_1 and OPERATION_mod_1, to 17829 tell fat.h what's being done. 17830 17831 * config.guess (alpha-*-*): Update comments on what configfsf.guess 17832 does and doesn't do for us. 17833 178342003-07-31 Kevin Ryde <kevin@swox.se> 17835 17836 * config.guess: Remove $dummy.o files everywhere, in case vendor 17837 compilers produce that even when not asked. 17838 17839 * demos/perl/GMP.xs (class_or_croak): Rename "class" parameter to 17840 avoid C++ keyword. 17841 (coerce_ulong, coerce_long): Move croaks to stop g++ 3.3 complaining 17842 about uninitialized variables. 17843 17844 * demos/perl/INSTALL: Add notes on building with a DLL. 17845 17846 * longlong.h (count_trailing_zeros) [x86_64]: Ensure bsfq destination 17847 is a 64-bit register. Diagnosed by Francois G. Dorais. 17848 178492003-07-31 Torbjorn Granlund <tege@swox.com> 17850 17851 * longlong.h [ppc]: Remove nested test for vxworks. 17852 178532003-07-24 Kevin Ryde <kevin@swox.se> 17854 17855 * gmpxx.h (struct __gmp_binary_multiplies): Use mpz_mul_si for 17856 mpz*long and long*mpz. 17857 * tests/cxx/t-ops.cc (check_mpz): Exercise mpz*long and mpz*ulong. 17858 17859 * cxx/ismpf.cc: Use std::locale decimal point when available. Expect 17860 localeconv available always. 17861 * tests/cxx/t-locale.cc: Enable check_input tests. 17862 17863 * gmpxx.h (struct __gmp_hypot_function): Use mpfr_hypot. 17864 * tests/cxx/t-misc.cc (check_mpfr_hypot): New tests. 17865 17866 * tests/cxx/t-assign.cc, tests/cxx/t-binary.cc, tests/cxx/t-ops.cc, 17867 tests/cxx/t-prec.cc, tests/cxx/t-ternary.cc, tests/cxx/t-unary.cc: 17868 Include config.h for WANT_MPFR. 17869 17870 * tests/mpz/bit.c (check_single): Correction to a diagnostic print. 17871 178722003-07-24 Niels Möller <nisse@lysator.liu.se> 17873 17874 * mpz/combit.c: New file. 17875 * Makefile.am, mpz/Makefile.am: Add it. 17876 * gmp-h.in (mpz_combit): Add prototype. 17877 * tests/mpz/bit.c (check_single): Exercise mpz_combit. 17878 178792003-07-16 Kevin Ryde <kevin@swox.se> 17880 17881 * mpn/generic/get_d.c: Correction to infinity handling for large exp. 17882 178832003-07-14 Kevin Ryde <kevin@swox.se> 17884 17885 * mpz/get_d.c, mpz/get_d_2exp.c, mpf/get_d.c, mpf/get_d_2exp.c: Use 17886 mpn_get_d. 17887 17888 * mpn/generic/get_d.c: New file, based on mpz/get_d.c and insert-dbl.c. 17889 * configure.in, mpn/Makefile.am: Add it. 17890 * gmp-impl.h (mpn_get_d): Add prototype. 17891 17892 * tests/mpn/t-get_d.c: New file. 17893 * tests/mpn/Makefile.am: Add it. 17894 17895 * tests/mpz/t-get_d_2exp.c (check_onebit, check_round): Test negatives. 17896 (check_onebit): Add a few more bit sizes. 17897 17898 * tests/misc.c, tests/tests.h (tests_isinf): New function. 17899 179002003-07-12 Kevin Ryde <kevin@swox.se> 17901 17902 * configure.in (GMP_PROG_CXX_WORKS): Include $CPPFLAGS, same as 17903 automake does in the actual build. 17904 17905 * acinclude.m4 (GMP_PROG_CXX_WORKS): In the namespace test, declare 17906 namespace before trying to use. In std iostream test, provoke a 17907 failure from Compaq C++ in pre-standard mode. 17908 179092003-07-08 Kevin Ryde <kevin@swox.se> 17910 17911 * acinclude.m4 (GMP_PROG_CC_WORKS): Use separate compiles for various 17912 known problems, and indicate to the user the reason for rejecting. 17913 (GMP_PROG_CXX_WORKS): Ditto, and insist on being able to execute each 17914 compiled program. 17915 179162003-07-05 Kevin Ryde <kevin@swox.se> 17917 17918 * config.sub: Add comments to our alias transformations. 17919 17920 * configfsf.sub, configfsf.guess: Update to 2003-07-04. 17921 17922 * acinclude.m4 (GMP_PROG_CC_WORKS, GMP_PROG_CC_WORKS_LONGLONG): Show 17923 failing program in config.log, per other autoconf tests. 17924 17925 * configure.in (i786-*-*): Recognise as pentium4, per configfsf.sub. 17926 179272003-06-28 Kevin Ryde <kevin@swox.se> 17928 17929 * mpz/get_d_2exp.c, mpf/get_d_2exp.c: Avoid res==1.0 when floats round 17930 upwards. 17931 17932 * tests/mpz/t-get_d_2exp.c: New file. 17933 * tests/mpz/Makefile.am (check_PROGRAMS): Add it. 17934 * tests/mpf/t-get_d_2exp.c: New file. 17935 * tests/mpf/Makefile.am (check_PROGRAMS): Add it. 17936 * tests/x86call.asm, test/tests.h (x86_fldcw, x86_fstcw): New 17937 functions. 17938 * tests/misc.c, tests/tests.h (tests_hardware_getround, 17939 tests_hardware_setround): New functions. 17940 179412003-06-25 Kevin Ryde <kevin@swox.se> 17942 17943 * mpn/sparc64/dive_1.c: New file. 17944 17945 * mpn/sparc64/sparc64.h: New file. 17946 * mpn/sparc64/mode1o.c: Remove things now in sparc64.h. 17947 17948 * mpfr/*: Update to mpfr cvs 2003-06-25. 17949 17950 * acinclude.m4 (GMP_PROG_CC_WORKS): In last change provoking gnupro 17951 gcc, don't use ANSI style function definition. 17952 179532003-06-22 Kevin Ryde <kevin@swox.se> 17954 17955 * mpn/pa32/hppa1_1/udiv.asm: Remove .proc, .entry, .exit and .procend, 17956 handled by PROLOGUE and EPILOGUE. Comment out .callinfo, per other 17957 asm files. 17958 17959 * gmpxx.h (mpz_class __gmp_binary_divides, __gmp_binary_modulus): Fix 17960 long/mpz and long%mpz for dividend==LONG_MIN divisor==-LONG_MIN. 17961 (mpz_class __gmp_binary_modulus): Fix mpz%long for negative dividend. 17962 * tests/cxx/t-ops.cc (check_mpz): Add test cases for these, merging 17963 operator/ and operator% sections for clarity. 17964 179652003-06-21 Kevin Ryde <kevin@swox.se> 17966 17967 * mpfr/*: Update to mpfr cvs 2003-06-21. 17968 17969 * acinclude.m4 (GMP_PROG_CC_WORKS): Add code by Torbjorn provoking an 17970 ICE from gcc 2.9-gnupro-99r1 under -O2 -mcpu=ev6. 17971 * configure.in (alpha*-*-* gcc_cflags_cpu): Fallback on -mcpu=ev56 for 17972 this compiler. 17973 17974 * gmpxx.h (get_d): Remove comments about long double, double is 17975 correct for get_d, a future long double form would be get_ld. 17976 179772003-06-19 Kevin Ryde <kevin@swox.se> 17978 17979 * mpfr/*: Update to mpfr cvs 2003-06-19. 17980 17981 * mpn/generic/dive_1.c: Share src[0] fetch among all cases. No need 17982 for separate final umul_ppmm in even case, make it part of the loop. 17983 17984 * mpz/get_d_2exp.c, mpq/set_si.c, mpq/set_ui.c: Nailify. 17985 17986 * mpf/iset_si.c: Rewrite using mpf/set_si.c code, in particular this 17987 nailifies it. 17988 * tests/mpf/t-set_si.c: Nailify tests. 17989 17990 * mpf/iset_ui.c: Nailify, as per mpf/set_ui.c 17991 * tests/mpf/t-set_ui.c: New file. 17992 * tests/mpf/Makefile.am (check_PROGRAMS): Add it. 17993 179942003-06-15 Kevin Ryde <kevin@swox.se> 17995 17996 * mpfr/*: Update to mpfr cvs 2003-06-15. 17997 17998 * mpn/x86/k6/mode1o.asm: Remove a bogus ASSERT. 17999 180002003-06-12 Kevin Ryde <kevin@swox.se> 18001 18002 * configure.in (--enable-assert): Emit WANT_ASSERT to config.m4. 18003 * mpn/powerpc32/powerpc-defs.m4, mpn/x86/x86-defs.m4 (ASSERT): Check 18004 WANT_ASSERT is defined. 18005 18006 * mpn/sparc32/v9/udiv.asm: Amend heading, this file is for sparc v9. 18007 18008 * tests/cxx/Makefile.am (TESTS_ENVIRONMENT): In libtool openbsd hack, 18009 discard error messages from cp, for the benefit of --disable-shared or 18010 systems not using names libgmp.so.*. 18011 18012 * tests/devel/try.c (try_one): When overlapping, copy source data 18013 after filling dst. Previously probably used only DEADVAL in 18014 overlapping cases. 18015 180162003-06-11 Torbjorn Granlund <tege@swox.com> 18017 18018 * mpf/random2.c: Rewrite. Ignore sign of exp parameter. 18019 180202003-06-10 Kevin Ryde <kevin@swox.se> 18021 18022 * mpn/sparc64/mode1o.c: New file. 18023 180242003-06-09 Torbjorn Granlund <tege@swox.com> 18025 18026 * mpn/powerpc32/lshift.asm: Add more cycle counts. 18027 * mpn/powerpc32/rshift.asm: Add more cycle counts. 18028 18029 * mpn/ia64/addmul_1.asm: Reformat comments for 80 columns. 18030 18031 * gmp-impl.h (udiv_qrnnd_preinv1): New name for udiv_qrnnd_preinv. 18032 (udiv_qrnnd_preinv2): New name for udiv_qrnnd_preinv2norm. 18033 (udiv_qrnnd_preinv): New #define, making udiv_qrnnd_preinv2 18034 the default. 18035 * tune/speed.c: Corresponding changes. 18036 * tune/speed.h: Likewise. 18037 * tune/common.c: Likewise. 18038 18039 * mpf/get_str.c: Simplify `off' computation. 18040 18041 * longlong.h: Tabify. 18042 180432003-06-09 Kevin Ryde <kevin@swox.se> 18044 18045 * gmp.texi (ABI and ISA): FreeBSD has sparc64 too, just say "BSD" to 18046 cover all flavours. 18047 * configure.in: Ditto in some comments. 18048 18049 * mpfr/*: Update to mpfr cvs 2003-06-09. 18050 18051 * tests/cxx/Makefile.am (LDADD): Add -L$(top_builddir)/$(LIBS), for 18052 the benefit of gcc 3.2 on itanium2-hp-hpux11.22. 18053 18054 * tune/many.pl (mul_2): Add speed routine settings. 18055 (MAKEFILE): Close when done, for the benefit of development hackery. 18056 180572003-06-08 Kevin Ryde <kevin@swox.se> 18058 18059 * mpfr/*: Update to mpfr cvs 2003-06-08. 18060 18061 * mpn/x86/x86-defs.m4 (femms): Remove fallback to emms. 18062 (cmovCC, psadbw): Remove simulated versions. 18063 (cmov_available_p, psadbw_available_p): Remove. 18064 This trickery was only ever for development purposes on machines 18065 without those instructions. Removing it simplifies gmp and in 18066 particular avoids complications for fat binary builds. Development 18067 can be done with a wrapper around "as" if really needed. 18068 18069 * mpn/x86/divrem_1.asm: Don't use loop_or_decljnz, now K6 has its own 18070 mpn/x86/k6/divrem_1.asm. Amend K6 comments now moved to there. 18071 * mpn/x86/x86-defs.m4 (loop_or_decljnz): Remove, no longer used. 18072 18073 * mpn/x86/k6/divrem_1.asm: New file, derived from mpn/x86/divrem_1.asm. 18074 18075 * mpn/x86/k6/pre_mod_1.asm: Remove comments now in mpn/x86/mod_1.asm. 18076 18077 * mpn/x86/mod_1.asm: Put mpn_mod_1c after mpn_mod_1 for better branch 18078 prediction. Put done_zero at end for less wastage in alignment. Use 18079 decl+jnz unconditionally since in fact it's ok on k6. Amend comments. 18080 180812003-06-07 Kevin Ryde <kevin@swox.se> 18082 18083 * mpn/generic/mode1o.c: Fix ASSERTs on return value. 18084 18085 * gmp.texi (Build Options): Add viac3 and viac32 cpu types. 18086 (ABI and ISA): Note on sparcv9 ABI=32 vs ABI=64 speed. More indexing. 18087 18088 * configfsf.guess, configfsf.sub: Update to 2003-06-06. 18089 * config.guess: Remove $RANDOM hack supporting netbsd 1.4, not needed 18090 by new configfsf.guess. 18091 180922003-06-06 Torbjorn Granlund <tege@swox.com> 18093 18094 * mpn/ia64/submul_1.asm: Add branch over .align block. 18095 180962003-06-05 Torbjorn Granlund <tege@swox.com> 18097 18098 * longlong.h (add_ssaaaa) [pa64]: Output zero operand as register 0. 18099 Allow more immediate operands. 18100 (sub_ddmmss) [pa64]: Likewise. 18101 (add_ssaaaa) [pa32]: Likewise. 18102 (sub_ddmmss) [pa32]: Likewise. 18103 18104 * mpn/pa64: Change ".level 2.0W" to ".level 2.0w" to please 18105 picky GNU assembler. 18106 181072003-06-05 Kevin Ryde <kevin@swox.se> 18108 18109 * gmp.texi (Integer Special Functions): In mpz_array_init, fix type 18110 shown for integer_array and give an example use. 18111 181122003-06-04 Torbjorn Granlund <tege@swox.com> 18113 18114 * mpf/set_str.c (mpf_set_str): Work around gcc 2 bug triggered on 18115 alpha. 18116 181172003-06-03 Kevin Ryde <kevin@swox.se> 18118 18119 * mpn/x86/pentium/README: Add 7 c/l mmx mul_1, tweak wordings. 18120 18121 * acinclude.m4 (GMP_C_DOUBLE_FORMAT): Use octal char constants in test 18122 program, hex is not supported by K&R. 18123 181242003-06-02 Torbjorn Granlund <tege@swox.com> 18125 18126 * mpn/mips64/divrem_1.asm: New file. 18127 181282003-06-01 Torbjorn Granlund <tege@swox.com> 18129 18130 * mpn/powerpc32/lshift.asm: Reformat code. 18131 * mpn/powerpc32/rshift.asm: Reformat code. 18132 181332003-05-30 Kevin Ryde <kevin@swox.se> 18134 18135 * tests/misc.c (tests_start): Set stdout and stderr to unbuffered, to 18136 avoid any chance of losing output on segv etc. 18137 181382003-05-28 Torbjorn Granlund <tege@swox.com> 18139 18140 * mpf/get_str.c: Move label `done' to match TMP_MARK and TMP_FREE. 18141 Remove redundant variable prec. 18142 181432003-05-26 Torbjorn Granlund <tege@swox.com> 18144 18145 * tests/mpz/convert.c: Test bases up to 62. 18146 18147 * tests/mpf/t-conv.c: Test bases up to 62. 18148 18149 * demos/pexpr.c: Don't iterate to get accurate timing. 18150 18151 * mpf/set_str.c (mpn_pow_1_highpart): Cleanup. 18152 18153 * mp_dv_tab.c: Fix typo. 18154 18155 * mpf/get_str.c: Rewrite (now sub-quadratic). 18156 181572003-05-22 Kevin Ryde <kevin@swox.se> 18158 18159 * tests/mpn/t-divrem_1.c: New file. 18160 * tests/mpn/Makefile.am: Add it. 18161 181622003-05-22 Torbjorn Granlund <tege@swox.com> 18163 18164 * config.sub: Recognize viac3* processors. 18165 181662003-05-20 Torbjorn Granlund <tege@swox.com> 18167 18168 * mpn/sparc64/addmul_2.asm: New file. 18169 181702003-05-19 Torbjorn Granlund <tege@swox.com> 18171 18172 * configure.in: Recognize alphaev7* as alphaev67. 18173 18174 * config.guess: Recognize viac3* processors. 18175 * configure.in: Set up path for viac3* processors. 18176 * acinclude.m4 (X86_PATTERN): Include viac3* processors. 18177 181782003-05-19 Kevin Ryde <kevin@swox.se> 18179 18180 * tune/freq.c (freq_pstat_getprocessor): New function. 18181 (freq_all): Use it. 18182 * configure.in (AC_CHECK_HEADERS): Add sys/pstat.h. 18183 (AC_CHECK_FUNCS): Add pstat_getprocessor. 18184 181852003-05-15 Kevin Ryde <kevin@swox.se> 18186 18187 * mpn/generic/mul_fft.c (mpn_mul_fft_decompose): Remove "inline", 18188 since the code is a bit too big. gcc doesn't actually inline when 18189 alloca (TMP_ALLOC) is used anyway. 18190 181912003-05-13 Kevin Ryde <kevin@swox.se> 18192 18193 * gmp.texi (Notes for Particular Systems): Libtool directory is .libs 18194 not _libs for mingw dll. Reported by Andreas Fabri. 18195 181962003-05-07 Kevin Ryde <kevin@swox.se> 18197 18198 * acinclude.m4 (GMP_PROG_CC_WORKS): Add code to generate sse2/xmm code 18199 from gcc -march=pentium4, to check the assembler supports that. 18200 (GMP_GCC_PENTIUM4_SSE2, GMP_OS_X86_XMM): New macros. 18201 * configure.in (pentium4-*-*): Use them to see if gcc -march=pentium4 18202 (with sse2) is ok. 18203 182042003-05-06 Kevin Ryde <kevin@swox.se> 18205 18206 * mpz/com.c: Rate size==0 as UNLIKELY, fix comment to mpn_add_1. 18207 18208 * tune/freq.c (<sys/sysinfo.h>): Include only when needed for 18209 getsysinfo(), to avoid a problem with this file on AIX 5.1. 18210 182112003-05-03 Torbjorn Granlund <tege@swox.com> 18212 18213 * mpf/set_str.c: Do not ignore supposedly superfluous digits (in part 18214 reverting last change). 18215 182162003-05-03 Kevin Ryde <kevin@swox.se> 18217 18218 * gmp.texi: Use @code for files in @cindex entries, it looks nicer 18219 than @file. 18220 18221 * Makefile.am: Note gmp 4.1.1 and 4.1.2 version info. 18222 18223 * configure.in, acinclude.m4 (GMP_CRAY_OPTIONS): New macro for Cray 18224 system setups, letting AC_REQUIRE do its job instead of a hard coded 18225 AC_PROG_EGREP. 18226 18227 * config.guess: Amend fake RANDOM to avoid ". configfsf.guess" which 18228 segfaults on Debian "ash" 0.4.16. 18229 182302003-05-01 Kevin Ryde <kevin@swox.se> 18231 18232 * configure.in (AC_CHECK_FUNCS): Add getsysinfo. 18233 (AC_CHECK_HEADERS): Add sys/sysinfo.h and machine/hal_sysinfo.h. 18234 * tune/freq.c (freq_getsysinfo): New function. 18235 (freq_all): Use it. 18236 (freq_sysctlbyname_i586_freq, freq_sysctlbyname_tsc_freq, 18237 freq_sysctl_hw_cpufrequency, freq_sysctl_hw_model): Set 18238 speed_cycletime before trying to print it, when verbose. 18239 182402003-04-28 Torbjorn Granlund <tege@swox.com> 18241 18242 * mpf/set_str.c: Major overhaul. 18243 (mpn_pow_1_highpart): New helper function, meat extracted from 18244 mpf_set_str. 18245 182462003-04-24 Kevin Ryde <kevin@swox.se> 18247 18248 * acinclude.m4 (GMP_GCC_ARM_UMODSI): Quote result string against m4. 18249 18250 * configure, ltmain.sh, aclocal.m4: Update to libtool 1.5. 18251 18252 * longlong.h (add_ssaaaa) [all]: Remove first "%" commutative in each, 18253 since gcc only supports one per asm. 18254 18255 * printf/doprnt.c: Add M for mp_limb_t. 18256 * tests/misc/t-printf.c: Exercise this. 18257 18258 * tests/mpz/t-cmp_d.c: Test infinities. 18259 * tests/mpf/t-cmp_d.c: New file. 18260 * tests/mpf/Makefile.am: Add it. 18261 18262 * mpz/cmp_d.c, mpz/cmpabs_d.c, mpf/cmp_d.c: NaN invalid, Inf bigger 18263 than any value. 18264 * mpz/set_d.c, mpq/set_d.c, mpf/set_d.c: Nan or Inf invalid. 18265 18266 * configure.in (AC_CHECK_FUNCS): Add raise. 18267 * invalid.c: New file. 18268 * Makefile.am: Add it. 18269 * gmp-impl.h (__gmp_invalid_operation): Add prototype. 18270 (DOUBLE_NAN_INF_ACTION): New macro. 18271 18272 * tests/trace.c, tests/tests.h (d_trace): New function. 18273 * tests/misc.c, tests/tests.h (tests_infinity_d): New function. 18274 * tests/misc.c (mpz_erandomb, mpz_errandomb): Use gmp_urandomm_ui. 18275 18276 * tune/tuneup.c, tune/common.c, tests/devel/try.c: Cast various 18277 mp_size_t values for printf %ld in case mp_size_t==int. Use 18278 gmp_printf for mp_limb_t values. 18279 18280 * gmp.texi (Nomenclature and Types): Add mp_exp_t, mp_size_t, 18281 gmp_randstate_t. Note ulong for bit counts and size_t for byte 18282 counts. Don't bother with @noindent. 18283 (Debugging): New valgrind is getting MMX/SSE. 18284 (Integer Comparisons): mpz_cmp_d and mpz_cmpabs_d on NaNs and Infs. 18285 (Float Comparison): mpf_cmp_d behaviour on NaNs and Infs. 18286 (Low-level Functions): Note with mpn_hamdist what hamming distance is. 18287 (Formatted Output Strings): Add type M. 18288 (Internals): Remove remarks on ulong bits and size_t bytes. Move int 18289 field remarks to ... 18290 (Integer Internals, Float Internals): ... here. 18291 182922003-04-19 Kevin Ryde <kevin@swox.se> 18293 18294 * configure.in (*sparc*-*-* ABI=32): Add umul to extra_functions. 18295 18296 * mpn/x86/p6/mul_basecase.asm: New file. 18297 182982003-04-18 Kevin Ryde <kevin@swox.se> 18299 18300 * configure.in (m68060-*-*): Fallback to gcc -m68000 when -m68060 not 18301 available, and don't use mpn/m68k/mc68020 asm routines. (Avoids 32x32 18302 mul and 64/32 div which trap to the kernel on 68060. Advice by 18303 Richard Zidlicky.) 18304 * mpn/m68k/README: Update notes on directory usage. 18305 18306 * tests/cxx/Makefile.am (TESTS_ENVIRONMENT): Add a hack to let the 18307 test programs run with a shared libgmpxx on openbsd 3.2. 18308 18309 * gmp.texi (Language Bindings): Add Guile. 18310 183112003-04-12 Kevin Ryde <kevin@swox.se> 18312 18313 * configure.in (cygwin*, mingw*, pw32*, os2*): Add 18314 -Wl,--export-all-symbols to GMP_LDFLAGS, no longer the default in 18315 latest mingw and libtool. 18316 18317 * acinclude.m4 (GMP_ASM_COFF_TYPE): New macro. 18318 * configure.in (x86s): Use it. 18319 * mpn/x86/x86-defs.m4 (COFF_TYPE): New macro. 18320 (PROLOGUE_cpu): Use it, for the benefit of mingw DLLs. 18321 18322 * gmp-impl.h (mpn_copyi, mpn_copyd): Add __GMP_DECLSPEC. 18323 18324 * gmp.texi (Known Build Problems): Remove windows test program .exe 18325 repeated built, fixed by new libtool. Remove MacOS C++ shared library 18326 creation, fixed by new libtool. 18327 (Notes for Package Builds, Known Build Problems): Remove DESTDIR notes 18328 on libgmpxx, fixed in new libtool. 18329 183302003-04-10 Torbjorn Granlund <tege@swox.com> 18331 18332 * configure.in: Match turbosparc. 18333 * config.guess: Recognize turbosparc (just for *bsd for now). 18334 183352003-04-09 Kevin Ryde <kevin@swox.se> 18336 18337 * mpf/mul_ui.c [nails]: Call mpf_mul to handle v > GMP_NUMB_MAX. 18338 18339 * tests/mpz/t-mul.c (main): Don't try FFT sizes when FFT disabled via 18340 MP_SIZE_T_MAX, eg. for nails. 18341 18342 * tests/cxx/t-ternary.cc: Split up tests to help compile speed and 18343 memory usage. 18344 18345 * tests/devel/try.c: Print seed under -R, add -E to reseed, use ulong 18346 for seed not uint. 18347 18348 * gmp.texi: Add @: after various abbreviations, more index entries. 18349 (leftarrow): New macro, for non-tex. 18350 (Random State Initialization): Remove commented gmp_randinit_lc, not 18351 going to be implemented. 18352 (Random Number Algorithms): New section. 18353 (References): Add Matsumoto and Nishimura on Mersenne Twister, add 18354 Bertot, Magaud and Zimmermann on GMP Square Root. 18355 183562003-04-06 Kevin Ryde <kevin@swox.se> 18357 18358 * tests/mpz/t-gcd_ui.c: New file. 18359 * tests/mpz/Makefile.am: Add it. 18360 18361 * mpz/gcd_ui.c: Correction to return value on longlong limb systems, 18362 limb might not fit a ulong. 18363 183642003-04-04 Kevin Ryde <kevin@swox.se> 18365 18366 * configure, aclocal.m4, ltmain.sh: Update to libtool cvs snapshot 18367 2003-04-02. 18368 183692003-04-02 Kevin Ryde <kevin@swox.se> 18370 18371 * configure.in (*-*-cygwin*): No longer force lt_cv_sys_max_cmd_len, 18372 libtool has addressed this now. 18373 (AC_PROVIDE_AC_LIBTOOL_WIN32_DLL): Remove this, libtool _LT_AC_LOCK 18374 no longer needs it. 18375 18376 * acinclude.m4 (GMP_PROG_AR): Also set ac_cv_prog_AR and 18377 ac_cv_prog_ac_ct_AR when adding flags to AR, so they're not lost by 18378 libtool's call to AC_CHECK_TOOL. 18379 183802003-04-01 Kevin Ryde <kevin@swox.se> 18381 18382 * configure, aclocal.m4, ltmain.sh: Update to libtool cvs snapshot 18383 2003-03-31. 18384 18385 * configure.in (AC_PROG_F77): Add a dummy AC_PROVIDE to stop libtool 18386 running F77 probes. 18387 18388 * randlc2x.c (gmp_rand_lc_struct): Add comments about what exactly is 18389 in each field. 18390 (randseed_lc): Rename seedp to seedz to avoid confusion with seedp in 18391 the lc function. Suggested by Pedro Gimeno. 18392 (gmp_randinit_lc_2exp): Use __GMP_ALLOCATE_FUNC_TYPE. No need for 18393 "+1" in mpz_init2 of _mp_seed. Don't bother with mpz_init2 for _mp_a. 18394 183952003-03-29 Kevin Ryde <kevin@swox.se> 18396 18397 * configure.in (m68k-*-*): Use -O2, no longer need to fallback to -O. 18398 * acinclude.m4 (GMP_GCC_M68K_OPTIMIZE): Remove macro. 18399 18400 * configure.in (AC_CHECK_TYPES): Add notes on why tested. 18401 18402 * gmp.texi (GMPrefu, GMPpxrefu, GMPreftopu, GMPpxreftopu): New macros, 18403 use them for all external references to get URLs into HTML output. 18404 (Random State Initialization): Add gmp_randinit_set. 18405 (Random State Miscellaneous): New section. 18406 184072003-03-29 Kevin Ryde <kevin@swox.se> 18408 18409 * randbui.c, randmui.c: New files. 18410 * Makefile.am: Add them. 18411 * gmp-h.in (gmp_urandomb_ui, gmp_urandomm_ui): Add prototypes. 18412 * tests/rand/t-urbui.c, tests/rand/t-urmui.c: New files. 18413 * tests/rand/Makefile.am: Add them. 18414 18415 * gmp-impl.h (gmp_randstate_srcptr): New typedef. 18416 (gmp_randfnptr_t): Add randiset_fn. 18417 * randiset.c: New file. 18418 * Makefile.am: Add it. 18419 * gmp-h.in (gmp_randinit_set): Add prototype. 18420 * randlc2x.c, randmt.c: Add gmp_randinit_set support. 18421 * tests/rand/t-iset.c: New file. 18422 * tests/rand/Makefile.am: Add it. 18423 18424 * tests/misc.c, tests/tests.h (call_rand_algs): New function. 18425 184262003-03-27 Kevin Ryde <kevin@swox.se> 18427 18428 * mpz/bin_uiui.c: Use plain "*" for kacc products rather than 18429 umul_ppmm since high not needed, except for an ASSERT now amended. 18430 184312003-03-26 Kevin Ryde <kevin@swox.se> 18432 18433 * demos/expr/exprfr.c (cbrt, cmpabs, exp2, gamma, nextabove, 18434 nextbelow, nexttoward): New functions. 18435 * demos/expr/t-expr.c: Exercise these. 18436 18437 * mpfr/*: Update to mpfr cvs 2003-03-26. 18438 18439 * gmp-impl.h (MPZ_REALLOC): Use UNLIKELY, to expect no realloc. 18440 18441 * tune/time.c (cycles_works_p): Scope variables down to relevant part 18442 to avoid warnings about unused. 18443 18444 * configfsf.guess, configfsf.sub: Update to 2003-02-22. 18445 * config.guess: Fake a $RANDOM variable when running configfsf.guess, 18446 to workaround a problem on m68k NetBSD 1.4.1. 18447 18448 * mpz/fac_ui.c: Remove unused variable "z1". 18449 18450 * tune/freq.c (freq_irix_hinv): Allow "Processor 0" line from IRIX 6.5. 18451 184522003-03-24 Torbjorn Granlund <tege@swox.com> 18453 18454 * randlc2x.c (randget_lc): Remove write-only variable rn. 18455 * mpf/eq.c: Remove write-only variable usign. 18456 * gen-psqr.c (main): Remove write-only variable numb_bits. 18457 184582003-03-17 Torbjorn Granlund <tege@swox.com> 18459 18460 * Makefile.am (libgmp_la_SOURCES): Add mp_dv_tab.c. 18461 (libmp_la_SOURCES): Add mp_dv_tab.c. 18462 18463 * mpn/alpha/invert_limb.asm: Add a few comments. 18464 18465 * mp_dv_tab.c: New file, defining __gmp_digit_value_tab. 18466 18467 * mpz/set_str.c: Get rid of function digit_value_in_base and use table 18468 __gmp_digit_value_tab instead. 18469 * mpz/inp_str.c: Likewise. 18470 * mpf/set_str.c: Likewise. 18471 * mpbsd/min.c: Likewise. 18472 * mpbsd/xtom.c: Likewise. 18473 18474 * mpz/set_str.c: Allow bases <= 62. Return error for invalid bases. 18475 * mpz/inp_str.c: Likewise. 18476 * mpf/set_str.c: Likewise. 18477 * mpz/out_str.c: Likewise. 18478 * mpz/get_str.c: Likewise. 18479 * mpf/get_str.c: Likewise. 18480 18481 * mpz/inp_str.c: Restructure to allocate more string space just 18482 before needed. 18483 * mpbsd/min.c: Likewise. 18484 18485 * longlong.h (__udiv_qrnnd_c): Remove redundant casts. 18486 (32-bit sparc): Test HAVE_HOST_CPU_supersparc in addition to various 18487 sparc_v8 spellings. 18488 184892003-03-17 Kevin Ryde <kevin@swox.se> 18490 18491 * mpfr/*: Update to mpfr cvs 2003-03-17. 18492 184932003-03-15 Kevin Ryde <kevin@swox.se> 18494 18495 * Makefile.am (EXTRA_libgmp_la_SOURCES): Use this for TMP_ALLOC 18496 sources, instead of a libdummy.la. 18497 184982003-03-16 Torbjorn Granlund <tege@swox.com> 18499 18500 * config.guess: Recognize supersparc and microsparc for *BSD systems. 18501 Generalize some superscalar recognition patterns. 18502 185032003-03-14 Torbjorn Granlund <tege@swox.com> 18504 18505 * mpn/sparc64/udiv.asm: New file. 18506 185072003-03-13 Torbjorn Granlund <tege@swox.com> 18508 18509 * mpn/sparc64: Table cycle counts. Update some comments. 18510 18511 * mpn/powerpc64/divrem_1.asm: New file. 18512 185132003-03-10 Torbjorn Granlund <tege@swox.com> 18514 18515 * mpn/generic/mul.c (mpn_mul): Don't blindly expect 18516 MUL_KARATSUBA_THRESHOLD to be a constant. 18517 185182003-03-07 Torbjorn Granlund <tege@swox.com> 18519 18520 * mpn/generic/mul.c (mpn_mul): New operand splitting code for 18521 avoiding cache misses when un >> MUL_KARATSUBA_THRESHOLD > vn. 18522 (MUL_BASECASE_MAX_UN): New #define, default to 500 for now. 18523 185242003-03-07 Kevin Ryde <kevin@swox.se> 18525 18526 * Makefile.am: Put gmp.h and mp.h under $(exec_prefix)/include. 18527 * gmp.texi (Build Options): Add notes on this. 18528 Reported by Vincent Lefèvre. 18529 185302003-03-06 Kevin Ryde <kevin@swox.se> 18531 18532 * configure.in (alpha*-*-* gcc): Add asm option before testing -mcpu, 18533 for the benefit of gcc 2.9-gnupro-99r1 on alphaev68-dec-osf5.1 which 18534 doesn't otherwise put the assembler in the right mode for -mcpu=ev6. 18535 185362003-03-05 Torbjorn Granlund <tege@swox.com> 18537 18538 * mpn/powerpc32/powerpc-defs.m4: Set up renaming for v registers. 18539 18540 * mpz/powm.c (redc): Instead of repeated mpn_incr_u invocations, 18541 accumulate carries and add at the end. 18542 (mpz_powm): Trim tp allocation, now as redc doesn't need carry guard. 18543 185442003-02-25 Torbjorn Granlund <tege@swox.com> 18545 18546 * mpn/x86/pentium4/copyd.asm: Correct header comment. 18547 18548 * mpn/arm/addmul_1.asm: Correct cycle counts. 18549 * mpn/arm/submul_1.asm: Likewise. 18550 185512003-02-20 Kevin Ryde <kevin@swox.se> 18552 18553 * demos/factorize.c (factor_using_pollard_rho): Test k>0 to avoid 18554 infinite loop if k=0 and gcd!=1 reveals a factor. Reported by John 18555 Pongsajapan. 18556 18557 * gmp.texi, fdl.texi: Update to FDL version 1.2. 18558 185592003-02-18 Torbjorn Granlund <tege@swox.com> 18560 18561 * mpn/arm/mul_1.asm: Fix typo introduced in last change. 18562 185632003-02-17 Torbjorn Granlund <tege@swox.com> 18564 18565 * mpn/ia64/gmp-mparam.h: Retune. 18566 18567 * mpn/sparc64/copyi.asm: Add some header comments. 18568 * mpn/sparc64/copyd.asm: Likewise. 18569 18570 * mpn/arm/mul_1.asm: Put vl operand last for umull/umlal. 18571 Add some header comments. 18572 * mpn/arm/addmul_1.asm: Rewrite. 18573 * mpn/arm/submul_1.asm: Rewrite. 18574 * mpn/arm/gmp-mparam.h: Retune. 18575 185762003-02-16 Torbjorn Granlund <tege@swox.com> 18577 18578 * mpn/arm/copyi.asm: New file. 18579 * mpn/arm/copyd.asm: New file. 18580 185812003-02-16 Kevin Ryde <kevin@swox.se> 18582 18583 * acinclude.m4 (GMP_C_DOUBLE_FORMAT): Tolerate incorrect last data 18584 byte seen on an arm system. 18585 185862003-02-15 Torbjorn Granlund <tege@swox.com> 18587 18588 * mpn/arm/gmp-mparam.h: Retune. 18589 185902003-02-13 Torbjorn Granlund <tege@swox.com> 18591 18592 * mpn/powerpc32/750/com_n.asm: Add more cycle counts. 18593 185942003-02-13 Kevin Ryde <kevin@swox.se> 18595 18596 * configure.in (AC_PREREQ): Bump to 2.57. 18597 18598 * configure.in, acinclude.m4 (GMP_GCC_WA_OLDAS): New macro, applying 18599 -Wa,-oldas only when necessary. 18600 18601 * configure.in (powerpc*-*-*): Don't use -Wa,-mppc with gcc, it 18602 overrides options recent gcc adds for -mcpu, making generated code 18603 fail to assemble. 18604 18605 * tune/tuneup.c (mpn_fft_table): Remove definition, it's in mul_fft.c. 18606 186072003-02-12 Torbjorn Granlund <tege@swox.com> 18608 18609 * mpn/x86/pentium4/sse2/gmp-mparam.h: Retune. 18610 * mpn/x86/k7/gmp-mparam.h: Retune. 18611 * mpn/x86/k6/gmp-mparam.h: Retune. 18612 * mpn/x86/p6/gmp-mparam.h: Retune. 18613 * mpn/x86/p6/mmx/gmp-mparam.h: Retune. 18614 18615 * tests/mpz/t-mul.c (main): Rewrite FFT testing code. 18616 186172003-02-10 Torbjorn Granlund <tege@swox.com> 18618 18619 * config.guess: Recognize "power2" systems. 18620 18621 * mpn/powerpc64/gmp-mparam.h: Fix indentation. 18622 * mpn/power/gmp-mparam.h: Retune. 18623 * mpn/alpha/ev6/nails/gmp-mparam.h: Retune. 18624 * mpn/sparc64/gmp-mparam.h: Retune. 18625 * mpn/pa64/gmp-mparam.h: Retune. 18626 * mpn/sparc32/v8/supersparc/gmp-mparam.h: Retune. 18627 * mpn/sparc32/v8/gmp-mparam.h: Retune. 18628 * mpn/mips64/gmp-mparam.h: Retune. 18629 * mpn/alpha/ev6/gmp-mparam.h: Retune. 18630 * mpn/powerpc32/gmp-mparam.h: Retune. 18631 * mpn/powerpc32/750/gmp-mparam.h: Retune. 18632 * mpn/alpha/ev5/gmp-mparam.h: Retune. 18633 * mpn/m68k/gmp-mparam.h: Retune. 18634 * mpn/cray/gmp-mparam.h: Set GET_STR_PRECOMPUTE_THRESHOLD. 18635 18636 * configure.in: Undo this, problem doesn't happen any more: 18637 (mips64*-*-*): Pass just -O1 to cc, to work around compiler bug. 18638 186392003-02-03 Kevin Ryde <kevin@swox.se> 18640 18641 * gmp-impl.h (MPN_NORMALIZE, MPN_NORMALIZE_NOT_ZERO): Add parens 18642 around macro parameters. Reported by Jason Moxham. 18643 186442003-02-01 Kevin Ryde <kevin@swox.se> 18645 18646 * gmp.texi (Low-level Functions): No overlap permitted by mpn_mul_n. 18647 Reported by Jason Moxham. 18648 (Formatted Input Strings): Correction to strtoul cross reference 18649 formatting. 18650 (BSD Compatible Functions): Add index entry for MINT. 18651 186522003-01-29 Torbjorn Granlund <tege@swox.com> 18653 18654 * gmp-impl.h (mpn_mul_fft): Now returns int. 18655 186562003-01-29 Paul Zimmermann <Paul.Zimmermann@loria.fr> 18657 18658 * mpn/generic/mul_fft.c: Major rewrite. 18659 186602003-01-25 Kevin Ryde <kevin@swox.se> 18661 18662 * config.guess (powerpc*-*-*): Remove $dummy.core file when mfpvr 18663 fails on NetBSD. 18664 (trap): Remove $dummy.core on abnormal termination too. 18665 18666 * mpfr/*: Update to mpfr cvs 2003-01-25. 18667 186682003-01-24 Torbjorn Granlund <tege@swox.com> 18669 18670 * mpn/ia64/README: Update cycle counts to match current code. 18671 186722003-01-18 Kevin Ryde <kevin@swox.se> 18673 18674 * mpfr/*: Update to mpfr cvs 2003-01-18. 18675 186762003-01-17 Torbjorn Granlund <tege@swox.com> 18677 18678 * gmp.texi: Canonicalize URLs. 18679 186802003-01-15 Kevin Ryde <kevin@swox.se> 18681 18682 * gmp.texi (Notes for Particular Systems): Add hardware floating point 18683 precision mode. 18684 18685 * mpfr/*, configure, aclocal.m4, config.in: Update to mpfr cvs 18686 2003-01-15. 18687 186882003-01-11 Kevin Ryde <kevin@swox.se> 18689 18690 * mpfr/*: Update to mpfr cvs 2003-01-11. 18691 186922003-01-09 Kevin Ryde <kevin@swox.se> 18693 18694 * mpfr/get_str.c: Update to mpfr cvs 2003-01-09. 18695 18696 * doc/configuration: Various updates. 18697 186982003-01-06 Torbjorn Granlund <tege@swox.com> 18699 18700 * mpn/alpha/copyi.asm: Avoid `nop' mnemonic, unsupported on Cray. 18701 * mpn/alpha/copyd.asm: Likewise. 18702 187032003-01-05 Kevin Ryde <kevin@swox.se> 18704 18705 * demos/expr/t-expr.c (check_r): Tolerate mpfr_set_str new return 18706 value. 18707 18708 * configure, aclocal.m4 (*-*-osf4*, *-*-osf5*): Regenerate with 18709 libtool patch to avoid bash printf option problem when building shared 18710 libraries with cxx. 18711 18712 * configure.in (pentium4-*-*): Use "-march=pentium4 -mno-sse2" since 18713 sse2 causes buggy code from gcc 3.2.1 and is only supported on new 18714 enough kernels. 18715 18716 * acinclude.m4 (GMP_PROG_NM): Add some notes about failures, per 18717 report by Krzysztof Kozminski. 18718 18719 * gmp-h.in (mpz_mdivmod_ui, mpz_mmod_ui): Add parens around "r". 18720 18721 * gmp-h.in (__GMP_CAST): New macro, clean to g++ -Wold-style-cast. 18722 (GMP_NUMB_MASK, mpz_cmp_si, mpq_cmp_si, mpz_odd_p, mpn_divexact_by3, 18723 mpn_divmod): Use it. Reported by Krzysztof Kozminski. 18724 (mpz_odd_p): No need for the outermost cast to "int". 18725 * tests/cxx/t-cast.cc: New file. 18726 * tests/cxx/Makefile.am: Add it. 18727 187282003-01-04 Kevin Ryde <kevin@swox.se> 18729 18730 * mpfr/set_str.c: Update to mpfr cvs 2003-01-04. 18731 18732 * demos/expr/exprfra.c (e_mpfr_number): Tolerate recent mpfr_set_str 18733 returning count of characters accepted. 18734 187352003-01-03 Torbjorn Granlund <tege@swox.com> 18736 18737 * mpn/alpha/copyi.asm: New file. 18738 * mpn/alpha/copyd.asm: New file. 18739 187402003-01-03 Kevin Ryde <kevin@swox.se> 18741 18742 * demos/expr/t-expr.c: Use __gmpfr on some mpfr internals that have 18743 changed. 18744 18745 * mpfr/*, aclocal.m4, config.in, configure: Update to mpfr cvs 18746 2003-01-03. 18747 18748 * gmp.texi (Introduction to GMP): Mention release announcements 18749 mailing list, and put home page and ftp before mailing lists. 18750 187512002-12-28 Torbjorn Granlund <tege@swox.com> 18752 18753 * mpn/generic/mul_fft.c (mpn_fft_next_size): Simplify. 18754 187552002-12-28 Kevin Ryde <kevin@swox.se> 18756 18757 * acinclude.m4 (M68K_PATTERN): New macro. 18758 (GMP_GCC_M68K_OPTIMIZE): Use it to avoid m6811 and friends. 18759 * configure.in: Ditto. 18760 18761 * tests/mpz/t-import.c, tests/mpz/t-export.c: Use '\xHH' to avoid 18762 warnings about char overflows. 18763 * acinclude.m4 (GMP_C_DOUBLE_FORMAT): Ditto. 18764 187652002-12-28 Pedro Gimeno <pggimeno@wanadoo.es> 18766 18767 * randmt.c (randseed_mt, default_state): Fix off-by-one bug on padding. 18768 (randseed_mt): Add ASSERT checking result of mpz_export. 18769 187702002-12-24 Kevin Ryde <kevin@swox.se> 18771 18772 * gmp.texi (Integer Import and Export): Clarify treatment of signs, 18773 reported by Kent Boortz. 18774 18775 * randmt.c: Use gmp_uint_least32_t. 18776 (randseed_mt): Add nails to mpz_export in case mt[i] more than 32 bits. 18777 18778 * gmp-impl.h (gmp_uint_least32_t): New typedef, replacing GMP_UINT32. 18779 * configure.in (AC_CHECK_TYPES): Add uint_least32_t. 18780 (AC_CHECK_SIZEOF): Add unsigned short. 18781 187822002-12-22 Kevin Ryde <kevin@swox.se> 18783 18784 * gmp-impl.h (ULONG_PARITY) [generic C]: Mask result to a single bit. 18785 (ULONG_PARITY) [_CRAY, __ia64]: New macros. 18786 * tests/t-parity.c: New test. 18787 * tests/Makefile.am (check_PROGRAMS): Add it. 18788 18789 * longlong.h (count_trailing_zeros) [ia64]: New macro. 18790 18791 * tests/t-count_zeros.c (check_various): Remove unused variable "n". 18792 18793 * mpn/x86/README: Revise notes on PIC, PLT and GOT. 18794 18795 * demos/perl/GMP.xs, demos/perl/GMP.pm, demos/perl/test.pl: Add "mt" 18796 to GMP::Rand::randstate. 18797 187982002-12-22 Pedro Gimeno <pggimeno@wanadoo.es> 18799 18800 * randmt.c (randseed_mt): Fix bug that might cause the generator to 18801 return all zeros with certain seeds. Fix WARM_UP==0 case. 18802 (gmp_randinit_mt): Initialize to a known state by default. 18803 (randget_mt): Remove check for uninitialized buffer: no longer needed. 18804 (recalc_buffer): Use ?: instead of two-element array. 18805 18806 * tests/rand/t-mt.c: New test. 18807 * tests/rand/Makefile.am (check_PROGRAMS): Add it. 18808 188092002-12-21 Kevin Ryde <kevin@swox.se> 18810 18811 * cxx/osdoprnti.cc: Use <cstdarg> and <cstring> rather than <stdarg.h> 18812 and <string.h>. No need for <stdio.h>. 18813 18814 * demos/expr/expr.c, demos/expr/exprfa.c, demos/expr/exprfra.c, 18815 demos/expr/exprza.c: Use mp_get_memory_functions, not 18816 __gmp_allocate_func etc. 18817 * demos/expr/t-expr.c: Don't use gmp-impl.h. 18818 (numberof): New macro. 18819 18820 * gmp-h.in, gmp-impl.h (__gmp_allocate_func, __gmp_reallocate_func, 18821 __gmp_free_func): Move declarations to gmp-impl.h 18822 18823 * mp_get_fns.c: New file. 18824 * Makefile.am (libgmp_la_SOURCES, libmp_la_SOURCES): Add it. 18825 * gmp-h.in (mp_get_memory_functions): Add prototype. 18826 * gmp.texi (Custom Allocation): Add mp_get_memory_functions, refer to 18827 "free" not "deallocate" function. 18828 * gmpxx.h (struct __gmp_alloc_cstring): Use mp_get_memory_functions, 18829 not __gmp_free_func. 18830 18831 * gmp-impl.h [__cplusplus]: Add <cstring> for strlen. 18832 (gmp_allocated_string): Hold length in a field. 18833 * cxx/osdoprnti.cc, cxx/osmpf.cc: Use this. 18834 188352002-12-20 Torbjorn Granlund <tege@swox.com> 18836 18837 * tests/mpz/t-perfsqr.c (check_sqrt): Print more variables upon 18838 failure. 18839 18840 * mpn/generic/rootrem.c: In Newton loop, pad qp with leading zero. 18841 188422002-12-19 Torbjorn Granlund <tege@swox.com> 18843 18844 * mpn/generic/rootrem.c: Allocate 1.585 (log2(3)) times more space 18845 for pp temporary to allow for worst case overestimate of root. 18846 Add some asserts. 18847 18848 * tests/mpz/t-root.c: Generalize and speed up. 18849 188502002-12-19 Kevin Ryde <kevin@swox.se> 18851 18852 * tests/cxx/t-rand.cc (check_randinit): Add gmp_randinit_mt test. 18853 18854 * gmp-h.in: Don't bother trying to support Compaq C++ in pre-standard 18855 I/O mode. 18856 * gmp.texi (Notes for Particular Systems): Compaq C++ must be used in 18857 "standard" iostream mode. 18858 188592002-12-18 Torbjorn Granlund <tege@swox.com> 18860 18861 * mpn/alpha/mod_34lsub1.asm: Add code for big-endian, using existing 18862 little-endian code only if HAVE_LIMB_LITTLE_ENDIAN is defined. 18863 188642002-12-18 Kevin Ryde <kevin@swox.se> 18865 18866 * configure.in (HAVE_LIMB_BIG_ENDIAN, HAVE_LIMB_LITTLE_ENDIAN): New 18867 defines in config.m4. 18868 188692002-12-17 Torbjorn Granlund <tege@swox.com> 18870 18871 * printf/printffuns.c (gmp_fprintf_reps): Make it actually work 18872 for padding > 256. 18873 188742002-12-17 Kevin Ryde <kevin@swox.se> 18875 18876 * tune/freq.c: Add <string.h> for memcmp. 18877 18878 * mpz/pprime_p.c: Use MPN_MOD_OR_MODEXACT_1_ODD. 18879 18880 * gmp.texi (Formatted Output Strings): %a and %A are C99 not glibc. 18881 (Formatted Input Strings): Type "l" is for double too. Hex floats are 18882 accepted for mpf_t. 18883 (Formatted Input Functions): Describe tightened parse rule, clarify 18884 return value a bit. 18885 18886 * scanf/doscan.c: Add hex floats, tighten matching to follow C99, for 18887 instance "0x" is no longer acceptable to "%Zi". 18888 Rename "invalid" label to avoid "invalid" variable, SunOS cc doesn't 18889 like them the same. 18890 * tests/misc/t-scanf.c: Update tests. 18891 * tests/misc/t-locale.c (check_input): Don't let "0x" appear from fake 18892 decimal point. 18893 18894 * config.guess (sparc*-*-*): Look at BSD sysctl hw.model to recognise 18895 ultrasparcs. 18896 18897 * mpfr/tests/dummy.c: New file. 18898 * mpfr/tests/Makefile.am (libfrtests_a_SOURCES): Add it. 18899 189002002-12-14 Kevin Ryde <kevin@swox.se> 18901 18902 * mpbsd/Makefile.am (nodist_libmpbsd_la_SOURCES): Move these mpz 18903 sources to libmpbsd_la_SOURCES directly, automake 1.7.2 now gets the 18904 ansi2knr setups right for sources in other directories. 18905 18906 * mpfr/tests/Makefile.am: Add libfrtests.a in preparation for new mpfr. 18907 189082002-12-13 Kevin Ryde <kevin@swox.se> 18909 18910 * mpfr/Makefile.am (mpfr_TEXINFOS, AM_MAKEINFOFLAGS): Allow for 18911 fdl.texi in recent mpfr. 18912 18913 * configure.in (AC_PROG_EGREP): Ensure this is run outside the Cray 18914 conditional AC_EGREP_CPP. 18915 18916 * configure.in (alpha*-*-*): Use gcc -Wa,-oldas if it works, to avoid 18917 problems with new compaq "as" on OSF 5.1. 18918 18919 * mpn/Makefile.am (EXTRA_DIST): Remove Makeasm.am, automake 1.7.2 does 18920 it automatically. 18921 18922 * acinclude.m4 (AC_LANG_FUNC_LINK_TRY(C)): Remove this hack, fixed by 18923 autoconf 2.57. 18924 18925 * configure.in (AC_CONFIG_LIBOBJ_DIR): Set to mpfr, for the benefit of 18926 new mpfr using LIBOBJ. 18927 18928 * configure.in: (AM_INIT_AUTOMAKE): Use "gnu no-dependencies 18929 $(top_builddir)/ansi2knr". 18930 * */Makefile.am (AUTOMAKE_OPTIONS): Remove, now in configure.in. 18931 18932 * configure, config.in, INSTALL.autoconf: Update to autoconf 2.57. 18933 * */Makefile.in, configure, aclocal.m4, install-sh, mkinstalldirs: 18934 Update to automake 1.7.2. 18935 18936 * gmp.texi (Build Options): Add hppa64 to cpu types. 18937 (ABI and ISA): Add gcc to hppa 2.0. 18938 (Debugging): Add maximum debuggability config options. 18939 (Language Bindings): Add Arithmos, reported by Johan Vervloet. 18940 (Formatted Output Strings): 128 bits is about 40 digits, ll is only 18941 for long long not long double. 18942 (Formatted Input Strings): ll is only for long long not long double. 18943 18944 * mpz/divis.c, mpz/divis_ui.c, mpz/cong.c, mpz/cong_ui.c: Allow d=0, 18945 under the rule n==c mod d iff exists q satisfying n=c+q*d. 18946 * gmp.texi (Integer Division): Describe this. 18947 Suggested by Jason Moxham. 18948 189492002-12-13 Pedro Gimeno <pggimeno@wanadoo.es> 18950 18951 * randlc2x.c (lc): Remove check for seedn < an, which is now 18952 superfluous. Add ASSERT to ensure it's correct. Add ASSERT to check 18953 precondition of __GMPN_ADD. 18954 (gmp_randinit_lc_2exp): Avoid reallocation by allocating one extra bit 18955 for both seed and a. Simplify seedn < p->_cn case. 18956 18957 * tests/rand/t-lc2exp.c (check_bigs): Test negative seeds. 18958 189592002-12-12 Torbjorn Granlund <tege@swox.com> 18960 18961 * mpn/pa32/pa-defs.m4 (PROLOGUE_cpu): Zap spurious argument to `.proc'. 18962 Add empty `.callinfo'. 18963 189642002-12-11 Torbjorn Granlund <tege@swox.com> 18965 18966 * mpn/x86/pentium4/sse2/addmul_1.asm: Don't reuse `ret' symbol for a 18967 label. 18968 189692002-12-11 Kevin Ryde <kevin@swox.se> 18970 18971 * configure.in (hppa*-*-*): Don't use gcc -mpa-risc-2-0 in ABI=1.0. 18972 18973 * mpn/pa32/pa-defs.m4: New file, arranging for .proc/.procend. 18974 * configure.in (hppa*-*-*): Use it. 18975 18976 * printf/doprnt.c: Comments on "ll" versus "L". 18977 18978 * tests/mpz/t-div_2exp.c: Reduce tests, especially the random ones. 18979 189802002-12-11 Torbjorn Granlund <tege@swox.com> 18981 18982 * mpz/get_d.c (limb2dbl): New macro for conversion to `double'. 18983 Define it to something non-trivial for 64-bit hppa. 18984 * mpq/get_d.c: Likewise. 18985 * mpf/get_d.c: Likewise. 18986 18987 * mpn/x86/pentium4/sse2/addmul_1.asm: Unroll to save one c/l. 18988 189892002-12-09 Kevin Ryde <kevin@swox.se> 18990 18991 * tune/Makefile.am: Don't use -static under --disable-static, it tends 18992 not to work. 18993 * configure.in (ENABLE_STATIC): New AM_CONDITIONAL. 18994 18995 * gmp-h.in: Use <iostream> instead of <iosfwd> with Compaq C++ in 18996 pre-standard I/O mode. 18997 18998 * tests/mpz/t-jac.c, tests/mpz/t-scan.c: Reduce tests. 18999 190002002-12-08 Kevin Ryde <kevin@swox.se> 19001 19002 * configure.in (*-*-ultrix*): Remove forcible --disable-shared, 19003 believe this was a generic problem with libtool, now gone. 19004 190052002-12-08 Torbjorn Granlund <tege@swox.com> 19006 19007 * gmp-impl.h (USE_LEADING_REGPARM): Disable for PIC code generation. 19008 190092002-12-07 Torbjorn Granlund <tege@swox.com> 19010 19011 * tests/cxx/t-misc.cc (check_mpq): Use 0/1 for canonical 0 in 19012 mpq_cmp_ui calls. 19013 19014 * configure.in (hppa2.0*-*-*): Pass +O2 instead of +O3 to work around 19015 compiler bug with mpfr/tests/tdiv. 19016 190172002-12-07 Kevin Ryde <kevin@swox.se> 19018 19019 * configure.in (hppa2.0*-*-* ABI=2.0n): Make -mpa-risc-2-0 optional. 19020 New hppa-level-2.0 test using GMP_HPPA_LEVEL_20 to detect assembler 19021 support for 2.0n. 19022 * acinclude.m4 (GMP_PROG_CC_WORKS): Add code that provokes an error 19023 from gcc -mpa-risc-2-0 if the assembler doesn't know 2.0 instructions. 19024 (GMP_HPPA_LEVEL_20): New macro. 19025 190262002-12-07 Pedro Gimeno <pggimeno@wanadoo.es> 19027 19028 * gmp-impl.h (gmp_randfnptr_t.randseed_fn) Return void. 19029 (LIMBS_PER_ULONG, MPN_SET_UI): New macros. 19030 (MPZ_FAKE_UI): Rename couple of parameters. 19031 19032 * randlc2x.c (gmp_rand_lc_struct): _mp_c and _mp_c_limbs replaced 19033 with mpn style _cp and _cn. All callers changed. 19034 (randseed_lc): Fix limbs(seed) > bits_to_limbs(m2exp) case. 19035 Remove return value. 19036 (gmp_randinit_lc_2exp): Attempt to avoid redundant reallocation. 19037 19038 * randmt.c (mangle_seed): New function by Kevin. 19039 (randseed_mt): Use it instead of mpz_powm, for performance. Remove 19040 return value. Remove commented out code (an inferior alternative to 19041 mpz_export). 19042 19043 * randsdui.c (gmp_randseed_ui): Use MPZ_FAKE_UI. 19044 19045 * tests/rand/t-lc2exp.c (check_bigm, check_bigs): New tests. 19046 * tests/rand/t-urndmm.c: Add L to constants in calls, for K&R. 19047 190482002-12-06 Torbjorn Granlund <tege@swox.com> 19049 19050 * configure.in: Remove -g. 19051 (hppa*-*-*): Pass -Wl,+vnocompatwarnings with +DA2.0. 19052 190532002-12-05 Torbjorn Granlund <tege@swox.com> 19054 19055 * mpn/pa64/sqr_diagonal.asm: Remove .entry, .proc, .procend. 19056 * mpn/pa64/udiv.asm: Likewise. 19057 190582002-12-05 Kevin Ryde <kevin@swox.se> 19059 19060 * mpn/pa64/sub_n.asm: Remove space in "sub, db" which gas objects to. 19061 * mpn/pa64/*.asm, tune/hppa2.asm: Use ".level 2.0" for 2.0n, since gas 19062 doesn't like ".level 2.0N". 19063 19064 * configure.in (hppa*-*-*): Group path and flags choices, for clarity. 19065 (hppa1.0*-*-*): Use gcc -mpa-risc-1-0 when available. 19066 (hppa2.0*-*-*): Ditto -mpa-risc-2-0. 19067 (*-*-hpux*): Exclude ABI=2.0w for hpux[1-9] and hpux10, rather than 19068 the converse of allowing it for hpux1[1-9]; ie. list the bad systems 19069 rather than try to guess the good systems. 19070 (hppa2.0*-*-*) [ABI=2.0n ABI=2.0w]: Add gcc to likely compilers. 19071 (hppa*-*-*) [gcc]: Test sizeof(long) to differentiate a 32-bit or 19072 64-bit build of the compiler. 19073 (hppa64-*-*): Add this as equivalent to hppa2.0-*-*. 19074 * acinclude.m4 (GMP_C_TEST_SIZEOF): New macro. 19075 19076 * tests/tests.h (ostringstream::str): Must null-terminate 19077 ostrstream::str() for the string constructor. 19078 190792002-12-04 Torbjorn Granlund <tege@swox.com> 19080 19081 * mpn/pa32/hppa1_1/udiv.asm: Don't wrap symbol to INT64 in L() stuff. 19082 19083 * longlong.h (mpn_udiv_qrnnd_r based udiv_qrnnd): Fix typo. 19084 19085 * mpn/powerpc32/powerpc-defs.m4: Define float registers with `f' 19086 prefix. 19087 190882002-12-04 Kevin Ryde <kevin@swox.se> 19089 19090 * gmp.texi (Floating-point Functions): Note the mantissa is binary and 19091 decimal fractions cannot be represented exactly. Suggested by Serge 19092 Winitzki. 19093 (Known Build Problems): Note libtool stripping options when linking. 19094 Reported by Vincent Lefevre. 19095 19096 * acinclude.m4 (GMP_ASM_LABEL_SUFFIX): Don't make an empty result a 19097 failure, that's a valid result. 19098 (GMP_ASM_GLOBL): Establish this from the host cpu type. 19099 (IA64_PATTERN): New macro. 19100 (GMP_PROG_EXEEXT_FOR_BUILD, GMP_C_FOR_BUILD_ANSI, 19101 GMP_CHECK_LIBM_FOR_BUILD): Remove temporary files created. 19102 * configure.in: Use IA64_PATTERN. 19103 191042002-12-03 Torbjorn Granlund <tege@swox.com> 19105 19106 * tune/hppa.asm: Use config.m4. 19107 * tune/hppa2.asm: Likewise. 19108 * tune/hppa2w.asm: Likewise. 19109 19110 * mpn/pa64: Use LDEF. 19111 191122002-12-03 Kevin Ryde <kevin@swox.se> 19113 19114 * INSTALL: Use return rather than exit in the example programs. 19115 Suggested by Richard Dawe. 19116 19117 * gmp.texi (Build Options): Move non-unix notes to ... 19118 (Notes for Particular Systems): ... here. Mention MS Interix, 19119 reported by Paul Leyland. 19120 (C++ Interface Random Numbers): Add gmp_randinit_mt to examples. 19121 19122 * acinclude.m4 (GMP_ASM_LABEL_SUFFIX): Must test empty suffix first, 19123 for the benefit of hppa hp-ux. 19124 (GMP_ASM_UNDERSCORE): Grep the output of "nm" instead of trying to 19125 construct an asm file, and in case of failure fallback on no 19126 underscore and a warning. 19127 19128 * longlong.h (count_leading_zeros, count_trailing_zeros) [ev67, ev68]: 19129 Restrict __asm__ ctlz and cttz to __GNUC__. 19130 19131 * gen-psqr.c (HAVE_CONST, const): New macros. 19132 19133 * tests/cxx/t-rand.cc (check_randinit): Add gmp_randinit_mt. 19134 191352002-12-02 Torbjorn Granlund <tege@swox.com> 19136 19137 * gmp-impl.h: Split popc_limb again, combined version gives too many 19138 compiler warnings. 19139 191402002-12-01 Torbjorn Granlund <tege@swox.com> 19141 19142 * mpn/generic/gcdext.c (div1): Disable unused function. 19143 19144 * mpz/root.c: Don't include stdlib.h or longlong.h. 19145 * mpz/rootrem.c: Likewise. 19146 19147 * extract-dbl.c: abort => ASSERT_ALWAYS. 19148 * mpz/set_d.c: Likewise. 19149 * mpn/generic/tdiv_qr.c: Likewise. 19150 19151 * gen-psqr.c (f_cmp_fraction, f_cmp_divisor): Change parameter to 19152 `const void *', to match qsort spec. 19153 191542002-12-01 Kevin Ryde <kevin@swox.se> 19155 19156 * gmp.texi (Integer Division): Fix a couple of @math's for tex. 19157 Use @dots in more places. 19158 19159 * tests/cxx/t-locale.cc: Test non std::locale systems too. 19160 * tests/cxx/clocale.c: New file, reinstating what was localeconv.c, 19161 and subverting nl_langinfo too. 19162 * tests/cxx/Makefile.am (t_locale_SOURCES): Add it. 19163 19164 * tests/tests.h (ostringstream, istringstream): Provide fakes of these 19165 if <sstream> not available. 19166 * tests/cxx/t-locale.cc, tests/cxx/t-ostream.cc: Remove <sstream>. 19167 * configure.in (AC_CHECK_HEADERS) [C++]: Add <sstream>. 19168 191692002-11-30 Torbjorn Granlund <tege@swox.com> 19170 19171 * printf/doprnt.c (__gmp_doprnt): Comment out a `break' to shut up 19172 compiler warnings. 19173 19174 * mpn/ia64/invert_limb.asm: Add `many' hints to return insns. 19175 19176 * mpn/ia64/divrem_1.asm: Allocate more local registers; put b0 in 19177 one of them. 19178 19179 * mpn/ia64/popcount.asm: Properly restore register ar.lc. 19180 19181 * longlong.h (umul_ppmm) [ia64]: Form both product parts in asm. 19182 19183 * mpz/bin_uiui.c: Cast umul_ppmm operands. 19184 19185 * scanf/doscan.c (gmpscan): Remove unused label store_get_digits. 19186 19187 * gmp-impl.h: #undef MIN and MAX before #defining. 19188 19189 * mpn/ia64/copyi.asm: Add `;' after bundle declarators. 19190 * mpn/ia64/copyd.asm: Likewise. 19191 19192 * mpn/ia64/divrem_1.asm: Add some syntax to placid the HP-UX assembler. 19193 191942002-11-30 Kevin Ryde <kevin@swox.se> 19195 19196 * configure.in (AC_CHECK_HEADERS): Add nl_types.h. 19197 * tests/misc/t-locale.c: Use this, for nl_item on netbsd 1.4.1. 19198 191992002-11-29 Torbjorn Granlund <tege@swox.com> 19200 19201 * tests/devel/addmul_1.c: Provide prototype for mpn_print. 19202 (OPS): Account for function overhead. 19203 * tests/devel/{submul_1.c,mul_1.c,add_n.c,sub_n.c}: Likewise. 19204 19205 * mpn/ia64/addmul_1.asm: Rewrite. 19206 192072002-11-28 Torbjorn Granlund <tege@swox.com> 19208 19209 * mpn/ia64/sqr_diagonal.asm: Don't allocate any registers. 19210 19211 * mpn/ia64/submul_1.asm: Adapt to Itanium 2. 19212 19213 * mpn/ia64/mul_1.asm: Fix typo in HAVE_ABI_32 code. 19214 19215 * mpn/ia64/add_n.asm: Rewrite. 19216 * mpn/ia64/sub_n.asm: Rewrite. 19217 192182002-11-28 Kevin Ryde <kevin@swox.se> 19219 19220 * mpn/Makefile.am (nodist_EXTRA_libmpn_la_SOURCES): Use this rather 19221 than libdummy. 19222 * tests/Makefile.am (EXTRA_libtests_la_SOURCES): Use this for 19223 x86call.asm and x86check.c rather than libdummy. 19224 192252002-11-27 Torbjorn Granlund <tege@swox.com> 19226 19227 * tests/mpz/t-mul.c: Implement reference Karatsuba multiplication. 19228 Rewrite testing scheme to run fewer really huge tests. 19229 192302002-11-26 Torbjorn Granlund <tege@swox.com> 19231 19232 * tests: Decrease repetition count for some of the slowest tests. 19233 19234 * mpn/ia64/divrem_1.asm: New file. 19235 192362002-11-25 Torbjorn Granlund <tege@swox.com> 19237 19238 * mpfr/tests/tdiv.c: Decrease number of performed tests. 19239 192402002-11-23 Torbjorn Granlund <tege@swox.com> 19241 19242 * mpn/ia64/mul_1.asm: Rewrite. 19243 192442002-11-23 Kevin Ryde <kevin@swox.se> 19245 19246 * mpn/ia64/README: Add some references. 19247 19248 * gmp.texi (Build Options): Add itanium and itanium2, mention DocBook 19249 and XML from makeinfo, add texinfo top level cross reference. 19250 (Integer Division): Try to clarify 2exp functions a bit. 19251 (C++ Interface Floats): Giving bad string to constructor is undefined. 19252 (C++ Interface Integers, C++ Interface Rationals): Ditto, and show 19253 default base in prototype, not the description. 19254 19255 * config.sub, config.guess, configure.in (itanium, itanium2): New cpu 19256 types. 19257 19258 * tests/misc/t-printf.c, tests/misc/t-scanf.c (check_misc): Suppress 19259 %zd test on glibc prior to 2.1, it's not supported. 19260 192612002-11-22 Torbjorn Granlund <tege@swox.com> 19262 19263 * mpn/ia64/copyi.asm: Optimize for Itanium 2. 19264 * mpn/ia64/copyd.asm: Likewise. 19265 192662002-11-20 Torbjorn Granlund <tege@swox.com> 19267 19268 * mpn/ia64/sqr_diagonal.asm: New file. 19269 19270 * mpn/ia64/submul_1.asm: Handle vl == 0 specially. 19271 192722002-11-20 Kevin Ryde <kevin@swox.se> 19273 19274 * tests/cxx/t-locale.cc: Test with locales imbued into stream, use 19275 <sstream>, eliminated some C-isms. istream tests disabled, not yet 19276 locale-ized. 19277 * tests/cxx/Makefile.am (t_locale_SOURCES): Remove localeconv.c. 19278 * tests/cxx/localeconv.c: Remove file. 19279 19280 * configure.in (AC_CHECK_TYPES) [C++]: Add std::locale. 19281 * printf/doprntf.c: Add decimal point parameter, remove localeconv use. 19282 * gmp-impl.h (__gmp_doprnt_mpf): Update prototype, bump symbol to 19283 __gmp_doprnt_mpf2 to protect old libgmpxx. 19284 * cxx/osmpf.cc: Use this with ostream locale decimal_point facet. 19285 * printf/doprnt.c: Ditto, with GMP_DECIMAL_POINT. 19286 19287 * gmp-h.in: More comments on __declspec for windows DLLs. 19288 19289 * mpf/set_str.c, scanf/doscan.c: Cast through "unsigned char" for 19290 decimal point string, same as input chars. 19291 19292 * configure.in (AC_CHECK_HEADERS): Add langinfo.h. 19293 (AC_CHECK_FUNCS): Add nl_langinfo. 19294 * gmp-impl.h (GMP_DECIMAL_POINT): New macro. 19295 * mpf/out_str.c, mpf/set_str.c, scanf/doscan.c: Use it, and don't 19296 bother with special code for non-locale systems. 19297 * tests/misc/t-locale.c: Subvert nl_langinfo too. 19298 19299 * configure.in, acinclude.m4 (GMP_ASM_X86_GOT_UNDERSCORE): New macro. 19300 * mpn/x86/x86-defs.m4 (_GLOBAL_OFFSET_TABLE_): New macro, inserting 19301 extra underscore for OpenBSD. 19302 * mpn/x86/README (_GLOBAL_OFFSET_TABLE_): Update notes. 19303 Reported by Christian Weisgerber. 19304 19305 * tests/cxx/t-rand.cc (check_randinit): New function, collecting up 19306 constructor tests. 19307 19308 * tests/cxx/t-ostream.cc: Use <sstream> instead of <strstream>, use 19309 compare instead of strcmp. 19310 19311 * gmpxx.h (__gmp_randinit_lc_2exp_size_t): Return type is int. 19312 193132002-11-18 Kevin Ryde <kevin@swox.se> 19314 19315 * tune/speed.c (r_string): Use CNST_LIMB with <N>bits, spotted by 19316 Torbjorn. 19317 193182002-11-19 Torbjorn Granlund <tege@swox.com> 19319 19320 * mpn/ia64/mul_1.asm: Remove redundant cmp from prologue code. 19321 Streamline prologue. 19322 * mpn/ia64/addmul_1.asm: Likewise. 19323 * mpn/ia64/submul_1.asm: New file. 19324 * mpn/ia64/submul_1.c: Remove. 19325 193262002-11-17 Torbjorn Granlund <tege@swox.com> 19327 19328 * mpn/generic/popham.c: New file, using new faster algorithm. 19329 * mpn/generic/popcount.c: Remove. 19330 * mpn/generic/hamdist.c: Remove. 19331 19332 * mpn/ia64/addmul_1.asm: Don't clobber callee-saves register f16. 19333 * mpn/ia64/mul_1.asm: Likewise. 19334 19335 * mpn/ia64/addmul_1.asm: Add pred.rel declarations. Resolve RAW 19336 hazards for condition code registers, duplicating code as needed. Add 19337 prediction to all branches. 19338 * mpn/ia64/mul_1.asm: Likewise. 19339 * mpn/ia64/add_n.asm: Likewise. 19340 * mpn/ia64/sub_n.asm: Likewise. 19341 * mpn/ia64/copyi.asm: Likewise. 19342 * mpn/ia64/copyd.asm: Likewise. 19343 19344 * mpn/generic/random2.c: Add a cast to silence some compilers. 19345 193462002-11-16 Torbjorn Granlund <tege@swox.com> 19347 19348 * mpz/powm.c: Cap allocation by limiting k to 10 (512 precomputed 19349 values). 19350 193512002-11-16 Kevin Ryde <kevin@swox.se> 19352 19353 * configure.in, gmp.texi: Remove powerpc64 ABI=32L, doesn't work and 19354 is unlikely to ever do so. 19355 * configure.in: Allow ABI=32 for powerpc64. 19356 Reported by David Edelsohn. 19357 193582002-11-14 Kevin Ryde <kevin@swox.se> 19359 19360 * mpn/Makefile.am (nodist_libdummy_la_SOURCES): Add addmul_2.c 19361 addmul_3.c addmul_4.c addmul_5.c addmul_6.c addmul_7.c addmul_8.c. 19362 19363 * gmp-h.in (__GMP_DECLSPEC_EXPORT, __GMP_DECLSPEC_IMPORT) [__GNUC__]: 19364 Use __dllexport__ and __dllimport__ to keep out of application 19365 namespace. 19366 193672002-11-14 Gerardo Ballabio <gerardo.ballabio@unimib.it> 19368 19369 * gmpxx.h (__gmp_randinit_default_t, __gmp_randinit_lc_2exp_t, 19370 __gmp_randinit_lc_2exp_size_t): Use extern "C" { typedef ... }, for 19371 the benefit of g++ prior to 3.2. 19372 193732002-11-12 Kevin Ryde <kevin@swox.se> 19374 19375 * gmpxx.h (gmp_randclass constructors): Patch from Roberto Bagnara to 19376 use extern "C" on C function pointer arguments. 19377 193782002-11-09 Kevin Ryde <kevin@swox.se> 19379 19380 * configure.in, Makefile.am, printf/Makefile.am, 19381 printf/repl-vsnprintf.c: Handle vsnprintf replacement with C 19382 conditionals. 19383 19384 * acinclude.m4 (AC_LANG_FUNC_LINK_TRY(C)): Workaround troubles recent 19385 HP cc +O3 causes for AC_CHECK_FUNCS. 19386 19387 * gmp.texi (Notes for Particular Systems): Add Sparc app regs. 19388 (Debugging): Note gcc -fstack options to detect overflow. 19389 (Formatted Output Strings, Formatted Input Strings): Format strings 19390 are not multibyte. 19391 193922002-11-06 Torbjorn Granlund <tege@swox.com> 19393 19394 * mpn/generic/tdiv_qr.c: Remove a bogus assert. 19395 193962002-11-05 Torbjorn Granlund <tege@swox.com> 19397 19398 * mpn/generic/tdiv_qr.c: Remove two dead mpn_divrem_2 calls. 19399 194002002-11-04 Kevin Ryde <kevin@swox.se> 19401 19402 * acinclude.m4 (GMP_C_INLINE): Don't define "inline" for C++. 19403 19404 * demos/expr/expr-impl.h (stdarg.h): Test __DECC same as gmp.h. 19405 19406 * mpbsd/mtox.c, printf/obprintf.c, printf/obvprintf.c, 19407 scanf/vsscanf.c, demos/expr/expr.c, demos/expr/exprf.c, 19408 demos/expr/exprfa.c, demos/expr/exprfr.c, demos/expr/exprq.c, 19409 demos/expr/exprz.c, demos/expr/exprza.c: Add <string.h> for strlen and 19410 memcpy. 19411 194122002-11-02 Kevin Ryde <kevin@swox.se> 19413 19414 * longlong.h: Test __x86_64__ not __x86_64. Reported by Andreas 19415 Jaeger. 19416 19417 * mpz/import.c, mpz/export.c: Use char* subtract from NULL to get 19418 pointer alignment, for the benefit of Cray vector systems. 19419 19420 * cxx/ismpf.cc: Use <clocale>. 19421 * tests/cxx/t-locale.cc: No need to conditionalize <clocale>. 19422 19423 * scanf/doscan.c: Don't use isascii, rely on C99 ctype.h. 19424 19425 * gmp.texi (Build Options): Describe CC_FOR_BUILD, cross reference 19426 texinfo manual. 19427 (ABI and ISA): Add powerpc620 and powerpc630 to powerpc64, add NetBSD 19428 and OpenBSD sparc64. 19429 (Notes for Package Builds): Cross reference libtool manual. 19430 (Notes for Particular Systems): Add OpenBSD to non-MMX versions of gas. 19431 (Known Build Problems): Add MacOS X C++ shared libraries. 19432 194332002-10-31 Kevin Ryde <kevin@swox.se> 19434 19435 * gmp-impl.h, tune/speed.c, tune/speed.h, tune/common.c, tune/many.pl, 19436 tests/devel/try.c, tests/tests.h, tests/refmpn.c (mpn_addmul_5, 19437 mpn_addmul_6, mpn_addmul_7, mpn_addmul_8): Add testing and measuring. 19438 * configure.in (config.in): Add #undefs of HAVE_NATIVE_mpn_addmul_5, 19439 HAVE_NATIVE_mpn_addmul_6, HAVE_NATIVE_mpn_addmul_7, 19440 HAVE_NATIVE_mpn_addmul_8. 19441 (gmp_mpn_functions_optional): Add addmul_5 addmul_6 addmul_7 addmul_8. 19442 19443 * tests/devel/try.c (ASSERT_CARRY): Remove, now in gmp-impl.h 19444 (try_one): Do dest setups after sources, for benefit of 19445 dst0_from_src1. 19446 194472002-11-01 Torbjorn Granlund <tege@swox.com> 19448 19449 * mpn/generic/tdiv_qr.c: Avoid quadratic behaviour for 19450 sub-division when numerator is more than twice the size of the 19451 denominator. Simplify loop logic for the same case. Clean up a 19452 few comments. 19453 194542002-10-29 Torbjorn Granlund <tege@swox.com> 19455 19456 * configure.in (*-cray-unicos*): Pass -hnofastmd again. 19457 194582002-10-25 Torbjorn Granlund <tege@swox.com> 19459 19460 * tests/tadd.c: Disable test of denorms. 19461 194622002-10-23 Linus Nordberg <linus@swox.se> 19463 19464 * gmp.texi (Introduction to GMP): Update section about mailing 19465 lists. 19466 194672002-10-23 Kevin Ryde <kevin@swox.se> 19468 19469 * gmp-h.in (__GMP_ATTRIBUTE_PURE): Suppress this when 19470 __GMP_NO_ATTRIBUTE_CONST_PURE is defined. 19471 * gmp-impl.h (ATTRIBUTE_CONST): Ditto. 19472 * tune/common.c: Use __GMP_NO_ATTRIBUTE_CONST_PURE. 19473 19474 * tune/speed.h, tune/many.pl: Remove ATTRIBUTEs from prototypes. 19475 * tune/speed.h: Remove various "dummy" variables attempting to keep 19476 "pure" calls live, no longer necessary. They weren't sufficient for 19477 recent MacOS cc anyway. 19478 194792002-10-21 Torbjorn Granlund <tege@swox.com> 19480 19481 * mpn/cray/ieee/addmul_1.c: Handle overlap as in mul_1.c. 19482 * mpn/cray/ieee/submul_1.c: Likewise. 19483 194842002-10-19 Kevin Ryde <kevin@swox.se> 19485 19486 * configure.in (sparcv9 etc -*-*bsd*): Add support for NetBSD and 19487 OpenBSD sparc64. Reported by Christian Weisgerber. 19488 (AC_CHECK_HEADERS): Add sys/param.h for sys/sysctl.h on *BSD. 19489 19490 * demos/calc/calc.y: Change ={ to {, needed for bison 1.50. 19491 19492 * longlong.h (count_leading_zeros, count_trailing_zeros) [x86_64]: 19493 Should be UDItype. 19494 19495 * mpz/set_str.c, mpf/set_str.c, mpbsd/xtom.c, scanf/sscanffuns.c: Cast 19496 chars through "unsigned char" to zero extend, required by C99 ctype.h. 19497 194982002-10-18 Torbjorn Granlund <tege@swox.com> 19499 19500 * tests/mpz/t-root.c: Test also mpz_rootrem. 19501 19502 * mpn/generic/rootrem.c: Avoid overflow problem when n is huge. 19503 19504 * mpz/root.c: Avoid overflow problems in allocation computation; also 19505 simplify it. Misc cleanups. 19506 19507 * mpz/rootrem.c: New file. 19508 * Makefile.am, mpz/Makefile.am, gmp-h.in: Add them. 19509 195102002-10-17 Torbjorn Granlund <tege@swox.com> 19511 19512 * gmp-impl.h (popc_limb): Combine variants. 19513 195142002-10-14 Kevin Ryde <kevin@swox.se> 19515 19516 * configure.in (AC_CHECK_HEADERS): Add sys/time.h for sys/resource.h 19517 test, needed by SunOS, and next autoconf will insist headers actually 19518 compile. 19519 195202002-10-08 Kevin Ryde <kevin@swox.se> 19521 19522 * tune/time.c (speed_time_init): Allow for Cray times() apparently 19523 being a cycle counter. 19524 19525 * dumbmp.c (mpz_get_str): Fix buf size allocation. 19526 19527 * tests/trace.c, tests/tests.h (mp_limb_trace): New function. 19528 19529 * tune/speed-ext.c (SPEED_EXTRA_PROTOS): Use __GMP_PROTO. 19530 * tests/devel/try.c (malloc_region): Add a cast for SunOS cc. 19531 19532 * configure.in (AC_CHECK_FUNCS): Add strerror. 19533 (AC_CHECK_DECLS): Add sys_errlist, sys_nerr. 19534 * tune/time.c, tests/devel/try.c: Use them. 19535 195362002-10-05 Kevin Ryde <kevin@swox.se> 19537 19538 * configure.in (AC_CHECK_HEADERS): Test float.h, not in SunOS cc. 19539 * printf/repl-vsnprintf.c: Use this. 19540 19541 * configure.in (*sparc*-*-*): Collect up various options for clarity, 19542 use gcc -mcpu=supersparc and ultrasparc3, use cc -xchip, don't use 19543 -xtarget=native, use cc configs with acc, merge SunOS bundled cc and 19544 SunPRO cc configs. 19545 19546 * gmp-impl.h (gmp_randfnptr_t): Use __GMP_PROTO. 19547 (MPZ_REALLOC): Cast _mpz_realloc return value to mp_ptr, for the 19548 benefit of SunOS cc which requires pointers of the same type on the 19549 two legs of a ?:. 19550 19551 * dumbmp.c (mpz_realloc): Add a cast to avoid a warning from SunOS cc. 19552 19553 * acinclude.m4: Allow for i960 b.out default cc output. 19554 19555 * gmp.texi (Random State Initialization): Add gmp_randinit_mt. 19556 (Perfect Square Algorithm): Describe new mpn_mod_34lsub1 use. 19557 (Factorial Algorithm): Describe Jason's new code. 19558 (Binomial Coefficients Algorithm): Ideas about improvements 19559 moved to doc/projects.html. 19560 (Contributors): Add Jason Moxham and Pedro Gimeno. 19561 195622002-10-03 Kevin Ryde <kevin@swox.se> 19563 19564 * gen-psqr.c: New file. 19565 * Makefile.am, mpn/Makefile.am: Use it to generate mpn/perfsqr.h. 19566 * mpn/generic/perfsqr.c: Use generated data, put mod 256 data into 19567 limbs to save space, use mpn_mod_34lsub1 when good. 19568 * tests/mpn/t-perfsqr.c: New file. 19569 * tests/mpn/Makefile.am (check_PROGRAMS): Add it. 19570 * tests/mpz/t-perfsqr.c (check_modulo): New test. 19571 (check_sqrt): New function holding current tests. 19572 19573 * configure.in (AC_INIT): Modernize to package name and version here 19574 rather than AM_INIT_AUTOMAKE, add bug report email. 19575 (AC_CONFIG_SRCDIR): New macro. 19576 19577 * gmp-impl.h (ROUND_UP_MULTIPLE): Fix for non-power-of-2 moduli (not 19578 normal in current uses), clarify the comments a bit. 19579 195802002-09-30 Kevin Ryde <kevin@swox.se> 19581 19582 * mpn/Makeasm.am (.s.lo): Add --tag=CC for the benefit of CCAS!=CC, 19583 same as .S.lo and .asm.lo. 19584 19585 * Makefile.am (gen-fac_ui, gen-fib, gen-bases): Quote source files in 19586 test -f stuff to avoid Sun make rewriting them. 19587 195882002-09-28 Kevin Ryde <kevin@swox.se> 19589 19590 * tests/devel/try.c, tune/speed.c: Avoid strings longer than C99 19591 guarantees. 19592 19593 * tests/refmpn.c, tests/tests.h (refmpn_zero_extend, refmpn_normalize, 19594 refmpn_sqrtrem): New functions. 19595 * tests/devel/try.c (TYPE_SQRTREM): Use refmpn_sqrtrem. 19596 (compare): Correction to tr->dst_size subscripting. 19597 19598 * dumbmp.c: Add several new functions, allow for initial n<d in 19599 mpz_tdiv_q (now in mpz_tdiv_qr actually). 19600 19601 * gen-bases.c (chars_per_limb): Get GMP_NUMB_BITS for base==2, 19602 similarly other powers of 2, which this was in the past. 19603 * tests/refmpn.c (refmpn_chars_per_limb): Ditto. 19604 * tests/mpn/t-mp_bases.c: Test chars_per_limb for power-of-2 bases too. 19605 19606 * Makefile.am, mpz/Makefile.am: Setups for gen-fac_ui.c generating 19607 mpz/fac_ui.h. 19608 196092002-09-28 Jason Moxham <J.L.Moxham@maths.soton.ac.uk> 19610 19611 * dumbmp.c (mpz_pow_ui, mpz_addmul_ui, mpz_root): New functions. 19612 * gen-fac_ui.c: New file. 19613 * mpz/fac_ui.c: Rewrite. 19614 196152002-09-26 Kevin Ryde <kevin@swox.se> 19616 19617 * tests/cxx/localeconv.c: New file, split from t-locale.cc. 19618 * tests/cxx/t-locale.cc: Use it. 19619 * tests/cxx/Makefile.am (t_locale_SOURCES): Add it. 19620 19621 * tests/cxx/Makefile.am: Updates for Gerardo's new test programs. 19622 196232002-09-26 Gerardo Ballabio <gerardo.ballabio@unimib.it> 19624 19625 * gmpxx.h (__gmp_cmp_function): Bug fixes in double/mpq and 19626 double/mpfr comparisons. 19627 19628 * tests/cxx/t-assign.cc, tests/cxx/t-binary.cc, tests/cxx/t-constr.cc, 19629 tests/cxx/t-ternary.cc, tests/cxx/t-unary.cc: Revise and add various 19630 tests, including some for mpfr, some split from t-expr.cc. 19631 * tests/cxx/t-locale.cc: Modernize include files. 19632 * tests/cxx/t-ostream.cc: Modernize include files, use cout rather 19633 than printf for diagnostics. 19634 * tests/cxx/t-misc.cc, tests/cxx/t-rand.cc: New file, split from 19635 t-allfuns.cc. 19636 * tests/cxx/t-ops.cc: New file, some split from t-allfuns.cc. 19637 * tests/cxx/t-prec.cc: New file. 19638 * tests/cxx/t-allfuns.cc, tests/cxx/t-expr.cc: Remove files. 19639 196402002-09-25 Torbjorn Granlund <tege@swox.com> 19641 19642 * configure.in (*-cray-unicos*): Remove -hscalar0, it causes too much 19643 performance loss. Let's trust Cray to fix their compilers. 19644 196452002-09-24 Torbjorn Granlund <tege@swox.com> 19646 19647 * mpn/powerpc32/add_n.asm: Rewrite. 19648 * mpn/powerpc32/sub_n.asm: Rewrite. 19649 196502002-09-24 Pedro Gimeno <pggimeno@wanadoo.es> 19651 19652 * randlc2x.c: Prepare for nails by changing type of _mp_c to mpz_t, 19653 make _mp_seed fixed-size, disallow SIZ(a)==0 to optimize comparisons 19654 for mpn_mul. 19655 * gmp-impl.h (MPZ_FAKE_UI): New macro. 19656 19657 * randmt.c: Some constants made long for K&R compliance; remove UL at 19658 the end of other constants; use mp_size_t where appropriate; use 19659 mpz_export to split the seed. 19660 19661 * gmp-impl.h: Remove type cast in RNG_FNPTR and RNG_STATE, to allow 19662 them to be used as lvalues. 19663 * randclr.c, randlc2x.c, randmt.c, randsd.c: All callers changed. 19664 19665 * mpz/urandomm.c: Replace mpn_cmp with MPN_CMP. 19666 19667 * tests/rand/gen.c: Get rid of gmp_errno. 19668 196692002-09-24 Kevin Ryde <kevin@swox.se> 19670 19671 * gmp.texi (Custom Allocation): Keep allocate_function etc out of the 19672 function index by using @deftypevr. 19673 More index entries. 19674 196752002-09-24 Gerardo Ballabio <gerardo.ballabio@unimib.it> 19676 19677 * gmpxx.h (mpfr_class constructors from strings): Precision was set 19678 incorrectly, fixed. 19679 196802002-09-23 Torbjorn Granlund <tege@swox.com> 19681 19682 * mpf/urandomb.c: Don't crash for overlarge nbits argument. 19683 Let nbits==0 mean to fill number with random bits. 19684 196852002-09-21 Torbjorn Granlund <tege@swox.com> 19686 19687 * mpn/alpha/mod_34lsub1.asm: Add r31 dummy operand to `br' instruction. 19688 196892002-09-20 Gerardo Ballabio <gerardo.ballabio@unimib.it> 19690 19691 * gmpxx.h (__gmp_binary_equal, __gmp_binary_not_equal): Fix broken 19692 mpq/double functions. 19693 196942002-09-18 Torbjorn Granlund <tege@swox.com> 19695 19696 * randmt.c (randget_mt): Fix typo. 19697 196982002-09-18 Kevin Ryde <kevin@swox.se> 19699 19700 * gmp-impl.h (_gmp_rand): Avoid evaluating "state" more than once, for 19701 the benefit places calling it with RANDS. 19702 19703 * randmt.c (randseed_mt): Use mpz_init for mod and seed1, for safety. 19704 19705 * tune/tuneup.c (sqr_karatsuba_threshold): Initialize to 19706 TUNE_SQR_KARATSUBA_MAX so mpn_sqr_n works for randmt initialization. 19707 19708 * gmp.texi (Integer Comparisons): Remove mention of non-existent 19709 mpz_cmpabs_si, reported by Conrad Curry. 19710 19711 * tune/speed.c, tune/speed.h, tune/common.c: Add gmp_randseed, 19712 gmp_randseed_ui and mpz_urandomb. 19713 197142002-09-18 Pedro Gimeno <pggimeno@wanadoo.es> 19715 19716 * tests/rand/gen.c: Add mt, remove lc and bbs. 19717 19718 * Makefile.am (libgmp_la_SOURCES): Add randmt.c, remove randlc.c and 19719 randraw.c. 19720 19721 * randmt.c: New file. 19722 * gmp-h.in (gmp_randinit_mt): Add prototype. 19723 * randdef.c: Use gmp_randinit_mt. 19724 19725 * gmp-impl.h (RNG_FNPTR, RNG_STATE): New macros. 19726 (gmp_randfnptr_t): New structure. 19727 (_gmp_rand): Now a macro not a function. 19728 * gmp-h.in (__gmp_randata_lc): Remove, now internal to randlc2x.c. 19729 (__gmp_randstate_struct): Revise comments on field usage. 19730 * randsd.c, randclr.c: Use function pointer scheme. 19731 * randsdui.c: Use gmp_randseed. 19732 * randraw.c: Remove file. 19733 * randlc2x.c: Collect up lc_2exp related code from randsd.c, randclr.c 19734 and randraw.c, use function pointer scheme, integrate seed==0/a==0 19735 into main case and fix case where bits(a) < m2exp. 19736 19737 * randlc.c: Remove file, never documented and never worked. 19738 * gmp-h.in (gmp_randinit_lc): Remove prototype. 19739 197402002-09-16 Torbjorn Granlund <tege@swox.com> 19741 19742 * mpn/alpha/mod_34lsub1.asm: New file. 19743 197442002-09-16 Kevin Ryde <kevin@swox.se> 19745 19746 * configure.in, acinclude.m4 (GMP_C_RESTRICT): Remove this, not 19747 currently used, and #define restrict upsets Microsoft C headers on 19748 win64. Reported by David Librik. 19749 19750 * configure.in (x86): Add gcc 3.2 -march and -mcpu flags, remove some 19751 unnecessary -march=i486 fallbacks. 19752 19753 * gmp.texi (Notes for Particular Systems): Note cl /MD is required for 19754 Microsoft C and MINGW to cooperate on I/O. Explained by David Librik. 19755 (Language Bindings): Add linbox. 19756 * gmp.texi (Language Bindings): 19757 197582002-09-12 Kevin Ryde <kevin@swox.se> 19759 19760 * mpz/aorsmul_i.c: Allow for w==x overlap with nails. Test 19761 BITS_PER_ULONG > GMP_NUMB_BITS rather than GMP_NAIL_BITS != 0. 19762 * tests/mpz/t-aorsmul.c: Test this. 19763 19764 * tune/common.c: mpn_mod_34lsub1 only exists for GMP_NUMB_BITS%4==0 19765 * tune/speed.c: Add mpn_mod_34lsub1. 19766 197672002-09-10 Pedro Gimeno <pggimeno@wanadoo.es> 19768 19769 * rand.c: Remove old disabled BBS code. 19770 * mpf/urandomb.c: Use BITS_TO_LIMBS. 19771 197722002-09-10 Kevin Ryde <kevin@swox.se> 19773 19774 * gmp.texi (Multiplication Algorithms): FFT is now enabled by default. 19775 197762002-09-10 Pedro Gimeno <pggimeno@wanadoo.es> 19777 19778 * mpz/urandomm.c: Use mpn level functions, avoid an infinite loop if 19779 _gmp_rand forever returns all "1" bits. 19780 * tests/rand/t-urndmm.c: New file 19781 * tests/rand/Makefile.am (check_PROGRAMS): Add it. 19782 19783 * gmp-impl.h (BITS_TO_LIMBS): New macro. 19784 * mpz/urandomb.c: Use it, and use MPZ_REALLOC. 19785 197862002-09-08 Kevin Ryde <kevin@swox.se> 19787 19788 * acinclude.m4 (GMP_GCC_WA_MCPU): New macro. 19789 * configure.in (alpha*-*-*): Use it to avoid -Wa,-mev67 if gas isn't 19790 new enough to know ev67. Reported by David Bremner. 19791 197922002-07-30 Gerardo Ballabio <gerardo.ballabio@unimib.it> 19793 19794 * gmpxx.h (__gmpz_value etc): Remove, use mpz_t etc instead. 19795 (__gmp_expr): Reorganise specializations, use __gmp_expr<T,T> not 19796 mpz_class etc. 19797 (mpfr evals): Remove mode parameter, was always 19798 __gmp_default_rounding_mode anyway. 19799 198002002-09-07 Kevin Ryde <kevin@swox.se> 19801 19802 * gmp-h.in, mp-h.in: Use #ifdef for tests, for the benefit of 19803 applications using gcc -Wundef. 19804 19805 * longlong.h: Define COUNT_LEADING_ZEROS_NEED_CLZ_TAB for all alphas, 19806 since mpn/alpha/cntlz.asm always goes into libgmp.so, even for ev67 19807 and ev68 which don't need it. Reported by David Bremner. 19808 19809 * gmp.texi (Demonstration Programs): New section, expanding on what 19810 was under "Build Options". 19811 (Converting Floats): Don't need \ for _ in @var within @math. 19812 Add and amend various index entries. 19813 19814 * demos/qcn.c: Add -p prime limit option. 19815 198162002-08-30 Kevin Ryde <kevin@swox.se> 19817 19818 * mpz/pprime_p.c: Handle small negatives with isprime, in particular 19819 must do so for n==-2. 19820 * tests/mpz/t-pprime_p.c: New file. 19821 * tests/mpz/Makefile.am: Add it. 19822 198232002-08-26 Torbjorn Granlund <tege@swox.com> 19824 19825 * gmp.texi (Converting Floats): Fix typo in mpf_get_d_2exp docs, 19826 reported by Paul Zimmermann. 19827 198282002-08-26 Kevin Ryde <kevin@swox.se> 19829 19830 * configure.in: Echo the ABI being tried for the compilers. 19831 (powerpc*-*-*): Use powerpc64/aix.m4 for ABI=aix64 too. 19832 (AC_CHECK_FUNCS): Add strtol, for tests/rand/gen.c. 19833 198342002-08-24 Kevin Ryde <kevin@swox.se> 19835 19836 * configure.in (HAVE_HOST_CPU_, HAVE_HOST_CPU_FAMILY_, HAVE_NATIVE_): 19837 Setup templates for these using AH_VERBATIM rather than acconfig.h, 19838 preferred by latest autoconf. Prune lists to just things used. 19839 * acconfig.h: Remove file. 19840 19841 * mpn/powerpc32/mode1o.asm: Forgot ASM_START. 19842 19843 * tune/time.c (have_cgt_id): Renamed from HAVE_CGT_ID so avoid 19844 confusion with autoconf outputs, and turn it into a "const" variable. 19845 198462002-08-23 Torbjorn Granlund <tege@swox.com> 19847 19848 * configure.in: Choose powerpc32/aix.m4 or powerpc64/aix.m4 based on 19849 ABI, not configuration triple. 19850 19851 * mpz/pprime_p.c: Partially undo last change--handle small and 19852 negative numbers in the same test. 19853 198542002-08-22 Kevin Ryde <kevin@swox.se> 19855 19856 * gmp-impl.h (MUL_FFT_THRESHOLD, SQR_FFT_THRESHOLD): Note 19857 mpn/generic/mul_fft.c is not nails-capable, and don't bother setting 19858 other FFT data for nails. 19859 19860 * configfsf.guess: Update to 2002-08-19. 19861 * configfsf.sub: Update to 2002-08-20. 19862 19863 * config.guess (powerpc*-*-*): Use a { } construct to suppress SIGILL 19864 message on AIX. 19865 198662002-08-20 Kevin Ryde <kevin@swox.se> 19867 19868 * gmp.texi (Build Options): Add ia64 under cpu types. 19869 (ABI and ISA): Describe IRIX 6 ABI=o32. 19870 (Notes for Particular Systems): Remove -march=pentiumpro, now ok. 19871 (Known Build Problems): Binutils 2.12 is ok for libgmp.a. 19872 (Emacs): New section. 19873 (Language Bindings): Update MLton URL, reported by Stephen Weeks. 19874 (Prime Testing Algorithm): New section. 19875 Don't put a blank line after @item in @table since it can make a page 19876 break between the heading and the entry. 19877 Misc tweaks elsewhere, in particular more index entries. 19878 19879 * mpz/millerrabin.c: Need x to be size+1 for change to urandomm. 19880 19881 * gmp-impl.h: Comments on the use of __GMP_DECLSPEC. 19882 19883 * tune/time.c (freq_measure_mftb_one): Use struct_timeval, for the 19884 benefit of mingw. 19885 19886 * tests/refmpn.c, tests/tests.h (ref_addc_limb, ref_subc_limb): 19887 Renamed from add and sub, following gmp-impl.h ADDC_LIMB and SUBC_LIMB. 19888 198892002-08-17 Kevin Ryde <kevin@swox.se> 19890 19891 * mpn/powerpc32/mode1o.asm: New file. 19892 * configure.in, acinclude.m4 (GMP_ASM_POWERPC_PIC_ALWAYS): New macro. 19893 * mpn/asm-defs.m4: Use it to help setting up PIC. 19894 19895 * configure.in (AC_PREREQ): Bump to 2.53. 19896 19897 * mpn/powerpc32/powerpc-defs.m4 (ASSERT): New macro. 19898 (PROLOGUE_cpu): New macro, giving ALIGN(4) not 8. 19899 199002002-08-16 Torbjorn Granlund <tege@swox.com> 19901 19902 * mpn/m68k/lshift.asm: Fix typo in !scale_available_p code. 19903 * mpn/m68k/rshift.asm: Likewise. 19904 199052002-08-16 Kevin Ryde <kevin@swox.se> 19906 19907 * configure.in (--enable-profiling=instrument): New option. 19908 * gmp.texi (Profiling): Describe it. 19909 * mpn/x86/x86-defs.m4 (PROLOGUE_cpu, call_instrument, ret_internal): 19910 Add support. 19911 (call_mcount): Share PIC setups with call_instrument. 19912 * mpn/x86/*.asm: Use ret_internal. 19913 * mpn/asm-defs.m4 (m4_unquote): New macro. 19914 * tests/mpn/t-instrument.c: New file. 19915 * tests/mpn/Makefile.am: Add it. 19916 19917 * mpn/alpha/umul.asm: Add ASM_END. 19918 199192002-08-12 Kevin Ryde <kevin@swox.se> 19920 19921 * mpz/pprime_p.c: Fake up a local mpz_t to take abs(n), rather than 19922 using mpz_init etc. 19923 19924 * mpz/millerrabin.c: Use mpz_urandomm for uniform selection of x, 19925 reported by Jason Moxham. Exclude x==n-1, ie. -1 mod n. Use 19926 gmp_randinit_default. 19927 19928 * mpn/alpha/umul.asm: Use "r" registers, for the benefit of Unicos. 19929 19930 * tests/devel/try.c: Add mpn_copyi and mpn_copyd. 19931 199322002-08-09 Kevin Ryde <kevin@swox.se> 19933 19934 * Makefile.am: Remove configure.lineno from DISTCLEANFILES and gmp.tmp 19935 from MOSTLYCLEANFILES, automake does these itself now. 19936 19937 * */Makefile.in, aclocal.m4, configure, install-sh, missing, 19938 mkinstalldirs: Update to automake 1.6.3. 19939 19940 * mpn/ia64/README: Some notes on assembler syntax. 19941 19942 * mpn/ia64/add_n.asm, mpn/ia64/sub_n.asm: Add .body. 19943 * mpn/ia64/add_n.asm, mpn/ia64/addmul_1.asm, mpn/ia64/mul_1.asm, 19944 mpn/ia64/sub_n.asm: Position .save ar.lc just before relevant 19945 instruction. 19946 * mpn/ia64/addmul_1.asm, mpn/ia64/mul_1.asm: Add .save ar.pfs and pr. 19947 * mpn/ia64/copyd.asm, mpn/ia64/copyi.asm: Correction to .body position. 19948 * mpn/ia64/lorrshift.asm: Add .prologue stuff. 19949 19950 * configure.in (*-*-unicos*): Remove forcible --disable-shared, 19951 libtool gets this right itself now. 19952 199532002-08-07 Kevin Ryde <kevin@swox.se> 19954 19955 * mpn/x86/pentium/mmx/hamdist.asm: New file, adapted from 19956 mpn/x86/pentium/mmx/popham.asm. 19957 * mpn/x86/pentium/mmx/popham.asm: Remove file, not faster than plain 19958 mpn/x86/pentium/popcount.asm for the popcount. 19959 19960 * mpn/alpha/umul.asm: Use PROLOGUE/EPILOGUE, rename it mpn_umul_ppmm. 19961 * configure.in (alpha*-*-*): Add umul to extra_functions. 19962 19963 * mpz/remove.c: Make src==0 return 0, not do DIVIDE_BY_ZERO. 19964 199652002-08-05 Torbjorn Granlund <tege@swox.com> 19966 19967 * acconfig.h: Remove spurious undefs for mpn_divrem_newton and 19968 mpn_divrem_classic. 19969 199702002-08-05 Kevin Ryde <kevin@swox.se> 19971 19972 * tests/refmpn.c, tests/tests.h, tests/misc/t-printf.c, 19973 tests/mpf/t-trunc.c, tests/mpn/t-mp_bases.c, tests/mpn/t-scan.c, 19974 tests/mpq/t-cmp_ui.c, tests/mpz/bit.c, tests/mpz/t-aorsmul.c, 19975 tests/mpz/t-powm_ui.c tests/mpz/t-root.c, tests/mpz/t-scan.c: More 19976 care with long and mp_size_t parameters, for the benefit of K&R. 19977 19978 * demos/perl/GMP.pm, demos/perl/GMP.xs, demos/perl/GMP/Mpz.pm, 19979 demos/perl/test.pl: Add mpz_import and mpz_export. 19980 * demos/perl/GMP.pm: Remove "preliminary" warning. 19981 19982 * mpn/lisp/gmpasm-mode.el: Set add-log-current-defun-header-regexp to 19983 pick up m4 defines etc. 19984 19985 * Makefile.am (libgmpxx_la_DEPENDENCIES): libgmp.la should be here, 19986 not libgmpxx_la_LIBADD, for the benefit of "make -j2". 19987 19988 * mpn/ia64/*.asm [hpux ABI=32]: Extend 32-bit operands to 64-bits, not 19989 optimal and might not be sufficient, but seems to work. 19990 199912002-08-03 Kevin Ryde <kevin@swox.se> 19992 19993 * gmp.texi (Profiling): Use a table and expand for clarity. 19994 (Integer Special Functions): New section for mpz_array_init, 19995 _mpz_realloc, mpz_getlimbn and mpz_size, to discourage their use. 19996 19997 * configure.in (*-*-msdosdjgpp*): Remove forcible --disable-shared, 19998 libtool gets this right itself now. 19999 200002002-07-30 Kevin Ryde <kevin@swox.se> 20001 20002 * mpn/powerpc32/lshift.asm, mpn/powerpc32/rshift.asm: Lose final mr, 20003 and make final stwu into an stw. 20004 20005 * gmp.texi (Known Build Problems): An easier workaround for DESTDIR, 20006 using LD_LIBRARY_PATH. 20007 (C++ Interface MPFR): Remove mpfrxx.h. 20008 20009 * mpfrxx.h: Remove file. 20010 * Makefile.am: Remove mpfrxx.h. 20011 * tests/cxx/Makefile.am: Add Gerardo's new test programs. 20012 200132002-07-30 Gerardo Ballabio <gerardo.ballabio@unimib.it> 20014 20015 * gmpxx.h: Use mpz_addmul etc for ternary a+b*c etc. Reorganise some 20016 macros for maintainability. Merge mpfrxx.h. 20017 * tests/cxx/t-constr.cc, tests/cxx/t-expr.cc: Various updates. 20018 * tests/cxx/t-assign.cc, tests/cxx/t-binary.cc, 20019 tests/cxx/t-ternary.cc, tests/cxx/t-unary.cc: New files. 20020 200212002-07-27 Kevin Ryde <kevin@swox.se> 20022 20023 * longlong.h (count_trailing_zeros) [ia64 __GNUC__]: Don't use 20024 __builtin_ffs for now, doesn't seem to work. 20025 20026 * configure.in: Establish CONFIG_SHELL to avoid a problem with 20027 AC_LIBTOOL_SYS_MAX_CMD_LEN on ia64-*-hpux*. 20028 20029 * tune/speed.h (SPEED_ROUTINE_MPN_GCD_FINDA): Don't let calls to 20030 mpn_gcd_finda go dead. 20031 20032 * mpn/generic/tdiv_qr.c: Inline mpn_rshift and MPN_COPY of 2 limbs. 20033 200342002-07-24 Kevin Ryde <kevin@swox.se> 20035 20036 * demos/primes.c: Use __GMP_PROTO and don't use signed, for the 20037 benefit of K&R. 20038 20039 * demos/calc/calclex.l: Add <string.h> for strcmp. 20040 20041 * mpn/ia64/invert_limb.asm: Use .rodata which works on ia64-*-hpux* 20042 and should be standard, rather than worrying about RODATA. 20043 20044 * gmp.texi (Function Classes): Add cross references. 20045 (Integer Import and Export): Fix return value grouping. 20046 20047 * mpn/lisp/gmpasm-mode.el (gmpasm-comment-start-regexp): Add // for 20048 ia64. Add notes on what the various styles are for. 20049 20050 * mpn/ia64/default.m4 (ASM_START): Define to empty, not dnl, so as not 20051 to kill text on the same line. 20052 (EPILOGUE_cpu): Force a newline after "#", so as not to suppress macro 20053 expansion in the rest of the EPILOGUE line. 20054 200552002-07-21 Kevin Ryde <kevin@swox.se> 20056 20057 * tune/speed.h: Fix some missing _PROTOs. 20058 20059 * Makefile.am (DISTCLEANFILES): Add configure.lineno. 20060 20061 * acinclude.m4 (GMP_C_DOUBLE_FORMAT): Define 20062 HAVE_DOUBLE_IEEE_BIG_ENDIAN and HAVE_DOUBLE_IEEE_LITTLE_ENDIAN in 20063 config.m4 too. 20064 * mpn/ia64/invert_limb.asm: Add big-endian data. 20065 20066 * tests/mpz/t-jac.c (try_si_zi): Correction to "a" parameter type. 20067 200682002-07-20 Kevin Ryde <kevin@swox.se> 20069 20070 * mpz/bin_ui.c, mpz/jacobi.c, mpz/pprime_p.c, mpn/generic/divis.c: 20071 More care with long and mp_size_t parameters, for the benefit of K&R. 20072 20073 * gmp-impl.h (invert_limb): Use parens around macro arguments. 20074 (mpn_invert_limb): Give prototype and define unconditionally. 20075 20076 * gmp-impl.h (CACHED_ABOVE_THRESHOLD, CACHED_BELOW_THRESHOLD): New 20077 macros. 20078 * mpn/generic/sb_divrem_mn.c: Use them to help gcc let preinv code go 20079 dead when not wanted. 20080 200812002-07-17 Kevin Ryde <kevin@swox.se> 20082 20083 * tests/refmpz.c (refmpz_hamdist): Ensure mp_size_t parameters are 20084 that type, for the benefit of hpux ia64 bundled cc ABI=64. 20085 20086 * configure.in (ia64*-*-hpux*): Need +DD64 in cc_64_cppflags to get 20087 the right headers for ansi2knr. 20088 20089 * acinclude.m4 (GMP_TRY_ASSEMBLE, GMP_ASM_UNDERSCORE): Use $CPPFLAGS 20090 with $CCAS and when linking, as done by the makefiles. 20091 (GMP_ASM_X86_MMX, GMP_ASM_X86_SSE2): Show $CPPFLAGS in diagnostics. 20092 20093 * gmp-impl.h (ieee_double_extract): Setup using HAVE_DOUBLE_IEEE_*. 20094 (GMP_UINT32): New define, 32 bit type for ieee_double_extract. 20095 * configure.in: Add AC_CHECK_SIZEOF unsigned. 20096 * configure.in, acinclude.m4 (GMP_IMPL_H_IEEE_FLOATS): Remove. 20097 (GMP_C_DOUBLE_FORMAT): Instead warn about unknown float here. 20098 20099 * configure.in, acinclude.m4 (GMP_C_SIZES): Remove. 20100 * acinclude.m4 (GMP_INCLUDE_GMP_H_BITS_PER_MP_LIMB): Remove this 20101 scheme, not required. 20102 * configure.in (unsigned long, mp_limb_t): Run AC_CHECK_SIZEOF for 20103 these unconditionally, check mp_limb_t against gmp-mparam.h values. 20104 * gmp-impl.h (BYTES_PER_MP_LIMB, BITS_PER_MP_LIMB): Define based on 20105 SIZEOF_MP_LIMB_T if not provided by gmp-mparam.h. 20106 (BITS_PER_ULONG): Define here now. 20107 20108 * gmp.texi (ABI and ISA): Add HP-UX IA-64 choices. 20109 (Random State Initialization): Typo in m2exp described for 20110 gmp_randinit_lc_2exp_size. 20111 (Formatted Output Functions): Clarify gmp_obstack_printf a bit. 20112 (Formatted Input Strings): Typo in %n summary. 20113 20114 * mpz/inp_raw.c (NTOH_LIMB_FETCH): Use simple generic default, since 20115 endianness detection is now cross-compile friendly. 20116 * mpz/out_raw.c (HTON_LIMB_STORE): Ditto. 20117 20118 * mpz/fib_ui.c: Nailify. 20119 * mpz/random.c: Nailify. 20120 20121 * mpfr/acinclude.m4 (MPFR_CONFIGS): Patch by Vincent for an apparent 20122 float rounding gremlin on powerpc. 20123 201242002-07-15 Kevin Ryde <kevin@swox.se> 20125 20126 * Makefile.am (PRINTF_OBJECTS): Avoid ending in a backslash, hpux ia64 20127 make doesn't like that. 20128 20129 * mpn/ia64/*.asm: Add .sptk to unconditional branches, add ";" after 20130 .mib etc, for the benefit of hpux. 20131 20132 * configure.in (ia64*-*-*): Use ABI=64 on non-HPUX systems, for 20133 consistency. 20134 20135 * gmp-impl.h (ieee_double_extract): Test __sparc__, used by gcc 3.1. 20136 Reported by nix@esperi.demon.co.uk. 20137 * mpfr/mpfr-math.h (_MPFR_NAN_BYTES etc): Ditto. 20138 201392002-07-13 Kevin Ryde <kevin@swox.se> 20140 20141 * mpn/powerpc32/rshift.asm: Rewrite, transformed from lshift.asm. 20142 20143 * tune/tuneup.c (DIVEXACT_1_THRESHOLD, MODEXACT_1_ODD_THRESHOLD): 20144 Always zero for native mpn_divexact_1, mpn_modexact_1_odd. 20145 20146 * gmp-h.in (__GMP_EXTERN_INLINE): Don't use this during configure, 20147 ie. __GMP_WITHIN_CONFIGURE, to avoid needing dependent routines. 20148 * acinclude.m4 (GMP_H_EXTERN_INLINE): Consequent changes. 20149 20150 * gmp-impl.h, mpn/asm-defs.m4 (mpn_addmul_2, mpn_addmul_3, 20151 mpn_addmul_4): Add prototypes and defines. 20152 20153 * gmp.texi (Number Theoretic Functions): Clarify return value. 20154 Reported by Peter Keller. 20155 201562002-07-10 Kevin Ryde <kevin@swox.se> 20157 20158 * configure.in, acinclude.m4 (GMP_PROG_LEX): Remove this in favour of 20159 AM_PROG_LEX, now ok when lex is missing. 20160 20161 * longlong.h (count_leading_zeros) [pentiummmx]: Don't use __clz_tab 20162 variant under LONGLONG_STANDALONE. 20163 (count_trailing_zeros) [ia64 __GNUC__]: Use __builtin_ffs. 20164 20165 * gmp-impl.h (popc_limb): Add an ia64 asm version. 20166 (DItype): Use HAVE_LONG_LONG to choose long long, avoiding _LONGLONG 20167 which is in gcc but means something unrelated in MS Visual C 7.0. 20168 Reported by David Librik. 20169 20170 * mpz/divexact.c: Add an ASSERT that den divides num. 20171 20172 * mpn/asm-defs.m4 (LDEF): New macro. 20173 (INT32, INT64): Use it. 20174 * mpn/pa32/*.asm: Use it. 20175 * mpn/pa32/README: Update notes on labels. 20176 20177 * tests/refmpn.c, tests/tests.h, tests/t-bswap.c (ref_bswap_limb): 20178 Renamed from refmpn_bswap_limb. 20179 * tests/t-bswap.c: Add tests_start/tests_end for randomization. 20180 20181 * tests/refmpn.c, tests/tests.h (ref_popc_limb): New function. 20182 * tests/t-popc.c: New file. 20183 * tests/Makefile.am: Add it. 20184 20185 * mpn/ia64/invert_limb.asm: Use RODATA since ".section .rodata" is not 20186 accepted by ia64-*-hpux*. 20187 20188 * acinclude.m4 (GMP_ASM_BYTE): New macro. 20189 (GMP_ASM_ALIGN_LOG, GMP_ASM_W32): Use it. 20190 (GMP_ASM_LABEL_SUFFIX): Use test compiles, not $host. 20191 (GMP_ASM_GLOBL): Ditto, and add .global for ia64-*-hpux*. 20192 (GMP_ASM_GLOBL_ATTR): Use GMP_ASM_GLOBL result, not $host. 20193 (GMP_ASM_LSYM_PREFIX): Allow any "a-z" nm symbol code, add ".text" to 20194 test program, required by ia64-*-hpux*. 20195 (GMP_ASM_LABEL_SUFFIX): Make LABEL_SUFFIX just the value, not a "$1:", 20196 the former being how it's currently being used in fact. 20197 20198 * configure.in, acinclude.m4 (GMP_PROG_CC_WORKS_LONGLONG): New macro. 20199 * configure.in (ia64-*-hpux*): Add 32 and 64 bit ABI modes. 20200 202012002-07-06 Kevin Ryde <kevin@swox.se> 20202 20203 * tests/cxx/t-allfuns.cc: New file. 20204 * tests/cxx/Makefile.am: Add it. 20205 20206 * mpz/clrbit.c, mpz/setbit.c: Only MPN_NORMALIZE if high limb changes 20207 to zero. Use _mpz_realloc return value. 20208 20209 * gmp.texi (Build Options, C++ Formatted Output, C++ Formatted Input): 20210 Cross reference to Headers and Libraries for libgmpxx stuff. 20211 (Low-level Functions): mpn_divexact_by3 result based on GMP_NUMB_BITS. 20212 mpn_set_str takes "unsigned char *", reported by Mark Sofroniou. 20213 (C++ Interface General): Describe linking with libgmpxx and libgmp. 20214 202152002-07-01 Kevin Ryde <kevin@swox.se> 20216 20217 * tune/tuneup.c, gmp-impl.h: Eliminate the array of thresholds in 20218 one(), tune just one at a time and let the callers hand dependencies. 20219 Eliminate the second_start_min hack, handle SQR_KARATSUBA_THRESHOLD 20220 oddities in tune_sqr() instead. 20221 20222 * mpn/pa64/umul.asm, mpn/pa64/udiv.asm, mpn/asm-defs.m4, acconfig.h, 20223 longlong.h, tune/speed.c, tune/speed.h, tune/common.c, tune/many.pl, 20224 tests/devel/try.c: Introduce mpn_umul_ppmm_r and mpn_udiv_qrnnd_r 20225 rather than having variant parameter order for mpn_umul_ppmm and 20226 mpn_udiv_qrnnd on pa64. 20227 20228 * gmp-h.in (mpz_export): Remove a spurious parameter name. 20229 * gmp-impl.h (mpn_rootrem): Use __MPN. 20230 202312002-06-29 Kevin Ryde <kevin@swox.se> 20232 20233 * longlong.h (udiv_qrnnd) [hppa32]: Remove mpn_udiv_qrnnd version, the 20234 general mechanism for that suffices. 20235 20236 * mpf/inp_str.c: Fix returned count of chars read, reported by Paul 20237 Zimmermann. Also fix a memory leak for invalid input. 20238 * tests/mpf/t-inp_str.c: New file. 20239 * tests/mpf/Makefile.am (check_PROGRAMS): Add it. 20240 20241 * tests/devel/try.c (mpn_mod_34lsub1): Only exists for 20242 GMP_NUMB_BITS%4==0. 20243 (SIZE2_FIRST): Respect option_firstsize2 for "fraction" case. 20244 20245 * mpn/generic/diveby3.c: Further nailifications. 20246 * gmp-impl.h (MODLIMB_INVERSE_3): Allow for GMP_NUMB_BITS odd. 20247 (GMP_NUMB_CEIL_MAX_DIV3, GMP_NUMB_CEIL_2MAX_DIV3): New constants. 20248 * tests/t-constants.c: Check them. 20249 20250 * gmp-h.in (__GMP_CRAY_Pragma): New macro. 20251 (__GMPN_COPY_REST): Use it. 20252 * gmp-impl.h (CRAY_Pragma): Use it. 20253 202542002-06-25 Kevin Ryde <kevin@swox.se> 20255 20256 * mpz/import.c, mpz/export.c: Cast data pointer through "char *" in 20257 alignment tests, for the benefit of Cray vector systems. 20258 20259 * configure.in (x86-*-*): Remove -march=pentiumpro check, seems ok 20260 with current code. 20261 * acinclude.m4 (GMP_GCC_MARCH_PENTIUMPRO, GMP_GCC_VERSION_GE): Remove 20262 macros, no longer needed 20263 20264 * acinclude.m4 (GMP_ASM_RODATA): Remove temporary files. 20265 20266 * configure.in (GMP_ASM_GLOBL_ATTR): Reposition to avoid duplication 20267 through AC_REQUIRE. 20268 202692002-06-23 Kevin Ryde <kevin@swox.se> 20270 20271 * tests/mpz/t-fib_ui.c (check_fib_table): Check table values, not just 20272 that they're non-zero. 20273 20274 * acinclude.m4 (GMP_GCC_ARM_UMODSI): Match bad "gcc --version" output 20275 exactly, rather than parsing it with GMP_GCC_VERSION_GE. 20276 (GMP_ASM_UNDERSCORE): Use GLOBL_ATTR. 20277 20278 * mpn/pa32/udiv.asm, mpn/pa32/hppa1_1/udiv.asm, mpn/pa64/udiv.asm: 20279 Renamed from udiv_qrnnd.asm, for consistency with other udiv's. 20280 * mpn/pa64/umul.asm: Renamed from umul_ppmm.asm likewise. 20281 * configure.in (hppa*-*-*): Update extra_functions. 20282 (NAILS_SUPPORT): Remove umul_ppmm, udiv_qrnnd, udiv_fp, udiv_nfp from 20283 nails-neutral list, no longer needed. 20284 20285 * gmp-h.in (__DECC): Add notes on testing this for ANSI-ness. 20286 (__GMP_EXTERN_INLINE): Add static __inline for DEC C. 20287 (mpz_mod_ui): Move up to main section, it's still documented. 20288 202892002-06-22 Kevin Ryde <kevin@swox.se> 20290 20291 * mpz/jacobi.c, mpz/kronsz.c, mpz/kronuz.c, mpz/kronzs.c, 20292 mpz/kronzu.c: Allow for odd GMP_NUMB_BITS, tweak a few variable setups. 20293 * gmp-impl.h (JACOBI_STRIP_LOW_ZEROS): New macro. 20294 20295 * mpn/generic/mod_34lsub1.c: Nailify. 20296 * tests/devel/try.c (CNST_34LSUB1): Nailify. 20297 * gmp-impl.h (ADDC_LIMB): New macro. 20298 20299 * gmpxx.h (mpf_class::get_str): Make exponent mp_exp_t&, default 20300 base=10 and ndigits=0. 20301 (mpz_class::set_str, mpq_class::set_str, mpf_class::set_str): Add 20302 versions accepting "const char *". 20303 * mpfrxx.h (mpfr_class::get_str, mpfr_class::set_str): Ditto, and 20304 uncommenting set_str and operator=. 20305 * gmp.texi (C++ Interface Integers, C++ Interface Rationals) 20306 (C++ Interface Floats): Update. 20307 20308 * gmp-impl.h (modlimb_invert): Merge the <=64bits and general versions. 20309 (const, signed): Move to near top of file, fixes --enable-alloca=debug 20310 on K&R. 20311 20312 * gen-fib.c: New file, derived from mainline in mpn/generic/fib2_ui.c. 20313 * dumbmp.c (mpz_init_set_ui): New function. 20314 * Makefile.am, mpn/Makefile.am: Generate fib_table.h, mpn/fib_table.c. 20315 * gmp-impl.h: Use fib_table.h, add __GMP_DECLSPEC to __gmp_fib_table 20316 (for the benefit of tests/mpz/t-fib_ui.c). 20317 * mpn/generic/fib2_ui.c: Remove __gmp_fib_table and generating code. 20318 20319 * Makefile.am: Add mp.h to BUILT_SOURCES, distclean all BUILT_SOURCES, 20320 use += more. 20321 20322 * acinclude.m4 (GMP_ASM_M68K_INSTRUCTION, GMP_ASM_M68K_BRANCHES): 20323 Don't let "unknown" get into the cache variables. 20324 (GMP_ASM_TEXT): See what assembles, don't hard-code hpux and aix. 20325 (GMP_PROG_EXEEXT_FOR_BUILD): Add ,ff8 for RISC OS, per autoconf cvs. 20326 (GMP_PROG_CPP_FOR_BUILD): Restructure per AC_PROG_CPP, print correct 20327 result if CPP_FOR_BUILD overrides the cache variable. 20328 (GMP_PROG_CC_FOR_BUILD_WORKS): New macro split from 20329 GMP_PROG_CC_FOR_BUILD. Allow for "conftest" default compiler output. 20330 * configure.in, acinclude.m4 (GMP_PROG_HOST_CC): Reinstate this, 20331 separating HOST_CC establishment from GMP_PROG_CC_FOR_BUILD. 20332 20333 * configure.in (mpn_objs_in_libgmp): Move mpn/mp_bases.lo ... 20334 * Makefile.am (MPN_OBJECTS): ... to here, add $U, and arrange 20335 MPN_OBJECTS to be common between libgmp and libmp. 20336 203372002-06-20 Torbjorn Granlund <tege@swox.com> 20338 20339 * mpn/generic/mul_n.c (TOOM3_MUL_REC, TOOM3_SQR_REC): Don't check if 20340 basecase is to be invoked when *_TOOM3_THRESHOLD is more than 3 times 20341 the corresponding *_THRESHOLD. 20342 203432002-06-20 Kevin Ryde <kevin@swox.se> 20344 20345 * mpn/ia64/submul_1.c: Add missing TMP_DECL, TMP_MARK, TMP_FREE. 20346 Reported by Paul Zimmermann. 20347 20348 * configure.in, acinclude.m4 (AC_DEFINE): Make templates read "Define 20349 to 1", for clarity as per autoconf. 20350 * acinclude.m4 (GMP_OPTION_ALLOCA): Group WANT_TMP templates. 20351 203522002-06-20 Gerardo Ballabio <gerardo.ballabio@unimib.it> 20353 20354 * gmpxx.h, mpfrxx.h: Remove mpz_classref, let mpq_class::get_num and 20355 mpq_class::get_den return mpz_class& as per the documentation. 20356 Reported by Roberto Bagnara. 20357 203582002-06-18 Kevin Ryde <kevin@swox.se> 20359 20360 * tests/rand/t-lc2exp.c: New file. 20361 * tests/rand/Makefile.am: Add it, and use tests/libtests.la. 20362 20363 * randraw.c (lc): Pad seed==0 case with zero limbs, return same 20364 (m2exp+1)/2 bits as normal, right shift "c" result as normal. 20365 20366 * configure.in: Don't bother with line numbers in some diagnostics. 20367 (*-*-mingw*): Use -mno-cygwin if it works, suggested by delta trinity. 20368 20369 * tests/mpz/Makefile.am, tests/mpq/Makefile.am, 20370 tests/misc/Makefile.am, (CLEANFILES): Set to *.tmp for test program 20371 temporaries, to get t-scanf.tmp and reduce future maintenance. 20372 203732002-06-16 Torbjorn Granlund <tege@swox.com> 20374 20375 * mpn/generic/get_str.c (mpn_dc_get_str): Pass scratch memory area in 20376 new `tmp' parameter. Trim allocation needs by reusing input parameter. 20377 203782002-06-15 Torbjorn Granlund <tege@swox.com> 20379 20380 * mpn/sparc32/v9/udiv.asm: New file. 20381 203822002-06-15 Kevin Ryde <kevin@swox.se> 20383 20384 * acinclude.m4 (GMP_GCC_VERSION_GE): Correction to recognising mingw 20385 gcc 3.1 version number. Reported by Jim Fougeron. 20386 20387 * configure.in (AC_PROVIDE_AC_LIBTOOL_WIN32_DLL): New define, to make 20388 AC_LIBTOOL_WIN32_DLL work with autoconf 2.53. 20389 20390 * acinclude.m4 (GMP_C_SIZES): Establish BITS_PER_MP_LIMB as a value, 20391 not an expression, for the benefit of the gen-bases invocation. 20392 20393 * config.guess (CC_FOR_BUILD): Try c99, same as configfsf.guess. 20394 203952002-06-15 Paul Zimmermann <Paul.Zimmermann@loria.fr> 20396 20397 * mpfr/set_q.c: Allow for 1 bit numerator or denominator. 20398 203992002-06-14 Kevin Ryde <kevin@swox.se> 20400 20401 * configure.in (AC_C_BIGENDIAN): Use new style action parameters. 20402 20403 * randlc2x.c: Allow for a<0, allow for c>=2^m2exp. 20404 * randraw.c (lc): Allow for a==0. 20405 20406 * mpn/sparc32/udiv.asm: Renamed from udiv_fp.asm. Don't know if float 20407 is the best way for v7, but it's what configure has chosen since gmp 3. 20408 * configure.in (*sparc*-*-* ABI=32): extra_functions="udiv" for all, 20409 in particular sparc32/v8/udiv.asm is faster (on ultrasparc2) than 20410 udiv_fp previously used for v9 chips. 20411 20412 * gen-bases.c: New file, derived from mpn/mp_bases.c. 20413 * dumbmp.c: New file, mostly by Torbjorn, some by me. 20414 * configure.in, acinclude.m4 (GMP_PROG_CC_FOR_BUILD, 20415 GMP_PROG_CPP_FOR_BUILD, GMP_PROG_EXEEXT_FOR_BUILD, 20416 GMP_C_FOR_BUILD_ANSI, GMP_CHECK_LIBM_FOR_BUILD): New macros. 20417 (GMP_PROG_HOST_CC): Remove, superceded by GMP_PROG_CC_FOR_BUILD. 20418 * Makefile.am: Run gen-bases to create mp_bases.h and mpn/mp_bases.c. 20419 * gmp-impl.h: Use mp_bases.h. 20420 * mpn/mp_bases.c: Remove file. 20421 * mpn/Makefile.am: mp_bases.c now in nodist_libmpn_la_SOURCES. 20422 20423 * tests/mpz/t-cmp_d.c (check_one_2exp): Use volatile to force to 20424 double, fixes gcc 3.1 with -O4. Reported by Michael Lee. 20425 * configure.in (AC_C_VOLATILE): New macro. 20426 20427 * tests/misc/t-scanf.c: (fromstring_gmp_fscanf): Add missing va_end. 20428 Don't mix varargs and fixed args functions, not good on x86_64. 20429 Reported by Marcus Meissner. 20430 20431 * Makefile.am (EXTRA_DIST): Remove mpfr/README, now in mpfr/Makefile.in 20432 20433 * configure, config.in, INSTALL.autoconf: Update to autoconf 2.53. 20434 * */Makefile.in, install-sh, mdate-sh, missing, aclocal.m4, configure: 20435 Update to automake 1.6.1. 20436 * configfsf.guess, configfsf.sub: Update to 2002-05-29. 20437 204382002-06-12 Kevin Ryde <kevin@swox.se> 20439 20440 * acinclude.m4 (GMP_GCC_VERSION_GE): Recognise mingw gcc 3.1 version. 20441 (GMP_PROG_CC_WORKS): Allow for a_out.exe, as per autoconf. 20442 (GMP_GCC_NO_CPP_PRECOMP, GMP_ASM_UNDERSCORE): Ditto, plus a.exe. 20443 204442002-06-09 Torbjorn Granlund <tege@swox.com> 20445 20446 * randraw.c (lc): Remove broken ASSERT_ALWAYS. 20447 20448 * mpn/x86: Update gmp-mparam.h files with current measures *_THRESHOLD 20449 values. 20450 * mpn/x86/p6/mmx/gmp-mparam.h: New file. 20451 204522002-06-09 Kevin Ryde <kevin@swox.se> 20453 20454 * mpn/x86/*/gmp-mparam.h (USE_PREINV_DIVREM_1): Add tuned settings. 20455 20456 * acconfig.h (HAVE_NATIVE_mpn_preinv_divrem_1): New template. 20457 20458 * tests/refmpn.c, tests/tests.h (refmpn_chars_per_limb, 20459 refmpn_big_base): New functions. 20460 * tests/mpn/t-mp_bases.c: Use them, and don't test big_base_inverted 20461 unless it's being used. 20462 20463 * gmp.texi (Notes for Particular Systems): Using Microsoft C with DLLs. 20464 (Known Build Problems): Notes on MacOS and GCC. 20465 (Integer Logic and Bit Fiddling): Use ULONG_MAX for maximum ulong. 20466 (Low-level Functions): mpn_get_str accepts base==256. 20467 (Formatted Output Functions): Note output is not atomic. 20468 (Internals): Note mp_size_t for limb counts. 20469 20470 * mp-h.in, gmp-h.in (mp_ptr, mp_srcptr, mp_size_t, mp_exp_t): Remove 20471 these types from mp.h, not needed. 20472 20473 * mpfr/tests/tadd.c, mpfr/tests/tmul.c (check): Apply a hack to the 20474 parameter order to make sparc gcc 2.95.2 happy. 20475 20476 * doc/configuration: Notes on bootstrapping. 20477 204782002-06-08 Kevin Ryde <kevin@swox.se> 20479 20480 * mpfr/tests/tsqrt.c, mpfr/tests/tsqrt_ui.c: Suppress tests if sqrt is 20481 not affected by mpfr_set_machine_rnd_mode. 20482 20483 * mpfr/mul_2si.c: Workaround a mips gcc 2.95.3 bug under -O2 -mabi=n32. 20484 20485 * configure.in (alphev56): Fix to use ev5 path. 20486 204872002-06-06 Kevin Ryde <kevin@swox.se> 20488 20489 * gmp-h.in: Use __gmp_const not const, in a number of places. 20490 20491 * configure.in (sparc): Use ABI=32 instead of ABI=standard on v7 and 20492 v8, for consistency with v9 choices. 20493 (sparc64): Restrict GMP_ASM_SPARC_REGISTER to ABI=64. 20494 (x86): Move MMX $path munging to before printout. 20495 (CCAS): Move upward to support this. 20496 20497 * gmp-impl.h (modlimb_invert): Merge macros for specific limb sizes, 20498 add a version for arbitrary limb size, use GMP_NUMB_BITS. 20499 (modlimb_invert, MODLIMB_INVERSE_3): Fix comments to say GMP_NUMB_BITS. 20500 20501 * gmp-h.in (__GMP_LIKELY, __GMP_UNLIKELY): New macros. 20502 (mpz_getlimbn, mpz_perfect_square_p, mpz_popcount): Use them, make the 20503 fetch or mpn call likely, unconditionally calculate the alternative so 20504 as to avoid an "else" clause. 20505 * gmp-impl.h (LIKELY, UNLIKELY): Aliases. 20506 20507 * configure.in, mpfr/tests/Makefile.am: Add $LIBM to $LIBS for 20508 MPFR_CONFIGS so it detects fesetround, and let it go through to 20509 $MPFR_LIBS. 20510 * mpfr/rnd_mode.c: Use gmp-impl.h to get MPFR_HAVE_FESETROUND. 20511 20512 * tests/mpz/t-sizeinbase.c: Disable fake bits test, such pointer 20513 setups are bogus and have been seen failing on hppa. 20514 20515 * tests/misc.c, tests/refmpz.c, tests.tests.h, tests/mpz/t-cong.c: 20516 Rename mpz_flipbit to refmpz_combit and move from misc.c to refmpz.c. 20517 205182002-06-05 Torbjorn Granlund <tege@swox.com> 20519 20520 * tests/mpz/t-powm_ui.c Print proper routine name in error message. 20521 205222002-06-03 Kevin Ryde <kevin@swox.se> 20523 20524 * tune/time.c, tune/freq.c, tune/speed.h: Add powerpc mftb support. 20525 (FREQ_MEASURE_ONE): Move to speed.h, fix tv_sec factor. 20526 (freq_measure): Use for mftb measuring too. 20527 * tune/powerpc.asm, tune/powerpc64.asm: New files. 20528 * configure.in, tune/Makefile.am: Add them. 20529 20530 * gmp-impl.h (popc_limb): Add versions for Cray and fallback for 20531 arbitrary limb size. 20532 20533 * mpn/sparc32/sparc-defs.m4: New file. 20534 * configure.in (sparc*-*-*): Use it. 20535 * acinclude.m4 (GMP_ASM_SPARC_REGISTER): New macro. 20536 * configure.in (sparc64): Use it. Also, use -Wc,-m64 for linking. 20537 * mpn/sparc64/add_n.asm, mpn/sparc64/addmul_1.asm, 20538 mpn/sparc64/copyd.asm, mpn/sparc64/copyi.asm, mpn/sparc64/lshift.asm, 20539 mpn/sparc64/mul_1.asm, mpn/sparc64/rshift.asm, 20540 mpn/sparc64/sqr_diagonal.asm, mpn/sparc64/sub_n.asm, 20541 mpn/sparc64/submul_1.asm: Use REGISTER for .register. 20542 205432002-06-01 Kevin Ryde <kevin@swox.se> 20544 20545 * mpz/powm_ui.c: Fix for result range in certain circumstances. 20546 20547 * mpn/x86/k6/diveby3.asm: Speedup to 10 c/l, same as divexact_1. 20548 Anomaly pointed out by Alexander Kruppa. 20549 205502002-05-31 Torbjorn Granlund <tege@swox.com> 20551 20552 * mpz/export.c: Cast pointer via `unsigned long' when checking 20553 alignment to avoid compiler warnings. 20554 205552002-05-29 Kevin Ryde <kevin@swox.se> 20556 20557 * gmp-impl.h (BSWAP_LIMB): Versions for m68k, powerpc, and arbitrary 20558 limb size. 20559 * configure.in, acconfig.h (HAVE_HOST_CPU_FAMILY_m68k): New define. 20560 205612002-05-27 Torbjorn Granlund <tege@swox.com> 20562 20563 * mpn/generic/mul_basecase.c: Improve MAX_LEFT handling, returning 20564 when possible. Add code for mpn_addmul_5 and mpn_addmul_6. 20565 205662002-05-25 Kevin Ryde <kevin@swox.se> 20567 20568 * tune/tuneup.c: Misc nailifications, and disable preinv thresholds 20569 with nails. 20570 * tune/speed.h: Use GMP_NUMB_HIGHBIT with mpn_sb_divrem_mn and 20571 mpn_divrem_2. 20572 * mpz/powm.c (redc): Nailify q. 20573 20574 * tests/mpn/t-scan.c: Reduce the amount of testing, to go faster. 20575 205762002-05-23 Torbjorn Granlund <tege@swox.com> 20577 20578 * Version 4.1 released. 20579 20580 * mpn/alpha/ev6/nails/gmp-mparam.h: New file. 20581 20582 * tests/devel/add_n.c (refmpn_add_n): Nailify. 20583 * tests/devel/sub_n.c (refmpn_sub_n): Nailify. 20584 * tests/devel/addmul_1.c (refmpn_addmul_1): Nailify. 20585 * tests/devel/submul_1.c (refmpn_submul_1): Nailify. 20586 20587 * mpn/alpha/ev6/nails/add_n.asm: New file. 20588 * mpn/alpha/ev6/nails/sub_n.asm: New file. 20589 * mpn/alpha/ev6/nails/mul_1.asm: New file. 20590 * mpn/alpha/ev6/nails/submul_1.asm: New file. 20591 205922002-05-22 Torbjorn Granlund <tege@swox.com> 20593 20594 * mpn/alpha/ev6/nails/addmul_1.asm: New file. 20595 20596 * mpz/inp_str.c (mpz_inp_str_nowhite): Nailify. 20597 20598 * mpn/generic/mul_basecase.c: Update pointers before conditional 20599 MAX_LEFT break statements. 20600 206012002-05-21 Torbjorn Granlund <tege@swox.com> 20602 20603 * tests/mpz/t-gcd.c: Test mpz_gcd_ui. 20604 20605 * mpz/lcm_ui.c: Nailify. 20606 20607 * mpz/gcd_ui.c: Nailify. Make it work as documented, allowing 20608 NULL to be passed for result parameter. Fix gcd(0,0) case. 20609 20610 * mpz/set_str.c: Nailify. 20611 20612 * randlc2x.c (gmp_randinit_lc_2exp): Nailify. 20613 20614 From Jakub Jelinek: 20615 * longlong.h (add_ssaaaa,sub_ddmmss) [64-bit sparc]: 20616 Make it actually work. 20617 206182002-05-18 Torbjorn Granlund <tege@swox.com> 20619 20620 * mpf/ui_div.c: Shut up compiler warning. 20621 20622 * mpn/generic/mul_basecase.c: Use mpn_addmul_2, mpn_addmul_3, and 20623 mpn_addmul_4, as available. 20624 20625 * mpn/alpha/ev6/nails/addmul_2.asm: Adjust NAILS_SUPPORT decls. 20626 * mpn/alpha/ev6/nails/addmul_3.asm: Likewise 20627 * mpn/alpha/ev6/nails/addmul_4.asm: Likewise. 20628 20629 * configure.in (*-cray-unicos*): Back again to -hscalar0. 20630 (gmp_mpn_functions_optional): Add mul_3, mul_4, addmul_2, addmul_3, 20631 and addmul_4. 20632 * acconfig.h: Add #undefs for new optional mpn functions. 20633 206342002-05-18 Kevin Ryde <kevin@swox.se> 20635 20636 * gmp.texi (Integer Import and Export): Mention Cray unfilled words. 20637 20638 * mpz/set_d.c, mpq/set_d.c: Use LIMBS_PER_DOUBLE for the output of 20639 __gmp_extract_double. Reported by Henrik Johansson. 20640 206412002-05-17 Torbjorn Granlund <tege@swox.com> 20642 20643 * mpn/alpha/ev6/nails/addmul_2.asm: New file. 20644 * mpn/alpha/ev6/nails/addmul_3.asm: New file. 20645 * mpn/alpha/ev6/nails/addmul_4.asm: New file. 20646 20647 * mpn/generic/dump.c: Rewrite and nailify. 20648 206492002-05-16 Kevin Ryde <kevin@swox.se> 20650 20651 * mpfr/Makefile.am (EXTRA_DIST): Add BUGS file. 20652 206532002-05-15 Torbjorn Granlund <tege@swox.com> 20654 20655 * configure.in (*-cray-unicos*): Remove -hscalar0, add -hnofastmd 20656 as workaround for compiler bug. 20657 (mips64*-*-*): Pass just -O1 to cc, to work around compiler bug. 20658 206592002-05-14 Torbjorn Granlund <tege@swox.com> 20660 20661 * configure.in (*-cray-unicos*): Pass -hscalar0 to work around 20662 compiler bug for mpz/import.c. 20663 206642002-05-11 Torbjorn Granlund <tege@swox.com> 20665 20666 * mpz/import.c: Cast pointer via `unsigned long' when checking 20667 alignment to avoid compiler warnings. 20668 20669 * mpn/generic/rootrem.c: Adjust allocation of qp temporary area. 20670 206712002-05-09 Kevin Ryde <kevin@swox.se> 20672 20673 * mpz/import.c: Corrections to size store, special case tests, and 20674 general case ACCUMULATE. 20675 * tests/mpz/t-import.c, tests/mpz/t-export.c: More test data. 20676 206772002-05-09 Torbjorn Granlund <tege@swox.com> 20678 20679 * mpn/generic/rootrem.c: Use temp space for root, copy value in place 20680 before returning. 20681 * mpz/root.c: Don't allocate extra limb for root value. 20682 * mpz/perfpow.c: Undo last change. 20683 206842002-05-08 Torbjorn Granlund <tege@swox.com> 20685 20686 * gmp-impl.h (powerpc BSWAP_LIMB_FETCH): Rename local variable to make 20687 it not clash with caller. 20688 20689 * mpn/generic/rootrem.c: New file. 20690 * configure.in (gmp_mpn_functions): Add rootrem and pow_1. 20691 * mpn/Makefile.am (nodist_libdummy_la_SOURCES): Add rootrem.c and 20692 pow_1.c 20693 * gmp-impl.h (mpn_rootrem): Add declaration. 20694 * mpz/perfpow.c: Amend allocations for mpn_rootrem requirements. 20695 * mpz/root.c: Rewrite to use mpn_rootrem. 20696 206972002-05-08 Kevin Ryde <kevin@swox.se> 20698 20699 * gmp-impl.h (MUL_KARATSUBA_THRESHOLD etc): Remove forced nail values. 20700 20701 * mpf/fits_u.h, mpf/fits_s.h, tests/mpf/t-fits.c: Ignore fraction 20702 part, making the code match the documentation. 20703 20704 * gmpxx.h (struct __gmp_binary_minus): Use mpz_ui_sub. 20705 207062002-05-07 Kevin Ryde <kevin@swox.se> 20707 20708 * mpn/powerpc32/README: New file. 20709 20710 * mpz/root.c: Use unsigned long with mpz_sub_ui not mp_limb_t. 20711 20712 * tune/README: Misc updates including sparc32/v9 smoothness, low res 20713 timebase, and mpn_add_n operand overlaps. 20714 * tune/many.pl: Add udiv.asm support. 20715 20716 * gmp.texi (Build Options): A couple of --build better as --host. 20717 (Known Build Problems, Notes for Package Builds): Add DESTDIR problem. 20718 (Compatibility with older versions): Compatible with 4.x versions. 20719 (Converting Integers): Remove mpz_get_ui + mpz_tdiv_q_2exp decompose. 20720 (Integer Import and Export): New section. 20721 (Miscellaneous Integer Functions): Clarify mpz_sizeinbase returns 1 20722 for operand of 0. 20723 (Language Bindings): Add GNU Pascal. 20724 (Low-level Functions): Add GMP_NUMB_MAX. 20725 20726 * tests/mpz/t-import.c, tests/mpz/t-export.c, tests/mpz/t-get_d.c: 20727 New tests. 20728 * tests/mpz/Makefile.am: Add them. 20729 20730 * mpz/import.c, mpz/export.c: New files. 20731 * Makefile.am, mpz/Makefile.am, gmp-h.in: Add them. 20732 20733 * gmp-h.in, gmp-impl.h (GMP_NUMB_MAX): Move to gmp.h. 20734 * gmp-impl.h (CNST_LIMB): Add cast to mp_limb_t to ensure unsigned. 20735 (CRAY_Pragma, MPN_REVERSE, MPN_BSWAP, MPN_BSWAP_REVERSE, 20736 ASSERT_ALWAYS_LIMB, ASSERT_ALWAYS_MPN): New macros. 20737 (MPZ_CHECK_FORMAT): Use ASSERT_ALWAYS_MPN. 20738 207392002-05-07 Torbjorn Granlund <tege@swox.com> 20740 20741 * mpz/aors_ui.h: Nailify. 20742 20743 * tests/mpz/t-addsub.c: New file. 20744 * tests/mpz/Makefile.am (check_PROGRAMS): Add t-addsub. 20745 20746 * mpz/ui_sub.c: New file. 20747 * mpz/Makefile.am (libmpz_la_SOURCES): Add ui_sub.c. 20748 * Makefile.am (MPZ_OBJECTS): Ditto. 20749 * gmp-h.in (mpz_ui_sub): Add declaration. 20750 20751 * gmp-impl.h (MPZ_REALLOC): Rewrite to allow the use of _mpz_realloc 20752 return value. 20753 20754 * gmp-h.in (mpn_pow_1): Add declaration. 20755 20756 * mpn/generic/pow_1.c: Handle exp <= 1. Reverse rp/tp parity scheme 20757 for bn == 1 arm. 20758 20759 * Rename MP_LIMB_T_HIGHBIT => GMP_LIMB_HIGHBIT. 20760 207612002-05-06 Torbjorn Granlund <tege@swox.com> 20762 20763 * demos/pexpr.c (main): Don't call mpz_sizeinbase with negative base. 20764 20765 * randraw.c (lc): Remove an unused variable. 20766 20767 * mpn/generic/get_str.c: Clarify an algorithm description. 20768 20769 * tests/mpf/t-trunc.c: Nailify. 20770 * tests/mpf/t-set_si.c: Disable for nails. 20771 20772 * mpf/cmp_si.c: Nailify. 20773 * mpf/cmp_ui.c: Nailify. 20774 * mpf/div.c: Nailify. 20775 * mpf/div_2exp.c: Nailify. 20776 * mpf/div_ui.c: Nailify. 20777 * mpf/eq.c: Nailify. 20778 * mpf/get_d.c: Nailify. 20779 * mpf/get_d_2exp.c: Nailify. 20780 * mpf/get_si.c: Nailify. 20781 * mpf/get_str.c: Nailify. 20782 * mpf/get_ui.c: Nailify. 20783 * mpf/mul_2exp.c: Nailify. 20784 * mpf/random2.c: Nailify. 20785 * mpf/set_q.c: Nailify. 20786 * mpf/set_si.c: Nailify. 20787 * mpf/set_str.c: Nailify. 20788 * mpf/set_ui.c: Nailify. 20789 * mpf/sub.c: Nailify. 20790 * mpf/ui_div.c: Nailify. 20791 * mpf/ui_sub.c: Nailify. 20792 * mpf/urandomb.c: Nailify. 20793 20794 * gmp-impl.h (__GMPF_BITS_TO_PREC, __GMPF_PREC_TO_BITS): Nailify. 20795 20796 * mpz/get_si.c: Misc variable name changes. 20797 20798 * mpf/fits_u.h: Rewrite - nailify. 20799 * mpf/fits_s.h: Likewise. 20800 20801 * mpz/mod.c: Disambiguate if-statement with extra {}. 20802 20803 * mpf/int_p.c: Fix type of size variables. 20804 * mpf/get_ui: Likewise. 20805 * mpf/get_si: Likewise. 20806 * mpq/equal.c: Likewise. 20807 * mpq/get_d.c: Likewise. 20808 * mpz/cmp_d.c: Likewise. 20809 * mpz/cmpabs_d.c: Likewise. 20810 * mpz/divis_2exp.c: Likewise. 20811 * mpz/kronuz.c: Likewise. 20812 * mpz/kronzu.c: Likewise. 20813 * mpz/kronzs.c: Likewise. 20814 * mpz/kronsz.c: Likewise. 20815 * mpz/scan0.c: Likewise. 20816 * mpz/scan1.c: Likewise. 20817 * mpz/tstbit.c: Likewise. 20818 * mpz/cong_2exp.c: Likewise. 20819 * mpz/divis.c: Likewise. 20820 208212002-05-04 Torbjorn Granlund <tege@swox.com> 20822 20823 * mpn/generic/gcd.c: Additional nailify changes. 20824 208252002-05-04 Kevin Ryde <kevin@swox.se> 20826 20827 * gmp-h.in (__GNU_MP_VERSION): Set to 4.1. 20828 * Makefile.am (-version-info): Bump for new release. 20829 208302002-04-30 Torbjorn Granlund <tege@swox.com> 20831 20832 * mpn/generic/divrem_1.c: Additional nailify changes. 20833 * mpn/generic/mod_1.c: Likewise. 20834 20835 * tests/mpq/t-get_d.c: Print floats with all 16 digits. 20836 20837 * mpq/get_d.c: Nailify. 20838 20839 * tests/mpq/t-set_f.c: Disable for nails. 20840 20841 * mpz/get_d.c: Nailify. 20842 20843 * gmp-impl.h (LIMBS_PER_DOUBLE, MP_BASE_AS_DOUBLE): Nailify. 20844 20845 * gmp-h.in (__GMPZ_FITS_UTYPE_P): Cast maxval to before shifting it. 20846 20847 * extract-dbl.c: Nailify. 20848 208492002-04-29 Torbjorn Granlund <tege@swox.com> 20850 20851 * mpq/md_2exp.c (mord_2exp): Nailify. 20852 20853 * mpq/cmp_ui.c: Nailify. 20854 20855 * mpq/cmp.c (mpq_cmp): Nailify. 20856 20857 * mpn/generic/gcd.c: Nailify. GNUify code layout. 20858 20859 * mpn/generic/gcdext.c: Nailify. Misc changes. 20860 20861 * tests/mpz/t-sqrtrem.c: Let argv[1] mean # of repetitions. 20862 * tests/mpz/t-gcd.c: Likewise. 20863 20864 * mpz/gcd.c: Nailify. 20865 20866 * mpn/generic/random.c: Nailify. 20867 20868 * gmp-impl.h (modlimb_invert): Nailify. 20869 208702002-04-27 Torbjorn Granlund <tege@swox.com> 20871 20872 * mpn/generic/gcdext.c (div2): Remove qh parameter. 20873 (mpn_gcdext): Streamline double-limb code. 20874 Move GCDEXT_THRESHOLD check to after initial division. 20875 208762002-04-27 Kevin Ryde <kevin@swox.se> 20877 20878 * gmp-impl.h (JACOBI_MOD_OR_MODEXACT_1_ODD): Allow for odd 20879 GMP_NUMB_BITS. 20880 20881 * tune/time.c (sgi_works_p): Allow for 64-bit counter, and fix 20882 SGI_CYCLECNTR_SIZE handling. 20883 20884 * demos/expr/exprfr.c: Add nan and inf constants. 20885 * demos/expr/t-expr.c: Exercise them. 20886 208872002-04-26 Torbjorn Granlund <tege@swox.com> 20888 20889 * mpz/cmp_ui.c: Fix overflow conditions for nails. 20890 20891 * gmp-h.in (mpz_get_ui): Fix typo from last change. 20892 20893 * mpz/n_pow_ui.c: Adjust allocation for nails. 20894 (GMP_NUMB_HALFMAX): Renamed from MP_LIMB_T_HALFMAX. 20895 Fix umul_ppmm invocation for for nails. 20896 208972002-04-24 Torbjorn Granlund <tege@swox.com> 20898 20899 * mpn/generic/gcdext.c: Simplify by using mpn_tdiv_qr instead of 20900 mpn_divmod. 20901 209022002-04-24 Kevin Ryde <kevin@swox.se> 20903 20904 * configure.in (*-*-cygwin*): Give a sensible default command line 20905 limit, to avoid blowups reported by Jim Fougeron on windows 9x. 20906 (--enable-nails): Make the default 2, since mp_bases has data for that. 20907 20908 * mpfr/mpfr-math.h (__mpfr_nan): Use a "double" for the bytes, to 20909 avoid a mis-conversion on alpha gcc 3.0.2. 20910 (_MPFR_INFP_BYTES, _MPFR_INFM_BYTES): Should be a zero mantissa. 20911 209122002-04-23 Torbjorn Granlund <tege@swox.com> 20913 20914 * mpz/dive_ui.c: Fix typo. 20915 20916 * mpz/fits_s.h: Rewrite. 20917 20918 * mpz/jacobi.c: Nailify. 20919 * mpz/kronuz.c: Additional nailify changes. 20920 * mpz/kronsz.c: Likewise. 20921 209222002-04-23 Kevin Ryde <kevin@swox.se> 20923 20924 * demos/expr/Makefile.am (LDADD): Add $(LIBM) for the benefit of mpfr. 20925 20926 * mpz/divis_ui.c, mpz/cong_ui.c: Nailify. 20927 * mpn/generic/bdivmod.c, mpz/divexact.c, mpz/dive_ui.c: Nailify. 20928 * mpn/generic/sb_divrem_mn.c, mpn/generic/divrem.c, 20929 mpn/generic/divrem_2.c: Nailify ASSERTs. 20930 * mpn/x86/k6/mmx/logops_n.asm, mpn/x86/k6/mmx/com_n.asm: Nailify. 20931 * mpz/inp_raw.c, mpz/out_raw.c: Nailify. 20932 * mpz/kronzu.c, mpz/kronuz.c, mpz/kronzs.c, mpz/kronsz.c: Nailify. 20933 * mpn/generic/divis.c, mpz/cong.c, mpz/cong_2exp.c: Nailify. 20934 * gmp-impl.h (NEG_MOD): Nailify. 20935 20936 * gmp-impl.h, mpn/mp_bases.c: Add back GMP_NUMB_BITS==30 bases data. 20937 20938 * mpfr/get_d.c: Patch from Paul to avoid problem with constant folding 20939 in gcc on OSF. 20940 20941 * mpn/lisp/gmpasm-mode.el: Remove mention of defunct LF macro. 20942 209432002-04-22 Torbjorn Granlund <tege@swox.com> 20944 20945 * demos/pexpr.c: Handle "binomial" operator. 20946 20947 * mpz/cmp_ui.c: Move assignments of `up' out of conditionals. 20948 20949 * mpn/generic/gcdext.c: Fix fencepost error in STAT code. 20950 20951 * gmp-impl.h (mpn_com_n): Nailify. 20952 20953 * tests/mpz/t-cdiv_ui.c: New file. 20954 * tests/mpz/Makefile.am (check_PROGRAMS): Add t-cdiv_ui. 20955 * mpz/cdiv_qr_ui.c: Nailify. 20956 * mpz/cdiv_q_ui.c: Nailify. 20957 * mpz/cdiv_r_ui.c: Nailify. 20958 * mpz/cdiv_ui.c: Nailify. 20959 20960 * tests/misc/t-printf.c (CHECK_N): Add cast to allow `char' to be an 20961 unsigned type. 20962 * tests/misc/t-scanf.c: Likewise. 20963 20964 * mpz/mul_i.h: Rework nails code to handle parameter overlap. 20965 20966 * tests/mpz/t-set_f.c: Disable for nails. 20967 209682002-04-21 Torbjorn Granlund <tege@swox.com> 20969 20970 * mpz/set_si.c: Add cast to support LONG_LONG_LIMB. 20971 * mpz/iset_si.c: Likewise. 20972 20973 * mpz/bin_ui.c: Nailify. 20974 * mpz/bin_uiui.c: Nailify. 20975 20976 * mpz/cmpabs_ui.c: Nailify. 20977 20978 * tests/mpz/t-aorsmul.c: Nailify. 20979 * mpz/aorsmul_i.c (mpz_addmul_ui, mpz_submul_ui): Nailify better. 20980 209812002-04-20 Torbjorn Granlund <tege@swox.com> 20982 20983 * tests/mpz/t-fdiv_ui.c: Check mpz_fdiv_ui. 20984 * tests/mpz/t-tdiv_ui.c: Check mpz_tdiv_ui. 20985 20986 * mpz/tdiv_ui.c: Rewrite nails code. 20987 * mpz/fdiv_ui.c: Nailify. 20988 20989 * tests/mpz/t-tdiv_ui.c: Check returned remainders. 20990 * tests/mpz/t-fdiv_ui.c: Merge in recent t-tdiv_ui changes. 20991 20992 * mpz/tdiv_q_ui.c: Remove spurious TMP_* calls. 20993 20994 * mpz/fdiv_qr_ui.c: Nailify. 20995 * mpz/fdiv_q_ui.c: Nailify. 20996 * mpz/fdiv_r_ui.c: Nailify. 20997 20998 * mpz/get_si.c: Misc nailify changes to shut up compiler warnings. 20999 21000 * mpz/ui_pow_ui.c: Fix typo in last change. 21001 210022002-04-20 Kevin Ryde <kevin@swox.se> 21003 21004 * tests/misc/t-printf.c, tests/misc/t-scanf.c: Check all %n types. 21005 21006 * mpn/x86/k7/mmx/divrem_1.asm, mpn/x86/p6/mmx/divrem_1.asm 21007 (mpn_preinv_divrem_1): New entrypoint. 21008 (mpn_divrem_1): Avoid a branch when testing high<divisor. 21009 * mpn/asm-defs.m4: Add define_mpn(preinv_divrem_1). 21010 * configure.in: Allow divrem_1.asm to provide mpn_preinv_divrem_1. 21011 21012 * gmp-impl.h [nails]: Add #undefs of MUL_KARATSUBA_THRESHOLD etc, to 21013 override CPU gmp-mparam.h. Remove JACOBI_BASE_METHOD override since 21014 it's nails-neutral. 21015 21016 * tests/mpn/t-mp_bases.c: New file. 21017 * tests/mpn/Makefile.am (check_PROGRAMS): Add it. 21018 * tests/t-constants.c: Move MP_BASES constants checks to it. 21019 21020 * mpn/mp_bases.c: Fix big_base_inverted values for nails. 21021 * gmp-impl.h (MP_BASES_BIG_BASE_INVERTED_10, 21022 MP_BASES_NORMALIZATION_STEPS_10): Fix nails values. 21023 (MP_BASES_*): Remove GMP_NUMB_BITS == 30 data. 21024 21025 * mpn/x86/pentium/com_n.asm, mpn/x86/pentium/logops_n.asm: Add 21026 NAILS_SUPPORT indicators. 21027 21028 * configure.in: Grep for NAILS_SUPPORT in cpu-specific code, and look 21029 in "nails" subdirectories, print path used. 21030 * mpn/asm-defs.m4 (NAILS_SUPPORT): New macro. 21031 21032 * mpfr/mpfr-test.h: Include config.h, for the benefit of test programs 21033 not using gmp-impl.h. 21034 210352002-04-19 Torbjorn Granlund <tege@swox.com> 21036 21037 * tests/mpz/t-scan.c: Nailify. 21038 21039 * mpz/tdiv_qr_ui.c: Nailify. 21040 * mpz/tdiv_q_ui.c: Nailify. 21041 * mpz/tdiv_r_ui.c: Nailify. 21042 * mpz/tdiv_ui.c: Nailify. 21043 21044 * mpz/cmp_ui.c: Nailify. 21045 21046 * mpz/ui_pow_ui.c: Misc nailify changes to shut up compiler warnings. 21047 21048 * mpz/scan0.c: Nailify. 21049 * mpz/scan1.c: Nailify. 21050 21051 * tests/mpz/t-sizeinbase.c (mpz_fake_bits): Nailify. 21052 210532002-04-18 Torbjorn Granlund <tege@swox.com> 21054 21055 * mpz/aorsmul_i.c: Nailify. 21056 21057 * mpz/cmp_si.c: Nailify (botched). 21058 21059 * mpz/ui_pow_ui.c: Nailify. 21060 21061 * gmp-h.in (__GMPZ_FITS_UTYPE_P): Nailify. 21062 21063 * mpz/fits_s.h: Nailify. 21064 21065 * tests/mpz/bit.c (check_tstbit): Nailify. 21066 21067 From Paul Zimmermann: 21068 * mpn/generic/sqrtrem.c: Nailify. 21069 21070 * mpz/n_pow_ui.c: Nailify. 21071 21072 * mpz/cfdiv_r_2exp.c: Nailify. 21073 21074 * randraw.c (lc): Undo: Let mpn_rshift put result in place to avoid 21075 extra MPN_COPY. 21076 210772002-04-17 Torbjorn Granlund <tege@swox.com> 21078 21079 * mpz/clrbit.c: Add two GMP_NUMB_MASK masks after addition. 21080 21081 * mpn/generic/random2.c (LOGBITS_PER_BLOCK): Decrease to 4. 21082 21083 * gmp-impl.h (nail DIV_DC_THRESHOLD): Decrease to 50 to allow fast 21084 division. 21085 21086 * mpn/generic/random2.c: Nailify. 21087 21088 * mpz/fac_ui.c: Nailify. 21089 21090 * mpz/mul_i.h: #if ... #endif code block to shut up gcc warnings. 21091 21092 * mpn/generic/sqrtrem.c: Adopt to GNU coding standards. 21093 (mpn_dc_sqrtrem): New name for mpn_dq_sqrtrem. 21094 Partial nailification. 21095 21096 * configure.in: As a temporary hack, clear extra_functions for nails 21097 builds. 21098 21099 * gmp-h.in (mpz_get_ui): #if ... #endif else code block to shut up gcc 21100 warnings. 21101 211022002-04-17 Kevin Ryde <kevin@swox.se> 21103 21104 * texinfo.tex: Update to 2002-03-26.08 per texinfo 4.2. 21105 * gmp.texi: Must have @top in @ifnottex (or @contents doesn't come out 21106 in one run). 21107 21108 * mpn/generic/scan0.c, mpn/generic/scan1.c: Nailify. 21109 21110 * tests/mpn/t-scan.c: New file. 21111 * tests/mpn/Makefile.am (check_PROGRAMS): Add it. 21112 21113 * tests/refmpn.c, tests/tests.h (refmpn_tstbit): Use unsigned long for 21114 bit index. 21115 (refmpn_setbit, refmpn_clrbit, refmpn_scan0, refmpn_scan1): New 21116 functions. 21117 21118 * mpfr/cmp_ui.c (mpfr_cmp_si_2exp): Fix b==0 i!=0 case. 21119 211202002-04-17 Gerardo Ballabio <gerardo.ballabio@unimib.it> 21121 21122 * gmpxx.h, mpfrxx.h: Remove mpfr_class bool combinations, remove 21123 mpfr_class::get_str2, use mp_rnd_t for rounding modes, use 21124 8*sizeof(double) for mpfr_t's holding doubles. 21125 211262002-04-17 Torbjorn Granlund <tege@swox.com> 21127 21128 * mpz/powm.c: Nailify. 21129 * mpz/powm_ui.c: Nailify. 21130 211312002-04-16 Torbjorn Granlund <tege@swox.com> 21132 21133 * mpz/hamdist.c: Nailify. 21134 * tests/misc.c (urandom): Nailify. 21135 21136 * mpz/get_si.c: Nailify. 21137 * gmp-h.in (mpz_get_ui): Nailify. Streamline (and probably upset 21138 memory checkers). 21139 21140 * gmp-impl.h (mp_bases[10] values): Add versions for GMP_NUMB_BITS 21141 being 28, 60, and 63. 21142 * mpn/mp_bases.c: Add tables for GMP_NUMB_BITS being 28, 60, and 63. 21143 21144 * mpz/iset_si.c: Nailify. 21145 * mpz/iset_ui.c: Nailify 21146 21147 * tests/mpz/convert.c (main): Print test number in error message. 21148 21149 * mpn/generic/get_str.c (mpn_sb_get_str): Shift up `frac' into nails 21150 field after bignum division. 21151 211522002-04-16 Kevin Ryde <kevin@swox.se> 21153 21154 * gmp-h.in, gmp-impl.h (GMP_NAIL_MASK): Move to gmp.h. 21155 21156 * gmp.texi: Use @documentdescription and @copying, per texinfo 4.2. 21157 (Low-level Functions): Clarify mpn_gcd overlap requirements, rewrite 21158 mpn_set_str description, add nails section. 21159 (C++ Interface General): Remove bool from types that mix with classes. 21160 (Language Bindings): Add STklos, GNU Smalltalk, Regina. 21161 (Binary to Radix, Radix to Binary): Describe new code. 21162 (Assembler Cache Handling): More notes, mostly by Torbjorn. 21163 21164 * macos/configure (%vars): Remove __GMP from substitutions, per change 21165 to main configure. 21166 21167 * mpn/generic/dive_1.c: Nailify. 21168 * mpn/generic/mode1o.c: Nailify, remove bogus ASSERT in commented-out 21169 alternate implementation. 21170 * gmp-impl.h (SUBC_LIMB): New macro. 21171 21172 * tests/devel/try.c (validate_divexact_1): Correction to compare. 21173 (udiv_qrnnd): New testing. 21174 (SHIFT_LIMIT): Nailify. 21175 (-b): New option, remove spurious "H" from getopt string. 21176 21177 * mpz/clrbit.c: Nailify. 21178 * tests/mpz/t-hamdist.c: Nailify. 21179 * gmp-impl.h (MPN_FIB2_SIZE): Nailify. 21180 (PP): Nailify conditionals. 21181 * tests/mpz/t-fib_ui.c (MPZ_FIB_SIZE_FLOAT): Nailify. 21182 21183 * configure.in, acinclude.m4: Establish GMP_NAIL_BITS and 21184 GMP_LIMB_BITS for gmp-h.in configure tests. 21185 21186 * mpfr/*, configure.in: Update to final mpfr 2.0.1. 21187 * mpfr/acinclude.m4 (MPFR_CONFIGS): Use $host, not uname stuff. 21188 * mpfr/tests/tout_str.c: Patch from Paul for denorm fprintf tests. 21189 211902002-04-15 Torbjorn Granlund <tege@swox.com> 21191 21192 * mpn/generic/divrem_1.c (EXTRACT): Remove. 21193 21194 * tests/mpz/t-tdiv_ui.c (dump_abort): Accept argument for error string. 21195 21196 * mpz/rrandomb.c: Nailify. Needs further work. 21197 21198 * mpn/generic/mod_1.c: Nailify. 21199 21200 * gmp-impl.h: Set various *_THRESHOLD values to be used for nails to 21201 avoid not yet qualified algorithms. 21202 (MPZ_CHECK_FORMAT): Check that nail part is zero. 21203 21204 * tests/mpz/t-mul.c (main): Test squaring even for huge operands. 21205 (base_mul): Nailify. 21206 (dump_abort): Accept argument for error string. Print product 21207 difference. 21208 21209 * mpn/generic/set_str.c: Nailify. 21210 21211 * gmp-h.in (__GMPN_ADD, __GMPN_SUB): Nailify. 21212 212132002-04-14 Torbjorn Granlund <tege@swox.com> 21214 21215 * randraw.c (lc): Return non-nonsense return value for seed=0 case. 21216 Check for m2exp being non-zero early; remove all other tests of m2exp. 21217 Remove redundant MPN_ZERO call. 21218 Let mpn_rshift put result in place to avoid extra MPN_COPY. 21219 Remove confusing comment before function `lc' describing BBS algorithm. 21220 Misc simplification and cleanups. 21221 Nailify. Needs further work. 21222 21223 * mpz/set_si.c: Nailify. 21224 * mpz/set_ui.c: Nailify. 21225 * mpz/mul_i.h: Nailify. 21226 21227 * tests/mpz/t-mul_i.c: Actually test _ui routines. Add some more test 21228 values. 21229 21230 * mpn/generic/mul_n.c: Finish nailifying toom3 code. 21231 212322002-04-13 Kevin Ryde <kevin@swox.se> 21233 21234 * mpfr/*: Update to another new mpfr 2.0.1. 21235 * configure.in, Makefile.am, mpfr/Makefile.am, mpfr/tests/Makefile.am: 21236 Use MPFR_CONFIGS macro, establish separate MPFR_CFLAGS for mpfr build. 21237 21238 * mpfr/tests/Makefile.am: Correction to convenience rule for libmpfr.a. 21239 212402002-04-11 Kevin Ryde <kevin@swox.se> 21241 21242 * mpfr/set_q.c: gmp-impl.h before mpfr.h to avoid _PROTO redefine. 21243 21244 * mpfr/*, configure.in: Update to new mpfr 2.0.1. 21245 21246 * tests/refmpn.c (refmpn_udiv_qrnnd, refmpn_divmod_1c_workaround): 21247 Fixes for nails. 21248 21249 * tests/t-constants.c (MODLIMB_INVERSE_3): Nailify tests. 21250 (MP_BASES_BIG_BASE_INVERTED_10, MP_BASES_NORMALIZATION_STEPS_10): Only 21251 check these under USE_PREINV_DIVREM_1. 21252 * tests/t-modlinv.c: Nailify tests. 21253 212542002-04-11 Gerardo Ballabio <gerardo.ballabio@unimib.it> 21255 21256 * gmpxx.h: Remove bool combinations, remove mpf_class::get_str2, only 21257 need <iosfwd> now. 21258 212592002-04-11 Torbjorn Granlund <tege@swox.com> 21260 21261 * mpn/generic/diveby3.c: Nailify. 21262 * gmp-impl.h (MODLIMB_INVERSE_3): Nailify. 21263 21264 * mpn/generic/mul_n.c: Nailify Toom3 code. 21265 212662002-04-10 Kevin Ryde <kevin@swox.se> 21267 21268 * gmp-impl.h (MPN_KARA_MUL_N_MINSIZE, MPN_KARA_SQR_N_MINSIZE): Set to 21269 3, as needed by nails case. 21270 21271 * mpn/generic/addmul_1.c, mpn/generic/submul_1.c [nails]: Fix vl 21272 assert, add rp,n and up,n asserts. 21273 21274 * mpfr/Makefile.am: Add new mpfr-math.h, install mpf2mpfr.h. 21275 212762002-04-10 Torbjorn Granlund <tege@swox.com> 21277 21278 * mpn/generic/divrem_1.c: Nailify. Update mp_size_t variables to use 21279 `n' suffix instead of `size' suffix. 21280 * mpn/generic/divrem_2.c: Likewise. 21281 * mpn/generic/sb_divrem_mn.c: Nailify. 21282 * mpn/generic/tdiv_qr.c: Nailify. 21283 (SHL): Remove silly macro. 21284 21285 * mpn/generic/mul_n.c (mpn_kara_mul_n): Replace open-coded increment by 21286 mpn_incr_u call. Handle nails in ws[n] increment. 21287 * mpn/generic/mul_n.c (mpn_kara_sqr_n): Likewise. 21288 21289 * gmp-h.in (GMP_NUMB_MASK): New #define. 21290 (__GMPN_AORS_1): Add version for nails. 21291 21292 * gmp-impl.h (GMP_NUMB_MASK): Comment out, now in gmp.h. 21293 (mpn_incr_u): Don't assume `incr' is non-zero. 21294 (mpn_decr_u): Similarly. 21295 212962002-04-09 Kevin Ryde <kevin@swox.se> 21297 21298 * mpfr/*, configure.in: Update to mpfr 2.0.1. 21299 21300 * tests/refmpn.c (refmpn_mul_1c, lshift_make): Corrections for nails. 21301 * tssts/refmpn.c, tests/tests.h (refmpn_cmp_allowzero): New function. 21302 21303 * mpn/generic/mul_1.c [nails]: Fix vl assert, add {up,n} assert. 21304 21305 * mpn/pa32/hppa1_1/pa7100/addmul_1.asm, 21306 mpn/pa32/hppa1_1/pa7100/submul_1.asm: Rename "size" define, to avoid 21307 ELF .size directive. Reported by LaMont Jones. 21308 21309 * tests/mpz/t-set_si.c: Add nails support. 21310 213112002-04-05 Torbjorn Granlund <tege@swox.com> 21312 21313 * gmp-impl.h: Replace nail mpn_incr_u, mpn_decr_u with faster versions. 21314 (mp_bases[10] values): Check GMP_NUMB_BITS instead of BITS_PER_MP_LIMB. 21315 Add GMP_NUMB_BITS == 30 version. 21316 (__gmp_doprnt, etc): Remove parameter names. 21317 21318 * mpn/generic/mul_n.c: Nailify Karatsuba code. 21319 * mpn/generic/get_str.c: Nailify. 21320 * mpn/generic/sqr_basecase.c: Nailify. 21321 * mpn/generic/lshift.c: Nailify. 21322 * mpn/generic/rshift.c: Likewise. 21323 * mpn/generic/add_n.c: Nailify. Revamp non-nail code. 21324 * mpn/generic/sub_n.c: Likewise. 21325 * mpn/generic/mul_1.c: Likewise. 21326 * mpn/generic/addmul_1.c: Likewise. 21327 * mpn/generic/submul_1.c: Likewise. 21328 213292002-04-02 Kevin Ryde <kevin@swox.se> 21330 21331 * gmp-impl.h (BSWAP_LIMB_FETCH, BSWAP_LIMB_STORE) [powerpc]: 21332 Corrections to constraints, and restrict to bigendian. 21333 213342002-03-31 Kevin Ryde <kevin@swox.se> 21335 21336 * tests/mpz/dive.c: Better diagnostics. 21337 21338 * tests/devel/try.c (mpn_get_str, mpn_umul_ppmm_r): New tests. 21339 21340 * tests/misc.c, tests/tests.h (byte_diff_lowest, byte_diff_highest): 21341 New functions. 21342 21343 * tests/t-bswap.c: New file. 21344 * tests/Makefile.am (check_PROGRAMS): Add it. 21345 21346 * tests/mpn/t-aors_1.c, tests/mpn/t-iord_u.c: Add nails support. 21347 21348 * gmp-impl.h (MPN_IORD_U) [x86]: Eliminate unnecessary jiord and iord, 21349 rename "n" to incr per generic versions, restrict to nails==0. 21350 (mpn_incr_u, mpn_decr_u): Add nails support. 21351 (GMP_NAIL_LOWBIT, GMP_NUMB_MAX): New macros. 21352 21353 * tests/trace.c, tests/tests.h (byte_trace, byte_tracen): New 21354 functions. 21355 * tests/trace.c: Handle NULL operands. 21356 21357 * tests/refmpn.c, tests/devel/try.c, tune/speed.c: Add preliminary 21358 nail support. 21359 21360 * tests/refmpn.c, test/tests.h (byte_overlap_p, refmpn_equal_anynail, 21361 refmpn_umul_ppmm_r, refmpn_udiv_qrnnd_r, refmpn_get_str, 21362 refmpn_bswap_limb, refmpn_random, refmpn_random2, refmpn_bswap_limb): 21363 New functions. 21364 21365 * gmp-impl.h, tests/refmpn.c (ASSERT_LIMB): Renamed from 21366 ASSERT_MP_LIMB_T. 21367 21368 * mpn/x86/*/*.asm, mpn/powerpc32/*/*.asm, mpn/powerpc64/*/*.asm: Put 21369 speeds after the copyright notice, so as to keep that clear. 21370 213712002-03-29 Kevin Ryde <kevin@swox.se> 21372 21373 * configure.in (powerpc*-*-aix*): Correction to xlc -qarch selection, 21374 for 32-bit mode. 21375 213762002-03-28 Torbjorn Granlund <tege@swox.com> 21377 21378 * mpn: Fix spacing in many files. 21379 21380 * mpn/generic/aorsmul_1.c: Split into addmul_1.c and submul_1.c. 21381 * mpn/generic/aors_n.c: Split into add_n.c and sub_n.c. 21382 21383 * mpn/pa64/add_n.asm: Trim another 0.125 cycle/limb. Fix a comment. 21384 * mpn/pa64/sub_n.asm: Likewise. 21385 21386 * mpn/pa64/mul_1.asm: Change comclr, comb to proper forms cmpclr, cmpb. 21387 * mpn/pa64/addmul_1.asm: Likewise. 21388 * mpn/pa64/submul_1.asm: Likewise. 21389 213902002-03-28 Kevin Ryde <kevin@swox.se> 21391 21392 * gmp.texi (Converting Integers): Fix type of exp in mpz_get_d_2exp, 21393 reported by epl@unimelb.edu.au. 21394 (References): Update Burnikel and Ziegler URL, reported by Keith 21395 Briggs. 21396 21397 * gmp-h.in, mp-h.in, configure.in, acinclude.m4: Remove __GMP from 21398 AC_SUBSTs, since autoconf says leading "_" in makefile variables is 21399 not portable. 21400 21401 * demos/expr/run-expr.c: Declare optarg, optind, opterr if necessary. 21402 * configure.in, demos/expr/expr-config-h.in: Configs for this. 21403 214042002-03-27 Torbjorn Granlund <tege@swox.com> 21405 21406 * mpn/Makefile.am (TARG_DIST): Remove pa64w and hppa, add pa32. 21407 21408 * configure.in (path_20w): Remove pa64w. 21409 21410 * mpn/pa64/udiv_qrnnd.asm: Tweak for PA8000 performance comparative to 21411 that on PA8500. 21412 214132002-03-26 Torbjorn Granlund <tege@swox.com> 21414 21415 * mpn/pa32: New name for mpn/hppa. 21416 * configure.in: Corresponding changes. 21417 21418 * mpn/pa64/umul_ppmm.asm: New file, generalized for both 2.0N and 2.0W. 21419 * mpn/pa64/umul_ppmm.S: Remove. 21420 21421 * mpn/pa64/udiv_qrnnd.asm: Generalize for both 2.0N and 2.0W. 21422 * mpn/pa64w/udiv_qrnnd.asm: Remove. 21423 214242002-03-26 Kevin Ryde <kevin@swox.se> 21425 21426 * mpfr/tests/tdiv.c, mpfr/tests/tui_div.c: Don't depend on nan and inf 21427 handling in "double", for the benefit of alpha. 21428 21429 * configure (hppa2.0w): Set path to "pa64w pa64". 21430 21431 * acinclude.m4, configure.in (GMP_C_INLINE): New macro. 21432 * acinclude.m4 (GMP_H_EXTERN_INLINE): Use it, and fix "yes" handling. 21433 214342002-03-25 Torbjorn Granlund <tege@swox.com> 21435 21436 * mpn/pa64w/add_n.s: Remove. 21437 * mpn/pa64w/sub_n.s: Remove. 21438 * mpn/pa64w/lshift.s: Remove. 21439 * mpn/pa64w/rshift.s: Remove. 21440 * mpn/pa64w/mul_1.S: Remove. 21441 * mpn/pa64w/addmul_1.S: Remove. 21442 * mpn/pa64w/submul_1.S: Remove. 21443 * mpn/pa64w/sqr_diagonal.asm: Remove. 21444 21445 * mpn/pa64/mul_1.asm: New file with twice faster code; generalized 21446 for both 2.0N and 2.0W. 21447 * mpn/pa64/submul_1.asm: Likewise. 21448 * mpn/pa64/mul_1.S: Remove. 21449 * mpn/pa64/submul_1.S: Remove. 21450 21451 * mpn/pa64/sqr_diagonal.asm: Generalize for both 2.0N and 2.0W. 21452 21453 * mpn/pa64/add_n.asm: New file, generalized for both 2.0N and 2.0W. 21454 * mpn/pa64/sub_n.asm: Likewise. 21455 * mpn/pa64/lshift.asm: Likewise. 21456 * mpn/pa64/rshift.asm: Likewise. 21457 * mpn/pa64/add_n.s: Remove. 21458 * mpn/pa64/sub_n.s: Remove. 21459 * mpn/pa64/lshift.s: Remove. 21460 * mpn/pa64/rshift.s: Remove. 21461 214622002-03-24 Kevin Ryde <kevin@swox.se> 21463 21464 * gmp-impl.h (BSWAP_LIMB_FETCH, BSWAP_LIMB_STORE): New macros. 21465 * mpz/inp_raw.c, mpz/out_raw.c: Use them. 21466 * acconfig.h (HAVE_HOST_CPU): Add some powerpc types. 21467 21468 * mpn/powerpc32/750/com_n.asm: New file. 21469 21470 * mpfr/tests/tout_str.c: Disable random tests, since they fail on 21471 alphaev56-unknown-freebsd4.1 and do nothing by default. 21472 21473 * mpfr/tests/tsqrt.c: Don't depend on nan, inf or -0 in "double", for 21474 the benefit of alpha. 21475 * mpfr/sqrt.c: Clear nan flag on -0. 21476 21477 * demos/factorize.c: Use mpn_random() instead of random(), to avoid 21478 portability problems. 21479 21480 * demos/isprime.c (print_usage_and_exit): Declare as "void" to avoid 21481 warnings. 21482 21483 * demos/pexpr.c (setup_error_handler): Corrections to sigstack code. 21484 21485 * demos/calc/calc.y: Add some `;'s to make bison 1.34 happy. 21486 214872002-03-23 Torbjorn Granlund <tege@swox.com> 21488 21489 * mpn/pa64/addmul_1.asm: New file with twice faster code; generalized 21490 for both 2.0N and 2.0W. 21491 214922002-03-22 Kevin Ryde <kevin@swox.se> 21493 21494 * tune/time.c: Add SGI hardware counter measuring method, change some 21495 abort()s into ASSERT_FAIL()s. 21496 21497 * configure.in (AC_CHECK_HEADERS): Add fcntl.h and sys/syssgi.h. 21498 (AC_CHECK_FUNCS): Add syssgi. 21499 21500 * configure.in, mpfr/Makefile.am, mpfr/tests/Makefile.am: Use 21501 -mieee-with-inexact or -ieee_with_inexact for mpfr on alpha, so 21502 denorms work. 21503 21504 * mpfr/isinteger.c: Fix a memory leak. 21505 215062002-03-21 Torbjorn Granlund <tege@swox.com> 21507 21508 * tune/speed.c (struct choice_t): Make `r' an mp_limb_t. 21509 215102002-03-21 Kevin Ryde <kevin@swox.se> 21511 21512 * configure.in (HAVE_LIMB_BIG_ENDIAN, HAVE_LIMB_LITTLE_ENDIAN): Use an 21513 AH_VERBATIM and better explanation. 21514 * acinclude.m4 (GMP_C_DOUBLE_FORMAT): Similarly for the HAVE_DOUBLE 21515 constants. 21516 21517 * gmp.texi (Number Theoretic Functions): Clarify sign of GCD returned 21518 by mpz_gcdext. 21519 21520 * demos/pexpr.c, demos/pexpr-config-h.in, configure.in: Use an 21521 autoconf test for stack_t. 21522 21523 * configure.in, gmp-h.in, mp-h.in, macos/configure, tests/mpz/reuse.c, 21524 tests/mpf/reuse.c: Use __GMP_LIBGMP_DLL to enable windows declspec, 21525 don't require _WIN32 (etc), remove __GMP_LIBGMP_SHARED and 21526 __GMP_LIBGMP_STATIC. 21527 21528 * gmp-impl.h (mp_bases): Add __GMP_DECLSPEC, for the benefit of 21529 tests/t-constants.c. 21530 21531 * tune/many.pl, tune/speed.h: Remove suffix hack for back.asm. 21532 215332002-03-21 Paul Zimmermann <Paul.Zimmermann@loria.fr> 21534 21535 * mpfr/sin_cos.c (mpfr_sin_cos): New file. 21536 * mpfr/mpfr.h, mpfr/mpfr.texi, mpfr/Makefile.am: Add it. 21537 * mpfr/tan.c: Fix sign in 2nd and 4th quadrants. 21538 21539 * mpfr/log10.c: Fix hangs on certain inputs. 21540 215412002-03-20 Torbjorn Granlund <tege@swox.com> 21542 21543 * demos/pexpr.c (setup_error_handler): Declare `s', the first 21544 sigaltstack parameter, using `stack_t' just on AIX. 21545 215462002-03-19 Torbjorn Granlund <tege@swox.com> 21547 21548 * mpn/powerpc32/mul_1.asm: Use free caller-saves registers instead 21549 of the callee-saves r30 and r31. 21550 215512002-03-19 Kevin Ryde <kevin@swox.se> 21552 21553 * tune/freq.c (freq_proc_cpuinfo): Recognise powerpc "clock", where 21554 previously got the wrong result from "bogomips". 21555 21556 * mpn/powerpc32/add_n.asm, mpn/powerpc32/sub_n.asm: Rewrite, faster on 21557 750, and smaller too. 21558 * mpn/powerpc32/*.asm: Use L(), add some measured speeds. 21559 21560 * longlong.h (count_trailing_zeros) [vax]: Add a version using ffs, 21561 but commented out. 21562 215632002-03-17 Kevin Ryde <kevin@swox.se> 21564 21565 * tune/speed.c, tune/speed.h, tune/common.c, many.pl: Use optional 21566 ".r" to specify operand overlaps for mpn_add_n, mpn_sub_n and logops. 21567 Remove mpn_add_n_inplace and mpn_add_n_self. 21568 * tune/many.pl: Fix MULFUNC_PROLOGUE parsing. 21569 21570 * gmp.texi (Known Build Problems): Note `make' problem with long 21571 libgmp.la dependencies list. 21572 21573 * printf/doprnt.c, scanf/doscan.c (%zn): Remove test of non-existent 21574 HAVE_SIZE_T, just use size_t unconditionally. 21575 * printf/doprnt.c (%zd etc): Fix 'z' type parsing. 21576 * tests/misc/t-printf.c, tests/misc/t-scanf.c: More tests. 21577 21578 * configure.in: Use AC_COPYRIGHT. 21579 Add m4_pattern_allow(GMP_MPARAM_H_SUGGEST). 21580 21581 * tune/Makefile.am (libdummy.la): Remove this, sqr_basecase.c already 21582 gets an ansi2knr rule from nodist_tuneup_SOURCES. 21583 21584 * longlong.h (count_leading_zeros) [pentiumpro gcc<3]: Test 21585 HAVE_HOST_CPU_i686 too. 21586 21587 * mpz/out_raw.c (HTON_LIMB_STORE): Fix a typo in big endian #if. 21588 215892002-03-14 Kevin Ryde <kevin@swox.se> 21590 21591 * mpn/x86/pentium/com_n.asm, mpn/x86/pentium/logops_n.asm, 21592 mpn/x86/k6/mmx/com_n.asm: Add nails support. 21593 21594 * texinfo.tex: Update to 2002-03-01.06 (per texinfo 4.1). 21595 * gmp.texi (@ma): Remove, @math does this now. 21596 21597 * mpfr/tests/reuse.c: Clear op1 and op2 flags only in their respective 21598 outer loops. 21599 21600 * configure.in (--enable-cxx): Correction to the default stated in the 21601 help string. 21602 (power*-*-aix*, not powerpc): Use aix.m4, don't run 21603 GMP_ASM_POWERPC_R_REGISTERS or use powerpc-defs.m4. 21604 216052002-03-13 Torbjorn Granlund <tege@swox.com> 21606 21607 * mpn/sparc32/gmp-mparam.h: New file. 21608 216092002-03-13 Kevin Ryde <kevin@swox.se> 21610 21611 * demos/expr/exprfr.c: More mpfr functions, corrections to agm, cos, 21612 sin, rename log2 constant to loge2 to make room for log2 function. 21613 * demos/expr/t-expr.c: More tests. 21614 21615 * mpz/inp_raw.c (NTOH_LIMB_FETCH) [generic 16bit]: Remove spurious "+". 21616 21617 * mpfr/acos.c: Avoid a memory leak for certain operands. 21618 21619 * acinclude.m4, configure.in (GMP_C_DOUBLE_FORMAT): New macro. 21620 21621 * acinclude.m4 (GMP_HPC_HPPA_2_0, GMP_ASM_UNDERSCORE, 21622 GMP_ASM_ALIGN_LOG, GMP_ASM_LSYM_PREFIX, GMP_ASM_W32, GMP_ASM_X86_MMX): 21623 Change ac_objext to OBJEXT, which is the documented variable. 21624 21625 * config.guess (powerpc*-*-*): Use #ifdef on constants POWER_630 etc 21626 in the AIX test, since old versions don't have them all. 21627 216282002-03-11 Kevin Ryde <kevin@swox.se> 21629 21630 * configure.in (LIBC211): New AC_DEFINE, for mpfr. 21631 21632 * configure.in (mips*-*-*): Support ABI=o32 on irix 6, allow gcc 2.7.2 21633 to fall back on it, but detect it doesn't work with gcc 2.95. Use 21634 single mips-defs.m4 for both mips32 and mips64. 21635 * acinclude.m4 (GMP_GCC_MIPS_O32): New macro. 21636 * mpn/mips32/mips-defs.m4: Renamed from mips.m4. 21637 * mpn/mips64/mips.m4: Remove (was a copy of mips32/mips.m4). 21638 21639 * mpn/powerpc32/750: New directory. 21640 * configure.in (powerpc740, powerpc750, powerpc7400): Use it. 21641 * mpn/powerpc32/750/gmp-mparam.h: New file. 21642 21643 * config.sub, gmp.texi (ultrasparc1): Remove this, just use plain 21644 "ultrasparc". 21645 216462002-03-10 Kevin Ryde <kevin@swox.se> 21647 21648 * mpfr: Update to 20020301, except internal_ceil_exp2.c, 21649 internal_ceil_log2.c, internal_floor_log2.c renamed to i_ceil_exp2.c, 21650 i_ceil_log2.c, i_floor_log2.c to be unique in DOS 8.3. And sqrtrem.c 21651 removed since no longer required. 21652 * mpfr/mpfr.texi: Fix some formatting. 21653 * mpfr/tests/reuse.c: Patch by Paul to fix test4 variable handling. 21654 * mpfr/sinh.c: Patch by Paul to fix err calculation when t==0. 21655 * mpfr/tests/tget_d.c: Disable until portability of rnd_mode.c can be 21656 sorted out. 21657 21658 * configure.in (powerpc*-*-*): Separate gcc and xlc cpu flags setups 21659 for clarity. 21660 21661 * longlong.h (count_leading_zeros, count_trailing_zeros) [x86_64]: New 21662 macros. 21663 216642002-03-07 Kevin Ryde <kevin@swox.se> 21665 21666 * gmp.texi (Build Options): Note all the ultrasparcs accepted. 21667 (Language Bindings): Add Math::BigInt::GMP. 21668 21669 * config.sub (ultrasparc2i): New cpu type. 21670 * config.guess (sparc-*-*, sparc64-*-*): Add some exact CPU detection. 21671 216722002-03-05 Kevin Ryde <kevin@swox.se> 21673 21674 * longlong.h (count_leading_zeros, count_trailing_zeros) [alphaev67, 21675 alphaev68]: Use ctlz and cttz insns (as per gcc longlong.h). 21676 (count_leading_zeros) [sparclite]: Fix parameter order (as per gcc 21677 longlong.h). 21678 * acconfig.h (HAVE_HOST_CPU_alphaev68): New define. 21679 21680 * config.guess [i?86-*-*]: Suppress error messages if compiler not 21681 found or test program won't run. 21682 [rs6000-*-*, powerpc-*-*]: Force code alignment for mfpvr test. 21683 216842002-03-04 Torbjorn Granlund <tege@swox.com> 21685 21686 * mpn/generic/pow_1.c: New file. 21687 216882002-03-03 Kevin Ryde <kevin@swox.se> 21689 21690 * gmp.texi (Build Options): Note compiler must be able to fully link, 21691 add alphapca57 and alphaev68, give a clearer example of MPN_PATH 21692 (Debugging): Add notes on valgrind. 21693 (C++ Formatted Output): Clarify mpf showbase handling, in particular 21694 note "00.4" in octal. 21695 21696 * printf/doprntf.c: Do a showbase on octal float fractions, for 21697 instance "00.4" where previously it gave "0.4". 21698 * tests/cxx/t-ostream.cc: Update. 21699 21700 * gmp-h.in, mp-h.in (__GMP_DECLSPEC, __GMP_DECLSPEC_XX): Test 21701 __WIN32__ for Borland C, reported by "delta trinity". 21702 21703 * gmp-h.in, mp-h.in: Use <cstddef> for size_t under C++, suggested by 21704 Hans Aberg some time ago. 21705 * gmp-h.in (<iosfwd>): Move to top of file for clarity. 21706 21707 * Makefile.am (libgmpxx_la_SOURCES): Use dummy.cc to force C++. 21708 (CXX_OBJECTS): Add osfuns$U.lo. 21709 * dummy.cc: New file. 21710 * cxx/Makefile.am (INCLUDES): Use __GMP_WITHIN_GMPXX. 21711 (libcxx_la_SOURCES): Add osfuns.cc. 21712 * gmp-h.in (__GMP_DECLSPEC_XX): New define, use it on libgmpxx funs. 21713 * gmp-impl.h: Add __GMP_DECLSPEC to libgmp functions used by libgmpxx. 21714 21715 * longlong.h (COUNT_TRAILING_ZEROS_TIME): Remove, no longer used. 21716 21717 * gmp-impl.h (MPN_SIZEINBASE, MPN_SIZEINBASE_16): Correction to 21718 __totbits for nails. 21719 21720 * gmp-impl.h (JACOBI_LS0): Test size before limb, to pacify valgrind. 21721 (JACOBI_0LS): Ditto, and fix parens around arguments. 21722 21723 * mpn/x86/x86-defs.m4 (call_mcount): Add a counter to make data labels 21724 unique, since simplified L() scheme no longer gives that effect. 21725 (notl_or_xorl_GMP_NUMB_MASK): New macro. 21726 Add m4_assert_numargs in a few places. 21727 21728 * configure.in (*sparc*): Fix cycle counter setups for ABI=64. 21729 217302002-02-28 Torbjorn Granlund <tege@swox.com> 21731 21732 * mpn/vax/gmp-mparam.h: New file. 21733 217342002-02-28 Kevin Ryde <kevin@swox.se> 21735 21736 * gmp-h.in (gmp_errno, gmp_version): Move into extern "C" block, 21737 reported by librik@panix.com. 21738 21739 * gmp-h.in, mp-h.in (__GMP_DECLSPEC_EXPORT, __GMP_DECLSPEC_IMPORT): 21740 Use __declspec(dllexport) and __declspec(dllimport) on Borland. 21741 * gmp-h.in (_GMP_H_HAVE_FILE): Test __STDIO_H for Borland. 21742 Reported by "delta trinity". 21743 21744 * gmp-impl.h (va_copy): Fall back on memcpy, not "=". 21745 21746 * mpn/generic/pre_mod_1.c: Add a comment about obsolescence. 21747 21748 * tune/time.c (MICROSECONDS_P): Don't trust time differences of 1 21749 microsecond. 21750 21751 * tests/cxx/t-ostream.cc: Use "const char *" not just "char *" for 21752 test data strings, avoids warnings on Sun CC. 21753 217542002-02-27 Torbjorn Granlund <tege@swox.com> 21755 21756 * configure.in: For sparc under solaris2.[7-9], pass -fsimple=1 to 21757 disable some crazy -fast optimizations. 21758 217592002-02-25 Torbjorn Granlund <tege@swox.com> 21760 21761 * configure.in: For sparc under solaris2.[7-9], pass -fns=no to enable 21762 denorm handling under -fast. 21763 217642002-02-25 Kevin Ryde <kevin@swox.se> 21765 21766 * configure.in (alpha*-*-*): Rearrange -mcpu selection for gcc, 21767 provide an ev67 -> ev6 fallback. Fix -arch,-tune selection for DEC C. 21768 Allow ~ for space in optional options lists. 21769 21770 * tune/tuneup.c (tune_preinv_divrem_1): Compare against an assembler 21771 mpn_divrem_1 if it exists, not the generic C mpn_divrem_1_div. 21772 (tune_preinv_mod_1): Ditto with mpn_mod_1. 21773 21774 * tune/time.c (DIFF_SECS_ROUTINE): Eliminate the unused "type" 21775 parameter, try to make the code a bit clearer. 21776 21777 * tune/freq.c: Reduce the period measured for cycles versus 21778 gettimeofday, add cycles versus microsecond getrusage. 21779 21780 * mpz/array_init.c: "i" should be mp_size_t, noticed by E. Khong. 21781 217822002-02-24 Torbjorn Granlund <tege@swox.com> 21783 21784 * configure.in: For sparc under solaris2.[7-9], pass -fast instead of 21785 other optimization options. 21786 217872002-02-23 Kevin Ryde <kevin@swox.se> 21788 21789 * mpn/asm-defs.m4 (GMP_NUMB_MASK): New macro. 21790 (PROLOGUE, EPILOGUE): Relax quoting for the benefit of tune/many.pl 21791 when GSYM_PREFIX non-empty. 21792 21793 * tune/time.c, tune/speed.h (speed_time_init): Include clock tick 21794 period in speed_time_string. 21795 * tune/time.c, configure.in (clock_gettime): New measuring method. 21796 21797 * tune/many.pl: Add -DHAVE_NATIVE_mpn_foo to C objects, to avoid 21798 conflicts with a macro version in gmp-impl.h, eg. mpn_com_n. 21799 218002002-02-22 Torbjorn Granlund <tege@swox.com> 21801 21802 * demos/pexpr.c: Increase RLIMIT_STACK to 4Mibyte. 21803 218042002-02-22 Kevin Ryde <kevin@swox.se> 21805 21806 * tune/tuneup.c: Don't confuse gcc with mipspro cc in diagnostic. 21807 218082002-02-20 Torbjorn Granlund <tege@swox.com> 21809 21810 * configure.in (mips*-*-irix[6789]*]): Set `extra_functions_n32', not 21811 `extra_functions'. 21812 21813 * printf/doprnt.c: Conditionally include inttypes.h. 21814 * printf/repl-vsnprintf.c: Likewise. 21815 * scanf/doscan.c: Likewise. 21816 218172002-02-20 Kevin Ryde <kevin@swox.se> 21818 21819 * mpn/x86/k7/mmx/com_n.asm: New file. 21820 21821 * mpz/n_pow_ui.c (SWAP_RP_TP): Use ASSERT_CODE on ralloc and talloc, 21822 to ensure they needn't live past the initial allocs in a normal build. 21823 21824 * mpn/generic/mod_34lsub1.c: Note this is for internal use. 21825 218262002-02-19 Torbjorn Granlund <tege@swox.com> 21827 21828 * Clean up *_THRESHOLD names. Many files affected. 21829 21830 * mpn/mips32: Asm-ify 32-bit mips code. 21831 Move files from `mips2' to `mips32' directory. 21832 * mpn/mips64: Move files from `mips3' to `mips64' directory. 21833 * configure.in: Change `mips2' => `mips32' and `mips3' => `mips64'. 21834 218352002-02-19 Kevin Ryde <kevin@swox.se> 21836 21837 * acinclude.m4, configure.in (GMP_PROG_LEX): New macro. 21838 21839 * tune/tuneup.c (one): Start next threshold at a max of previous ones, 21840 in order to get a good starting point for TOOM3_SQR_THRESHOLD if 21841 KARATSUBA_SQR_THRESHOLD is 0 (ie. using mpn_mul_basecase only). 21842 21843 * configure.in, tune/tuneup.c (GMP_MPARAM_H_SUGGEST): New AC_DEFINE 21844 replacing GMP_MPARAM_H_FILENAME. Suggest a new file in a cpu specific 21845 subdirectory rather than mpn/generic. 21846 21847 * acinclude.m4 (POWERPC64_PATTERN): New macro. 21848 * configure.in (powerpc*-*-*): Use it. 21849 (powerpc*-*-*): Use umul in 32L and aix64. 21850 (mips*-*-*): Use umul, 32 and 64 bit versions. 21851 218522002-02-18 Torbjorn Granlund <tege@swox.com> 21853 21854 * longlong.h: Add basic x86-64 support. 21855 218562002-02-17 Torbjorn Granlund <tege@swox.com> 21857 21858 * demos/pexpr.c: Support `-X' for upper case hex, make `-x' output 21859 lower case hex. 21860 21861 * mpn/mips2/umul.s: Make it actually work. 21862 * mpn/mips3/umul.asm: New file. 21863 21864 * mpn/mips2/gmp-mparam.h: New file. 21865 218662002-02-16 Torbjorn Granlund <tege@swox.com> 21867 21868 * mpn/generic/get_str.c (mpn_sb_get_str): Round frac upwards after 21869 umul_ppmm calls. 21870 218712002-02-16 Kevin Ryde <kevin@swox.se> 21872 21873 * config.guess (alpha-*-*): Do alpha exact cpu probes on any system, 21874 and only if configfsf.guess gives a plain "alpha". 21875 21876 * acinclude.m4 (GMP_PROG_CC_WORKS): Detect a gcc 3.0.3 powerpc64 21877 linker invocation problem. 21878 218792002-02-15 Torbjorn Granlund <tege@swox.com> 21880 21881 * mpn/generic/get_str.c (mpn_sb_get_str): For base 10, develop initial 21882 digits using umul_ppmm, then switch to plain multiplication. 21883 21884 * config.guess: Rewrite Alpha subtype detection code for *bsd systems. 21885 218862002-02-15 Kevin Ryde <kevin@swox.se> 21887 21888 * gmp.texi (Build Options): Note powerpc exact cpu types. 21889 (Debugging): Advertise DEBUG in memory.c. 21890 21891 * config.sub, config.guess: Add some powerpc exact cpus. 21892 * configure.in: Add configs for them. 21893 21894 * memory.c [__NeXT__]: Remove unused #define of "static". 21895 (__gmp_default_allocate, __gmp_default_reallocate): Print size if 21896 allocation fails, don't use perror. 21897 21898 * gmp-h.in: g++ 3 demands __GMP_NOTHROW is before other attributes. 21899 219002002-02-14 Torbjorn Granlund <tege@swox.com> 21901 21902 * mpn/alpha/mul_1.asm: Fix typo preventing build on T3E systems. 21903 219042002-02-14 Kevin Ryde <kevin@swox.se> 21905 21906 * tune/tuneup.c (tune_set_str): Increase max_size, for the benefit of 21907 alpha. 21908 21909 * macos/README: Bug reports to bug-gmp@gnu.org, clarify MacOS X a bit. 21910 21911 * mpn/generic/gcdext.c [WANT_GCDEXT_ONE_STEP]: Add missing TMP_FREE. 21912 21913 * tune/speed.c, tune/tuneup.c: Allow for speed_cycletime of 0.0 in 21914 some diagnostic printouts. 21915 * tune/time.c (speed_cycletime): Note can be 0.0. 21916 219172002-02-12 Torbjorn Granlund <tege@swox.com> 21918 21919 * mpn/alpha/mul_1.asm: Add mpn_mul_1c entry. 21920 21921 * mpn/pa64w/sqr_diagonal.asm: Use L() for labels. 21922 219232002-02-11 Torbjorn Granlund <tege@swox.com> 21924 21925 * mpn/generic/get_str.c (mpn_sb_get_str): Change declaration of rp to 21926 accommodate tuneup compiles. 21927 219282002-02-11 Kevin Ryde <kevin@swox.se> 21929 21930 * mpn/alpha/default.m4, mpn/alpha/unicos.m4 (PROLOGUE_cpu): Add 21931 noalign option. 21932 * mpn/alpha/default.m4 (PROLOGUE_cpu): use ALIGN instead of ".align". 21933 21934 * gmp.texi (Debugging): Notes on Checker. 21935 (Other Multiplication): Move note on float FFTs to here. 21936 (Assembler Floating Point): New text and revisions by Torbjorn, 21937 picture formatting by me. 21938 Simplify tex pictures elsewhere a bit, share heights, eliminate some 21939 gaps at line joins. 21940 219412002-02-11 Torbjorn Granlund <tege@swox.com> 21942 21943 * mpn/generic/get_str.c (mpn_sb_get_str): Rewrite to generate fraction 21944 limbs and use multiplication for digit development. Trim allocation of 21945 buf. Get rid of code for !USE_MULTILIMB. 21946 219472002-02-10 Torbjorn Granlund <tege@swox.com> 21948 21949 * mpn/generic/set_str.c (mpn_set_str): Undo this: 21950 Change invocations of mpn_add_1 to instead use mpn_incr_u. 21951 21952 * tests/mpz/convert.c: Free str only after it is used in error message. 21953 21954 * mpn/generic/get_str.c (mpn_sb_get_str): Combine tail code for base 10 21955 and generic bases. 21956 21957 * mpn/mp_bases.c: Add entries for base 256. Remove __ prefix from 21958 table name. 21959 * gmp-impl.h (__mp_bases): Remove superfluous mp_ part of name, making 21960 it __gmpn_bases instead of __gmpn_mp_bases. 21961 (mp_bases): New #define. 21962 * tune/speed.h (SPEED_ROUTINE_MPN_SET_STR): Allow bases up to 256. 21963 (SPEED_ROUTINE_MPN_GET_STR): Likewise. 21964 219652002-02-09 Torbjorn Granlund <tege@swox.com> 21966 21967 * mpn/generic/set_str.c (mpn_set_str): Use mpn_mul_1c if available. 21968 Change invocations of mpn_add_1 to instead use mpn_incr_u. 21969 219702002-02-09 Kevin Ryde <kevin@swox.se> 21971 21972 * mpz/array_init.c, mpz/cfdiv_q_2exp.c, mpz/cfdiv_r_2exp.c, 21973 mpz/cong_2exp.c, mpz/divis_2exp.c, mpz/hamdist.c, mpz/init2.c, 21974 mpz/mul_2exp.c, mpz/realloc2.c, mpz/scan0.c, mpz/scan1.c, 21975 mpz/setbit.c, mpz/tdiv_q_2exp.c, mpz/tdiv_r_2exp.c, mpz/tstbit.c, 21976 mpz/urandomb.c: Use GMP_NUMB_BITS. 21977 21978 * mpz/iset_str.c [__CHECKER__]: Store a dummy value to the low limb to 21979 stop it appearing uninitialized. 21980 21981 * gmp-h.in (__GMP_NOTHROW): New macro. 21982 (mp_set_memory_functions, mpz_cmp, mpz_cmp_si, mpz_cmp_ui, mpz_cmpabs, 21983 mpz_cmpabs_ui, mpz_congruent_2exp_p, mpz_divisible_2exp_p, 21984 mpz_fits_sint_p, mpz_fits_slong_p, mpz_fits_sshort_p, mpz_fits_uint_p, 21985 mpz_fits_ulong_p, mpz_fits_ushort_p, mpz_get_si, mpz_get_ui, 21986 mpz_getlimbn, mpz_hamdist, mpz_popcount, mpz_scan0, mpz_scan1, 21987 mpz_size, mpz_sizeinbase, mpz_swap, mpz_tstbit, mpq_equal, mpq_swap, 21988 mpf_cmp, mpf_cmp_si, mpf_cmp_ui, mpf_fits_sint_p, mpf_fits_slong_p, 21989 mpf_fits_sshort_p, mpf_fits_uint_p, mpf_fits_ulong_p, 21990 mpf_fits_ushort_p, mpf_get_default_prec, mpf_get_prec, mpf_get_si, 21991 mpf_get_ui, mpf_integer_p, mpf_set_default_prec, mpf_set_prec_raw, 21992 mpf_size, mpf_swap, mpn_add_1, mpn_cmp, mpn_hamdist, mpn_popcount, 21993 mpn_sub_1): Use it. 21994 21995 * gmp-impl.h (MPN_SIZEINBASE, MPN_SIZEINBASE_16): New macros from 21996 mpn_sizeinbase, and use GMP_NUMB_BITS. 21997 * mpz/get_str.c, mpz/sizeinbase.c, mpbsd/mout.c, tune/speed.h: Use 21998 MPN_SIZEINBASE. 21999 * mpbsd/mtox.c: Use MPN_SIZEINBASE_16. 22000 22001 * configure.in, mpn/Makefile.am, gmp-impl.h (mpn_sizeinbase): Remove. 22002 * mpn/generic/sizeinbase.c: Remove file. 22003 22004 * gmp-impl.h (MPN_GET_STR_SIZE): Remove. 22005 * tests/mpn/t-g_str_size.c: Remove file. 22006 * tests/mpn/Makefile.am: Update. 22007 22008 * Makefile.am (dist-hook): Don't distribute cvs merge ".#" files. 22009 220102002-02-08 Torbjorn Granlund <tege@swox.com> 22011 22012 * configure.in: Override extra_functions for all sparcv8 systems, not 22013 just supersparc. 22014 220152002-02-06 Kevin Ryde <kevin@swox.se> 22016 22017 * tune/tuneup.c (tune_mul, tune_sqr): Disable FFTs until tuned. 22018 * tune/speed.h (SPEED_ROUTINE_MPN_SET_STR): Fix memory clobber in 22019 destination cache priming. 22020 22021 * printf/doprnt.c: Fix parsing of %s and %p conversions. 22022 * tests/misc/t-printf.c (check_misc): Add some tests. 22023 220242002-02-03 Torbjorn Granlund <tege@swox.com> 22025 22026 * mpn/sparc32/v8/udiv.asm: New file, from v8/supersparc. 22027 22028 * mpn/generic/set_str.c: Rename indigits_per_limb => chars_per_limb. 22029 Remove redundant chars_per_limb. Reverse 4 loops in basecase code for 22030 speed. Use MP_BASES_CHARS_PER_LIMB_10. 22031 220322002-02-03 Kevin Ryde <kevin@swox.se> 22033 22034 * acinclude.m4 (GMP_PROG_NM): Ensure -B or -p get used when doing a 22035 cross compile with the native nm, helps OSF for instance. 22036 (GMP_ASM_LSYM_PREFIX): Remove ".byte 0" for the benefit of irix 6, 22037 allow "N" from nm for OSF, allow for "t" for other systems, but prefer 22038 no mention of the symbol at all. 22039 22040 * tune/tuneup.c (print_define_remark): New function. 22041 Turn some "#if"s into plain "if"s. 22042 22043 * tune/tuneup.c, gmp-impl.h, tune/Makefile.am 22044 (GET_STR_BASECASE_THRESHOLD, GET_STR_PRECOMPUTE_THRESHOLD): Tune these. 22045 * mpn/generic/get_str.c [TUNE_PROGRAM_BUILD]: Cope with non-constant 22046 GET_STR_PRECOMPUTE_THRESHOLD. 22047 220482002-02-02 Torbjorn Granlund <tege@swox.com> 22049 22050 * mpn/generic/get_str.c (mpn_get_str): Fix typo in a declaration. 22051 220522002-02-02 Kevin Ryde <kevin@swox.se> 22053 22054 * mpn/generic/set_str.c: Use MP_PTR_SWAP and POW2_P, add __GMP_PROTO 22055 to convert_blocks prototype, disable SET_STR_BLOCK_SIZE sanity check. 22056 22057 * tune/set_strb.c, tune/set_strs.c: New files. 22058 * tune/speed.h, tune/speed.c, tune/common.c,tune/Makefile.am: Add them. 22059 * tune/tuneup.c: Tune SET_STR_THRESHOLD. 22060 (DEFAULT_MAX_SIZE): Renamed from MAX_SIZE, allow any param.max_size[]. 22061 220622002-02-01 Torbjorn Granlund <tege@swox.com> 22063 22064 * tests/mpz/convert.c: Increase operand size. Add (yet disabled) code 22065 for testing with random strings. 22066 22067 * mpn/generic/get_str.c (mpn_get_str): Rewrite to become sub-quadratic. 22068 (mpn_dc_get_str, mpn_sb_get_str): New functions. 22069 220702002-01-31 Kevin Ryde <kevin@swox.se> 22071 22072 * gmpxx.h (cmp): Renamed from "compare". 22073 22074 * configure.in (AC_C_BIGENDIAN): Don't abort when cross compiling. 22075 (PROLOGUE): Allow new style optional second parameter when grepping. 22076 22077 * acinclude.m4 (GMP_HPC_HPPA_2_0, GMP_ASM_UNDERSCORE, 22078 GMP_ASM_ALIGN_LOG, GMP_ASM_LSYM_PREFIX, GMP_ASM_W32, GMP_ASM_X86_MMX): 22079 Use $ac_objext for object filenames. 22080 (GMP_ASM_UNDERSCORE): Use CCAS to assemble. 22081 22082 * demos/pexpr-config-h.in: New file. 22083 * configure.in: Generate demos/pexpr-config.h. 22084 (AC_CHECK_FUNCS): Add clock, cputime, setrlimit, sigaction, 22085 sigaltstack, sigstack. 22086 * acinclude.m4 (GMP_SUBST_CHECK_FUNCS, GMP_SUBST_CHECK_HEADERS): New 22087 macros. 22088 * demos/pexpr.c: Use pexpr-config.h, not various #ifdefs. 22089 (setup_error_handler): Use signal if sigaction not available, allow 22090 for SIGBUS missing on mingw. 22091 (main): Use time() for random seed if gettimeofday not available. 22092 (cleanup_and_exit): Move SIGFPE out of LIMIT_RESOURCE_USAGE. 22093 220942002-01-30 Torbjorn Granlund <tege@swox.com> 22095 22096 * mpn/generic/set_str.c: Rewrite to become sub-quadratic. 22097 (convert_blocks): New function. 22098 220992002-01-30 Kevin Ryde <kevin@swox.se> 22100 22101 * gmp-impl.h (GMP_NUMB_MASK, GMP_NAIL_MASK, GMP_NUMB_HIGHBIT, 22102 ASSERT_MPN, ASSERT_MP_LIMB_T): New macros. 22103 22104 * mpn/generic/fib2_ui.c: Use GMP_NUMB_BITS, simplify the data 22105 generator program, share __gmp_fib_table initializers between bit 22106 sizes, cope with bit sizes other than those specifically setup. 22107 * gmp-impl.h (FIB_TABLE_LIMIT, FIB_TABLE_LUCNUM_LIMIT): Corresponding 22108 rearrangement of conditionals. 22109 * tests/mpz/t-fib_ui.c (check_fib_table): New test. 22110 221112002-01-28 Kevin Ryde <kevin@swox.se> 22112 22113 * mpz/set_si.c, mpz/iset_si.c: Store to _mp_d[0] unconditionally, use 22114 an expression for _mp_size. 22115 22116 * mpz/init.c, mpz/init2.c, mpz/iset.c, mpq/init.c [__CHECKER__]: Store 22117 dummy values to low limbs to stop them appearing uninitialized. 22118 221192002-01-26 Kevin Ryde <kevin@swox.se> 22120 22121 * mpfr/mpfr-test.h (MAX, MIN, ABS): Use instead a patch from Paul and 22122 Vincent. 22123 221242002-01-24 Kevin Ryde <kevin@swox.se> 22125 22126 * configure.in: Extra quoting to get argument help messages right. 22127 22128 * gmp.texi (Efficiency): Suggest hex or octal for input and output. 22129 (Formatted Output Strings): Mention "*" for width and precision. 22130 22131 * mpn/generic/sizeinbase.c: New file, adapted from mpz/sizeinbase.c. 22132 Use POW2_P, use __mp_bases[base].big_base for log2(base). 22133 * configure.in, mpn/Makefile.am: Add it. 22134 * gmp-impl.h: Add prototype. 22135 * mpz/sizeinbase.c, tune/speed.h, mpn/generic/get_str.c, 22136 mpz/get_str.c, mpbsd/mout.c, mpbsd/mtox.c: Use it. 22137 * mpz/get_str.c: Write directly to user buffer, skip at most one 22138 leading zero, eliminate special case for x==0. 22139 * mpbsd/mtox.c: Allocate exact result space at the start, eliminate 22140 special case for x==0. 22141 * mpbsd/mout.c: Only need to skip one high zero with mpn_sizeinbase. 22142 22143 * configure.in (--enable-nails): New option. 22144 (GMP_NAIL_BITS, GMP_LIMB_BITS, GMP_NUMB_BITS): New defines for gmp.h 22145 and config.m4. 22146 * gmp-h.in: Add templates. 22147 22148 * mpfr/mpfr-test.h (MAX, MIN, ABS): Use #ifndef to avoid a redefine 22149 error on AIX xlc. 22150 221512002-01-23 Torbjorn Granlund <tege@swox.com> 22152 22153 * mpn/generic/get_str.c: Correct type of `out_len'. 22154 221552002-01-22 Kevin Ryde <kevin@swox.se> 22156 22157 * mpn/generic/pre_divrem_1.c: Corrections to some ASSERTs. 22158 22159 * mpfr/mul_ui.c: Don't call mpn_lshift with 0 shift. 22160 22161 * mpfr/mpz_set_fr.c: Produce correct mpz_t for f==0. 22162 221632002-01-21 Torbjorn Granlund <tege@swox.com> 22164 22165 * longlong.h (32-bit powerpc add_ssaaaa): Remove spurious commutative 22166 declaration. 22167 (64-bit powerpc add_ssaaaa): Likewise. 22168 221692002-01-20 Kevin Ryde <kevin@swox.se> 22170 22171 * acinclude.m4 (GMP_FUNC_VSNPRINTF): Use %n to better detect sparc 22172 solaris 2.7 problems. 22173 221742002-01-19 Torbjorn Granlund <tege@swox.com> 22175 22176 * demos/pexpr.c (mpz_eval_expr): Optimize s^rhs for -1 <= s <= 1. 22177 (cleanup_and_exit): Improve error message wording. 22178 221792002-01-19 Kevin Ryde <kevin@swox.se> 22180 22181 * mpfr/mpfr.h (_PROTO): Use __GMP_PROTO, for compatibility with 22182 gmp-impl.h. 22183 221842002-01-17 Torbjorn Granlund <tege@swox.com> 22185 22186 * mpfr/mpfr-test.h: Test "__hpux", not "hpux". Mask off mrand48 22187 return value to 31 bits to work around sloppy mpfr #include practices. 22188 22189 * mpfr/tests/*.c: Use #include "", not <>, for gmp.h and mpfr.h. 22190 Make sure to #include mpfr-test.h from all files that use random(). 22191 221922002-01-17 Kevin Ryde <kevin@swox.se> 22193 22194 * gmp-impl.h (__GMP_REALLOCATE_FUNC_MAYBE_TYPE): New macro. 22195 * gmp-impl.h, mpz/get_str.c, mpz/out_raw.c, mpq/get_str.c, 22196 mpq/set_str.c, mpf/get_str.c, printf/asprntffuns.c, printf/doprnt.c, 22197 printf/repl-vsnprintf.c, printf/snprntffuns.c, scanf/doscan.c, 22198 mpbsd/mtox.c: Some fixes to compile as C++. 22199 22200 * mpn/generic/jacbase.c (JACOBI_BASE_METHOD): New tuned parameter, 22201 replacing COUNT_TRAILING_ZEROS_TIME test. Add a third method too. 22202 * tune/speed.c, tune/speed.h, tune/common.c, tune/Makefile.am: Add 22203 measuring of mpn_jacobi_base methods. 22204 * tune/jacbase1.c, tune/jacbase2.c, tune/jacbase3.c: New files. 22205 * tune/tuneup.c (JACOBI_BASE_METHOD): Tune this. 22206 * mpn/x86/*/gmp-mparam.h (COUNT_TRAILING_ZEROS_TIME): Remove macro. 22207 22208 * gmp-h.in: Use __gmp prefix on variables in inlines. 22209 22210 * gmp-impl.h (MPN_COPY_INCR, MPN_COPY_DECR): Remove __i, unused. 22211 22212 * mpn/generic/mul_fft.c: Use HAVE_NATIVE_mpn_addsub_n, not ADDSUB. 22213 Use CNST_LIMB for some constants. 22214 222152002-01-15 Kevin Ryde <kevin@swox.se> 22216 22217 * tests/mpbsd/Makefile.am: Add a convenience rule for ../libtests.la. 22218 22219 * printf/Makefile.am: libdummy.la should be in EXTRA_LTLIBRARIES. 22220 22221 * mpf/out_str.c: Use MPF_SIGNIFICANT_DIGITS, so mpf_out_str and 22222 mpf_get_str give the same for ndigits==0. 22223 22224 * mpfr/exceptions.c (mpfr_set_emin, mpfr_set_emax): Work around a 22225 powerpc64 gcc 3.0 -O2 bug. 22226 22227 * tests/memory.c, tests/tests.h (tests_memory_validate): New function. 22228 222292002-01-14 Kevin Ryde <kevin@swox.se> 22230 22231 * mpn/generic/sb_divrem_mn.c, mpn/generic/divrem_1.c, 22232 mpn/generic/divrem_2.c, mpn/generic/mod_1.c: Don't use UMUL_TIME and 22233 UDIV_TIME, just default to preinv. 22234 * gmp-impl.h (USE_PREINV_DIVREM_1, USE_PREINV_MOD_1): Ditto. 22235 (DIVEXACT_1_THRESHOLD, MODEXACT_1_ODD_THRESHOLD): Don't use UMUL_TIME 22236 and UDIV_TIME, make default thresholds 0. 22237 (UDIV_NORM_PREINV_TIME, UDIV_UNNORM_PREINV_TIME): Remove macros. 22238 * mpn/x86/*/gmp-mparam.h (UMUL_TIME, UDIV_TIME, 22239 UDIV_NORM_PREINV_TIME): Remove macros. 22240 22241 * gmp.texi (Headers and Libraries): New section, being the header 22242 notes from "GMP Basics" and some new stuff. 22243 (Parameter Conventions): Notes on "const" parameters. 22244 (Formatted Output Strings): Add type N, tweak some wording. 22245 22246 * tests/refmpn.c (refmpn_divmod_1c): Avoid a bug in i386 gcc 3.0. 22247 222482002-01-12 Kevin Ryde <kevin@swox.se> 22249 22250 * mpz/root.c: Add <stdlib.h>, for abort(). 22251 22252 * mpfr/tests/Makefile.am (AUTOMAKE_OPTIONS): Add ansi2knr. 22253 * mpfr/mpfr.h, mpfr/mpfr-tests.h, reuse.c, tadd.c, tadd_ui.c, tagm.c, 22254 tatan.c, tcmp2.c, tcos.c, tdiv.c, tdiv_ui.c, teq.c, texp.c, 22255 tget_str.c, thyperbolic.c, tlog.c, tmul.c, tout_str.c, tpow.c, 22256 trandom.c, tset_z.c, tsin.c, tsqrt.c, tsqrt_ui.c, tsub_ui.c, ttan.c, 22257 tui_div.c: Fixes for K&R. 22258 22259 * tests/misc/t-scanf.c (check_misc, check_misc): 22260 22261 * tests/mpz/t-inp_str.c, tests/mpq/t-inp_str.c, tests/misc/t-scanf.c: 22262 Avoid strings in ASSERT, not enjoyed by K&R. 22263 * gmp-impl.h (ASSERT): Note this. 22264 22265 * tests/tests.h (refmpn_mod_34lsub1): Add __GMP_PROTO. 22266 22267 * mpbsd/Makefile.am: Avoid an automake problem with ansi2knr and 22268 sources in a different directory. 22269 22270 * printf/repl-vsnprintf.c: Test HAVE_LONG_DOUBLE for long double. 22271 22272 * mpn/Makefile.am (nodist_libdummy_la_SOURCES): Add mod_34lsub1.c, 22273 mul_2.c, pre_divrem_1.c. 22274 22275 * gmp-h.in, gmp-impl.h (mpn_add_nc, mpn_addmul_1c, mpn_addsub_n, 22276 mpn_addsub_nc, mpn_divrem_1c, mpn_dump, mpn_mod_1c, mpn_mul_1c, 22277 mpn_mul_basecase, mpn_sqr_n, mpn_sqr_basecase, mpn_sub_nc, 22278 mpn_submul_1c): Move to gmp-impl.h, since they're undocumented. 22279 22280 * gmp-impl.h (mpn_reciprocal): Remove, unused. 22281 22282 * tune/many.pl (cntlz, cnttz): Use new SPEED_ROUTINE_COUNT_ZEROS. 22283 222842002-01-11 Kevin Ryde <kevin@swox.se> 22285 22286 * mpn/hppa/*.asm, mpn/pa64/*.asm, mpn/pa64w/*.asm: Use L(). 22287 222882002-01-08 Kevin Ryde <kevin@swox.se> 22289 22290 * mpn/asm-defs.m4 (PROLOGUE, EPILOGUE): New scheme, optional function 22291 name to EPILOGUE, check for missing or wrong function name EPILOGUE. 22292 * mpn/alpha/unicos.m4, mpn/alpha/default.m4, mpn/m68k/m68k-defs.m4, 22293 mpn/mips3/mips.m4, mpn/ia64/default.m4, mpn/powerpc32/aix.m4, 22294 mpn/powerpc64/aix.m4, mpn/x86/x86-defs.m4: Consequent updates, add a 22295 few more asserts. 22296 * mpn/alpha/unicos.m4, mpn/alpha/default.m4, mpn/alpha/cntlz.asm, 22297 mpn/alpha/invert_limb.asm (PROLOGUE_GP): Change to an optional "gp" 22298 parameter on plain PROLOGUE. 22299 22300 * gmp.texi (Low-level Functions): mpn_get_str doesn't clobber an extra 22301 limb, and doesn't clobber at all for power of 2 bases. 22302 (Language Bindings): Add python gmpy. 22303 22304 * mpz/get_str.c: Determine realloc size arithmetically. 22305 22306 * mpbsd/mtox.c: Size memory block returned to actual space needed. 22307 * gmp.texi (BSD Compatible Functions): Describe this. 22308 22309 * mpz/get_str.c: Don't copy mpn_get_str input for power of 2 bases. 22310 * mpbsd/mtox.c: Ditto, and as a side effect avoid a memory leak from a 22311 missing TMP_FREE. 22312 22313 * mpz/get_str.c, mpbsd/mout.c: No longer need for +1 limb for 22314 mpn_get_str clobber. 22315 22316 * gmp-impl.h (MPN_GET_STR_SIZE): New macro. 22317 * mpn/generic/get_str.c, mpz/get_str.c, mpbsd/mout.c, mpbsd/mtox.c, 22318 tune/speed.h: Use it. 22319 * tests/mpn/t-g_str_size.c: New test. 22320 * tests/mpn/Makefile.am: Add it. 22321 22322 * gmp-impl.h (POW2_P): New macro. 22323 * mpn/generic/get_str.c, tests/misc.c: Use it. 22324 22325 * printf/doprnt.c: Add "N" for mpn, share some code between N, Q and Z. 22326 * tests/misc/t-printf.c: Add tests. 22327 * gmp-impl.h (ASSERT_CODE): New macro. 22328 22329 * tests/mpbsd/t-mtox.c: New test. 22330 * tests/mpbsd/Makefile.am: Add it. 22331 (allfuns_LDADD): Don't link against libgmp when testing everything in 22332 libmp can link. 22333 223342002-01-07 Torbjorn Granlund <tege@swox.com> 22335 22336 * gmp-impl.h (MPN_COPY_INCR, MPN_COPY_DECR): Rewrite generic versions. 22337 223382002-01-06 Kevin Ryde <kevin@swox.se> 22339 22340 * mpn/generic/pre_divrem_1.c: Don't support size==0. 22341 * tests/devel/try.c: Update. 22342 22343 * mpn/generic/get_str.c: Add special case for base==10. 22344 * gmp-impl.h (MP_BASES_CHARS_PER_LIMB_10, MP_BASES_BIG_BASE_10, 22345 MP_BASES_BIG_BASE_INVERTED_10, MP_BASES_NORMALIZATION_STEPS_10): New 22346 constants. 22347 * tests/t-constants.c: Add checks. 22348 * mpn/mp_bases.c [GENERATE_TABLE]: Print defines for gmp-impl.h, print 22349 all standard bits-per-limb by default. 22350 22351 * demos/pexpr.c, demos/expr/expr.h, demos/expr/expr-impl.h: Use 22352 __GMP_PROTO. 22353 22354 * gmp-h.in (mpn_divexact_by3c): Remove variables from prototype, to 22355 keep out of application namespace. 22356 223572002-01-04 Torbjorn Granlund <tege@swox.com> 22358 22359 * gmp-impl.h: Move _PROTO declaration to before its first usages. 22360 223612002-01-04 Kevin Ryde <kevin@swox.se> 22362 22363 * gmp-h.in, mp-h.in, tests/tests.h: Rename _PROTO to __GMP_PROTO, and 22364 don't use #ifndef just define it ourselves. 22365 * gmp-impl.h: Provide _PROTO as an alias for __GMP_PROTO, to avoid big 22366 edits internally, for the moment. 22367 223682002-01-03 Torbjorn Granlund <tege@swox.com> 22369 22370 * tune/speed.c (usage): Insert "\n\" into a string. 22371 223722001-12-30 Torbjorn Granlund <tege@swox.com> 22373 22374 * mpn/pa64/udiv_qrnnd.c: Remove file. 22375 * mpn/pa64w/udiv_qrnnd.c: Remove file. 22376 22377 * gmp-impl.h (MPN_IORD_U): Change formatting (labels in pos 0, insns 22378 indented by tab). 22379 (MPN_INCR_U): Use "addl $1,foo; jc", not "incl foo; jz". 22380 22381 * gmp-impl.h (udiv_qrnnd_preinv): Use plain subtract, not sub_ddmmss, 22382 in one more case. 22383 223842001-12-30 Kevin Ryde <kevin@swox.se> 22385 22386 * mpn/generic/get_str.c (udiv_qrnd_unnorm): New macro. 22387 Use "do while" for dig_per_u loop since it's non-zero. 22388 * acconfig.h (HAVE_HOST_CPU_m68k etc): Add templates. 22389 22390 * mpn/generic/mul_basecase.c, mpz/mul.c, mpz/n_pow_ui.c, 22391 mpn/x86/pentium/mul_2.asm, tests/devel/try.c, tests/tests.h, 22392 tests/refmpn.c, tune/speed.c, tune/speed.h, tune/common.c, 22393 tune/many.pl (mpn_mul_2): New parameter style. 22394 * gmp-impl.h (mpn_mul_2): Add prototype. 22395 * configure.in (gmp_mpn_functions_optional): Add mul_2. 22396 22397 * longlong.h (__vxworks__): Remove from powerpc tests, not correct, 22398 not on its own at least. 22399 22400 * tune/speed.c: Add "aas" to specify 0xAA..AA data. 22401 22402 * tune/tuneup.c (print_define_end): Indicate "never" and "always". 22403 224042001-12-29 Torbjorn Granlund <tege@swox.com> 22405 22406 * mpq/set_d.c: ANSI-fy. 22407 * mpz/invert.c: Use PTR and SIZ (cosmetic change). 22408 22409 * mpz/cong.c: Rename `xor' to `sign' to avoid C++ reserved word. 22410 224112001-12-28 Torbjorn Granlund <tege@swox.com> 22412 22413 * mpn/sparc64/sqr_diagonal.asm: New file. 22414 224152001-12-28 Kevin Ryde <kevin@swox.se> 22416 22417 * mpn/generic/get_str.c: Avoid one mpn_divrem_1 by running main loop 22418 only until msize==1. 22419 22420 * tune/tuneup.c: Break up all() for clarity. 22421 (USE_PREINV_DIVREM_1, USE_PREINV_MOD_1): Compare against plain 22422 division udiv_qrnnd, not the tuned and possibly preinv version. 22423 22424 * tune/freq.c: Split sysctl and sysctlbyname probes into separate 22425 functions, shorten some identifiers, put descriptions inside 22426 functions, define functions unconditionally and do nothing if 22427 requisites not available. 22428 22429 * mpz/inp_raw.c: Avoid a gcc 3.0 powerpc64 bug on AIX. 22430 22431 * acinclude.m4, configure.in (GMP_C_RESTRICT): New macro. 22432 22433 * mpfr/sin.c: Patch from Paul to fix sign of sin(3pi/2). 22434 22435 * demos/calc/calc.y: Improve some error messages. 22436 224372001-12-28 Torbjorn Granlund <tege@swox.com> 22438 22439 * mpn/sparc64/mul_1.asm: Rename r72 -> r80. 22440 * mpn/sparc64/addmul_1.asm: Likewise. 22441 224422001-12-27 Torbjorn Granlund <tege@swox.com> 22443 22444 * mpn/generic/tdiv_qr.c: Misc formatting cleanups. 22445 For switch case 2, replace `dn' with its value (2). 22446 224472001-12-25 Torbjorn Granlund <tege@swox.com> 22448 22449 * tests/devel/mul_1.c: Add FIXED_XLIMB. 22450 * tests/devel/addmul_1.c: Likewise. 22451 * tests/devel/submul_1.c: Likewise. 22452 22453 * tests/devel/add_n.c: Improve error message. 22454 Accept command line argument for # of tests. 22455 * tests/devel/sub_n.c: Likewise. 22456 22457 * tests/devel/: Remove CLOCK settings. 22458 22459 * mpn/sparc32/v9/mul_1.asm: Rewrite. 22460 * mpn/sparc32/v9/addmul_1.asm: Rewrite. 22461 * mpn/sparc32/v9/submul_1.asm: Rewrite. 22462 224632001-12-24 Torbjorn Granlund <tege@swox.com> 22464 22465 * mpn/sparc64/mul_1.asm: Get rid of global constant 0.0 (L(noll)). 22466 * mpn/sparc64/addmul_1.asm: Likewise. 22467 224682001-12-23 Torbjorn Granlund <tege@swox.com> 22469 22470 * mpn/generic/get_str.c: Move final ASSERT to just before zero fill 22471 loop. 22472 224732001-12-22 Torbjorn Granlund <tege@swox.com> 22474 22475 * mpn/generic/get_str.c: Move ASSERTs out of loops. Split digit 22476 generation code into two loops, saving a test of msize in the loop. 22477 224782001-12-22 Kevin Ryde <kevin@swox.se> 22479 22480 * mpn/x86/x86-defs.m4, mpn/x86/*/*.asm: Remove L / LF scheme putting 22481 function name in local labels. 22482 22483 * mpn/generic/get_str.c: Use mpn_preinv_divrem_1, add a couple of 22484 ASSERTs. 22485 22486 * mpn/generic/pre_divrem_1.c: New file. 22487 * configure.in (gmp_mpn_functions): Add it. 22488 * gmp-impl.h (mpn_preinv_divrem_1): Add prototype. 22489 (USE_PREINV_DIVREM_1, MPN_DIVREM_OR_PREINV_DIVREM_1): New macros. 22490 * tests/devel/try.c, tune/speed.c, tune/speed.h, tune/common.c, 22491 tune/many.pl, tune/Makefile.am (mpn_preinv_divrem_1): Add testing and 22492 measuring. 22493 * tune/tuneup.c: Determine USE_PREINV_DIVREM_1. 22494 * tune/pre_divrem_1.c: New file. 22495 * tests/refmpn.c, tests/tests.h (refmpn_preinv_divrem_1): New function. 22496 22497 * tests/mpz/t-io_raw.c: New file. 22498 * tests/mpz/Makefile.am (check_PROGRAMS): Add it. 22499 22500 * mpz/inp_raw.c, mpz/out_raw.c: Rewrite. 22501 * acinclude.m4, configure.in (AC_C_BIGENDIAN): New test. 22502 * gmp-impl.h (BSWAP_LIMB): New macro. 22503 22504 * acinclude.m4 (GMP_PROG_CC_WORKS): For a native compile, demand 22505 executables will run, per AC_PROG_CC. This detects ABI=64 is unusable 22506 in a native sparc solaris 7 build with the kernel in 32-bit mode. 22507 * gmp.texi (ABI and ISA): Add notes on this, add an example configure 22508 setting an ABI. 22509 22510 * tune/tuneup.c, configure.in: Print the gmp-mparam.h filename. 22511 * tune/tuneup.c: Print the CPU frequency. 22512 22513 * tune/time.c, tune/speed.h: Add s390 "stck" method, flatten 22514 conditionals in speed_time_init a bit, use have_* variables to let 22515 some code go dead in speed_starttime and speed_endtime. 22516 22517 * tune/freq.c (speed_cpu_frequency_irix_hinv): New function. 22518 22519 * Makefile.am, configure.in: Restore mpfr. 22520 22521 * configure.in: Add --with-readline, AC_PROG_YACC and AM_PROG_LEX. 22522 * demos/calc/calc.y, demos/calc/calclex.l: Add readline support, add 22523 lucnum function. 22524 * demos/calc/Makefile.am: Add calcread.c, calc-common.h, use $(YACC), 22525 $(LEX) and $(LEXLIB). 22526 * demos/calc/calcread.c, demos/calc/calc-common.h, 22527 demos/calc/calc-config-h.in, demos/calc/README: New files. 22528 22529 * configure.in: Put demos/expr configs in expr-config.h. 22530 * demos/expr/expr-config-h.in: New file. 22531 * demos/expr/expr-impl.h: Renamed from expr-impl-h.in, get configs 22532 from expr-config.h. 22533 * demos/expr/Makefile.am: Update. 22534 22535 * demos/expr/exprfr.c: Use mpfr_sin and mpfr_cos, remove some spurious 22536 returns. 22537 225382001-12-20 Torbjorn Granlund <tege@swox.com> 22539 22540 * mpn/sparc64/mul_1.asm: Trim an instruction. 22541 * mpn/sparc64/addmul_1.asm: Likewise. 22542 22543 * mpn/ia64/add_n.asm: Rewrite. 22544 * mpn/ia64/sub_n.asm: Rewrite. 22545 225462001-12-19 Torbjorn Granlund <tege@swox.com> 22547 22548 * mpn/ia64/mul_1.asm: Rewrite. 22549 * mpn/ia64/addmul_1.asm: Rewrite. 22550 * mpn/ia64/submul_1.c: Use TMP_ALLOC_LIMBS. 22551 22552 * tests/devel/mul_1.c: Improve error message. 22553 Accept command line argument for # of tests. 22554 * tests/devel/addmul_1.c: Likewise. 22555 * tests/devel/submul_1.c: Likewise. 22556 225572001-12-18 Torbjorn Granlund <tege@swox.com> 22558 22559 * mpn/mips3/mul_1.asm: Add NOPs to save a cycle on R1x000. 22560 225612001-12-18 Kevin Ryde <kevin@swox.se> 22562 22563 * gmpxx.h (gmp_randclass): Don't allow copy constructors or "=", 22564 implementation by Gerardo. 22565 22566 * gmp-h.in (operator<<, operator>>): Remove parameter names from 22567 prototypes, to keep out of user namespace. 22568 22569 * acinclude.m4 (GMP_FUNC_VSNPRINTF): Let the test program work as C++. 22570 225712001-12-16 Torbjorn Granlund <tege@swox.com> 22572 22573 * mpn/sparc64/mul_1.asm: Rewrite. 22574 * mpn/sparc64/addmul_1.asm: Rewrite. 22575 * mpn/sparc64/submul_1.asm: Rewrite. 22576 22577 * mpn/sparc64/addmul1h.asm: Remove. 22578 * mpn/sparc64/submul1h.asm: Remove. 22579 * mpn/sparc64/mul1h.asm: Remove. 22580 225812001-12-15 Kevin Ryde <kevin@swox.se> 22582 22583 * gmp-h.in (mpn_add, mpn_add_1, mpn_cmp, mpn_sub, mpn_sub_1): Follow 22584 __GMP_INLINE_PROTOTYPES for whether to give prototype with inline. 22585 22586 * configure.in (i686*-*-*, pentiumpro-*-*, pentium[23]-*-*, 22587 athlon-*-*, pentium4-*-*): Fall back on -march=pentium if 22588 -march=pentiumpro or higher is not good (eg. solaris cmov). 22589 225902001-12-12 Torbjorn Granlund <tege@swox.com> 22591 22592 * gmp-impl.h (MPN_ZERO): Rewrite generic version to be similar to 22593 powerpc version. 22594 225952001-12-12 Kevin Ryde <kevin@swox.se> 22596 22597 * acinclude.m4 (GMP_PROG_CC_WORKS): Detect cmov problems with gcc 22598 -march=pentiumpro on solaris 2.8. 22599 22600 * tune/common.c, tune/speed.h: Allow for commas in count_leading_zeros 22601 and count_trailing_zeros macros. 22602 22603 * demos/expr/Makefile.am: Distribute exprfr.c and exprfra.c. 22604 22605 * tune/Makefile.am (speed_ext_SOURCES): Should be speed-ext.c. 22606 226072001-12-10 Torbjorn Granlund <tege@swox.com> 22608 22609 * mpn/s390/addmul_1.asm: New file. 22610 * mpn/s390/submul_1.asm: New file. 22611 * mpn/s390/mul_1.asm: New file. 22612 * mpn/s390/gmp-mparam.h: Update. 22613 226142001-12-07 Kevin Ryde <kevin@swox.se> 22615 22616 * gmp-h.in, mp-h.in, gmp-impl.h: __GMP_DECLSPEC at start of 22617 prototypes, for the benefit of Microsoft C. 22618 22619 * gmp.texi (Introduction to GMP): Mention ABI and ISA section. 22620 (Known Build Problems): Recommend GNU sed on solaris 2.6. 22621 (Assigning Integers): Direct feedback to bug-gmp. 22622 (References): Typo Knuth vol 2 is from 1998. 22623 22624 * gmpxx.h (gmp_randclass): Add initializers for gmp_randinit_default 22625 and gmp_randinit_lc_2exp_size. 22626 gmp.texi (C++ Interface Random Numbers): Describe them. 22627 22628 * tests/misc/t-locale.c, tests/cxx/t-locale.cc: Ensure mpf_clear is 22629 done when the localconv override doesn't work. Reported by Mike 22630 Jetzer. 22631 22632 * printf/doprnti.c: Don't showbase on a zero mpq denominator. 22633 * tests/misc/t-printf.c, tests/cxx/t-ostream.c: Add test cases. 22634 226352001-12-04 Kevin Ryde <kevin@swox.se> 22636 22637 * gmp.texi (Known Build Problems): Update to gmp_randinit_lc_2exp_size 22638 for the sparc solaris 2.7 problem. 22639 (Reentrancy): SCO ctype.h affects all text-based input functions. 22640 (Formatted Output Strings): Correction to the mpf example. 22641 (Single Limb Division): Correction, should be q-1 not q+1. 22642 (Extended GCD): Clarify why single-limb is inferior. 22643 (Raw Output Internals): Clarify size is twos complement, note limb 22644 order means _mp_d doesn't get directly read or written. 22645 (Contributors): Clarify mpz_jacobi. 22646 And a couple of formatting tweaks elsewhere. 22647 22648 * tests/cxx/t-headers.cc: New file. 22649 * tests/cxx/Makefile.am: Add it. 22650 22651 * gmpxx.h: Add <strstream>, needed by mpf_class::get_str2. 22652 22653 * gmp-h.in (mpq_inp_str, mpn_hamdist): Add __GMP_DECLSPEC. 22654 226552001-12-01 Torbjorn Granlund <tege@swox.com> 22656 22657 * Version 4.0 released. 22658 22659 * mpfr/README: Replace contents with explanation of why mpfr is gone. 22660 226612001-12-01 Kevin Ryde <kevin@swox.se> 22662 22663 * Makefile.am, configure.in: Temporarily remove mpfr, just leave a 22664 README. 22665 22666 * mpn/Makefile.am (EXTRA_DIST): Add Makeasm.am. 22667 226682001-11-30 Gerardo Ballabio <ballabio@sissa.it> 22669 22670 * tests/cxx/t-constr.cc, tests/cxx/t-expr.cc: New files. 22671 * tests/cxx/Makefile.am (check_PROGRAMS): Add them. 22672 226732001-11-30 Kevin Ryde <kevin@swox.se> 22674 22675 * mpfr: Update to 2001-11-16. Patch TMP handling of agm.c and sqrt.c, 22676 use plain mpn_sqrtrem in sqrt.c, separate .c files for floor and ceil, 22677 disable an expression style assert in add1.c. 22678 22679 * mpn/s370: Rename to s390. 22680 * configure.in (s3[6-9]0*-*-*): Update. 22681 * mpn/Makefile.am (TARG_DIST): Add s390. 22682 22683 * mpz/fits_s.c, mpf/fits_s.c, mpf/fits_u.c: Remove files, unused since 22684 change to .h style. 22685 226862001-11-29 Torbjorn Granlund <tege@swox.com> 22687 22688 * gmp-h.in: Declare mpz_get_d_2exp and mpf_get_d_2exp. 22689 * Makefile.am: Add mpz/get_d_2exp$U.lo and mpf/get_d_2exp$U.lo. 22690 * mpf/Makefile.am: Add get_d_2exp.c. 22691 * mpz/Makefile.am: Add get_d_2exp.c. 22692 226932001-11-29 Kevin Ryde <kevin@swox.se> 22694 22695 * mpn/*/gmp-mparam.h: Update measured thresholds. 22696 * mpn/s370/gmp-mparam.h: New file. 22697 22698 * mpz/millerrabin.c: Mark for internal use only, for now. 22699 * gmp.texi (Number Theoretic Functions): Remove documentation. 22700 227012001-11-28 Torbjorn Granlund <tege@swox.com> 22702 22703 * mpf/get_d_2exp.c: New file. 22704 * mpz/get_d_2exp.c: New file. 22705 22706 * mpz/realloc2.c: Fix typo. Make more similar to mpz_realloc. 22707 * mpz/realloc.c: Use __GMP_REALLOCATE_FUNC_LIMBS. 22708 227092001-11-27 Gerardo Ballabio <ballabio@sissa.it> 22710 22711 * gmpxx.h, mpfrxx.h: Various updates and improvements. 22712 227132001-11-27 Kevin Ryde <kevin@swox.se> 22714 22715 * gmp.texi (Useful Macros and Constants): Add gmp_version, add @findex 22716 for mp_bits_per_limb. 22717 22718 * demos/perl/GMP.pm, demos/perl/GMP.xs: Use new style gmp_randinit's. 22719 * demos/perl/test.pl: Update for this, and for mpz_perfect_power_p 22720 handling of 0 and 1. 22721 227222001-11-26 Torbjorn Granlund <tege@swox.com> 22723 22724 * mpz/realloc.c: Clear variable when decreasing allocation to less than 22725 needed. Misc updates. 22726 227272001-11-25 Kevin Ryde <kevin@swox.se> 22728 22729 * tests/misc/t-locale.c: Avoid printf in the normal case, since the 22730 replacement localeconv breaks it on SunOS 4. 22731 22732 * gmp.texi (Build Options, Notes for Package Builds): Note libgmpxx 22733 depends on libgmp from same GMP version. 22734 22735 * acinclude.m4, configure.in (GMP_FUNC_SSCANF_WRITABLE_INPUT): New 22736 test. 22737 * scanf/sscanf.c, scanf/vsscanf.c: Use it to ensure sscanf input is 22738 writable, if necessary. 22739 22740 * tests/misc/t-scanf.c: Ensure sscanf arguments are writable, always. 22741 * configure.in (AC_CHECK_DECLS): Remove sscanf, no longer required. 22742 22743 * configure.in (none-*-*): Fix default CFLAGS setups. 22744 22745 * doc/configuration: Misc updates. 22746 227472001-11-23 Kevin Ryde <kevin@swox.se> 22748 22749 * mpz/init2.c, mpz/realloc2.c: New files. 22750 * Makefile.am, mpz/Makefile.am: Add them. 22751 * gmp-h.in: Add prototypes. 22752 * gmp.texi (Efficiency): Mention these instead of _mpz_realloc. 22753 (Initializing Integers): Add documentation, reword other parts. 22754 227552001-11-22 Torbjorn Granlund <tege@swox.com> 22756 22757 * mpn/cray/ieee/addmul_1.c: Fix logic for more_carries scalar loop. 22758 * mpn/cray/ieee/submul_1.c: Likewise. 22759 227602001-11-20 Kevin Ryde <kevin@swox.se> 22761 22762 * gmp.texi (Known Build Problems): Note an out of memory on DJGPP. 22763 (Function Classes): Update function counts. 22764 Misc tweaks elsewhere. 22765 22766 * configure.in (AC_CHECK_DECLS): Add sscanf. 22767 * tests/misc/t-scanf.c: Use it, for the benefit of SunOS 4. 22768 22769 * tal-debug.c, gmp-impl.h: More checks of TMP_DECL/TMP_MARK/TMP_FREE 22770 consistency. 22771 22772 * mpfr/Makefile.am (AR): Explicit AR=@AR@ to override automake 22773 default, necessary for powerpc64 ABI=aix64. 22774 227752001-11-18 Torbjorn Granlund <tege@swox.com> 22776 22777 * mpz/powm.c: Move TMP_MARK to before any TMP_ALLOCs. 22778 227792001-11-18 Kevin Ryde <kevin@swox.se> 22780 22781 * configure.in (--enable-fft): Make this the default. 22782 * gmp.texi (Build Options): Update. 22783 22784 * Makefile.am (libmp_la_DEPENDENCIES): Revise mpz objects needed by 22785 new mpz/powm.c. 22786 22787 * gmp.texi (Random State Initialization): Add gmp_randinit_default and 22788 gmp_randinit_lc_2exp_size, mark gmp_randinit as obsolete. 22789 (Random State Seeding): New section, taken from "Random State 22790 Initialization" and "Random Number Functions". 22791 22792 * configure.in (AC_CHECK_DECLS): Add fgetc, fscanf, ungetc. 22793 * scanf/fscanffuns.c: Use these, for the benefit of SunOS 4. 22794 22795 * gmp-impl.h, gmp-h.in (__gmp_default_fp_limb_precision): Move back to 22796 gmp-impl.h now not required for inlined mpf. 22797 22798 * randlc2s.c (gmp_randinit_lc_2exp_size): New file, the size-based LC 22799 selection from rand.c. 22800 * rand.c (gmp_randinit): Use it. 22801 * randdef.c (gmp_randinit_default): New file. 22802 * gmp-impl.h (RANDS): Use it. 22803 (ASSERT_CARRY): New macro. 22804 * gmp-h.in (gmp_randinit_default, gmp_randinit_lc_2exp_size: Add 22805 prototypes. 22806 * Makefile.am (libgmp_la_SOURCES): Add randdef.c and randlc2s.c. 22807 22808 * printf/asprntffuns.c: Include config.h before using its defines. 22809 22810 * gmp-impl.h: Move C++ <string> to top of file to avoid the memset 22811 redefine upsetting configure tests. Remove <iostream> since <iosfwd> 22812 in gmp.h suffices. 22813 228142001-11-16 Kevin Ryde <kevin@swox.se> 22815 22816 * gmp.texi (Integer Exponentiation): mpz_powm supports negative 22817 exponents. 22818 (Assigning Floats, I/O of Floats, C++ Formatted Output, C++ Formatted 22819 Input): Decimal point follows locale. 22820 (Formatted Output Strings): %n accepts any type. 22821 (Formatted Input Strings): New section. 22822 (Formatted Input Functions): New section. 22823 (C++ Class Interface): Corrections and clarifications suggested by 22824 Gerardo. 22825 22826 * scanf/doscan.c, scanf/fscanf.c, scanf/fscanffuns.c, scanf/scanf.c, 22827 scanf/sscanf.c, scanf/sscanffuns.c, scanf/vfscanf.c, scanf/vscanf.c, 22828 scanf/vsscanf.c, scanf/Makefile.am, tests/misc/t-scanf.c: New files. 22829 * gmp-h.in, gmp-impl.h, Makefile.am, configure.in: Consequent 22830 additions. 22831 22832 * tests/misc: New directory. 22833 * tests/misc/Makefile.am: New file. 22834 * tests/misc/t-locale.c: New file. 22835 * tests/misc/t-printf.c: Moved from tests/printf. 22836 * tests/printf: Remove directory. 22837 * configure.in, tests/Makefile.am: Update. 22838 22839 * tests/cxx/t-locale.cc: New file. 22840 * tests/cxx/Makefile.am: Add it. 22841 22842 * mpf/set_str.c, cxx/ismpf.cc: Use localeconv for the decimal point. 22843 22844 * acinclude.m4 (GMP_ASM_X86_MCOUNT): Update to $lt_prog_compiler_pic 22845 for current libtool, recognise non-PIC style mcount in windows DLLs. 22846 22847 * gmp-impl.h (__gmp_replacement_vsnprintf): Add prototype. 22848 22849 * gmp-impl.h (__gmp_rands, __gmp_rands_initialized, 22850 modlimb_invert_table): Add __GMP_DECLSPEC for the benefit of test 22851 programs using them from a windows DLL. 22852 * longlong.h (__clz_tab): Ditto. 22853 22854 * mpn/x86/t-zdisp2.pl: New file. 22855 22856 * mpn/x86/pentium4/README: New file. 22857 228582001-11-15 Torbjorn Granlund <tege@swox.com> 22859 22860 * mpz/powm.c (HANDLE_NEGATIVE_EXPONENT): #define to 1. 22861 * tests/mpz/reuse.c (main): Use mpz_invert to avoid undefined mpz_powm 22862 cases. 22863 228642001-11-14 Torbjorn Granlund <tege@swox.com> 22865 22866 * mpz/powm_ui.c: Rewrite along the lines of mpz/powm.c (except still no 22867 redc). 22868 * mpz/powm.c: Adjust for negative b, after exponentiation done. Add 22869 (still disabled) code for handling negative exponents. Misc cleanups. 22870 228712001-11-14 Kevin Ryde <kevin@swox.se> 22872 22873 * mpf/out_str.c: Use localeconv for the decimal point. 22874 22875 * tests/misc.c (tests_rand_end): Use time() if gettimeofday() not 22876 available (eg. on mingw). 22877 228782001-11-11 Kevin Ryde <kevin@swox.se> 22879 22880 * gmp-h.in: Remove parameter names from prototypes, to keep out of 22881 application namespace. 22882 228832001-11-08 Kevin Ryde <kevin@swox.se> 22884 22885 * acinclude.m4 (GMP_GCC_VERSION_GE): Fix sed regexps to work on 22886 Solaris 8. 22887 22888 * printf/doprnt.c: Support %n of all types, per glibc. 22889 22890 * gmp-h.in, gmp-impl.h, mpf/abs.c, mpf/neg.c, mpf/get_prc.c, 22891 mpf/get_dfl_prec.c, mpf/set_dfl_prec.c, mpf/set_prc_raw.c, 22892 mpf/set_si.c, mpf/set_ui.c, mpf/size.c: Revert mpf inlining, in order 22893 to leave open the possibility of keeping binary compatibility if mpf 22894 becomes mpfr. 22895 22896 * mpn/x86/k7/mmx/lshift.asm, mpn/x86/k7/mmx/rshift.asm: Use Zdisp to 22897 force code size for computed jumps. 22898 * mpn/x86/k6/mod_34lsub1.asm, mpn/x86/k6/k62mmx/copyd.asm: Use Zdisp 22899 to force good code alignment. 22900 * mpn/x86/x86-defs.m4 (Zdisp): More instructions. 22901 22902 * mpn/x86/pentium/sqr_basecase.asm, mpn/x86/k7/mmx/mod_1.asm, 22903 mpn/x86/k7/mmx/popham.asm: Remove some unnecessary "0" address offsets. 22904 22905 * mpq/set_si.c, mpq/set_ui.c: Set _mp_den._mp_size correctly if den==0. 22906 229072001-11-07 Torbjorn Granlund <tege@swox.com> 22908 22909 * mpn/hppa/hppa1_1/udiv_qrnnd.asm: Work around gas bug. 22910 22911 * mpn/asm-defs.m4 (PROLOGUE): Change alignment to 8 (probably a good 22912 idea in general; required for hppa/hppa1_1/udiv_qrnnd.asm). 22913 229142001-11-06 Torbjorn Granlund <tege@swox.com> 22915 22916 * gmp-impl.h (MPN_COPY_INCR): Prepend local variable by `__'. 22917 (MPN_COPY_DECR): Likewise. 22918 229192001-11-05 Torbjorn Granlund <tege@swox.com> 22920 22921 * mpz/powm.c: Call mpn functions, not mpz functions, for computation 22922 mod m. Streamline allocations to use a mixture of stack allocation and 22923 heap allocation. Add currently disabled phi(m) exponent reduction 22924 code. Misc optimizations and cleanups. 22925 229262001-11-05 Kevin Ryde <kevin@swox.se> 22927 22928 * mpq/inp_str.c: Remove unused variable "ret". 22929 22930 * mpn/x86/k7/sqr_basecase.asm: Fix a 0(%edi) to use Zdisp, so the 22931 computed jumps hit the right spot on old gas. 22932 22933 * mpq/canonicalize.c: DIVIDE_BY_ZERO if denominator is zero. 22934 22935 * mpn/lisp/gmpasm-mode.el (comment-start-skip): Correction to the way 22936 the first \( \) pair is setup. 22937 (gmpasm-font-lock-keywords): Don't fontify the space before a "#" etc. 22938 Misc tweaks to some comments. 22939 229402001-11-03 Torbjorn Granlund <tege@swox.com> 22941 22942 * tests/refmpn.c (refmpn_overlap_p): Reverse return values. 22943 229442001-11-02 Kevin Ryde <kevin@swox.se> 22945 22946 * tune/many.pl: Setup CFLAGS_PIC and ASMFLAGS_PIC, since that's no 22947 longer done by configure. 22948 22949 * mpn/x86/pentium4/mmx/popham.asm: New file. 22950 22951 * mpn/x86/x86-defs.m4 (psadbw): New macro. 22952 * mpn/x86/k7/mmx/popham.asm: Use it. 22953 22954 * tests/refmpn.c (refmpn_overlap_p): New function, independent of 22955 MPN_OVERLAP_P. 22956 229572001-10-31 Torbjorn Granlund <tege@swox.com> 22958 22959 * tests/mpz/t-powm.c: Print proper error message when finding 22960 discrepancy. 22961 229622001-10-31 Kevin Ryde <kevin@swox.se> 22963 22964 * mpn/x86/pentium/mod_34lsub1.asm: New file. 22965 * mpn/x86/k7/mod_34lsub1.asm: New file. 22966 * mpn/x86/mod_34lsub1.asm: New file. 22967 229682001-10-30 Kevin Ryde <kevin@swox.se> 22969 22970 * tests/printf/t-printf.c (check_misc): Add checks from the glibc docs. 22971 (check_vasprintf, check_vsnprintf): Run these unconditionally. 22972 22973 * gmp-impl.h (ASSERT_MPQ_CANONICAL): New macro. 22974 * mpq/cmp.c, mpq/cmp_si.c, mpq/cmp_ui.c, mpq/equal.c: Add ASSERTs for 22975 canonical inputs, where correctness depends on it. 22976 22977 * mpn/lisp/gmpasm-mode.el (comment-start-skip): Add "dnl". 22978 229792001-10-27 Torbjorn Granlund <tege@swox.com> 22980 22981 * demos/pexpr.c: Remove some unused variables. 22982 (main): Allocate more buffer space to accommodate minus sign. 22983 229842001-10-27 Kevin Ryde <kevin@swox.se> 22985 22986 * gmp-impl.h, mpn/asm-defs.m4, configure.in, tune/speed.h, 22987 tune/speed.c, tune/common.c, tune/many.pl, tests/devel/try.c: Add 22988 mpn_mod_34lsub1. 22989 * tests/refmpn.c, tests/tests.h (refmpn_mod_34lsub1): New function. 22990 22991 * mpn/generic/mod_34lsub1.c: New file. 22992 * mpn/x86/k6/mod_34lsub1.asm: New file. 22993 * mpn/x86/pentium4/sse2/mod_34lsub1.asm: New file. 22994 * mpn/x86/x86-defs.m4 (Zdisp): Add another instruction. 22995 22996 * gmp-h.in, gmpxx.h: Use <iosfwd> not whole <iostream>. 22997 22998 * gmp.texi (Known Build Problems): Add note on test programs with 22999 Windows DLLs. 23000 230012001-10-26 Kevin Ryde <kevin@swox.se> 23002 23003 * tests/mpq/t-get_d.c: Limit the size of "eps" for vax. 23004 23005 * gmp.texi (maybepagebreak): New macro, use it in a few places. 23006 (Notes for Particular Systems): C++ Windows DLLs are not supported. 23007 (Known Build Problems): Note sparc solaris 2.7 gcc 2.95.2 shared 23008 library problems. 23009 (Autoconf): Tweak version numbers shown. 23010 (Integer Roots): mpz_perfect_square_p and mpz_perfect_power_p consider 23011 0 and 1 perfect powers, mpz_perfect_power_p accepts negatives. 23012 (Number Theoretic Functions): Add mpz_millerrabin, combined with a 23013 reworded mpz_probab_prime_p. 23014 (Formatted Output Strings): Misc clarifications. 23015 (Formatted Output Functions): gmp_asprintf, gmp_vasprintf, 23016 gmp_snprintf, gmp_vsnprintf always available. 23017 (C++ Formatted Output): Misc rewordings. 23018 (Formatted Input): New chapter. 23019 (C++ Class Interface): New chapter, by Gerardo and me. 23020 (Language Bindings): Update GMP++ now in GMP. 23021 (C++ Interface Internals): New section, by Gerardo and me. 23022 23023 * printf/repl-vsnprintf.c: New file. 23024 * configure.in, acinclude.m4, Makefile.am, printf/Makefile.am: Use it 23025 if libc vsnprintf missing or bad. 23026 * configure.in (AC_CHECK_FUNCS): Add strnlen. 23027 23028 * printf/snprntffuns.c, printf/vasprintf.c: Use 23029 __gmp_replacement_vsnprintf if libc vsnprintf not available. 23030 * printf/asprintf.c, printf/snprintf.c, printf/vasprintf.c, 23031 printf/vsnprintf.c: Provide these functions unconditionally. 23032 * acinclude.m4 (GMP_FUNC_VSNPRINTF): Remove warning about omissions 23033 when vsnprintf not available. 23034 230352001-10-24 Kevin Ryde <kevin@swox.se> 23036 23037 * configure, aclocal.m4: Regenerate with a libtool patch for a stray 23038 quote in AC_LIBTOOL_PROG_LD_SHLIBS under mingw and cygwin. 23039 23040 * gmp-impl.h (modlimb_invert): More comments. 23041 23042 * printf/doprnt.c, printf/doprnti.c: Use the precision field to print 23043 leading zeros. 23044 * tests/printf/t-printf.c: Test this. 23045 * cxx/osdoprnti.cc, gmp-impl.h: Ignore precision in operator<<. 23046 23047 * tune/speed.c, tune/speed.h, tune/common.c: Add mpn_mul_1_inplace. 23048 230492001-10-23 Torbjorn Granlund <tege@swox.com> 23050 23051 * mpz/pprime_p.c (mpz_millerrabin): Remove function and its descendant. 23052 23053 * mpz/millerrabin.c: New file with code from pprime.c. 23054 * mpz/Makefile.am: Compile millerrabin.c. 23055 * Makefile.am (MPZ_OBJECTS): Ditto. 23056 * gmp-h.in: Declare mpz_millerrabin. 23057 230582001-10-22 Torbjorn Granlund <tege@swox.com> 23059 23060 * tests/mpz/t-perfsqr.c: New file. 23061 * tests/mpz/Makefile.am (check_PROGRAMS): Add it. 23062 23063 * demos/factorize.c (factor): Check for number to factor == 0. 23064 (main): When invoked without arguments, read from stdin. 23065 23066 * mpz/perfpow.c: Add code to handle negative perfect powers ((-b)^odd). 23067 Treat 0 and 1 as perfect powers. 23068 23069 * mpn/sparc32/v9/sqr_diagonal.asm: Jump past .align. 23070 230712001-10-21 Torbjorn Granlund <tege@swox.com> 23072 23073 * mpn/generic/perfsqr.c (sq_res_0x100): Remove bogus final `,'. 23074 (mpn_perfect_square_p): Suppress superfluous `&1' in sq_res_0x100 test. 23075 (mpn_perfect_square_p, O(n) test): Improve comments. Combine remainder 23076 tests for some small primes. Don't share code for different limb 23077 sizes. Use single `if' with many `||' for better code density. 23078 230792001-10-22 Kevin Ryde <kevin@swox.se> 23080 23081 * demos/perl/GMP.xs (mutate_mpz, tmp_mpf_grow): Make these "static". 23082 23083 * mpn/x86/pentium/popcount.asm, mpn/x86/pentium/hamdist.asm 23084 (mpn_popcount_table): Use GSYM_PREFIX. 23085 230862001-10-19 Kevin Ryde <kevin@swox.se> 23087 23088 * mpn/x86/*.asm: Add some measured speeds on various x86s. 23089 23090 * tests/mpz/reuse.c, tests/mpf/reuse.c: Disable tests when using a 23091 windows DLL, because certain global variable usages won't compile. 23092 23093 * configure.in (AC_CHECK_FUNCS): Add alarm. 23094 * tests/spinner.c: Conditionalize alarm and SIGALRM availability, for 23095 the benefit of mingw32. 23096 23097 * acinclude.m4 (GMP_ASM_TYPE, GMP_ASM_SIZE): Suppress .type and .size 23098 on COFF. 23099 23100 * acinclude.m4 (GMP_PROG_HOST_CC): New macro. 23101 * configure.in: Use it for windows DLL cross-compiles. 23102 * aclocal.m4, configure: Regenerate with libtool patch to hold HOST_CC 23103 in the generated libtool script. 23104 23105 * aclocal.m4, configure: Regenerate with libtool patch to suppress 23106 warnings when probing command line limit on FreeBSD. 23107 23108 * demos/qcn.c (M_PI): Define if not already provided, helps mingw32. 23109 231102001-10-17 Kevin Ryde <kevin@swox.se> 23111 23112 * printf/doprnt.c: Use <stdint.h> for intmax_t. 23113 23114 * longlong.h: Recognise __sparcv8 for gcc on Solaris. Reported by 23115 Mark Mentovai <mark@mentovai.com>. 23116 23117 * gmp-impl.h (gmp_allocated_string): No need for inline on member funs. 23118 231192001-10-16 Kevin Ryde <kevin@swox.se> 23120 23121 * gmp.texi (Debugging): Add mpatrol. 23122 (Integer Comparisons, Comparing Rationals, Float Comparison): Index 23123 entries for sign tests. 23124 (I/O of Floats): Clarify mpf_out_str exponent is in decimal. 23125 (C++ Formatted Output): mpf_t operator<< exponent now in decimal. 23126 (FFT Multiplication): Use an ascii art sigma. 23127 (Contributors): Add Gerardo Ballabio. 23128 23129 * cxx/osfuns.cc (__gmp_doprnt_params_from_ios): Always give mpf_t 23130 exponent in decimal, irrespective of ios::hex or ios::oct. 23131 * tests/cxx/t-ostream.cc (check_mpf): Update. 23132 23133 * printf/doprnt.c: Support %lln and %hhn. 23134 23135 * mpn/x86/pentium4/sse2/submul_1.asm: Use a psubq to negate the 23136 initial carry (helps the submul_1c case), and improve the comments. 23137 231382001-10-11 Kevin Ryde <kevin@swox.se> 23139 23140 * acinclude.m4, configure.in (GMP_IMPL_H_IEEE_FLOATS): New macro. 23141 23142 * ltmain.sh: Send some rm errors to /dev/null, helps during compiles 23143 on Solaris 2.7 and HP-UX 10. 23144 23145 * tal-notreent.c: Renamed from stack-alloc.c. 23146 * Makefile.am, acinclude.m4, gmp-impl.h: Update. 23147 23148 * gmp-h.in: Don't give both prototypes and inlines, except on gcc. 23149 23150 * gmp-h.in, gmp-impl.h: Use #includes to get necessary standard 23151 classes, add std:: to prototypes. 23152 * cxx/*.cc, tests/cxx/t-ostream.cc: Add "use namespace std". 23153 * acinclude.m4 (GMP_PROG_CXX_WORKS): Ditto. 23154 23155 * tests/*/Makefile.in, mpfr/tests/Makefile.in: Regenerate with 23156 automake patch to avoid Ultrix problem with empty $(TESTS). 23157 23158 * */Makefile.in: Regenerate with automake patch to only rm *_.c in 23159 "make clean" when ansi2knr actually in use, helps DOS 8.3. 23160 23161 * Makefile.in: Regenerate with automake patch to fix stamp-h 23162 numbering, avoiding an unnecessary config.status run. 23163 231642001-10-09 Torbjorn Granlund <tege@swox.com> 23165 23166 * mpn/hppa/hppa1_1/udiv_qrnnd.asm: Use L macros for labels. 23167 Quote L reloc operator. 23168 23169 * gmp-impl.h: Declare class string. 23170 23171 * mpn/asm-defs.m4 (INT32, INT64): Quote $1 to prevent further 23172 expansion. 23173 23174 * mpn/alpha/ev6/mul_1.asm: New file. 23175 231762001-10-09 Kevin Ryde <kevin@swox.se> 23177 23178 * gmp.texi (Introduction to GMP): Add pentium 4 to optimized CPUs. 23179 (Build Options): Note macos directory. 23180 (Notes for Package Builds): GMP 4 series binary compatible with 3. 23181 (Known Build Problems): Remove $* and ansi2knr note, now fixed, except 23182 possibly under --host=none. 23183 (Formatted Output Strings): Remove -1 prec for all digits. 23184 23185 * mpz/add.c, mpz/sub.c: Don't use mpz path on #include (helps macos). 23186 * mpbsd/Makefile.am (INCLUDES): Add -I$(top_srcdir)/mpz. 23187 23188 * printf/doprnt.c, tests/printf/t-printf.c: Remove support for %.*Fe 23189 prec -1 meaning all digits. 23190 23191 * acinclude.m4 (GMP_PROG_AR): Override libtool, use AR_FLAGS="cq". 23192 (GMP_HPC_HPPA_2_0): Print version string to config.log. 23193 23194 * Makefile.am (AUTOMAKE_OPTIONS): Remove check-news (permission notice 23195 in NEWS file is too big). 23196 (dist-hook): Don't distribute numbered or unnumbered emacs backups. 23197 23198 * Makefile.am, cxx/Makefile.am: Updates for Gerardo's stuff. 23199 232002001-10-09 Gerardo Ballabio <ballabio@sissa.it> 23201 23202 * cxx/isfuns.cc: New file. 23203 * gmp-impl.h: Add prototypes. 23204 * cxx/ismpf.cc, cxx/ismpq.cc, cxx/ismpz.cc: New files. 23205 * gmp-h.in: Add prototypes. 23206 * gmpxx.h, mpfrxx.h: New files. 23207 232082001-10-08 Kevin Ryde <kevin@swox.se> 23209 23210 * configure.in (with_tags): Establish a default based on --enable-cxx. 23211 23212 * aclocal.m4: Regenerate with libtool patches for sed char range to 23213 help Cray, LTCC quotes and +Z warnings grep to help HP-UX. 23214 23215 * gmp-impl.h (doprnt_format_t, doprnt_memory_t, doprnt_reps_t, 23216 doprnt_final_t): Use _PROTO. 23217 232182001-10-05 Torbjorn Granlund <tege@swox.com> 23219 23220 * mpn/asm-defs.m4 (INT32, INT64): Use LABEL_SUFFIX. 23221 23222 * mpn/hppa: Convert files to `.asm'. 23223 232242001-10-05 Kevin Ryde <kevin@swox.se> 23225 23226 * mpn/Makeasm.am (.S files): Revert to separate CPP and CCAS, use 23227 cpp-ccas, and only pass CPPFLAGS to CPP, not whole CFLAGS. 23228 * mpn/cpp-ccas: New file. 23229 * mpn/Makefile.am (EXTRA_DIST): Add it. 23230 23231 * tune/common.c, tune/speed.h: Change SPEED_ROUTINE_MPN_COPY_CALL uses 23232 to SPEED_ROUTINE_MPN_COPY or new SPEED_ROUTINE_MPN_COPY_BYTES. Avoids 23233 macro expansion problems on Cray. 23234 23235 * configure.in (AC_PROG_CXXCPP): Add this, to make libtool happier. 23236 232372001-10-04 Torbjorn Granlund <tege@swox.com> 23238 23239 * mpz/rrandomb.c (gmp_rrandomb): Change bit_pos to be 0-based (was 23240 1-based); shift 2 (was 1) when making bit mask. These two changes 23241 avoid undefined shift counts. 23242 (gmp_rrandomb): Avoid most calls to _gmp_rand by caching random values. 23243 23244 * mpn/generic/random2.c: Changes for mirroring mpz/rrandomb.c. 23245 232462001-10-04 Kevin Ryde <kevin@swox.se> 23247 23248 * gmp.texi (Build Options): Add --enable-cxx. 23249 (Notes for Particular Systems): Mention pentium4 performance and SSE2. 23250 (Known Build Problems): Remove vax jsobgtr note, no longer needed. 23251 (Converting Floats): Tweak mpf_get_str description. 23252 (Low-level Functions): Correction to mpn_gcdext destination space 23253 requirements. 23254 (C++ Formatted Output): New section. 23255 (Language Bindings): Add ALP 23256 (Contributors): Add Paul Zimmermann's square root, update my things. 23257 23258 * acinclude.m4 (GMP_PROG_CC_IS_GNU, GMP_PROG_CXX_WORKS): Send compiler 23259 errors to config.log. 23260 23261 * mpq/Makefile.am (INCLUDES): Remove -DOPERATION_$*, not needed. 23262 23263 * mpn/x86/*.asm: Change references to old README.family to just README. 23264 23265 * mpz/README: Remove file, now adequately covered in the manual. 23266 232672001-10-03 Torbjorn Granlund <tege@swox.com> 23268 23269 * mpn/x86/pentium4/copyi.asm: New file. 23270 * mpn/x86/pentium4/copyd.asm: New file. 23271 23272 * gmp-impl.h: Implement separate MPN_COPY_INCR and MPN_COPY_DECR 23273 macros for CRAY systems. 23274 (CRAY _MPN_COPY): Delete. 23275 232762001-10-02 Kevin Ryde <kevin@swox.se> 23277 23278 * tests/mpz/t-popcount.c (check_data): Use "~ (unsigned long) 0" to 23279 avoid compiler warnings on sco. 23280 23281 * mpbsd/Makefile.am: Compile mpz files directly, no copying. 23282 Use mpz/add.c and mpz/sub.c rather than mpz/aors.c. 23283 (INCLUDES): Remove -DOPERATION_$*, no longer needed (by mpz). 23284 23285 * mpz/aors.h: Renamed from mpz/aors.c. 23286 * mpz/add.c, mpz/sub.c: New files, using mpz/aors.h. 23287 * mpz/aors_ui.h: Renamed from mpz/aors_ui.c. 23288 * mpz/add_ui.c, mpz/sub_ui.c: New files, using mpz/aors_ui.h. 23289 * mpz/fits_s.h: Renamed and adapted from mpz/fits_s.c. 23290 * mpz/fits_sshort.c, mpz/fits_sint.c, mpz/fits_slong.c: New files. 23291 * mpz/mul_i.h: Renamed from mpz/mul_siui.c. 23292 * mpz/mul_ui.c, mpz/mul_ui.c: New files, using mpz/mul_i.h. 23293 * mpz/Makefile.am: Consequent updates. 23294 (INCLUDES): Remove -DOPERATION_$*. 23295 23296 * mpf/fits_s.h: Renamed and adapted from mpf/fits_s.c. 23297 * mpf/fits_sshort.c, mpf/fits_sint.c, mpf/fits_slong.c: New files. 23298 * mpf/fits_u.h: Renamed and adapted from mpf/fits_u.c. 23299 * mpf/fits_ushort.c, mpf/fits_uint.c, mpf/fits_ulong.c: New files. 23300 * mpf/Makefile.am: Consequent updates. 23301 (INCLUDES): Remove -DOPERATION_$*. 23302 23303 * cxx/osfuns.cc (__gmp_doprnt_params_from_ios): Don't use ios::hex etc 23304 as cases in a switch, they're not constant in g++ 3.0. 23305 23306 * mpn/Makeasm.am (.s.o, .s.obj, .S.o, .S.obj, .asm.o, .asm.obj): 23307 Locate source file with test -f the same as automake. 23308 (.S): Let CCAS do the preprocessing, and run libtool for .S.lo. 23309 (.asm.lo): Run libtool via m4-ccas to get new style foo.lo right. 23310 (COMPILE_FLAGS): Add $(DEFAULT_INCLUDES), per new automake. 23311 * mpn/m4-ccas: New file. 23312 * mpn/Makefile.am (EXTRA_DIST): Add it. 23313 * mpn/asm-defs.m4: Add m4_not_for_expansion(`DLL_EXPORT'). 23314 * mpn/x86/x86-defs.m4: Undefine PIC if DLL_EXPORT is set. 23315 * configure.in (CFLAGS_PIC, ASMFLAGS_PIC): Remove, no longer needed. 23316 23317 * acinclude.m4 (GMP_FUNC_VSNPRINTF): Warn what's omitted when 23318 vsnprintf not available. 23319 23320 * mpn/underscore.h: Remove file, not used since m68k converted to asm. 23321 * mpn/Makefile.am (EXTRA_DIST): Remove it. 23322 23323 * tests/refmpz.c: Add <stdlib.h>, for free(). 23324 233252001-10-01 Torbjorn Granlund <tege@swox.com> 23326 23327 * mpn/x86/pentium4/sse2/submul_1.asm: Apply some algebraic 23328 simplifications. 23329 * mpn/x86/pentium4/sse2/addmul_1.asm: Comment. 23330 233312001-10-01 Kevin Ryde <kevin@swox.se> 23332 23333 * configure.in (--enable-cxx): New option for C++ support. 23334 Add cxx and tests/cxx subdirectories. 23335 * ltmain.sh, aclocal.m4: Update to libtool 2001-09-30. 23336 23337 * cxx/Makefile.am, cxx/Makefile.in, cxx/osdoprnti.cc, cxx/osfuns.cc, 23338 cxx/osmpf.cc, cxx/osmpq.cc, cxx/osmpz.cc: New files. 23339 * Makefile.am: Add them, in new libgmpxx. 23340 * gmp-h.in, gmp-impl.h: Prototypes and support. 23341 * tests/cxx/Makefile.am, tests/cxx/Makefile.in, 23342 tests/cxx/t-ostream.cc: New files. 23343 23344 * tune/speed.h (SPEED_ROUTINE_MPN_GCD_CALL, 23345 SPEED_ROUTINE_MPN_GCDEXT_ONE): mpn_gcdext needs size+1 for 23346 destinations. Found by Torbjorn. 23347 23348 * gmp-h.in (__GNU_MP__, __GNU_MP_VERSION): Bump to 4.0. 23349 * mp-h.in (__GNU_MP__): Ditto. 23350 * gmp.texi, Makefile.am, compat.c: Amend version 3.2 to 4.0. 23351 23352 * acinclude.m4 (GMP_PROG_CXX_WORKS): New macro. 23353 (GMP_PROG_CC_WORKS): Write "conftest" test program, not a.out. 23354 23355 * gmp-impl.h (struct gmp_asprintf_t): Moved from printf/vasprintf.c. 23356 (GMP_ASPRINTF_T_INIT): New macro. 23357 (GMP_ASPRINTF_T_NEED): New macro, adapted from vasprintf.c NEED(). 23358 * printf/vasprintf.c: Use these. 23359 23360 * printf/asprntffuns.c: New file. 23361 * printf/Makefile.am, Makefile.am: Add it. 23362 * printf/asprntffuns.c, printf/vasprintf.c, gmp-impl.h 23363 (__gmp_asprintf_memory, __gmp_asprintf_reps, __gmp_asprintf_final): 23364 Move to asprntffuns.c, rename to __gmp and make global, remove 23365 spurious formal parameters from __gmp_asprintf_final. 23366 23367 * configure.in (j90-*-*, sv1-*-*): Don't duplicate $path in $add_path. 23368 (*-*-mingw*): Don't assemble with -DPIC (as per cygwin). 23369 23370 * printf/snprntffuns.c (gmp_snprintf_final): Remove spurious formal 23371 parameters. 23372 23373 * tune/tuneup.c (POWM_THRESHOLD): Reduce stop_factor to 1.1 to help 23374 Cray vector systems. 23375 23376 * tests/misc.c (tests_rand_start): Print GMP_CHECK_RANDOMIZE=NN to 23377 facilitate cut and paste when re-running. 23378 * tests/mpz/t-inp_str.c (check_data): Add more diagnostic prints. 23379 233802001-09-30 Kent Boortz <kent@swox.com> 23381 23382 * macos/configure, macos/Makefile.in, macos/README: Updates for gmp 4. 23383 * gmp-h.in (_GMP_H_HAVE_FILE): Recognise Apple MPW. 23384 233852001-09-30 Torbjorn Granlund <tege@swox.com> 23386 23387 * mpn/cray/ieee/submul_1.c: Rewrite. Streamline multiplications; 23388 use `majority' logic. 23389 233902001-09-27 Torbjorn Granlund <tege@swox.com> 23391 23392 * gmp-h.in (__GMPN_AORS_1): Rewrite to work around Cray compiler bug. 23393 233942001-09-26 Torbjorn Granlund <tege@swox.com> 23395 23396 * mpn/x86/pentium4/sse2/gmp-mparam.h: New file. 23397 233982001-09-26 Kevin Ryde <kevin@swox.se> 23399 23400 * mpn/x86/pentium4/sse2/dive_1.asm: New file. 23401 * mpn/x86/pentium4/sse2/submul_1.asm: New file. 23402 * mpn/x86/pentium4/sse2/sqr_basecase.asm: New file. 23403 23404 * mpn/x86/pentium/copyi.asm: New file, based on past work by Torbjorn. 23405 * mpn/x86/pentium/copyi.asm: New file, ditto. 23406 * mpn/x86/pentium/com_n.asm: Rewrite, ditto. 23407 23408 * printf/snprntffuns.c (gmp_snprintf_format): Copy va_list in case 23409 vsnprintf trashes it. 23410 * printf/vasprintf.c (gmp_asprintf_format): Ditto. 23411 * gmp-impl.h, doprnt.c (va_copy): Move to gmp-impl.h. 23412 23413 * tests/mpz/t-cmp_d.c (check_low_z_one): Patch by Torbjorn for vax 23414 limited float range. 23415 234162001-09-23 Torbjorn Granlund <tege@swox.com> 23417 23418 * mpn/vax/lshift.s: Change `jsob*' to `sob*'. 23419 * mpn/vax/rshift.s: Likewise. 23420 234212001-09-23 Kevin Ryde <kevin@swox.se> 23422 23423 * mpn/x86/pentium4/sse2/mul_basecase.asm: Some simple but real code. 23424 23425 * printf/doprnt.c: Use va_copy for va_list variables, copy function 23426 parameter in case it's call-by-reference. 23427 23428 * tune/freq.c (speed_cpu_frequency_bsd_dmesg): New function. 23429 (speed_cpu_frequency_table): Use it. 23430 23431 * tune/many.pl (popcount, hamdist): Fix declared return value. 23432 (sb_divrem_mn): Remove a spurious duplicate entry. 23433 (CLEAN): Add tmp-$objbase.c when using that for .h files. 23434 (macro_speed): Give a default for .h files. 23435 Add ATTRIBUTE_CONST or __GMP_ATTRIBUTE_PURE as appropriate. 23436 23437 * tune/speed.h (SPEED_ROUTINE_MPN_MOD_CALL, 23438 SPEED_ROUTINE_MPN_PREINV_MOD_1, SPEED_ROUTINE_MPN_POPCOUNT, 23439 SPEED_ROUTINE_MPN_HAMDIST, SPEED_ROUTINE_MPN_GCD_1N, 23440 SPEED_ROUTINE_MPN_GCD_1_CALL, SPEED_ROUTINE_MPZ_JACOBI): Use return 23441 values so gcc 3 won't discard calls to pure or const functions. 23442 (mpn_mod_1_div, mpn_mod_1_inv): Add __GMP_ATTRIBUTE_PURE. 23443 234442001-09-22 Torbjorn Granlund <tege@swox.com> 23445 23446 * mpn/x86/pentium4/sse2/mul_basecase.asm: New file, placeholder 23447 for real code, hiding the default x86 mul_basecase.asm. 23448 234492001-09-22 Kevin Ryde <kevin@swox.se> 23450 23451 * configure.in (AC_PREREQ): Bump to 2.52. 23452 (m4_pattern_forbid, m4_pattern_allow): New calls, forbid GMP_. 23453 (AC_CHECK_HEADERS): Remove sys/types.h, already done by autoconf. 23454 * acinclude.m4, configure.in (GMP_GCC_NO_CPP_PRECOMP): New macro. 23455 23456 * tests/devel/try.c (TYPE_PREINV_MOD_1): Don't run size==0. 23457 (malloc_region): Need fd=-1 for mmap MAP_ANON on BSD. 23458 234592001-09-20 Torbjorn Granlund <tege@swox.com> 23460 23461 * mpz/cong.c (mpz_congruent_p): Fix one-limb c<d test. 23462 23463 * longlong.h: Rewrite __i370__ smul_ppmm; enable also for __s390__. 23464 23465 * configure.in: Add support for IBM 360, 370, 390 families. 23466 234672001-09-20 Kevin Ryde <kevin@swox.se> 23468 23469 * mpn/x86/pentium4/sse2/diveby3.asm: New file. 23470 * mpn/x86/pentium4/sse2/mode1o.asm: New file. 23471 234722001-09-16 Kevin Ryde <kevin@swox.se> 23473 23474 * printf/doprnt.c: '#' means showpoint and showtrailing for %e, %f, %g. 23475 * tests/printf/t-printf.c (check_f): More test cases. 23476 234772001-09-15 Torbjorn Granlund <tege@swox.com> 23478 23479 * gmp-h.in (__GMPN_AORS_1): Remove param TEST, add OP and CB. 23480 Postpone zeroing of (cout). 23481 (__GMPN_ADD_1, __GMPN_SUB_1): Corresponding changes. 23482 234832001-09-14 Kevin Ryde <kevin@swox.se> 23484 23485 * ChangeLog: Merge in tests/rand/ChangeLog. 23486 * tests/rand/ChangeLog: Remove file. 23487 23488 * printf/doprnt.c: Fix handling of a plain format after a GMP one; no 23489 need to protect against negative precision internally. 23490 * tests/printf/t-printf.c (check_misc): More checks. 23491 234922001-09-12 Torbjorn Granlund <tege@swox.com> 23493 23494 * mpn/cray/ieee/invert_limb.c: Add a PROLOGUE in a comment to have 23495 HAVE_NATIVE_... defined. 23496 234972001-09-11 Kevin Ryde <kevin@swox.se> 23498 23499 * configure.in, gmp-h.in (__GMP_HAVE_HOST_CPU_FAMILY_power, 23500 __GMP_HAVE_HOST_CPU_FAMILY_powerpc): New AC_SUBSTs. 23501 * gmp-h.in (__GMPN_COPY_INCR): Use them to select the power/powerpc 23502 code, rather than preprocessor defines. 23503 23504 * acinclude.m4, configure.in (GMP_H_ANSI): New macro. 23505 23506 * gmp-h.in (__GMP_EXTERN_INLINE): Add a definition for SCO 8 cc. 23507 23508 * gmp-h.in, version.c (gmp_version): Make the pointer "const" as well 23509 as the string. 23510 23511 * acinclude.m4, configure.in (GMP_PROG_CC_IS_XLC): Recognise xlc when 23512 invoked under another name (cc, xlc128, etc). 23513 * acinclude.m4 (GMP_PROG_CC_IS_GCC): Print a message when recognised. 23514 235152001-09-11 Torbjorn Granlund <tege@swox.com> 23516 23517 * gmp-h.in: Let __DECC mean __GMP_HAVE_CONST, etc. 23518 * mp-h.in: Likewise. 23519 235202001-09-10 Torbjorn Granlund <tege@swox.com> 23521 23522 * mpn/x86/pentium4/mmx/lshift.asm: New file. 23523 * mpn/x86/pentium4/mmx/rshift.asm: New file. 23524 23525 * tests/mpn/t-iord_u.c (check_incr_data): Work around HP compiler bug. 23526 (check_decr_data): Likewise. 23527 235282001-09-08 Kevin Ryde <kevin@swox.se> 23529 23530 * gmp.texi (Integer Logic and Bit Fiddling): Update mpz_hamdist 23531 behaviour, clarify mpz_popcount a touch. 23532 (Language Bindings): Add mlton, fix alphabetical order. 23533 (Single Limb Division): Describe 2 or 1/2 limbs at a time style. 23534 23535 * configure.in (AC_CHECK_FUNCS): Add mmap. 23536 * tests/devel/try.c (malloc_region): Use mmap if available. 23537 23538 * tests/refmpz.c, tests/tests.h (refmpz_hamdist): New function. 23539 * tests/mpz/t-hamdist.c: New file. 23540 * tests/mpz/Makefile.am: Add it. 23541 23542 * mpz/hamdist.c: Support neg/neg operands. 23543 23544 * macos/Makefile.in: Remove dual compile of mpq/aors.c and 23545 mpn/generic/popham.c. 23546 23547 * gmp-impl.h (popc_limb): New macro, adapted from mpn/generic/popham.c. 23548 For 64-bits reuse 0x33...33 constant. 23549 * mpn/generic/popcount.c, mpn/generic/hamdist.c: Split from popham.c, 23550 use popc_limb macro, remove unused "i", don't bother with "register" 23551 qualifiers. 23552 * mpn/generic/popham.c: Remove file. 23553 23554 * ltmain.sh, configure, aclocal.m4: Update to libtool 1.4.1, with one 23555 ltdll.c generation patch. 23556 * doc/configuration: Misc updates, note libtool patch used. 23557 23558 * mpn/x86/pentium4/sse2/mul_1.asm: Use pointer increments not indexed 23559 addressing, to get 4.0 c/l flat. 23560 23561 * tests/mpq/t-cmp_si.c (check_data): Use ULONG_MAX for denominators. 23562 23563 * tests/misc.c (mpz_negrandom): Use given rstate, not RANDS. 23564 235652001-09-07 Torbjorn Granlund <tege@swox.com> 23566 23567 * mpn/x86/pentium4/sse2/addmul_1.asm: New file. 23568 235692001-09-04 Kevin Ryde <kevin@swox.se> 23570 23571 * tune/freq.c: Define a HAVE for each speed_cpu_frequency routine to 23572 avoid duplicating conditionals. 23573 (speed_cpu_frequency_sco_etchw): New function. 23574 (speed_cpu_frequency_table): Use it. 23575 * tune/README: Mention SCO openunix 8 /etc/hw. 23576 23577 * mpz/fib_ui.c: Use ?: to avoid a gcc 3 bug on powerpc64. 23578 Store back a carry for limb<long. 23579 23580 * mpn/x86/k7/mmx/divrem_1.asm, mpn/x86/k7/mmx/mod_1.asm, 23581 mpn/x86/p6/mmx/divrem_1.asm: Fix a couple of comments. 23582 23583 * config.guess: Give m68020 for 68020 or better, not m68k. 23584 * configfsf.guess: Update to 2001-09-04. 23585 235862001-09-02 Kevin Ryde <kevin@swox.se> 23587 23588 * configure.in (m68k-*-*): Let m68k mean 68000, not 68020. 23589 * gmp.texi (Notes for Particular Systems): Update. 23590 23591 * gmp-impl.h (union ieee_double_extract) [m68k]: Use longs, since int 23592 might be only 16 bits. 23593 23594 * tests/mpq/t-aors.c: New file. 23595 * tests/mpq/Makefile.am: Add it. 23596 23597 * tests/refmpq.c: New file. 23598 * tests/Makefile.am: Add it. 23599 * tests/tests.h: Add prototypes. 23600 23601 * mpq/aors.c: Share object code for mpq_add and mpq_sub. 23602 * Makefile.am, mpq/Makefile.am: Single mpq/aors.lo now. 23603 23604 * tests/devel/try.c (TYPE_SUBMUL_1): Use correct reference routine. 23605 236062001-08-30 Kevin Ryde <kevin@swox.se> 23607 23608 * mpn/x86/x86-defs.m4 (cmov_available_p): Add pentium4. 23609 23610 * gmp-h.in: Put #define renamings with prototypes. 23611 Remove commented out #defines of gmp-impl.h things. 23612 (mpn_invert_limb): Remove #define, already in gmp-impl.h. 23613 (mpn_lshiftc, mpn_rshiftc): Remove #defines, unused. 23614 (mpn_addsub_nc): Add prototype to #define. 23615 236162001-08-28 Kevin Ryde <kevin@swox.se> 23617 23618 * gmp.texi: Switch to GFDL. 23619 (Top): Arrange copyright and conditions to appear here too. For 23620 clarity have all this before the miscellaneous macro definitions. 23621 (Copying): Refer to COPYING.LIB file, mention plain GPL2 in demo 23622 programs. 23623 (Contributors, References): Use @appendix rather than @unnumbered. 23624 (GNU Free Documentation License): New appendix. 23625 (@contents): Move to start of document, use only for tex (not html). 23626 (Debugging): Add leakbug. 23627 (Build Options): Add pentium4. 23628 (I/O of Rationals): Add mpq_inp_str. 23629 23630 * fdl.texi: New file, with two @appendix directive tweaks. 23631 * Makefile.am (gmp_TEXINFOS): Add it. 23632 23633 * tests/mpz/io.c: Check mpz_inp_str return against ftell, send error 23634 messages just to stdout. 23635 23636 * mpz/inp_str.c, gmp-impl.h (__gmpz_inp_str_nowhite): New function, 23637 and share a __gmp_free_func call. 23638 * mpq/inp_str.c: New file. 23639 * Makefile.am, mpq/Makefile.am: Add it. 23640 * tests/mpq/t-inp_str.c: New file. 23641 * tests/mpq/Makefile.am (check_PROGRAMS): Add it. 23642 23643 * configure.in, acconfig.h (HAVE_HOST_CPU_FAMILY_power, 23644 HAVE_HOST_CPU_FAMILY_powerpc, HAVE_HOST_CPU_FAMILY_x86): AC_DEFINEs 23645 for processor families. 23646 * gmp-impl.h: Use them, rather than cpp defines. 23647 23648 * demos/Makefile.am (primes_LDADD): Use $(LIBM), for log(). 23649 23650 * tune/many.pl, tune/Makefile.am: Fix some from clean and distclean. 23651 236522001-08-26 Kevin Ryde <kevin@swox.se> 23653 23654 * tests/devel/try.c (ARRAY_ITERATION): Make types match on "?:" legs. 23655 (TYPE_MPZ_JACOBI, TYPE_MPZ_KRONECKER): Remove some superseded code. 23656 23657 * tests/printf/t-printf.c (check_plain): Don't compare "all digits" 23658 precision against plain printf. 23659 23660 * tune/Makefile.am: Eliminate empty TUNE_MPZ_SRCS. 23661 23662 * configure, config.in, INSTALL.autoconf: Update to autoconf 2.52. 23663 * */Makefile.in, mdate-sh, missing, aclocal.m4, configure: Update to 23664 automake 1.5. 23665 * configfsf.guess, configfsf.sub: Update to 2001-08-23. 23666 236672001-08-24 Torbjorn Granlund <tege@swox.com> 23668 23669 * demos/primes.c: Complete rewrite. 23670 236712001-08-24 Kevin Ryde <kevin@swox.se> 23672 23673 * longlong.h: Test __ppc__ for apple darwin cc, reported by Jon 23674 Becker. Also test __POWERPC__, PPC and __vxworks__. 23675 23676 * tune/speed.h (speed_cyclecounter) [x86]: Don't clobber ebx in PIC. 23677 236782001-08-22 Kevin Ryde <kevin@swox.se> 23679 23680 * configure.in (x86 mmx): Correction to mmx path stripping. 23681 236822001-08-17 Kevin Ryde <kevin@swox.se> 23683 23684 * configure.in, acinclude.m4, Makefile.am, printf/Makefile.am, 23685 tests/printf/Makefile.am, gmp-h.in, gmp-impl.h, gmp.texi: Remove C++ 23686 support, for the time being. 23687 * printf/doprntfx.cc, doprntix.cc, osfuns.cc, osmpf.cc, osmpq.cc, 23688 osmpz.cc, tests/printf/t-ostream.cc: Remove files. 23689 23690 * printf/doprnt.c, printf/doprntf.c, gmp-impl.h: Use a single 23691 __gmp_doprnt_mpf, rather than a separate ndigits calculation. 23692 * printf/doprnt.c, printf/doprntf.c, gmp-impl.h, gmp.texi, 23693 tests/printf/t-printf.c: Let empty or -1 prec mean all digits for mpf. 23694 * printf/doprnt.c, tests/printf/t-printf.c: Accept h or l in %n; let 23695 negative "*" style width mean left justify. 23696 23697 * gmp-impl.h, mpf/get_str.c (MPF_SIGNIFICANT_DIGITS): New macro, 23698 extracted from mpf/get_str.c. 23699 23700 * libmp.sym: New file. 23701 * Makefile.am (libmp_la_LDFLAGS): Use it. 23702 (DISTCLEANFILES): Remove asm-syntax.h, no longer generated. 23703 Remove some comments about "make check". 23704 23705 * demos/perl/GMP.pm, GMP.xs, GMP/Mpf.pm: Add printf and sprintf, 23706 change get_str to string/exponent for floats, remove separate 23707 mpf_get_str. 23708 * demos/perl/GMP/Mpf.pm (overload_string): Use $# (default "%.g"). 23709 * demos/perl/typemap: Fix some duplicate string entries. 23710 * demos/perl/test.pl: Update tests, split overloaded constants into ... 23711 * demos/perl/test2.pl: ... this new file. 23712 * demos/perl/Makefile.PL (clean): Add test.tmp. 23713 237142001-08-16 Kevin Ryde <kevin@swox.se> 23715 23716 * printf/snprntffuns.c (gmp_snprintf_format): Correction to bufsize-1 23717 return value handling. 23718 23719 * demos/calc/calc.y: Reposition "%{" so copyright notice gets into 23720 generated files. 23721 23722 * INSTALL: Use gmp_printf. 23723 237242001-08-14 Kevin Ryde <kevin@swox.se> 23725 23726 * mpz/inp_str.c: Fix return value (was 1 too big). 23727 * tests/mpz/t-inp_str.c: New file. 23728 * tests/mpz/Makefile.am: Add it. 23729 23730 * mpn/x86/pentium4/sse2/add_n.asm: New file. 23731 * mpn/x86/pentium4/sse2/sub_n.asm: New file. 23732 * mpn/x86/pentium4/sse2/mul_1.asm: New file. 23733 237342001-08-12 Kevin Ryde <kevin@swox.se> 23735 23736 * printf/sprintffuns.c, printf/doprntf.c: Don't use sprintf return 23737 value (it's a pointer on SunOS 4). 23738 23739 * acinclude.m4 (GMP_ASM_X86_SSE2, GMP_STRIP_PATH): New macros. 23740 * configure.in: Add pentium4 support. 23741 * mpn/x86/pentium4, mpn/x86/pentium4/mmx, mpn/x86/pentium4/sse2: New 23742 directories. 23743 * mpn/x86/README: Update. 23744 237452001-08-10 Torbjorn Granlund <tege@swox.com> 23746 23747 * demos/pexpr.c (setup_error_handler): Catch also SIGABRT. 23748 237492001-07-31 Kevin Ryde <kevin@swox.se> 23750 23751 * tests/refmpn.c (refmpn_mul_1c): Allow low to high overlaps. 23752 23753 * gmp-h.in, gmp-impl.h (_gmp_rand): Move prototype to gmp-impl.h. 23754 23755 * tune/Makefile.am (EXTRA_DIST): Add many.pl. 23756 237572001-07-28 Kevin Ryde <kevin@swox.se> 23758 23759 * gmp.texi (Random Number Functions): Old rand functions no longer use 23760 the C library. 23761 23762 * configure.in, acinclude.m4 (GMP_FUNC_VSNPRINTF): New macro. 23763 23764 * mpn/generic/get_str.c: Add an ASSERT for high limb non-zero. 23765 237662001-07-24 Kevin Ryde <kevin@swox.se> 23767 23768 * gmp.texi (Build Options): Add --enable-cxx. 23769 (Converting Floats): Note mpf_get_str only generates accurately 23770 representable digits. 23771 (Low-level Functions): Note mpn_get_str requires non-zero high limb. 23772 (Formatted Output): New chapter. 23773 (Multiplication Algorithms): Use @quotation with @multitable. 23774 (Toom-Cook 3-Way Multiplication): Ditto. 23775 23776 * tests/memory.c (tests_free_nosize): New function. 23777 * tests/tests.h (tests_allocate etc): Add prototypes. 23778 23779 * tests/printf: New directory. 23780 * tests/printf/Makefile.am, t-printf.c, t-ostream.cc: New files. 23781 * configure.in, tests/Makefile.am: Add them. 23782 23783 * configure.in, acinclude.m4 (GMP_PROG_CXX): New macro. 23784 * configure.in (--enable-cxx): New option. 23785 (AC_CHECK_HEADERS): Add locale.h and sys/types.h, remove unistd.h. 23786 (AC_CHECK_TYPES): Add intmax_t, long double, long long, ptrdiff_t, 23787 quad_t. 23788 (AC_CHECK_FUNCS): Add localeconv, memset, obstack_vprintf, snprintf, 23789 strchr, vsnprintf. 23790 (AC_CHECK_DECLS): Add vfprintf. 23791 23792 * gmp-h.in, gmp-impl.h: Additions for gmp_printf etc. 23793 23794 * printf: New directory. 23795 * printf/Makefile.am, asprintf.c, doprnt.c, doprntf.c, doprntfx.cc, 23796 doprnti.c, doprntix.cc, fprintf.c, obprintf.c, obprntffuns.c, 23797 obvprintf.c, osfuns.cc, osmpf.cc, osmpq.cc, osmpz.cc, printf.c, 23798 printffuns.c, snprintf.c, snprntffuns.c, sprintf.c, sprintffuns.c, 23799 vasprintf.c, vfprintf.c, vprintf.c, vsnprintf.c, vsprintf.c: New 23800 files. 23801 * configure.in, Makefile.am: Add them. 23802 23803 * configure.in (HAVE_INLINE): Remove AC_DEFINE, unused. 23804 (AC_CHECK_TYPES): Don't test for void, assume it always exists. 23805 23806 * gmp-impl.h (__GMP_REALLOCATE_FUNC_MAYBE): New macro. 23807 * mpz/get_str.c, mpq/get_str.c, mpf/get_str.c: Use it. 23808 23809 * gmp-impl.h (mpn_fib2_ui): Use __MPN. 23810 (MPN_COPY_DECR): Fix an ASSERT. 23811 (CAST_TO_VOID): Remove macro. 23812 23813 * gmp-h.in (mpq_out_str): Give #define even without prototype. 23814 (mpz_cmp_d, mpz_cmpabs_d): Corrections to #defines. 23815 23816 * tests/devel/try.c: Add mpn_add and mpn_sub, don't use CAST_TO_VOID. 23817 238182001-07-23 Torbjorn Granlund <tege@swox.com> 23819 23820 * config.guess: Recognize pentium4. 23821 * config.sub: Recognize pentium4. 23822 238232001-07-17 Kevin Ryde <kevin@swox.se> 23824 23825 * gmp-h.in (__GMPN_AORS_1): Remove x86 and gcc versions, leave just 23826 one version. 23827 (__GMPN_ADD, __GMPN_SUB): New macros, rewrite of mpn_add and mpn_sub. 23828 (mpn_add, mpn_sub): Use them. 23829 (__GMPN_COPY_REST): New macro. 23830 23831 * gmp-h.in, gmp-impl.h, acinclude.m4: Remove __GMP_ASM_L and 23832 __GMP_LSYM_PREFIX, revert to ASM_L in gmp-impl.h and AC_DEFINE of 23833 LSYM_PREFIX. 23834 238352001-07-11 Kevin Ryde <kevin@swox.se> 23836 23837 * gmp-h.in (__GMPN_ADD_1 etc) [x86]: Don't use this on egcs 2.91. 23838 23839 * mpz/fits_uint.c, fits_ulong.c, mpz/fits_ushort.c: Split up fits_u.c. 23840 * mpz/fits_u.c: Remove file. 23841 * mpz/Makefile.am, macos/Makefile.in: Update. 23842 23843 * tests/refmpn.c,tests.h (refmpn_copy): New function. 23844 * tests/devel/try.c (TYPE_ZERO): No return value from call. 23845 (TYPE_MODEXACT_1_ODD, TYPE_MODEXACT_1C_ODD): Share call with 23846 TYPE_MOD_1 and TYPE_MOD_1C. 23847 (MPN_COPY, __GMPN_COPY, __GMPN_COPY_INCR): Add testing. 23848 238492001-07-10 Kevin Ryde <kevin@swox.se> 23850 23851 * gmp-h.in (__GMPN_COPY): Add form to help gcc on power and powerpc. 23852 * gmp-impl.h (MPN_COPY_INCR, MPN_COPY_DECR, MPN_ZERO): Ditto. 23853 * mpn/powerpc64/copyi.asm, mpn/powerpc64/copyd.asm: Remove files. 23854 23855 * mpz/tdiv_ui.c: Eliminate some local variables (seems to save code on 23856 i386 gcc 2.95.x), remove a bogus comment about quotient. 23857 23858 * errno.c, gmp-impl.h (__gmp_exception, __gmp_divide_by_zero, 23859 __gmp_sqrt_of_negative): New functions. 23860 * gmp-impl.h (GMP_ERROR, DIVIDE_BY_ZERO, SQRT_OF_NEGATIVE): Use them. 23861 23862 * randclr.c, randraw.c: Use ASSERT(0) for unrecognised algorithms. 23863 238642001-07-07 Kevin Ryde <kevin@swox.se> 23865 23866 * configure.in (powerpc*-*-*): Use -no-cpp-precomp for Darwin. 23867 23868 * tests/mpbsd/t-itom.c: Renamed from t-misc.c. 23869 * tests/mpbsd/t-misc.c: Remove file. 23870 * tests/mpbsd/Makefile.am: Update. 23871 23872 * tests/mpf/t-set_si.c,t-cmp_si.c,t-gsprec.c: Split from t-misc.c. 23873 * tests/mpf/t-misc.c: Remove file. 23874 * tests/mpf/Makefile.am: Update. 23875 23876 * tests/mpz/t-oddeven.c,t-set_si.c,t-cmp_si.c: Split from t-misc.c. 23877 * tests/mpz/t-misc.c: Remove file. 23878 * tests/mpz/Makefile.am: Update. 23879 23880 * stack-alloc.c: Add some alignment ASSERTs. 23881 23882 * gmp-impl.h (MPN_NORMALIZE): Add notes on x86 repe/scasl slow. 23883 23884 * tests/devel/try.c (MPN_ZERO): Add testing. 23885 * tune/speed.c,speed.h,common.c,many.pl (MPN_ZERO): Add measuring. 23886 23887 * mpn/x86/divrem_1.asm: Update a remark about gcc and "loop". 23888 23889 * tests/mpq/t-cmp_si.c: New file. 23890 * tests/mpq/Makefile.am: Add it. 23891 23892 * tests/misc.c,tests.h (mpq_set_str_or_abort): New function. 23893 23894 * mpq/cmp_si.c: New file. 23895 * Makefile.am, mpq/Makefile.am: Add it. 23896 * gmp-h.in (mpq_cmp_si): Add prototype. 23897 * gmp.texi (Comparing Rationals): Add doco. 23898 23899 * gmp-h.in (_GMP_H_HAVE_FILE): Add _FILE_DEFINED for microsoft, add 23900 notes on what symbols are for what systems. 23901 239022001-07-06 Torbjorn Granlund <tege@swox.com> 23903 23904 * longlong.h (ibm032 umul_ppmm): Fix typo. 23905 * longlong.h (sparclite sdiv_qrnnd): Fix typo. 23906 239072001-07-03 Kevin Ryde <kevin@swox.se> 23908 23909 * mpz/bin_ui.c (DIVIDE): Use MPN_DIVREM_OR_DIVEXACT_1. 23910 * mpz/bin_uiui.c (MULDIV): Ditto, and use local variables for size and 23911 pointer. 23912 23913 * acinclude.m4 (GMP_INCLUDE_GMP_H): New macro, use it everywhere gmp.h 23914 is wanted at configure time. 23915 * acinclude.m4, configure.in (GMP_H_EXTERN_INLINE, GMP_H_HAVE_FILE): 23916 New macros. 23917 23918 * gmp-h.in (__GMP_EXTERN_INLINE): Set to "inline" for C++. 23919 (mpn_add, mpn_sub): Use new style __GMP_EXTERN_INLINE. 23920 * gmp-h.in, mp-h.in, gmp-impl.h (_EXTERN_INLINE): Remove, unused. 23921 * mpn/generic/add.c, mpn/generic/sub.c: New files. 23922 * mpn/generic/inlines.c: Remove file. 23923 * configure.in, mpn/Makefile.am: Update. 23924 23925 * gmp.texi (GMP Basics): Note the need for stdio.h to get FILE 23926 prototypes. 23927 239282001-07-01 Kevin Ryde <kevin@swox.se> 23929 23930 * gmp.texi (Build Options, Reentrancy): Updates for new 23931 --enable-alloca behaviour. 23932 (Debugging): Describe --enable-alloca=debug. 23933 (Miscellaneous Integer Functions): Note mpz_sizeinbase ignores signs. 23934 (Low-level Functions): Give a formula for mpn_gcdext cofactor. 23935 (Factorial Algorithm): New section. 23936 (Binomial Coefficients Algorithm): New section. 23937 Misc tweaks elsewhere. 23938 23939 * mpf/set_prc.c: Merge the two truncation conditionals, misc cleanups, 23940 no functional changes. 23941 23942 * mpn/*/gmp-mparam.h (DIVEXACT_1_THRESHOLD): Add tuned values. 23943 * gmp-impl.h (DIVEXACT_1_THRESHOLD): Make the default 0 when 23944 2*UMUL_TIME < UDIV_TIME. 23945 23946 * mpn/x86/p6/dive_1.asm: New file. 23947 23948 * mpn/x86/dive_1.asm: New file. 23949 * mpn/x86/gmp-mparam.h (DIVEXACT_1_THRESHOLD): Use it always. 23950 23951 * tests/refmpn.c, tests.h (refmpn_zero): New function. 23952 * tests/devel/try.c: Use it. 23953 23954 * tests/refmpn.c (refmpn_sb_divrem_mn): Use refmpn_cmp, not mpn_cmp. 23955 23956 * tests/mpf/t-get_d.c (main): Use || not |. 23957 23958 * tests/misc.c, tests/t-modlinv.c, tests/mpq/t-get_str.c, 23959 tests/mpf/reuse.c: Add string.h. 23960 239612001-06-29 Kevin Ryde <kevin@swox.se> 23962 23963 * tune/speed.h (SPEED_ROUTINE_MPN_FIB2_UI, 23964 SPEED_ROUTINE_COUNT_ZEROS_C): Corrections to TMP block handling. 23965 23966 * gmp-impl.h (MPN_TOOM3_MUL_N_MINSIZE, MPN_TOOM3_SQR_N_MINSIZE): 23967 Corrections to these to account for adding tD into E. 23968 (MPN_INCR_U, MPN_DECR_U) [WANT_ASSERT]: Add size 23969 assertions, since mpn_add_1 and mpn_sub_1 from gmp.h don't get them. 23970 (MPN_DIVREM_OR_DIVEXACT_1): Add an assert of no remainder. 23971 23972 * assert.c: Add stdlib.h for abort prototype. 23973 * tests/spinner.c, trace.c, t-constants.c, t-count_zeros.c, 23974 t-gmpmax.c, t-modlinv.c: Ditto. 23975 * tests/mpz/t-bin.c, t-cmp.c, t-get_si.c, t-misc.c, t-popcount.c, 23976 t-set_str.c, t-sizeinbase.c: Ditto. 23977 * tests/mpq/t-equal.c, t-get_str.c, t-set_f.c, t-set_str.c: Ditto. 23978 * tests/mpf/t-fits.c, t-get_d.c, t-get_si.c, t-int_p.c, t-misc.c, 23979 t-trunc.c: Ditto. 23980 * tests/mpbsd/allfuns.c, t-misc.c: Ditto. 23981 23982 * mpn/generic/mul_n.c, mpz/cfdiv_r_2exp.c: Use MPN_INCR_U rather than 23983 mpn_incr_u. 23984 23985 * tests/devel/try.c (TYPE_SB_DIVREM_MN): More fixes for calling method. 23986 23987 * mpn/x86/k6/cross.pl: More insn exceptions. 23988 239892001-06-23 Kevin Ryde <kevin@swox.se> 23990 23991 * gmp-h.in (__GMPN_ADD_1, __GMPN_SUB_1) [i386]: Fix some asm output 23992 constraints. 23993 23994 * gmp-impl.h (modlimb_invert): Mask after shifting, so mask constant 23995 fits a signed byte. 23996 23997 * tests/devel/try.c (TYPE_SB_DIVREM_MN): Fix initial fill of quotient 23998 with garbage. 23999 240002001-06-20 Kevin Ryde <kevin@swox.se> 24001 24002 * config.guess (rs6000-*-aix4* | powerpc-*-aix4*): Suppress error 24003 messages if $CC_FOR_BUILD or program don't work. 24004 24005 * mpz/sqrt.c,sqrtrem.c: Special case for op==0, to avoid TMP_ALLOC(0). 24006 * tests/refmpf.c (refmpf_add, refmpf_sub): Avoid TMP_ALLOC(0). 24007 24008 * tests/mpn/t-aors_1.c: New file. 24009 * tests/mpn/Makefile.am: Add it. 24010 24011 * gmp-h.in (__GMPN_ADD_1, __GMPN_SUB_1): New macros, rewrite of 24012 mpn_add_1 and mpn_sub_1, better code for src==dst and/or n==1, 24013 separate versions for gcc x86, gcc generic, and non-gcc. 24014 (mpn_add_1, mpn_sub_1): Use them. 24015 (mpn_add, mpn_sub): Ditto, to get inlines on all compilers. 24016 (extern "C") [__cplusplus]: Let this encompass the extern inlines too. 24017 * mpn/generic/add_1.c,sub_1.c: New files, force code from gmp.h. 24018 * configure.in, mpn/Makefile.am: Add them. 24019 24020 * acinclude.m4 (GMP_ASM_LSYM_PREFIX): AC_SUBST __GMP_LSYM_PREFIX 24021 rather than AC_DEFINE LSYM_PREFIX. 24022 * gmp-h.in (__GMP_LSYM_PREFIX): New substitution. 24023 (__GMP_ASM_L): New macro. 24024 * gmp-impl.h (ASM_L): Use it. 24025 24026 * acinclude.m4, configure.in (GMP_C_ATTRIBUTE_MALLOC): New macro. 24027 * gmp-impl.h: Use it for all the malloc based TMP_ALLOCs. 24028 24029 * stack-alloc.h: Remove file. 24030 * tal-reent.c: New file. 24031 * Makefile.am: Update. 24032 24033 * acinclude.m4, configure.in (GMP_OPTION_ALLOCA): New macro, add 24034 malloc-reentrant method, use stack-alloc.c as malloc-notreentrant, 24035 make "reentrant" the default. 24036 * gmp-impl.h (__TMP_ALIGN): Moved from stack-alloc.c, use a union to 24037 determine the value, and demand only 4 bytes align on 32-bit systems. 24038 * gmp-impl.h (WANT_TMP_NOTREENTRANT): Move global parts of 24039 stack-alloc.h to here, allow non power-of-2 __TMP_ALIGN in TMP_ALLOC. 24040 * gmp-impl.h: Extend extern "C" to TMP_ALLOC declarations. 24041 * stack-alloc.c (tmp_stack): Move private parts of stack-alloc.h to 24042 here, use gmp-impl.h. 24043 24044 * gmp-impl.h (TMP_ALLOC_LIMBS_2): New macro. 24045 * mpz/fib_ui.c, mpz/jacobi.c, mpq/cmp.c, mpn/generic/fib2_ui.c: Use it. 24046 24047 * mpfr/exp2.c: Patch by Paul to match TMP_MARK and TMP_FREE in loop. 24048 * mpfr/sqrt.c: Scope nested TMP_DECL into nested { } block, patch by 24049 Paul, tweaked by me. 24050 * mpfr/agm.c: Ditto, and add a final TMP_FREE(marker2). 24051 24052 * gmp-h.in (mpn_cmp): Add __GMP_ATTRIBUTE_PURE. 24053 24054 * INSTALL: Clarify "make install", tweak formatting a bit. 24055 240562001-06-17 Kevin Ryde <kevin@swox.se> 24057 24058 * configure.in, Makefile.am, gmp-impl.h: Add a debugging TMP_ALLOC, 24059 selected with --enable-alloca=debug. 24060 * tal-debug.c: New file. 24061 * configure.in, Makefile.am: Compile stack-alloc.c only for 24062 --disable-alloca. 24063 * assert.c (__gmp_assert_header): New function, split from 24064 __gmp_assert_fail. 24065 24066 * mpz/lcm.c: Don't TMP_MARK and then just return. Remove unnecessary 24067 _mpz_realloc prototype. 24068 24069 * mpn/generic/mul.c (mpn_sqr_n): Use __gmp_allocate_func for toom3 24070 temporary workspace. 24071 240722001-06-15 Kevin Ryde <kevin@swox.se> 24073 24074 * tests/mpz/t-set_f.c: New file. 24075 * tests/mpz/Makefile.am (check_PROGRAMS): Add it. 24076 24077 * mpz/set_f.c: Share MPN_COPY between pad and trunc cases, do exp<=0 24078 test earlier, store SIZ(w) earlier. 24079 24080 * tests/t-count_zeros.c: New file. 24081 * tests/t-gmpmax.c: New file. 24082 * tests/Makefile.am (check_PROGRAMS): Add them. 24083 24084 * mp_clz_tab.c: Compile the table only if longlong.h says it's needed; 24085 add an internal-use-only comment. 24086 * tune/common.c: Force a __clz_tab for convenience when testing. 24087 24088 * mpn/x86/pentium/gmp-mparam.h, mpn/x86/pentium/mmx/gmp-mparam.h: Add 24089 COUNT_LEADING_ZEROS_NEED_CLZ_TAB, for mod_1.asm. 24090 24091 * longlong.h (count_leading_zeros) [pentium]: Decide to go with float 24092 method for p54. 24093 (count_leading_zeros) [alpha]: Add COUNT_LEADING_ZEROS_NEED_CLZ_TAB. 24094 (__clz_tab): Provide a prototype only if it's needed. 24095 24096 * tests/trace.c (mpz_trace): Don't use = on structures. 24097 (mpn_trace): Set _mp_alloc when creating mpz. 24098 240992001-06-12 Kevin Ryde <kevin@swox.se> 24100 24101 * mpn/x86/divrem_1.asm: Amend some comments about P5 speed. 24102 24103 * tune/README: Clarify reconfigure on gmp-mparam.h update. 24104 24105 * mpn/x86/p6/copyd.asm: New file. 24106 * mpn/x86/p6/README: Update copyd and mod_1. 24107 * mpn/x86/copyd.asm: Amend some comments. 24108 24109 * gmp-impl.h (__builtin_constant_p): Add dummy for non-gcc. 24110 (mpn_incr_u, mpn_decr_u): Recognise incr==1 at compile time in the 24111 generic code on gcc. 24112 24113 * gmp-impl.h (ASSERT_ZERO_P, ASSERT_MPN_NONZERO_P): New macros. 24114 * mpn/generic/gcd_1.c, mpn/generic/mul_fft.c: Use them. 24115 * mpz/get_d.c: Add a private mpn_zero_p. 24116 * mpfr/trunc.c: Use own mpn_zero_p. 24117 * tune/speed.h (SPEED_ROUTINE_MPN_GCD_1N): Use refmpn_zero_p. 24118 * gmp-impl.h (mpn_zero_p): Remove, no longer needed. 24119 24120 * gmp-h.in, gmp-impl.h: Move MPN_CMP to gmp.h as __GMPN_CMP, leave an 24121 MPN_CMP alias in gmp-impl.h. 24122 * gmp-h.in (mpn_cmp): Add an inline version. 24123 * mpn/generic/cmp.c: Use __GMP_FORCE_mpn_cmp to get code from gmp.h. 24124 24125 * acinclude.m4 (GMP_C_ATTRIBUTE_MODE): New macro. 24126 * configure.in: Call it. 24127 * gmp-impl.h (SItype etc): Use it. 24128 24129 * randraw.c (lc): Change mpn_mul_basecase->mpn_mul, 24130 mpn_incr_u->MPN_INCR_U, abort->ASSERT_ALWAYS(0). 24131 24132 * longlong.h (count_leading_zeros) [pentiumpro]: Work around a partial 24133 register stall on gcc < 3. 24134 24135 * gmp.texi (Introduction to GMP): Add IA-64. 24136 (Notes for Particular Systems): i386 means generic x86. 24137 24138 * tests/t-modlinv.c: Use tests_start and tests_end. 24139 241402001-06-10 Kevin Ryde <kevin@swox.se> 24141 24142 * gmp.texi (Number Theoretic Functions): mpz_jacobi only defined for b 24143 odd. Separate the jacobi/legendre/kronecker descriptions. 24144 (Low-level Functions): Document mpn_mul_1 "incr" overlaps. 24145 (Language Bindings): New chapter. 24146 24147 * mpz/jacobi.c: Don't retaining old behaviour of mpz_jacobi on even b 24148 (it wasn't documented in 3.1.1). 24149 * mpz/jacobi.c, gmp-h.in (mpz_kronecker, mpz_legendre): Remove 24150 separate entrypoints, just #define to mpz_jacobi. 24151 * compat.c (__gmpz_legendre): Add compatibility entrypoint. 24152 24153 * mpn/generic/mul_1.c: Allow "incr" style overlaps. 24154 * tests/devel/try.c (param_init): Test this. 24155 24156 * mpf/mul_ui.c: Do size==0 test earlier. 24157 241582001-06-08 Kevin Ryde <kevin@swox.se> 24159 24160 * gmp-impl.h (ULONG_HIGHBIT, UINT_HIGHBIT, USHRT_HIGHBIT): Cast 24161 ULONG_MAX etc to unsigned long etc before attempting to right shift. 24162 24163 * acinclude.m4 (GMP_ASM_LSYM_PREFIX): Add an AC_DEFINE of LSYM_PREFIX. 24164 * gmp-impl.h (ASM_L): New macro. 24165 (mpn_incr_u, mpn_decr_u, MPN_INCR_U, MPN_DECR_U): Add i386 optimized 24166 versions. 24167 24168 * mpn/hppa/*.s,S,asm: Use .label so the code works with gas on hppa 24169 GNU/Linux too, reported by LaMont Jones <lamont@smallone.fc.hp.com>. 24170 * mpn/hppa/README: Add some notes on this. 24171 * acinclude.m4 (GMP_ASM_LABEL_SUFFIX): Ditto. 24172 24173 * mpn/Makefile.am (nodist_libdummy_la_SOURCES): Add dive_1.c, 24174 fib2_ui.c. 24175 24176 * tests/mpn/t-iord_u.c: New file. 24177 * tests/mpn/Makefile.am (check_PROGRAMS): Add it. 24178 24179 * configure.in (mips*-*-irix[6789]*): Make ABI=n32 the default, same 24180 as in gmp 3.1. 24181 * gmp.texi (ABI and ISA): Update. 24182 24183 * gmp.texi (Build Options): Misc tweaks. 24184 (Notes for Particular Systems): Describe windows DLL handling. 24185 (Known Build Problems): DJGPP needs bash 2.04. 24186 (Number Theoretic Functions): mpz_invert returns 0<=r<modulus; add 24187 mpz_fib2_ui, mpz_lucnum_ui, mpz_lucnum2_ui. 24188 (Fibonacci Numbers Algorithm): Update for new formulas used. 24189 (Lucas Numbers Algorithm): New section. 24190 24191 * tune/speed.c,speed.h,common.c,many.pl: Add mpn_fib2_ui, mpz_fib2_ui, 24192 mpz_lucnum_ui, mpz_lucnum2_ui. 24193 * demos/expr/exprz.c,README: Add lucnum. 24194 * demos/perl/GMP.pm,GMP.xs,GMP/Mpz.pm,test.pl: Add fib2, lucnum, 24195 lucnum2. 24196 24197 * tests/mpz/t-lucnum_ui.c: New file. 24198 * tests/mpz/Makefile.am (check_PROGRAMS): Add it. 24199 * tests/mpz/t-fib_ui.c: Check mpz_fib2_ui too, updates for new style 24200 MPN_FIB2_SIZE. 24201 24202 * tune/tuneup.c, tune/Makefile.am, gmp-impl.h, mpn/*/gmp-mparam.h: 24203 Remove FIB_THRESHOLD, no longer required. 24204 24205 * mpz/fib2_ui.c, mpz/lucnum_ui.c mpz/lucnum2_ui.c: New files. 24206 * Makefile.am, mpz/Makefile.am: Add them. 24207 * gmp-h.in (mpz_fib2_ui, mpz_lucnum_ui, mpz_lucnum2_ui): Add 24208 prototypes. 24209 24210 * mpn/generic/fib2_ui.c: New file. 24211 * configure.in (gmp_mpn_functions): Add it. 24212 * gmp-impl.h (mpn_fib2_ui, FIB_TABLE, etc): Add these. 24213 * mpz/fib_ui.c: Rewrite. 24214 24215 * acinclude.m4 (GMP_C_SIZES): Fix _LONG_LONG_LIMB define for mp_limb_t 24216 size test. 24217 (GMP_FUNC_ALLOCA): Add dummy __GMP_BITS_PER_MP_LIMB for gmp-h.in work. 24218 24219 * configure.in (CPPFLAGS): Remove -D__GMP_WITHIN_GMP, don't want it 24220 everywhere. 24221 * Makefile.am, mpn/Makefile.am, mpz/Makefile.am, mpq/Makefile.am, 24222 mpf/Makefile.am, mpbsd/Makefile.am (INCLUDES): Set -D__GMP_WITHIN_GMP. 24223 24224 * configure.in (*-*-msdosdjgpp*): Forcibly disable shared libraries, 24225 to make libtests.la work. 24226 24227 * acconfig.h (_LONG_LONG_LIMB, HAVE_MPFR): Remove dummy defines, no 24228 longer needed. 24229 24230 * mpz/set_ui.c: Store to _mp_d[0] unconditionally. 24231 242322001-05-27 Kevin Ryde <kevin@swox.se> 24233 24234 * configure.in, gmp-h.in, mp-h.in: Add support for windows DLLs. 24235 242362001-05-26 Kevin Ryde <kevin@swox.se> 24237 24238 * gmp.texi (ABI and ISA, Reentrancy): Minor tweaks 24239 (Notes for Package Builds): Note gmp.h is a generated file. 24240 (Notes for Particular Systems): -march=pentiumpro is used for gcc 24241 2.95.4 and up. 24242 (Assembler Loop Unrolling): Mention non power-of-2 unrolling. 24243 (Internals): New chapter. 24244 * mpf/README: Remove file. 24245 24246 * demos/expr/README: Miscellaneous rewordings. 24247 24248 * demos/perl: New directory. 24249 * demos/Makefile.am: Add it. 24250 * demos/perl/INSTALL, Makefile.PL, GMP.pm, GMP.xs, typemap, 24251 GMP/Mpz.pm, GMP/Mpq.pm, GMP/mpf.pm, GMP/Rand.pm, sample.pl, test.pl: 24252 New files. 24253 24254 * configure, aclocal.m4: Update to autoconf 2.50. 24255 24256 * configure, aclocal.m4, ltmain.sh: Update to libtool 1.4. 24257 24258 * configure, aclocal.m4, missing, ansi2knr.c, */Makefile.in: Update to 24259 automake 1.4f. 24260 * Makefile.am: Conditionalize mpfr in $(SUBDIRS) to handle mpfr.info. 24261 * mpfr/Makefile.am (INFO_DEPS): Remove previous mpfr.info handling. 24262 * mpn/Makefile.am (GENERIC_SOURCES): Remove this, just put mp_bases.c 24263 in libmpn_la_SOURCES. 24264 * tests/Makefile.am (tests.h): Move from EXTRA_HEADERS to 24265 libtests_la_SOURCES. 24266 * ltconfig: Remove file, no longer needed. 24267 24268 * Makefile.am (gmp-impl.h, longlong.h, stack-alloc.h): Move from 24269 EXTRA_DIST to libgmp_la_SOURCES, so they get included in TAGS. 24270 * tests/rand/Makefile.am (gmpstat.h): Move to libstat_la_SOURCES 24271 similarly. 24272 24273 * config.guess (68k-*-*): Use $SHELL not "sh", tweak some comments. 24274 24275 * mpfr/mpfr.texi (Introduction to MPFR): Tweak table formatting, note 24276 non-free programs must be able to be re-linked. 24277 242782001-05-20 Kevin Ryde <kevin@swox.se> 24279 24280 * mpn/powerpc64/addmul_1.asm, mpn/powerpc64/mul_1.asm, 24281 mpn/powerpc64/submul_1.asm: Add carry-in entrypoints. 24282 242832001-05-17 Kevin Ryde <kevin@swox.se> 24284 24285 * gmp.texi (ge): Fix definition for info. 24286 (Notes for Particular Systems): Mention 68k dragonball and cpu32. 24287 (Efficiency): Add static linking, more about in-place operations, 24288 describe mpq+/-integer using addmul. 24289 (Reporting Bugs): A couple of words about self-contained reports. 24290 (Floating-point Functions): Note exponent limitations of mpf_get_str 24291 and mpf_set_str. 24292 (Initializing Floats): Clarify mpf_get_prec, mpf_set_prec and 24293 mpf_set_prec_raw a bit. 24294 (Float Comparison): Note current mpf_eq deficiencies. 24295 24296 * gmp-h.in (__GMP_HAVE_CONST, __GMP_HAVE_PROTOTYPES, 24297 __GMP_HAVE_TOKEN_PASTE): Merge GNU ansidecl.h tests for ANSI compilers. 24298 * demos/expr/expr-impl-h.in: Ditto. 24299 24300 * gmp-impl.h (BITS_PER_MP_LIMB): Define from __GMP_BITS_PER_MP_LIMB if 24301 not already in gmp-mparam.h. 24302 * tests/t-constants.c (BITS_PER_MP_LIMB, __GMP_BITS_PER_MP_LIMB): 24303 Check these are the same. 24304 24305 * gmp-h.in (mpf_get_default_prec, mpf_get_prec, mpf_set_default_prec, 24306 mpf_set_prec_raw): Provide "extern inline" versions, use __GMPF on the 24307 macros. 24308 * mpf/get_dfl_prc.c, mpf/get_prc.c, mpf/set_dfl_prc.c, 24309 mpf/set_prc_raw.c: Get code from gmp.h using __GMP_FORCE. 24310 24311 * gmp-h.in, gmp-impl.h (__gmp_default_fp_limb_precision): Move from 24312 gmp-impl.h to gmp-h.in. 24313 (__GMPF_BITS_TO_PREC, __GMPF_PREC_TO_BITS): Ditto, and use __GMPF 24314 prefix and add a couple of casts. 24315 * gmp-h.in (__GMP_MAX): New macro. 24316 * mpf/init2.c mpf/set_prc.c: Update for __GMPF prefix. 24317 24318 * gmp-h.in (__GMP_BITS_PER_MP_LIMB): New templated define. 24319 * acinclude.m4 (GMP_C_SIZES): Add AC_SUBST __GMP_BITS_PER_MP_LIMB, 24320 remove AC_DEFINE BITS_PER_MP_LIMB. 24321 243222001-05-13 Kevin Ryde <kevin@swox.se> 24323 24324 * gmp-h.in, gmp.texi, Makefile.am, mpz/Makefile.am, tests/mpz/t-pow.c: 24325 Remove mpz_si_pow_ui, pending full si support. 24326 * mpz/si_pow_ui.c: Remove file. 24327 243282001-05-11 Kevin Ryde <kevin@swox.se> 24329 24330 * mpn/x86/pentium/dive_1.asm: New file. 24331 24332 * mpn/powerpc32/umul.asm: Use r on registers. 24333 * mpn/powerpc64/umul.asm: New file. 24334 * configure.in (powerpc*-*-*): Enable umul in extra_functions. 24335 24336 * tests/refmpn.c, tests/tests.h (refmpn_umul_ppmm): Use same arguments 24337 as normal mpn_umul_ppmm. 24338 (refmpn_mul_1c): Update. 24339 * tests/devel/try.c, tune/many.pl: Add some umul_ppmm testing support. 24340 24341 * mpn/x86/k6/mmx/popham.asm, mpn/x86/k7/mmx/popham.asm: Don't support 24342 size==0. 24343 * mpn/x86/pentium/popcount.asm, mpn/x86/pentium/hamdist.asm: Ditto, 24344 and shave a couple of cycles from the PIC entry code. 24345 24346 * mpz/mul.c: Use mpn_mul_1 for size==1 and mpn_mul_2 (if available) 24347 for size==2, to avoid copying; do vsize==0 test earlier. 24348 24349 * mpf/sub.c: Test r!=u before calling mpf_set. 24350 * mpf/add.c: Ditto, and share mpf_set between usize==0 and vsize==0. 24351 24352 * mpn/generic/tdiv_qr.c, mpq/get_d.c, mpf/div.c, mpf/set_q.c, 24353 mpf/set_str.c, mpf/ui_div.c: Test for high bit set, not for 24354 count_leading_zeros zero. 24355 24356 * acinclude.m4 (GMP_PROG_AR, GMP_PROG_NM): Print a message if extra 24357 flags are added. 24358 24359 * tests/mpz/t-mul_i.c: New file. 24360 * tests/mpz/Makefile.am: Add it. 24361 24362 * mpz/mul_siui.c (mpz_mul_si): Fix for -0x80..00 on long long limb. 24363 24364 * gmp-h.in (mpf_set_si, mpf_set_ui): Revert last change, set exp to 0 24365 when n==0. 24366 * mpf/ceilfloor.c, mpf/trunc.c: Fix exp to 0 when setting r to 0. 24367 * gmp-impl.h (MPF_CHECK_FORMAT): Check exp==0 when size==0. 24368 243692001-05-07 Kevin Ryde <kevin@swox.se> 24370 24371 * gmp-h.in (mpf_set_si, mpf_set_ui): Don't bother setting _mp_exp to 0 24372 when n==0 (use 1 unconditionally). 24373 * tests/mpf/t-misc.c (check_mpf_set_si): Don't demand anything of 24374 _mp_exp when _mp_size is zero. 24375 24376 * mpn/x86/README: Note gas _GLOBAL_OFFSET_TABLE_ with leal problem. 24377 24378 * gmp-h.in (mpz_fits_uint_p, mpz_fits_ulong_p, mpz_fits_ushort_p): 24379 Provide these as "extern inline"s. 24380 (__GMP_UINT_MAX, __GMP_ULONG_MAX, __GMP_USHRT_MAX): New macros. 24381 (mpz_popcount): Use __GMP_ULONG_MAX. 24382 * gmp-impl.h (UINT_MAX, ULONG_MAX, USHRT_MAX): Use __GMP_U*_MAX, if 24383 not already defined. 24384 * mpz/fits_u.c: Use the code from gmp.h. 24385 243862001-05-06 Kevin Ryde <kevin@swox.se> 24387 24388 * mpn/x86/k7/dive_1.asm: New file. 24389 * mpn/x86/k7/gcd_1.asm: New file. 24390 * mpn/asm-defs.m4 (m4_count_trailing_zeros): New macro. 24391 24392 * gmp-h.in (mpz_get_ui, mpz_getlimbn, mpz_set_q, mpz_perfect_square_p, 24393 mpz_popcount, mpz_size, mpf_set_ui, mpf_set_si, mpf_size): Provide 24394 these as "extern inlines". 24395 Use just one big extern "C" block. 24396 * mpz/getlimbn.c, mpz/get_ui.c, mpz/perfsqr.c, mpz/popcount.c 24397 mpz/set_q.c, mpz/size.c, mpf/set_si.c, mpf/set_ui.c, mpf/size.c: Use 24398 __GMP_FORCE to get code from gmp.h. 24399 244002001-05-03 Kevin Ryde <kevin@swox.se> 24401 24402 * extract-dbl.c: Add ASSERT d>=0. 24403 24404 * gmp.texi (Efficiency): Add mpz_addmul etc for mpz+=integer, add 24405 mpz_neg etc in-place. 24406 (Integer Arithmetic): Add mpz_addmul, mpz_submul, mpz_submul_ui. 24407 (Initializing Rationals): Add mpq_set_str. 24408 (Low-level Functions): mpn_set_str requires strsize >= 1. 24409 24410 * gmp-h.in (__GMP_EXTERN_INLINE, __GMP_ABS): New macros. 24411 (mpz_abs, mpq_abs, mpf_abs, mpz_neg, mpq_neg, mpf_neg): Provide inline 24412 versions. 24413 * mpz/abs.c, mpq/abs.c, mpf/abs.c, mpz/neg.c, mpq/neg.c, mpf/neg.c: 24414 Add suitable __GMP_FORCE to turn off inline versions. 24415 24416 * tests/mpz/t-aorsmul.c,t-cmp_d.c,t-popcount,t-set_str.c: New files. 24417 * tests/mpz/Makefile.am: Add them. 24418 24419 * mpz/aorsmul_i.c: New file, rewrite of addmul_ui.c. Add 24420 mpz_submul_ui entrypoint, share more code between some of the 24421 conditionals, use mpn_mul_1c if available. 24422 * mpz/addmul_ui.c: Remove file. 24423 * mpz/aorsmul.c: New file. 24424 * Makefile.am, mpz/Makefile.am: Update. 24425 * gmp-h.in (mpz_addmul, mpz_submul, mpz_submul_ui): Add prototypes. 24426 * gmp-impl.h (mpz_aorsmul_1): Add prototype. 24427 24428 * tests/mpq/t-set_str.c: New file. 24429 * tests/mpq/Makefile.am: Add it. 24430 24431 * mpq/set_str.c: New file. 24432 * Makefile.am, mpq/Makefile.am: Add it. 24433 * gmp-h.in (mpq_set_str): Add prototype. 24434 24435 * mpz/set_str.c: Fix for trailing white space on zero, eg. "0 ". 24436 * mpn/generic/set_str.c: Add ASSERT str_len >= 1. 24437 24438 * gmp-h.in, gmp-impl.h (mpn_incr_u, mpn_decr_u): Move to gmp-impl.h. 24439 * gmp-impl.h (MPN_INCR_U, MPN_DECR_U): New macros. 24440 244412001-04-30 Kevin Ryde <kevin@swox.se> 24442 24443 * tests/mpz/t-lcm.c: New file. 24444 * tests/mpz/Makefile.am (check_PROGRAMS): Add it. 24445 24446 * mpz/lcm.c: Add one limb special case. 24447 24448 * mpz/lcm_ui.c: New file. 24449 * Makefile.am, mpz/Makefile.am: Add it. 24450 * gmp-h.in (mpz_lcm_ui): Add prototype. 24451 * gmp.texi (Number Theoretic Functions): Add mpz_lcm_ui, document lcm 24452 now always positive. 24453 24454 * mp-h.in (mp_size_t, mp_exp_t): Fix typedefs to match gmp-h.in. 24455 24456 * gmp-h.in (mpn_add_1, mpn_add, mpn_sub_1, mpn_sub): Remove K&R 24457 function defines (ansi2knr will handle mpn/inline.c, and just ansi is 24458 enough for gcc extern inline). 24459 24460 * gmp-h.in (__GMP_HAVE_TOKEN_PASTE): New macro. 24461 (__MPN): Use it. 24462 * gmp-impl.h (CNST_LIMB): Ditto. 24463 24464 * gmp-h.in, mp-h.in (__gmp_const, __gmp_signed, _PROTO, __MPN): Use 24465 ANSI forms on Microsoft C. 24466 (__GMP_HAVE_CONST): New define. 24467 * gmp-impl.h (const, signed): Use it. 24468 24469 * demos/expr/expr-impl-h.in (<stdarg.h>): Use this with Microsoft C. 24470 (HAVE_STDARG): New define. 24471 * demos/expr/expr.c,exprz.c,exprq.c,exprf.c,exprfr.c: Use it. 24472 24473 * acinclude.m4 (GMP_C_STDARG): New macro. 24474 * configure.in: Call it. 24475 * rand.c: Use it. 24476 24477 * configure.in (AC_PROG_CC_STDC): New test. 24478 244792001-04-25 Kevin Ryde <kevin@swox.se> 24480 24481 * mpn/x86/k6/mmx/dive_1.asm: New file. 24482 * mpn/x86/x86-defs.m4 (Zdisp): Two more insns. 24483 24484 * mpn/x86/pentium/mul_2.asm: New file. 24485 * mpn/asm-defs.m4: Add define_mpn(mul_2). 24486 * acconfig.h (HAVE_NATIVE_mpn_divexact_1, mul_2): Add templates. 24487 24488 * configure.in (ABI): Use AC_ARG_VAR. 24489 24490 * tests/devel/try.c: Run reference function when validate fails. 24491 24492 * mpq/get_str.c: Fixes for negative bases. 24493 * tests/mpq/t-get_str.c: Check negative bases. 24494 * tests/misc.c,tests.h (__gmp_allocate_strdup, strtoupper): New 24495 functions. 24496 244972001-04-24 Torbjorn Granlund <tege@swox.com> 24498 24499 * mpz/lcm.c (mpz_lcm): Make result always positive. 24500 24501 * gmp-h.in (mpz_inp_binary, mpz_out_binary): Remove declarations. 24502 245032001-04-22 Kevin Ryde <kevin@swox.se> 24504 24505 * mpn/powerpc64/addsub_n.asm: Use config.m4 not asm-syntax.m4. 24506 24507 * mpz/cmp_d.c, mpz/cmpabs_d.c: New files. 24508 * Makefile.am, mpz/Makefile.am: Add them. 24509 * mpf/cmp_d.c, mpf/get_dfl_prec.c: New files. 24510 * Makefile.am, mpf/Makefile.am: Add them. 24511 * gmp-h.in (mpz_cmp_d, mpz_cmpabs_d, mpf_cmp_d, mpf_get_default_prec): 24512 Add prototypes. 24513 * gmp.texi: Add documentation. 24514 24515 * mpf/set_prc.c: Avoid a realloc call if already the right precision. 24516 24517 * gmp-impl.h (MPF_BITS_TO_PREC, MPF_PREC_TO_BITS): New macros. 24518 * mpf/get_prc.c, init2.c, set_dfl_prec.c, set_prc.c, set_prc_raw.c: 24519 Use them. 24520 245212001-04-20 Kevin Ryde <kevin@swox.se> 24522 24523 * tests/devel/try.c: Don't test size==0 on mpn_popcount and 24524 mpn_hamdist; add testing for mpn_divexact_1; print some limb values 24525 with mpn_trace not printf. 24526 24527 * mpz/popcount.c, mpz/hamdist.c: Don't pass size==0 to mpn_popcount 24528 and mpn_hamdist. 24529 * mpn/generic/popham.c: Don't support size==0. 24530 24531 * config.guess (m68k-*-*): Detect m68010, return m68360 for cpu32, 24532 cleanup the nesting a bit. 24533 24534 * gmp.texi (Integer Division): Fix mpz_congruent_2exp_p "c" type. 24535 (Integer Division): Add mpz_divexact_ui. 24536 (Number Theoretic Functions): Fix mpz_nextprime return type. 24537 (Exact Remainder): Divisibility tests now implemented. 24538 And more index entries in a few places. 24539 24540 * tests/mpz/dive_ui.c: New file. 24541 * tests/mpz/Makefile.am (check_PROGRAMS): Add it. 24542 24543 * mpz/dive_ui.c: New file. 24544 * Makefile.am, mpz/Makefile.am: Add it. 24545 * gmp-h.in (mpz_divexact_ui): Add prototype. 24546 24547 * tune/many.pl, tune/speed.h: Add special mpn_back_to_back for 24548 development. 24549 24550 * gmp-impl.h (MPN_DIVREM_OR_DIVEXACT_1): New macro. 24551 * mpz/divexact.c: Use it. 24552 24553 * gmp-impl.h (DIVEXACT_1_THRESHOLD): New threshold. 24554 * tune/tuneup.c: Tune it. 24555 24556 * tune/speed.c,speed.h,common.c,many.pl: Add measuring of 24557 mpn_divexact_1, mpn_copyi, mpn_copyd. 24558 24559 * mpn/generic/dive_1.c: New file. 24560 * configure.in (gmp_mpn_functions): Add it. 24561 * gmp-impl.h (mpn_divexact_1): Add prototype. 24562 * mpn/asm-defs.m4: Add define_mpn(divexact_1). 24563 24564 * tests/mpn: New directory. 24565 * tests/Makefile.am: Add it. 24566 * tests/mpn/Makefile.am: New file. 24567 * configure.in (AC_OUTPUT): Add it. 24568 * tests/mpn/t-asmtype.c: New file. 24569 24570 * configure, config.in: Update to autoconf 2.49d. 24571 24572 * configure.in, gmp-h.in, mp-h.in, demos/expr/expr-impl-h.in: Revert 24573 to generating gmp.h, mp.h and expr-impl.h with AC_OUTPUT and AC_SUBST. 24574 24575 * configure.in (m68*-*-*): Oops, m683?2 is 68000, m68360 is cpu32. 24576 * mpn/m68k/m68k-defs.m4 (scale_available_p): Ditto. 24577 24578 * configure.in (underscore, asm_align): Remove these variables, unused. 24579 (GMP_ASM_*): Sort by AC_REQUIREs, to avoid duplication. 24580 * acinclude.m4 (GMP_ASM_UNDERSCORE, GMP_ASM_ALIGN_LOG): Remove support 24581 for actions, no longer needed. 24582 245832001-04-17 Kevin Ryde <kevin@swox.se> 24584 24585 * config.guess (m68k-*-*): Look for cpu in linux kernel /proc/cpuinfo. 24586 24587 * acinclude.m4 (GMP_GCC_MARCH_PENTIUMPRO): The -mpentiumpro problem is 24588 fixed in 2.95.4, so test for that. 24589 (GMP_ASM_TYPE): Amend some comments. 24590 24591 * tune/freq.c (speed_cpu_frequency_sysctl): Avoid having unused 24592 variables on GNU/Linux. 24593 24594 * mpn/asm-defs.m4 (m4_instruction_wrapper): Fix a quoting problem if 24595 the name of the file is a macro. 24596 245972001-04-15 Kevin Ryde <kevin@swox.se> 24598 24599 * mpn/powerpc64/*.asm: Add speeds on ppc630. 24600 24601 * acconfig.h: Add dummy templates for _LONG_LONG_LIMB and HAVE_MPFR. 24602 * configure.in: Ensure config.in is the last AM_CONFIG_HEADER, 24603 which autoheader requires. 24604 24605 * mpn/x86/pentium/popcount.asm: New file. 24606 * mpn/x86/pentium/hamdist.asm: New file. 24607 24608 * mpn/asm-defs.m4: (m4_popcount): New macro. 24609 Amend a few comments elsewhere. 24610 24611 * acinclude.m4 (GMP_ASM_RODATA): If possible, grep compiler output for 24612 the right directive. 24613 24614 * tune/speed.c: Print clock speed in MHz, not cycle time. 24615 24616 * configure.in (AC_CHECK_HEADERS): Check for sys/processor.h. 24617 * tune/freq.c (speed_cpu_frequency_processor_info): Require 24618 <sys/processor.h> to exist, to differentiate the different 24619 processor_info on Darwin. 24620 (speed_cpu_frequency_sysctlbyname): Remove hw.model test which is in 24621 speed_cpu_frequency_sysctl. 24622 (speed_cpu_frequency_sysctl): Add hw.cpufrequency for Darwin. 24623 24624 * gmp-impl.h (MPN_LOGOPS_N_INLINE, mpn_and_n ... mpn_xnor_n): Use a 24625 single expression argument for the different operations, necessary for 24626 the Darwin "smart" preprocessor. 24627 24628 * mpn/m68k/t-m68k-defs.pl: Allow white space in m4_definsn and 24629 m4_defbranch. 24630 24631 * tune/many.pl: Change RM_TMP_S to RM_TMP to match mpn/Makeasm.am, 24632 avoid a possibly undefined array in a diagnostic, add more renaming to 24633 hamdist. 24634 246352001-04-13 Kevin Ryde <kevin@swox.se> 24636 24637 * ltmain.sh, aclocal.m4, configure, config.in: Update to libtool 1.3d. 24638 * configure.in: Change ac_ to lt_ in lt_cv_archive_cmds_need_lc and 24639 lt_cv_proc_cc_pic. 24640 24641 * config.guess (m68*-*-*): Detect exact cpu with BSD sysctl hw.model, 24642 detect 68000/68010 with trapf, detect 68302 with bfffo. 24643 246442001-04-11 Kevin Ryde <kevin@swox.se> 24645 24646 * acinclude.m4 (GMP_ASM_M68K_INSTRUCTION, GMP_ASM_M68K_ADDRESSING, 24647 GMP_ASM_M68K_BRANCHES): New macros. 24648 * configure.in: Use them, remove old 68k configs, use mc68020 udiv and 24649 umul. 24650 24651 * mpn/m68k/m68k-defs.m4: New file. 24652 * mpn/m68k/t-m68k-defs.pl: New file. 24653 * mpn/m68k/*.asm: New files, converted from .S. Merge add_n and sub_n 24654 to aors_n, ditto mc68020 addmul_1 and submul_1 to aorsmul_1. No 24655 object code changes (except .type and .size now used on NetBSD 1.4). 24656 * mpn/m68k/README: New file. 24657 * mpn/m68k/*.S, */*.S, syntax.h: Remove files. 24658 24659 * configure.in (m68*-*-netbsd1.4*): Pretend getrusage doesn't exist. 24660 * tune/README: Update. 24661 24662 * configure.in (powerpc*-*-*): For the benefit of Darwin 1.3, add cc 24663 to cclist, make gcc_cflags -Wa,-mppc optional. 24664 246652001-04-06 Kevin Ryde <kevin@swox.se> 24666 24667 * mpn/lisp/gmpasm-mode.el (gmpasm-comment-start-regexp): Add | for 68k. 24668 (gmpasm-mode-syntax-table): Add to comments. 24669 24670 * tests/mpz/reuse.c (dsi_div_func_names): Add names for cdiv_[qr]_2exp. 24671 246722001-04-04 Kevin Ryde <kevin@swox.se> 24673 24674 * acinclude.m4 (GMP_M4_M4WRAP_SPURIOUS): Fix test so as to actually 24675 detect the problem, add notes on m68k netbsd 1.4.1. 24676 24677 * gmp.texi (Compatibility with older versions): Note libmp 24678 compatibility. 24679 246802001-04-03 Kevin Ryde <kevin@swox.se> 24681 24682 * tests/mpz/reuse.c: Add mpz_cdiv_q_2exp and mpz_cdiv_r_2exp. 24683 24684 * tests/mpz/t-pow.c: Drag in refmpn.o when testing mpz_pow_ui etc with 24685 refmpn_mul_2. 24686 24687 * tune/speed.c,speed.h,common.c,many.pl: Add measuring of mpn_com_n 24688 and mpn_mul_2. 24689 * tests/devel/try.c: Add testing of mpn_mul_2, and a 24690 DATA_MULTIPLE_DIVISOR attribute. 24691 24692 * gmp.texi (Build Options): List more m68k's. 24693 (Build Options): Add cross reference to tex2html. 24694 (Notes for Particular Systems): Add m68k means 68020 or up. 24695 (Rational Conversions): New section, with mpq_get_d, mpq_set_d and 24696 mpq_set_f from Miscellaneous, and new mpq_set_str. 24697 (Applying Integer Functions): Move mpq_get_num, mpq_get_den, 24698 mpq_set_num and mpq_set_den from Misc. 24699 (Miscellaneous Rational Functions): Remove section. 24700 (Custom Allocation): Partial rewrite for various clarifications. 24701 (References): Improve line breaks near URLs. 24702 24703 * acinclude.m4 (GMP_GCC_M68K_OPTIMIZE): New macro. 24704 * configure.in (m68*-*-*): Use it to run gcc 2.95.x at -O not -O2. 24705 (m680?0-*-*, m683?2-*-*, m68360-*-*): Add optional gcc -m options. 24706 24707 * tests/mpz/t-cmp.c: New file. 24708 * tests/mpz/t-sizeinbase.c: New file. 24709 * tests/mpz/Makefile.am: Add them. 24710 24711 * gmp-impl.h (MPN_CMP): New macro. 24712 * mpz/cmp.c,cmpabs.c: Use it, and minor cleanups too. 24713 24714 * tests/mpq/t-equal.c: New file. 24715 * tests/mpq/t-get_str.c: New file. 24716 * tests/mpq/Makefile.am: Add them. 24717 24718 * mpq/get_str.c: New file. 24719 * Makefile.am, mpq/Makefile.am: Add it. 24720 * gmp-h.in (mpq_get_str): Add prototype. 24721 24722 * mpq/equal.c: Rewrite using inline compare loops. 24723 24724 * tests/refmpn.c,tests.h (refmpn_mul_2): Fix parameter order. 24725 * mpz/n_pow_ui.c: Fix mpn_mul_2 calls parameter order. 24726 247272001-03-29 Kevin Ryde <kevin@swox.se> 24728 24729 * tests/mpf/t-trunc.c: New file. 24730 * tests/mpf/Makefile.am (check_PROGRAMS): Add it. 24731 * gmp-impl.h (MPF_CHECK_FORMAT): New macro. 24732 24733 * mpf/trunc.c: New file, rewrite of integer.c, preserve prec+1 in 24734 copy, don't copy if unnecessary. 24735 * mpf/ceilfloor.c: New file likewise, and use common subroutine for 24736 ceil and floor. 24737 * mpf/integer.c: Remove file. 24738 * Makefile.am, mpf/Makefile.am, macos/Makefile.in: Update. 24739 24740 * acinclude.m4 (GMP_GCC_VERSION_GE): New macro. 24741 (GMP_GCC_MARCH_PENTIUMPRO): Use it, remove CCBASE parameter (don't 24742 bother checking it's gcc). 24743 (GMP_GCC_ARM_UMODSI): New macro. 24744 * configure.in (GMP_GCC_MARCH_PENTIUMPRO): Update parameters. 24745 (arm*-*-*): Use GMP_GCC_ARM_UMODSI. 24746 * gmp.texi (Notes for Particular Systems): Add arm gcc requirements. 24747 247482001-03-28 Kevin Ryde <kevin@swox.se> 24749 24750 * gmp.texi (Converting Integers): Document mpz_getlimbn using absolute 24751 value and giving zero for N out of range, move to end of section. 24752 24753 * tests/refmpn.c (refmpn_tdiv_qr): Use refmpn_divmod_1 rather than 24754 refmpn_divrem_1. 24755 * tests/tests.h: Add some prototypes that were missing. 24756 24757 * mpz/tdiv_q_ui.c: Remove a comment that belonged to mpz_tdiv_r_ui. 24758 247592001-03-26 Torbjorn Granlund <tege@swox.com> 24760 24761 * mpn/generic/gcdext.c: Handle carry overflow after m*n multiply code 24762 in both arms. Partially combine multiply arms. 24763 247642001-03-24 Kevin Ryde <kevin@swox.se> 24765 24766 * longlong.h: Add comments to P5 count_leading_zeros. 24767 24768 * demos/expr/exprz.c,t-expr.c,README: Add congruent_p and divisible_p. 24769 247702001-03-23 Kevin Ryde <kevin@swox.se> 24771 24772 * gmp.texi (GMPceil, GMPfloor, ge, le): New macros. 24773 (Integer Division, mpn_cmp, mpn_sqrtrem, Algorithms): Use them. 24774 (mpn_bdivmod): Refer to mp_bits_per_limb, not BITS_PER_MP_LIMB, and 24775 improve formatting a bit. 24776 (mpn_lshift, mpn_rshift): Clarify the return values, and use {rp,n} 24777 for the destination. 24778 Miscellaneous minor rewordings in a few places. 24779 24780 * mpn/arm/arm-defs.m4: New file. 24781 * configure.in (arm*-*-*): Use it. 24782 * mpn/arm/*.asm: Use changecom and registers from arm-defs.m4, use L() 24783 for local labels. 24784 24785 * mpn/x86/k6/mmx/com_n.asm: Relax code alignment (same speed). 24786 24787 * gmp-h.in (__GMP_ATTRIBUTE_PURE): Use __pure__ to avoid application 24788 namespace. 24789 24790 * gmp-impl.h (ABS): Add parens around argument. 24791 247922001-03-20 Kevin Ryde <kevin@swox.se> 24793 24794 * acinclude.m4 (GMP_PROG_M4): Use AC_ARG_VAR on $M4. 24795 24796 * acinclude.m4 (GMP_M4_M4WRAP_SPURIOUS): New macro. 24797 * configure.in: Use it. 24798 * mpn/asm-defs.m4: Ditto. 24799 248002001-03-18 Kevin Ryde <kevin@swox.se> 24801 24802 * mpn/x86/pentium/logops_n.asm: New file. 24803 24804 * mpn/x86/k6/k62mmx/copyd.asm: Rewrite, smaller and simpler, faster on 24805 small sizes, slower on big sizes (about half the time). 24806 * mpn/x86/k6/k62mmx/copyi.asm: Remove file, in favour of generic x86. 24807 * mpn/x86/copyi.asm: Add some comments. 24808 * mpn/x86/k6/README: Update. 24809 24810 * mpn/x86/k6/gcd_1.asm: New file. 24811 24812 * gmp-impl.h (NEG_MOD): Fix type of __dnorm. 24813 24814 * acinclude.m4 (GMP_C_SIZES): Fix use of __GMP_WITHIN_CONFIGURE. 24815 248162001-03-15 Kevin Ryde <kevin@swox.se> 24817 24818 * gmp.texi (GMPabs): New macro. 24819 (Float Comparison - mpf_reldiff): Use it. 24820 (Integer Comparisons - mpz_cmpabs): Ditto, puts "abs" in info. 24821 (Reentrancy): Update notes on old random functions. 24822 (Karatsuba Multiplication): Better characterize the effect of basecase 24823 speedups on the thresholds, pointed out by Torbjorn. 24824 24825 * tune/README: Notes on the 1x1 div threshold for mpn_gcd_1. 24826 24827 * tests/misc.c (mpz_pow2abs_p, mpz_flipbit, mpz_errandomb, 24828 mpz_errandomb_nonzero, mpz_negrandom): New functions. 24829 (mpz_erandomb, mpz_erandomb_nonzero): Use urandom(). 24830 * tests/spinner.c (spinner_wanted, spinner_tick): Make global. 24831 * tests/tests.h: Update prototypes. 24832 24833 * tests/mpz/t-cong.c, tests/mpz/t-cong_2exp.c: New files. 24834 * tests/mpz/Makefile.am (check_PROGRAMS): Add them. 24835 24836 * mpz/cong.c, mpz/cong_2exp.c, mpz/cong_ui.c: New files. 24837 * Makefile.am, mpz/Makefile.am: Add them. 24838 * gmp-impl.h (NEG_MOD): New macro. 24839 * gmp-h.in (mpz_congruent_p, mpz_congruent_2exp_p, 24840 mpz_congruent_ui_p): Add prototypes. 24841 * gmp.texi (Integer Division, Efficiency): Add documentation. 24842 24843 * mpq/aors.c: No need for ABS on denominator sizes. 24844 24845 * gmp-impl.h (mpn_divisible_p): Use __MPN. 24846 24847 * gmp-impl.h (LOW_ZEROS_MASK): New macro. 24848 * mpz/divis_ui.c, mpn/generic/divis.c: Use it. 24849 24850 * mpz/setbit.c: Fix normalization for case of a negative ending up 24851 with a zero high limb. 24852 * tests/mpz/bit.c (check_single): New test for this problem. 24853 24854 * configure.in (none-*-*): Fix cclist for default ABI=long. 24855 248562001-03-10 Kevin Ryde <kevin@swox.se> 24857 24858 * mpz/cfdiv_q_2exp.c: Don't scan for non-zero limbs if they don't 24859 matter to the rounding. 24860 24861 * mpz/get_ui.c: Fetch _mp_d[0] unconditionally, so the code can come 24862 out branch-free. 24863 248642001-03-08 Kevin Ryde <kevin@swox.se> 24865 24866 * tests/devel/try.c (param_init): Fix reference functions for and_n 24867 and nand_n. 24868 24869 * tune/speed.c, tests/devel/try.c: Seed RANDS, not srandom etc. 24870 * configure.in (AC_CHECK_FUNCS): Remove srand48 and srandom. 24871 * macos/configure (coptions): Remove random/srandom, now unnecessary. 24872 24873 * configure.in (gmp.h, mp.h, demos/expr/expr-impl.h): Generate using 24874 AM_CONFIG_HEADER. 24875 (_LONG_LONG_LIMB, HAVE_MPFR): Change to AC_DEFINEs. 24876 * gmp-h.in, mp-h.in, demos/expr/expr-impl-h.in: Change to #undef's. 24877 * acinclude.m4 (GMP_FUNC_ALLOCA, GMP_C_SIZES): Use gmp-h.in, not gmp.h. 24878 * Makefile.am (EXTRA_DIST): Remove gmp-h.in and mp-h.in, now done 24879 automatically. 24880 * acinclude.m4 (GMP_FUNC_ALLOCA), gmp-impl.h: Set and use 24881 __GMP_WITHIN_CONFIGURE rather than GMP_FUNC_ALLOCA_TEST. 24882 24883 * mpf/random2.c: Use _gmp_rand and RANDS instead of random() for the 24884 exponent, ensures full range of values too. 24885 24886 * tests/mpz/t-div_2exp.c (check_various): Start with d based on i, but 24887 don't let it go negative. 24888 24889 * tune/tuneup.c (KARATSUBA_MUL_THRESHOLD): Limit probing to 24890 TOOM3_MUL_THRESHOLD_LIMIT, the size of the workspace in mul_n.c. 24891 Use a -1 with this too, so size<LIMIT not <=. 24892 248932001-03-07 Torbjorn Granlund <tege@swox.com> 24894 24895 * mpn/cray/cfp/mul_1.c: Don't call mpn_add_n with size 0. 24896 * mpn/cray/cfp/addmul_1.c: Likewise. 24897 * mpn/cray/cfp/submul_1.c: Don't call mpn_sub_n with size 0. 24898 24899 * tests/mpz/t-div_2exp.c (check_various): Start 2nd d loop from 0 24900 (avoid problems with Cray compilers). 24901 249022001-03-06 Torbjorn Granlund <tege@swox.com> 24903 24904 * mpn/cray/ieee/submul_1.c: Don't call mpn_sub_n with size 0. 24905 24906 * mpn/cray/ieee/mul_basecase.c: New file. 24907 * mpn/cray/ieee/sqr_basecase.c: New file, derived from mul_basecase.c. 24908 249092001-03-06 Kevin Ryde <kevin@swox.se> 24910 24911 * tests/devel/try.c (pointer_setup): Allow dst_size == SIZE_SIZE2 for 24912 the benefit of mpn_tdiv_qr. 24913 24914 * tune/tuneup.c (all): Start karatsuba probing at size==4, for the 24915 benefit of cray t90 ieee which has speed oddities at size==2. 24916 24917 * gmp-impl.h (USE_LEADING_REGPARM): Use __GMP_GNUC_PREREQ. 24918 Use __GMP_ATTRIBUTE_PURE and ATTRIBUTE_CONST in a few places. 24919 24920 * gmp-h.in (__GMP_GNUC_PREREQ) New macro. 24921 (__GMP_ATTRIBUTE_PURE): New macro, use it in many places. 24922 24923 * gmp-impl.h, gmp-h.in (mpn_jacobi_base): Move prototype to 24924 gmp-impl.h, use ATTRIBUTE_CONST. 24925 24926 * tune/speed.h (speed_cyclecounter): Inline asm version for i386. 24927 24928 * mpz/cfdiv_r_2exp.c (cfdiv_r_2exp): Only reread "up" after second 24929 realloc, first is under w!=u. 24930 249312001-03-05 Torbjorn Granlund <tege@swox.com> 24932 24933 * mpn/cray/sub_n.c: Rewrite using `majority' logic. 24934 24935 * mpz/cfdiv_r_2exp.c (cfdiv_r_2exp): Reread `up' after realloc of w. 24936 24937 * mpn/cray/ieee/mul_1.c: Rewrite. Streamline multiplications; 24938 use `majority' logic. 24939 * mpn/cray/ieee/addmul_1.c: Likewise. 24940 24941 * mpn/cray/add_n.c: Rewrite using `majority' logic. 24942 249432001-03-04 Torbjorn Granlund <tege@swox.com> 24944 24945 * longlong.h (CRAY udiv_qrnnd): No longer conditional on CRAYMPP. 24946 (64-bit hppa add_ssaaaa): New. 24947 (64-bit hppa sub_ddmmss): New. 24948 24949 * mpn/cray/ieee/invert_limb.c: New file. 24950 24951 * gmp-impl.h (RANDS): Add a `,0' to make it compile on more compilers. 24952 249532001-03-03 Kevin Ryde <kevin@swox.se> 24954 24955 * mpz/n_pow_ui.c (ULONG_PARITY): Move to gmp-impl.h. 24956 * gmp-impl.h (ULONG_PARITY): i386 part from n_pow_ui.c, new generic 24957 form by Torbjorn. 24958 24959 * tests/mpz/t-div_2exp.c: New file, rewrite of t-2exp.c. 24960 * tests/mpz/t-2exp.c: Remove file. 24961 * tests/mpz/Makefile.am (check_PROGRAMS): Update. 24962 24963 * gmp-h.in (mpz_cdiv_q_2exp, mpz_cdiv_q_2exp): Add prototypes. 24964 * gmp.texi (Integer Division): Add mpz_cdiv_q_2exp and mpz_cdiv_q_2exp. 24965 24966 * mpz/cfdiv_q_2exp.c: New file, partial rewrite of fdiv_q_2exp.c, add 24967 mpz_cdiv_q_2exp entrypoint. 24968 * mpz/cfdiv_r_2exp.c: New file, rewrite of fdiv_r_2exp.c, use all mpn, 24969 add mpz_cdiv_r_2exp entrypoint. 24970 * mpz/fdiv_q_2exp.c, mpz/fdiv_r_2exp.c: Remove files. 24971 * mpz/Makefile.am (libmpz_la_SOURCES): Update. 24972 * Makefile.am (MPZ_OBJECTS): Ditto. 24973 24974 * gmp-impl.h (USE_LEADING_REGPARM): Use __i386__ same as longlong.h 24975 (REGPARM_2_1, REGPARM_3_1, REGPARM_ATTR): New macros. 24976 * mpz/jacobi.c (jac_or_kron): Use them. 24977 24978 * configure.in (HAVE_ABI_$ABI): Re-enable this for config.m4, with 24979 dots changed to underscores (necessary for hppa). 24980 24981 * tests/mpz/t-divis.c, tests/mpz/t-divis_2exp.c: New files. 24982 * tests/mpz/Makefile.am (check_PROGRAMS): Add them. 24983 24984 * gmp-h.in (mpz_divisible_p, mpz_divisible_ui_p, 24985 mpz_divisible_2exp_p): Add prototypes. 24986 * gmp.texi (Integer Division): Add mpz_divisible_p. 24987 (Efficiency): Add remarks about divisibility testing. 24988 24989 * mpz/divis.c, mpz/divis_ui.c, mpz/divis_2exp.c: New files. 24990 * mpz/Makefile.am (libmpz_la_SOURCES): Add them. 24991 * Makefile.am (MPZ_OBJECTS): Ditto. 24992 24993 * mpn/generic/divis.c: New file. 24994 * configure.in (gmp_mpn_functions): Add it. 24995 * mpn/Makefile.am (nodist_libdummy_la_SOURCES): Ditto. 24996 * gmp-impl.h (mpn_divisible_p): Add prototype. 24997 24998 * urandom.h: Remove file. 24999 * Makefile.am (EXTRA_DIST): Remove it. 25000 25001 * tests/mpz/convert.c, dive.c, io.c, logic.c, reuse.c, t-2exp.c, 25002 t-fdiv.c, t-fdiv_ui.c, t-gcd.c, t-jac.c, t-mul.c, t-pow.c, 25003 t-powm.c, t-powm_ui.c, t-root.c, t-sqrtrem.c, t-tdiv.c, 25004 t-tdiv_ui.c: Use RANDS, initialized by tests_rand_start. 25005 25006 * tests/mpz/t-pow.c: New file, being t-pow_ui renamed and with some 25007 further tests added. 25008 * tests/mpz/t-pow_ui.c: Remove file. 25009 * tests/mpz/Makefile.am (check_PROGRAMS): Update. 25010 25011 * tests/t-modlinv.c: Don't use urandom.h. 25012 * tests/mpz/bit.c, tests/mpz/t-scan.c: Ditto. 25013 * tests/mpq/t-cmp.c, tests/mpq/t-cmp_ui.c, tests/mpq/t-get_d.c: Ditto. 25014 * tests/mpf/reuse.c, t-add.c, t-conv.c, t-dm2exp.c, t-muldiv.c, 25015 t-sqrt.c, t-sub.c: Ditto. 25016 25017 * tests/misc.c (tests_rand_start, tests_rand_end): New functions. 25018 (tests_start, tests_end): Use them. 25019 (urandom): New function. 25020 * tests/tests.h: Add prototypes. 25021 25022 * mpz/random.c: Rewrite using mpz_urandomb and RANDS. 25023 * mpn/generic/random.c: Rewrite using _gmp_rand and RANDS. 25024 * mpn/generic/random2.c: Use RANDS not random() etc. 25025 25026 * gmp-impl.h (__gmp_rands, __gmp_rands_initialized): Add externs. 25027 (gmp_randstate_ptr): New typedef. 25028 (RANDS, RANDS_CLEAR): New macros. 25029 25030 * rands.c: New file. 25031 * Makefile.am (libgmp_la_SOURCES): Add it. 25032 25033 * configure.in (mpn_objs_in_libmp): New AC_SUBST. 25034 * Makefile.am (libmp_la_DEPENDENCIES): Use it. 25035 250362001-03-02 Torbjorn Granlund <tege@swox.com> 25037 25038 * mpn/pa64/udiv_qrnnd.asm: New file. 25039 250402001-03-01 Kevin Ryde <kevin@swox.se> 25041 25042 * mpbsd/rpow.c: New file. 25043 * mpbsd/Makefile.am (libmpbsd_la_SOURCES): Add it 25044 (nodist_libmpbsd_la_SOURCES): Remove pow_ui.c. 25045 * Makefile.am (MPBSD_OBJECTS): Add rpow.lo, remove pow_ui.lo. 25046 (libmp_la_DEPENDENCIES): Add mpz/n_pow_ui.lo. 25047 25048 * mpz/ui_pow_ui.c: Rewrite using mpz_n_pow_ui. 25049 * mpz/pow_ui.c: Ditto, and no longer provide rpow for mpbsd. 25050 25051 * mpz/n_pow_ui.c: New file, rewrite of pow_ui.c and ui_pow_ui.c. Use 25052 less temporary memory, strip factors of 2 from the base, use mpn_mul_2 25053 if available. 25054 * mpz/si_pow_ui.c: New file. 25055 * mpz/Makefile.am (libmpz_la_SOURCES): Add them. 25056 * Makefile.am (MPZ_OBJECTS): Ditto. 25057 * gmp-impl.h (mpz_n_pow_ui): Add prototype. 25058 * gmp-h.in (mpz_si_pow_ui): Add prototype. 25059 * gmp.texi (Integer Exponentiation): Add mpz_si_pow_ui. 25060 25061 * acinclude.m4 (GMP_C_SIZES): Add BITS_PER_ULONG. 25062 Correction to mp_limb_t working check. 25063 * configure.in (limb_chosen): New variable. 25064 * tests/t-constants.c (BITS_PER_ULONG): Check this value. 25065 Add some reminders about tests that fail on Cray. 25066 25067 * tests/refmpn.c (refmpn_mul_2): New function. 25068 * tests/refmpz.c (refmpz_pow_ui): Copied from tests/mpz/t-pow_ui.c 25069 * tests/tests.h: Add prototypes. 25070 25071 * configure.in (none-*-*): Add ABI=longlong. 25072 * doc/configuration (Long long limb testing): Describe it. 25073 25074 * gmp.texi (Low-level Functions): Move some commented out remarks ... 25075 * mpn/generic/mul_basecase.c: ... to here. 25076 25077 * mpn/x86/README: Note "%=" as an alternative to "1:" in __asm__. 25078 25079 * tests/trace.c (mp_trace_start): Print "bin" for binary. 25080 25081 * mpn/generic/dump.c: Add a couple of casts to keep gcc quiet. 25082 25083 * gmp-h.in (mpn_incr_u, mpn_decr_u): Add parens around arguments. 25084 25085 * mpbsd/mout.c, mpbsd/mtox.c (num_to_text): Remove unused variable. 25086 25087 * mpfr/set_d.c (mpfr_get_d2): Declare "q" for 64-bit limbs. 25088 250892001-02-28 Torbjorn Granlund <tege@swox.com> 25090 25091 * mpn/pa64w/udiv_qrnnd.asm: Tune. 25092 250932001-02-27 Torbjorn Granlund <tege@swox.com> 25094 25095 * mpn/pa64w/udiv_qrnnd.asm: New file. 25096 250972001-02-26 Torbjorn Granlund <tege@swox.com> 25098 25099 * longlong.h (arm): Optimize sub_ddmmss by testing for constant 25100 operands. 25101 * mpn/arm/invert_limb.asm: New file. 25102 251032001-02-24 Torbjorn Granlund <tege@swox.com> 25104 25105 * mpn/generic/lshift.c: Rewrite. 25106 * mpn/generic/rshift.c: Rewrite. 25107 25108 * longlong.h: Use UWtype for external interfaces that expect mp_limb_t. 25109 25110 * longlong.h (arm): #define invert_limb. 25111 25112 * mpn/arm: Make labels have local scope. 25113 25114 * configure.in (arm*-*-*): Set extra_functions. 25115 * longlong.h (arm): #define udiv_qrnnd. 25116 * mpn/arm/udiv.asm: New file. 25117 251182001-02-24 Kevin Ryde <kevin@swox.se> 25119 25120 * tune/many.pl: Add mpn_count_leading_zeros, mpn_count_trailing_zeros 25121 and mpn_invert_limb. Add count_leading_zeros, count_trailing_zeros 25122 from a .h file. Correction to modexact_1_odd prototype. Support 25123 ansi2knr. 25124 * tune/speed.h, tune/common.c: Consequent changes. 25125 25126 * demos/expr/*: Make a few more functions available in expressions, 25127 create only libexpr.a, misc minor updates. 25128 25129 * mpn/Makeasm.am: Add some comments about suffix ordering. 25130 25131 * tests/refmpn.c (rshift_make, lshift_make): No need to compare 25132 unsigned to zero. 25133 25134 * mpq/mul.c: Detect and optimize squaring. 25135 251362001-02-23 Torbjorn Granlund <tege@swox.com> 25137 25138 * mpn/mips3: Convert files to `.asm'. 25139 25140 * mpn/arm: Convert files to `.asm'. Misc cleanups. 25141 * mpn/arm/submul_1.asm: New file. 25142 251432001-02-21 Kevin Ryde <kevin@swox.se> 25144 25145 * tune/tuneup.c (all): Only one compiler print should match, no need 25146 for #undef PRINTED_COMPILER. 25147 25148 * mpfr/mpfr.h (mpfr_sgn): Use mpfr_cmp_ui (patch from Paul). 25149 25150 * mpz/fib_ui.c: Update some remarks about alternative algorithms. 25151 * gmp.texi (Fibonacci Numbers Algorithm): Ditto. 25152 (Assigning Floats): Clarify mpf_swap swaps the precisions too. 25153 (Low-level Functions): Try to be clearer about negative cofactors. 25154 251552001-02-21 Torbjorn Granlund <tege@swox.com> 25156 25157 * mpn/sparc64/copyi.asm: Streamline for small operands. 25158 * mpn/sparc64/add_n.asm: Likewise. 25159 * mpn/sparc64/sub_n.asm: Likewise. 25160 25161 * mpn/sparc64/copyd.asm: New file. 25162 251632001-02-20 Torbjorn Granlund <tege@swox.com> 25164 25165 * mpn/sparc64/lshift.asm: Rewrite. 25166 * mpn/sparc64/rshift.asm: Rewrite. 25167 251682001-02-19 Torbjorn Granlund <tege@swox.com> 25169 25170 * mpn/sparc64/add_n.asm: Rewrite using `majority' logic. 25171 * mpn/sparc64/sub_n.asm: Likewise. 25172 25173 * tune/tuneup.c (all): Recognise DECC and MIPSpro compilers. 25174 25175 * mpn/pa64/sqr_diagonal.asm: Use PROLOGUE/EPILOGUE. 25176 * mpn/pa642/sqr_diagonal.asm: Likewise. 25177 25178 * configure.in (HAVE_ABI_$abi): Disable for now. 25179 25180 * mpn/asm-defs.m4 (PROLOGUE): Use LABEL_SUFFIX. 25181 25182 * acinclude.m4 (GMP_ASM_ATTR): New check, for hppa oddities. 25183 251842001-02-18 Torbjorn Granlund <tege@swox.com> 25185 25186 * mpn/hppa/hppa1_1/gmp-mparam.h: New file. 25187 * mpn/hppa/hppa2_0/gmp-mparam.h: New file. 25188 25189 * mpn/pa64/sqr_diagonal.asm: New file. 25190 * mpn/pa64w/sqr_diagonal.asm: New file. 25191 * mpn/hppa/hppa1_1/sqr_diagonal.asm: New file. 25192 * mpn/hppa/hppa2_0/sqr_diagonal.asm: New file. 25193 25194 * mpn/sparc32/v9/add_n.asm: Use `fitod' instead of `fxtod' for dummy 25195 FA-pipeline insns. 25196 * mpn/sparc32/v9/sub_n.asm: Likewise. 25197 251982001-02-18 Kevin Ryde <kevin@swox.se> 25199 25200 * gmp.texi (Known Build Problems): Notes on make, $* and K&R, misc 25201 tweaks elsewhere. 25202 (Low-level Functions): Use {} notation in mpn_sqrtrem. 25203 (Basecase Multiplication): Mention BASECASE_SQR_THRESHOLD. 25204 25205 * mpfr/isnan.c (mpfr_number_p): Infinity is not a number. 25206 * mpfr/out_str.c: Pass strlen+1 for the block size to free. 25207 * mpfr/get_str.c: Correction for realloc to strlen+1. 25208 25209 * acinclude.m4 (GMP_C_SIZES): Generate an error if mp_limb_t doesn't 25210 seem to work for some reason. 25211 252122001-02-16 Torbjorn Granlund <tege@swox.com> 25213 25214 * mpn/sparc32/v9/gmp-mparam.h: Retune. 25215 25216 * mpn/sparc32/v9/add_n.asm: New file. 25217 * mpn/sparc32/v9/sub_n.asm: New file. 25218 25219 * mpn/sparc32/v9/mul_1.asm: Tune function entry. 25220 * mpn/sparc32/v9/addmul_1.asm: Likewise. 25221 * mpn/sparc32/v9/submul_1.asm: Likewise. 25222 25223 * mpn/sparc32/v9/sqr_diagonal.asm: New file. 25224 252252001-02-16 Kevin Ryde <kevin@swox.se> 25226 25227 * configure.in: Fix flags selection when $CC is a compiler known to us. 25228 25229 * demos/expr/exprfr.c (e_mpfr_cos, e_mpfr_sin): mpfr_sin_cos now 25230 allows NULL for one parameter. 25231 25232 * mpfr/*: Update to 20010215. 25233 * mpfr/trunc.c: Use -DOPERATION scheme, and gmp mpn_zero_p. 25234 * mpfr/sqrt.c: Use plain mpn_sqrtrem, not mpn_sqrtrem_new. 25235 * mpfr/sqrtrem.c: Remove file. 25236 * mpfr/Makefile.am (libmpfr_a_SOURCES): Add isnan.c and set_ui.c, 25237 remove sqrtrem.c and srandom.h. 25238 25239 * configfsf.guess: Update to 2001-02-13. 25240 * configfsf.sub: Update to 2001-02-16. 25241 * config.sub (j90, t90): Remove special handing, configfsf.sub now ok. 25242 25243 * Makefile.am (MPF_OBJECTS): Add a couple of missing $U's. 25244 25245 * tune/tuneup.c: Identify compiler used (GCC and Sun C so far). 25246 252472001-02-15 Torbjorn Granlund <tege@swox.com> 25248 25249 * mpn/sparc32/v9/mul_1.asm: Change `ld' to `lduw' and `st' to `stw'. 25250 * mpn/sparc32/v9/addmul_1.asm: Likewise. 25251 * mpn/sparc32/v9/submul_1.asm: Likewise. 25252 252532001-02-14 Torbjorn Granlund <tege@swox.com> 25254 25255 * mpn/mips3/mips.m4: New file. 25256 * configure.in (mips*-*-irix[6789]*): Use mips3/mips.m4. 25257 25258 * mpn/powerpc64/sqr_diagonal.asm: New file. 25259 25260 * mpn/mips3/sqr_diagonal.asm: New file. 25261 252622001-02-12 Torbjorn Granlund <tege@swox.com> 25263 25264 * mpn/powerpc32/sqr_diagonal.asm: New file. 25265 25266 * mpn/generic/sqr_basecase.c: Remove declaration of mpn_sqr_diagonal. 25267 Fix typo in header comment. 25268 252692001-02-12 Kevin Ryde <kevin@swox.se> 25270 25271 * mpn/generic/mul.c, mpn/generic/mul_n.c, gmp-impl.h: Use 25272 mpn_mul_basecase for squaring below new BASECASE_SQR_THRESHOLD. 25273 * tune/tuneup.c gmp-impl.h: Tune BASECASE_SQR_THRESHOLD. 25274 25275 * Makefile.am (libgmp.la, libmp.la): Revert change to build from 25276 mpn/libmpn.la etc, go back to explicitly listed objects. 25277 25278 * configure.in: Recognise sparc64-*-*, not just sparc64-*-linux*. 25279 252802001-02-11 Torbjorn Granlund <tege@swox.com> 25281 25282 * mpn/asm-defs.m4 (sqr_diagonal): New define_mpn. 25283 25284 * mpn/alpha/sqr_diagonal.asm: New file. 25285 252862001-02-11 Kevin Ryde <kevin@swox.se> 25287 25288 * gmp.texi (Low-level Functions): Note mpn_get_str clobbers its input 25289 plus 1 extra limb. 25290 25291 * mpfr/add.c,agm.c,exp2.c,exp3.c,generic.c,log2.c,pi.c,print_raw.c, 25292 set_d.c,sin_cos.c,sqrtrem.c,sub.c: Apply some tweaks for K&R. 25293 * tests/mpz/reuse.c, tests/mpq/t-md_2exp.c, demos/pexpr.c, 25294 demos/expr/t-expr.c: Ditto. 25295 25296 * configure.in (HAVE_ABI_$abi): New define in config.m4. 25297 25298 * gmp-impl.h (mpn_sqr_diagonal): Add prototype and define. 25299 * tune/speed.c,speed.h,common.c,many.pl: Add measuring of 25300 mpn_sqr_diagonal. 25301 25302 * gmp.texi, acinclude.m4: Mention x86 solaris 2.7 has the reg->reg 25303 movq bug the same as 2.6. 25304 25305 * mpfr/Makefile.am (EXTRA_DIST): Add mpfr-test.h and mpf2mpfr.h. 25306 25307 * mpn/x86/README: Merge contents of README.family. 25308 * mpn/x86/README.family: Remove file. 25309 25310 * mpn/Makefile.am (nodist_libdummy_la_SOURCES): Add mode1o, gcd_finda, 25311 invert_limb, sqr_diagonal; remove mod_1_rs; sort alphabetically. 25312 253132001-02-10 Torbjorn Granlund <tege@swox.com> 25314 25315 * configure.in (gmp_mpn_functions_optional): List sqr_diagonal. 25316 25317 * mpn/powerpc32/aix.m4: Use unnamed csects. 25318 * mpn/powerpc64/aix.m4: Likewise. 25319 25320 * acconfig.h: Add #undef of mpn_sqr_diagonal. 25321 Remove lots of spacing. 25322 25323 * configure.in (syntax testing section): Match power* instead of 25324 powerpc*. 25325 * mpn/power: Convert files to `.asm'. 25326 Prefix umul_ppmm and sdiv_qrnnd. 25327 Update some comments. 25328 253292001-02-09 Kevin Ryde <kevin@swox.se> 25330 25331 * acconfig.h: Add HAVE_NATIVE_mpn_modexact_1_odd and 25332 HAVE_NATIVE_mpn_modexact_1c_odd. 25333 25334 * configure.in (CCAS): Don't override a user selection. 25335 25336 * mpq/cmp_ui.c: DIVIDE_BY_ZERO if den2==0. 25337 253382001-02-08 Torbjorn Granlund <tege@swox.com> 25339 25340 * mpn/generic/sqr_basecase.c: Use mpn_sqr_diagonal when appropriate. 25341 253422001-02-07 Kevin Ryde <kevin@swox.se> 25343 25344 * gmp.texi (Low-level Functions): mpn_preinv_mod_1 now undocumented. 25345 25346 * mpn/generic/random2.c (myrandom): Use rand() on mingw. 25347 25348 * mpn/alpha/gmp-mparam.h: Update tuned parameters. 25349 253502001-02-05 Torbjorn Granlund <tege@swox.com> 25351 25352 * mpn/alpha/ev6/gmp-mparam.h: Retune. 25353 253542001-02-05 Kevin Ryde <kevin@swox.se> 25355 25356 * Makefile.am (libgmp, libmp): Construct from mpn/libmpn.la etc rather 25357 than explicitly listed objects. 25358 25359 * urandom.h: Use rand() on mingw. 25360 25361 * mpn/powerpc64/lshift.asm,addsub_n.asm: Use r1 not 1. 25362 253632001-02-04 Torbjorn Granlund <tege@swox.com> 25364 25365 * mpn/ia64/copyi.asm: New file. 25366 * mpn/ia64/copyd.asm: New file. 25367 253682001-02-04 Kevin Ryde <kevin@swox.se> 25369 25370 * mpn/alpha/ev5/gmp-mparam.h, mpn/mips3/gmp-mparam.h, 25371 mpn/powerpc32/gmp-mparam.h, mpn/powerpc64/gmp-mparam.h, 25372 mpn/sparc64/gmp-mparam.h, mpn/x86/*/gmp-mparam.h: 25373 Update tuned parameters. 25374 25375 * mpn/x86/i486: New directory. 25376 * configure.in (i486-*-*): Use it. 25377 * mpn/x86/i486/gmp-mparam.h: New file. 25378 25379 * mpn/x86/pentium/mode1o.asm: New file. 25380 * mpn/x86/p6/mode1o.asm: New file. 25381 25382 * tune/many.pl: Use $(ASMFLAGS_PIC) and $(CFLAGS_PIC). 25383 25384 * gmp.texi (Integer Division): Another rewording of 2exp divisions. 25385 253862001-02-03 Torbjorn Granlund <tege@swox.com> 25387 25388 * mpn/arm/gmp-mparam.h: Tune. 25389 25390 * mpn/ia64/popcount.asm: Put a `;;' break at end of main loop. 25391 25392 * configure.in (arm*-*-*): Set gcc_cflags in order to pass 25393 $fomit_frame_pointer. 25394 25395 * tests/mpz/t-mul.c (base_mul): Remove an unused variable. 25396 253972001-02-02 Torbjorn Granlund <tege@swox.com> 25398 25399 * demos/pexpr.c (TIME): New macro. 25400 (main): Use TIME--print timing more accurately. 25401 (setup_error_handler): Increase RLIMIT_DATA to 16 Mibyte. 25402 25403 * longlong.h (arm): Add __CLOBBER_CC to add_ssaaaa and sub_ddmmss. 25404 254052001-02-02 Kevin Ryde <kevin@swox.se> 25406 25407 * configure.in: Don't remove gmp-mparam.h and mpn source links under 25408 --no-create since in that case they're not re-created. 25409 25410 * demos/expr: New directory. 25411 * Makefile.am (SUBDIRS, allprogs): Add it. 25412 * demos/expr/README, Makefile.am, expr.c, exprv.c, exprz.c, exprza.c, 25413 exprq.c, exprqa.c, exprfa.c, exprf.c, exprfr.c, exprfra.c, expr.h, 25414 expr-impl-h.in, run-expr.c, t-expr.c: New files. 25415 * configure.in: Generate demos/expr/Makefile & demos/expr/expr-impl.h. 25416 25417 * Makefile.am: Remove mpfr from main libgmp. 25418 * mpfr/Makefile.am: Build and install separate libmpfr.a. 25419 * mpfr/*: Update to mpfr 2001. 25420 25421 * gmp-h.in (__GNU_MP_VERSION_MINOR): Bump to 2. 25422 * Makefile.am (libtool -version-info): Bump appropriately. 25423 * NEWS: Updates. 25424 25425 * tune/divrem1div.c, tune/divrem1inv.c, tune/divrem2div.c, 25426 tune/divrem2inv.c: Renamed from divrem_1_div.c, divrem_1_inv.c, 25427 divrem_2_div.c, divrem_2_inv.c, to be unique in DOS 8.3 filenames. 25428 * tune/Makefile.am (libspeed_la_SOURCES): Update. 25429 25430 * mpn/x86/*/README, mpn/x86/README.family: Misc updates. 25431 * tune/README: Misc updates. 25432 * doc/configuration: Misc updates. 25433 25434 * mpn/x86/pentium/mmx/gmp-mparam.h: Change UDIV_PREINV_TIME to 25435 UDIV_NORM_PREINV_TIME. 25436 25437 * mpz/pprime_p.c: Use ASSERT_ALWAYS instead of abort. 25438 25439 * rand.c (__gmp_rand_lc_scheme): Add "const". 25440 (struct __gmp_rand_lc_scheme_struct): Make astr "const char *". 25441 25442 * demos/calc/calc.y, demos/calc/calclex.l: Add kron function. 25443 25444 * tests/devel/try.c: Partial rewrite, new scheme of function types, 25445 allow result validation functions, add sqrtrem and jacobi testing. 25446 * tune/many.pl: Corresponding updates. 25447 * tests/devel/Makefile.am: Add a convenience rule for libtests.la. 25448 25449 * tests/refmpz.c: New file. 25450 * tests/Makefile.am: Add it. 25451 * tests/misc.c (mpz_erandomb, mpz_erandomb_nonzero): New functions. 25452 * tests/tests.h: Add prototypes. 25453 25454 * mpn/x86/k6/cross.pl: Add a couple more exceptions. 25455 25456 * gmp.texi: Don't use @nicode{'\0'}, it doesn't come out right in tex. 25457 (Introduction to GMP): Mention Cray vector systems. 25458 (Build Options): Describe --enable-mpfr, refer to its manual. Add 25459 Crays under supported CPUs. 25460 (Debugging): Add notes on source file paths. 25461 (Autoconf): New section. 25462 (Assigning Integers): Note truncation by mpz_set_d, mpz_set_q and 25463 mpz_set_f. 25464 (Converting Integers): Note the size mpz_get_str allocates. 25465 (Floating-point Functions): Rewrite introduction, clarifying some 25466 points about precision handling. 25467 (Converting Floats): Note the size mpf_get_str allocates, and that it 25468 gives an empty string for zero. Add mpf_get_si and mpf_get_ui. 25469 (Float Comparison): Give the formula mpf_reldiff calculates. 25470 (Miscellaneous Float Functions): Add mpf_integer_p and mpf_fits_*_p. 25471 (Random Number Functions): Misc rewordings for clarity. 25472 (Random State Initialization): Ditto. 25473 (Custom Allocation): Remove note on deallocate_function called with 0, 25474 misc rewording and clarifications. 25475 (Exact Remainder): New section. 25476 (Binary GCD): A few words on initial reduction using division. 25477 (Accelerated GCD): Refer to exact remainder section. 25478 (Extended GCD): Extra remarks on single versus double selection. 25479 (Jacobi Symbol): Update for mpz/jacobi.c rewrite and modexact_1_odd. 25480 (Modular Powering Algorithm): Refer to exact remainder section. 25481 (Assembler SIMD Instructions): Update remarks on MMX. 25482 (Contributors): Amend to "Divide and Conquer" division. 25483 (References): Tweak some formatting. Add "Proof of GMP Fast Division 25484 and Square Root Implementations" by Paul Zimmermann. 25485 254862001-01-31 Torbjorn Granlund <tege@swox.com> 25487 25488 * configure.in: Don't ever pass -mips3; let ABI flags imply ISA. 25489 254902001-01-31 Kevin Ryde <kevin@swox.se> 25491 25492 * tune/time.c: Remove unnecessary longlong.h. 25493 (speed_endtime): Add some extra diagnostics. 25494 25495 * tests/mpz/t-fdiv_ui.c, tests/mpz/t-tdiv_ui.c: Use unsigned long for 25496 the divisor, not mp_limb_t. 25497 * tests/mpz/t-jac.c (try_base): Use %llu for long long limb. 25498 * tests/trace.c: Add <string.h> for strlen. 25499 25500 * tune/freq.c (speed_cpu_frequency_proc_cpuinfo): Ignore "cycle 25501 frequency" of 0, allow "BogoMIPS" as well as "bogomips". 25502 25503 * macos/Makefile.in: Add mpf/fits_s.c and mpf/fits_u.c objects. 25504 255052001-01-30 Torbjorn Granlund <tege@swox.com> 25506 25507 * longlong.h: Add add_ssaaaa and sub_ddmmss for 64-bit sparc. 25508 255092001-01-29 Torbjorn Granlund <tege@swox.com> 25510 25511 * mpn/powerpc64/addmul_1.asm: Prefix registers with an `r'. 25512 * mpn/powerpc64/submul_1.asm: Likewise. 25513 * mpn/powerpc64/mul_1.asm: Likewise. 25514 25515 * configure.in (alpha*-*-*): Amend last change to handle pca*. 25516 255172001-01-29 Kevin Ryde <kevin@swox.se> 25518 25519 * tune/speed.h (SPEED_ROUTINE_INVERT_LIMB_CALL): Don't let the 25520 compiler optimize everything away. 25521 25522 * tune/speed.c, tune/speed.h, tune/common.c, tune/Makefile.am: Measure 25523 operator_div, operator_mod, mpn_divrem_2_div, mpn_divrem_2_inv, 25524 mpn_sb_divrem_m3, mpn_sb_divrem_m3_div, mpn_sb_divrem_m3_inv, 25525 mpn_dc_divrem_sb_div, mpn_dc_divrem_sb_inv. 25526 * tune/divrem_2_div.c, tune/divrem_2_inv.c, tune/sb_div.c, 25527 tune/sb_inv.c: New files. 25528 25529 * tune/tuneup.c, gmp-impl.h, tune/speed.h, tune/common.c, 25530 tune/Makefile.am: Tune SB_PREINV_THRESHOLD and DIVREM_2_THRESHOLD. 25531 25532 * mpn/generic/divrem_2.c: Use new DIVREM_2_THRESHOLD. 25533 * mpn/generic/sb_divrem_mn.c: Use new SB_PREINV_THRESHOLD. 25534 25535 * mpn/x86/p6/mmx/lshift.asm, mpn/x86/p6/mmx/rshift.asm: New files, 25536 just m4 include()ing the P55 code. 25537 * configure.in (pentium[23]-*-*): Remove x86/pentium/mmx from path. 25538 255392001-01-27 Kevin Ryde <kevin@swox.se> 25540 25541 * configure.in (AC_CHECK_FUNCS): Add srand48. 25542 * tune/speed.c: Use this test. 25543 25544 * acinclude.m4 (GMP_GCC_MARCH_PENTIUMPRO): Allow "egcs-" prefix on gcc 25545 --version, warn if the format is unrecognised. 25546 (GMP_COMPARE_GE): Guard against empty $1 not only on last arg. 25547 (GMP_INIT, GMP_FINISH, GMP_PROG_M4): Obscure or eliminate literal 25548 "dnl"s since autoconf thinks they indicate faulty macros. 25549 25550 * mpz/get_str.c, mpf/get_str.c: Make allocated string block exactly 25551 strlen(str)+1 bytes. 25552 * mpz/dump.c, mpf/dump.c, tests/mpz/convert.c: Use this size when 25553 freeing. 25554 * tests/mpf/t-conv.c: Ditto, and ensure x==0 is exercised. 25555 25556 * tests/mpz/t-fits.c: New file. 25557 * tests/mpz/Makefile.am: Add it. 25558 25559 * tests/mpf/t-fits.c: New file. 25560 * tests/mpf/t-get_si.c: New file. 25561 * tests/mpf/t-int.c: New file. 25562 * tests/mpf/Makefile.am: Add them. 25563 25564 * mpf/fits_s.c: New file. 25565 * mpf/fits_u.c: New file. 25566 * mpf/get_si.c: New file. 25567 * mpf/get_ui.c: New file. 25568 * mpf/int_p.c: New file. 25569 * Makefile.am, mpf/Makefile.am: Add them. 25570 * gmp-h.in (mpf_fits_*_p, mpf_get_si, mpf_get_ui, mpf_integer_p): Add 25571 prototypes. 25572 25573 * tests/memory.c (tests_allocate, tests_reallocate): Guard against 25574 size==0. 25575 25576 * tests/mpz/*.c, tests/mpq/*.c, tests/mpf/*.c: Uses tests_start and 25577 tests_end. 25578 25579 * gmp-impl.h (USE_LEADING_REGPARM): Fix conditionals. 25580 255812001-01-23 Kevin Ryde <kevin@swox.se> 25582 25583 * configure.in, mpn/Makeasm.am (ASMFLAGS_PIC): New substitution, 25584 allowing -DPIC to be suppressed on cygwin. 25585 (CFLAGS_PIC): New substitution, use it and $(CCAS) directly, rather 25586 than $(LIBTOOL), avoiding a problem with FreeBSD 2.2.8. 25587 25588 * mpn/x86/k6/mode1o.asm, mpn/x86/k7/mode1o.asm: Remove an unnecessary 25589 +[.-L(here)] from _GLOBAL_OFFSET_TABLE_, avoids a segv from gas 1.92.3. 25590 * mpn/x86/README.family: Add notes on the problem. 25591 255922001-01-20 Torbjorn Granlund <tege@swox.com> 25593 25594 * configure.in (alpha*-*-*): Default `flavour' to ev4. 25595 255962001-01-19 Kevin Ryde <kevin@swox.se> 25597 25598 * assert.c, gmp-impl.h (__gmp_assert_fail): Change return type to 25599 void, since it's no longer used in expressions. 25600 25601 * mpn/x86/addsub_n.S: Remove file, since it doesn't work and it upsets 25602 tune/many.pl. 25603 25604 * mpz/jacobi.c: Rewrite, but still binary algorithm; accept zero and 25605 negative denominators; merge mpz_jacobi and mpz_legendre, add 25606 mpz_kronecker; use mpn directly, add special cases for size==1. 25607 * gmp.texi (Number Theoretic Functions): Update. 25608 * gmp-h.in (mpz_kronecker): Add prototype. 25609 * gmp-impl.h (USE_LEADING_REGPARM): New macro. 25610 * tests/mpz/t-jac.c: Test mpz_kronecker. 25611 * mpz/legendre.c: Remove file. 25612 * Makefile.am, mpz/Makefile.am: Update. 25613 25614 * longlong.h (alpha count_leading_zeros): Use __attribute__ ((const)) 25615 when possible, add parameter to prototype. 25616 (ia64 udiv_qrnnd): Use for all compilers, not just gcc. 25617 (pentium count_trailing_zeros): Use count_leading_zeros. 25618 25619 * acinclude.m4 (GMP_C_ATTRIBUTE_CONST, GMP_C_ATTRIBUTE_NORETURN): New 25620 macros. 25621 * configure.in: Use them. 25622 * gmp-impl.h (ATTRIBUTE_CONST, ATTRIBUTE_NORETURN): New macros. 25623 (mpn_invert_limb): Add ATTRIBUTE_CONST. 25624 (__gmp_assert_fail): Add ATTRIBUTE_NORETURN. 25625 256262001-01-18 Kevin Ryde <kevin@swox.se> 25627 25628 * gmp-h.in, gmp-impl.h (__gmp_allocate_func, __gmp_reallocate_func, 25629 __gmp_free_func): Move prototypes from gmp-impl.h to gmp-h.in, for the 25630 benefit of gmp++.h. 25631 25632 * gmp-impl.h, tests/misc.c, tests/tests.h: Move MPZ_SET_STR_OR_ABORT 25633 and MPF_SET_STR_OR_ABORT to mpz_set_str_or_abort and 25634 mpf_set_str_or_abort in libtests. 25635 * tests/mpz/convert.c, tests/mpz/t-bin.c, tests/mpz/t-get_si.c, 25636 tests/mpz/t-jac.c, tests/mpz/t-misc.c, tests/mpq/t-md_2exp.c, 25637 tests/mpq/t-set_f.c, tests/mpf/t-conv.c, tests/mpf/t-misc.c: Update. 25638 25639 * mpn/generic/sqrtrem.c: Use MPN_COPY_INCR (for when rp==NULL). 25640 25641 * tests/mpz/reuse.c: Only run mpz_divexact_gcd on positive divisors. 25642 256432001-01-18 Torbjorn Granlund <tege@swox.com> 25644 25645 * demos/pexpr.c (main): Accept -vml option. 25646 (fns): List `hamdist', `pow', `nextprime'. 25647 (mpz_eval_expr): Return -1 for `popc' of negative. 25648 (mpz_eval_expr): Handle `hamdist', `pow', `nextprime'. 25649 256502001-01-15 Kevin Ryde <kevin@swox.se> 25651 25652 * mpn/alpha/ev5/mode1o.c: New file. 25653 25654 * tune/freq.c (speed_cpu_frequency_measure): Check cycles_works_p 25655 before running speed_cyclecounter. 25656 * tune/speed.h (cycles_works_p): Add prototype. 25657 256582001-01-13 Torbjorn Granlund <tege@swox.com> 25659 25660 * tests/rand/t-rand.c (farr): Fix typo. 25661 (zarr): Fix typo. 25662 256632001-01-12 Kevin Ryde <kevin@swox.se> 25664 25665 * mpz/kronsz.c: Don't depend on right shifting a negative. 25666 25667 * mpn/x86/gmp-mparam.h: New file. 25668 25669 * mpn/x86/pentium/mmx/mul_1.asm: New file. 25670 256712001-01-11 Torbjorn Granlund <tege@swox.com> 25672 25673 * mpz/kronsz.c: Temporary workaround for Cray right shift oddities. 25674 Explicitly compare against zero in tests. 25675 256762001-01-10 Kevin Ryde <kevin@swox.se> 25677 25678 * mpz/kronzs.c: Don't depend on right shifting a negative. 25679 256802001-01-09 Torbjorn Granlund <tege@swox.com> 25681 25682 * tests/t-constants.c: Disable some undefined tests. 25683 (CHECK_MAX_S): Remove workaround for gcc 2.95.2 bug recently added. 25684 256852001-01-09 Kevin Ryde <kevin@swox.se> 25686 25687 * tests/t-constants.c: Add more diagnostics. 25688 (CHECK_MAX_S): Fix for gcc 2.95.2 -mpowerpc64 -maix64. 25689 25690 * mpn/x86/k6/mode1o.asm: New file. 25691 * mpn/x86/k7/mode1o.asm: New file. 25692 25693 * mpn/asm-defs.m4 (modexact_1_odd, modexact_1c_odd): New define_mpn's. 25694 (__clz_tab, modlimb_invert_table, PROLOGUE, EPILOGUE): Add asserts for 25695 GSYM_PREFIX. 25696 * mpn/x86/x86-defs.m4 (Zdisp): Add a movzbl. 25697 25698 * tests/mpz/t-jac.c (check_a_zero): New test. 25699 (check_squares_zi): Fix to use (a^2/b), not (a*b/b); revert last 25700 change avoiding a,b=0, both are fine. 25701 (try_2den): Don't use mpz_kronecker_ui for the expected answer. 25702 (try_*): Call abort rather than exit. 25703 25704 * mpz/kronzu.c, mpz/kronzs.c: Fix for a=0. 25705 25706 * tune/tuneup.c (USE_PREINV_MOD_1): Fix to use new DATA_HIGH_LT_R. 25707 257082001-01-08 Torbjorn Granlund <tege@swox.com> 25709 25710 * urandom.h: Amend 2000-11-21 change to also handle cygwin. 25711 257122001-01-08 Kevin Ryde <kevin@swox.se> 25713 25714 * tune/many.pl: Updates for move to tests/devel, add modexact_1_odd, 25715 don't assume C files can't have carry-in entrypoints, remove 25716 $(TRY_TESTS_OBJS) now in libtests. 25717 25718 * tests/devel/try.c, tests/refmpn.c, tests/tests.h: Remove 25719 mpn_mod_1_rshift testing. 25720 25721 * tune/tuneup.c (fft_step_size): Test for overflow using the actual 25722 mp_size_t, don't use BITS_PER_INT. 25723 25724 * tune/speed.c (r_string): "r" is a limb, use BITS_PER_MP_LIMB and 25725 change LONG_ONES to LIMB_ONES. 25726 * tune/time.c (M_2POWU): Use INT_MAX rather than BITS_PER_INT. 25727 25728 * extract-dbl.c (BITS_PER_PART): Use BITS_PER_MP_LIMB not 25729 BITS_PER_LONGINT. 25730 25731 * mpz/inp_raw.c, mpz/out_raw.c: Add private defines of BITS_PER_CHAR. 25732 * mpz/fac_ui.c, tests/mpz/t-fac_ui.c: Don't use BITS_PER_LONGINT. 25733 * tests/mpz/t-get_si.c: Don't use BITS_PER_LONGINT, do the LONG_MAX 25734 tests with some explicit code. 25735 25736 * mpn/*/gmp-mparam.h, acinclude.m4, tests/t-constants.c 25737 (BITS_PER_LONGINT, BITS_PER_INT, BITS_PER_SHORTINT, BITS_PER_CHAR): 25738 Remove defines, remove probings, remove tests. 25739 25740 * tune/tuneup.c (MODEXACT_1_ODD_THRESHOLD): Add tuning. 25741 25742 * tune/speed.c,speed.h,common.c: Add measuring of mpn_modexact_1_odd, 25743 mpn_gcd_finda, and an "N" form for mpn_gcd_1. 25744 25745 * tests/mpz/t-jac.c (check_squares_zi): Ensure random a,b != 0. 25746 257472001-01-07 Kevin Ryde <kevin@swox.se> 25748 25749 * configure.in (gmp_mpn_functions): Add mode1o, remove mod_1_rs. 25750 25751 * mpn/generic/mod_1_rs.c: Remove file, no longer needed. 25752 * gmp-h.in (mpn_mod_1_rshift): Remove prototype and define. 25753 25754 * mpq/set_f.c: Use MPN_STRIP_LOW_ZEROS_NOT_ZERO. 25755 25756 * mpz/kronzu.c, mpz/kronzs.c, mpz/kronuz.c, mpz/kronsz.c: Use 25757 mpn_modexact_1_odd, new style MPN_STRIP_LOW_ZEROS_NOT_ZERO, and new 25758 JACOBI macros. Various rearrangements supporting all this. 25759 25760 * mpn/generic/gcd_1.c: Use mpn_modexact_1_odd, reduce u%v if u much 25761 bigger than v when size==1, some rearrangements supporting this. 25762 25763 * gmp-impl.h (JACOBI_*): More macros, add some casts to "int". 25764 (MPN_STRIP_LOW_ZEROS_NOT_ZERO): Add a "low" parameter. 25765 (mpn_modexact_1_odd, mpn_modexact_1c_odd): Add prototype and defines. 25766 (MODEXACT_1_ODD_THRESHOLD): New threshold. 25767 (MPN_MOD_OR_MODEXACT_1_ODD, JACOBI_MOD_OR_MODEXACT_1_ODD): New macros. 25768 25769 * mpn/generic/mode1o.c: New file. 25770 25771 * tests/mpz/reuse.c: Add testing of mpz_divexact_gcd. 25772 * tests/mpz/t-fac_ui.c: Use libtests for memory leak checking. 25773 * tests/mpz/t-fib_ui.c: Add a usage comment. 25774 25775 * tests/mpz/bit.c: Use libtests. 25776 * tests/mpz/t-scan.c: Remove unused subroutines. 25777 * tests/devel/try.c: Use libtests, define PROT_NONE if the system 25778 doesn't. 25779 25780 * tests/spinner.c, tests/x86check.c: Use tests.h. 25781 * tests/trace.c: Use tests.h, add mpf_trace. 25782 * tests/refmpn.c: Use tests.h, add refmpn_malloc_limbs_aligned, 25783 refmpn_tstbit, refmpn_neg. 25784 25785 * tune/common.c, tune/speed.h: Update for functions moved to 25786 tests/misc.c. 25787 25788 * tune/Makefile.am, tests/mpz/Makefile.am, tests/mpq/Makefile.am, 25789 tests/mpf/Makefile.am: Use tests/libtests.la. 25790 25791 * configure.in (AC_OUTPUT): Update for new directories. 25792 (x86 CALLING_CONVENTIONS_OBJS): Use .lo for libtests.la, allow 25793 ansi2knr on x86check.c. 25794 25795 * tests/Makefile.am: Establish new libtests.la convenience library, 25796 add mpz, mpq, mpf, mpbsd subdirectories. 25797 * tests/tests.h: New file. 25798 * mpn/tests/ref.h,try.h: Remove files, now in tests.h. 25799 25800 * tests/mpf/ref.c: Move to tests/refmpf.c, rename functions to refmpf. 25801 * tests/mpf/t-add.c, tests/mpf/t-sub.c: Use libtests. 25802 * tests/mpf/Makefile.am: Update. 25803 25804 * tests/memory.c: New file. 25805 * tests/misc.c: New file, a few subroutines from the test programs. 25806 25807 * mpz/tests, mpq/tests, mpf/tests, mpbsd/tests: Move directories to 25808 tests/mpz etc. 25809 * mpz/Makefile.am, mpq/Makefile.am, mpf/Makefile.am, mpbsd/Makefile.am 25810 (SUBDIRS): Remove. 25811 25812 * tests/devel: New directory. 25813 * mpn/tests/*.c: Move programs to tests/devel. 25814 * mpn/tests/Makefile.am, mpn/tests/README: Move to tests/devel, update. 25815 25816 * mpn/tests/ref.c: Move to tests/refmpn.c. 25817 * mpn/tests/spinner.c,trace.c,x86call.asm,x86check.c: Move to tests 25818 directory. 25819 25820 * tests/t-constants.c: Add checks of HIGHBIT, MAX and MIN constants, 25821 simplify ANSI vs K&R stringizing, use correct printf format types, do 25822 all tests before aborting. 25823 258242001-01-05 Torbjorn Granlund <tege@swox.com> 25825 25826 * mpn/cray/ieee/gmp-mparam.h: Retune. 25827 258282001-01-05 Kevin Ryde <kevin@swox.se> 25829 25830 * configure.in (mp.h): Only create this under --enable-mpbsd. 25831 25832 * demos/calc: New subdirectory, move demos/calc* to it. 25833 * demos/calc/Makefile.am: New file, split from demos/Makefile.am. 25834 * demos/Makefile.am: Update. 25835 * configure.in (AC_OUTPUT): Add demos/calc/Makefile. 25836 25837 * tests/t-constants.c (CALC_BITS_PER_TYPE etc): Use a run-time test 25838 for how many bits work in a give type, don't assume bits==8*sizeof. 25839 258402001-01-04 Kevin Ryde <kevin@swox.se> 25841 25842 * mpz/fits_s.c, mpz/fits_u.c: New files, split from fits.c, use plain 25843 UINT_MAX etc, not MPZ_FITS_UTYPE_SDT etc. 25844 * mpz/fits.c: Remove file. 25845 * mpz/Makefile.am, macos/Makefile.in: Update. 25846 25847 * gmp-impl.h (UNSIGNED_TYPE_MAX etc): Remove these generic forms. 25848 (MPZ_FITS_[SU]TYPE_SDT): Remove these. 25849 (UINT_MAX etc): Provide a full set of defaults. 25850 * gmp-h.in (__GMP_MP_SIZE_T_INT): New define. 25851 25852 * mpz/tests/t-scan.c: New file. 25853 * mpz/tests/Makefile.am (check_PROGRAMS): Add it. 25854 25855 * mpz/scan0.c, mpz/scan1.c: Rewrite, don't read beyond allocated 25856 memory, support negatives, return ULONG_MAX for no bit found. 25857 * gmp.texi (Integer Logic and Bit Fiddling): Update. 25858 258592001-01-03 Torbjorn Granlund <tege@swox.com> 25860 25861 * mpz/tests/dive.c: Generate test operands using new random functions. 25862 * mpz/tests/io.c: Likewise. 25863 * mpz/tests/logic.c: Likewise. 25864 * mpz/tests/t-2exp.c: Likewise. 25865 25866 * stack-alloc.c (__gmp_tmp_alloc): Round `now' to required alignment. 25867 25868 * stack-alloc.h (__TMP_ALIGN): Append `L'. 25869 25870 * gmp-impl.h: For Cray, #include limits.h. 25871 (LONG_MIN): New #define. 25872 (ULONG_HIGHBIT): #define in terms of ULONG_MAX. 25873 (LONG_HIGHBIT): #define as LONG_MIN. 25874 (USHRT_MAX): New name for USHORT_MAX. 25875 (SHRT_MAX): New name for SHORT_MAX. 25876 (SHRT_MIN): New #define. 25877 (USHORT_HIGHBIT,SHORT_HIGHBIT): Removed. 25878 25879 * mpbsd/tests/t-misc.c (check_itom [data]): *SHORT* => *SHRT*; 25880 remove code disabling a test for Cray. 25881 25882 * tests/t-constants.c (CHECK_CONSTANT): Cast parameters to long. 25883 25884 * mpn/generic/mul_n.c (mpn_kara_sqr_n): Remove unused variable `t'. 25885 (mpn_kara_mul_n): Likewise. 25886 25887 * mpz/fac_ui.c (MPZ_SET_1_NZ): Actually use `__z'. 25888 25889 * mpz/tests/t-jac.c 25890 (main, check_squares_zi): Generate test operands using new random 25891 functions. 25892 25893 All changes below on this date for enabling `make; make check' 25894 with C++ compilers: 25895 25896 * mpz/tests/t-pow_ui.c (debug_mp, ref_mpz_pow_ui): Provide prototypes. 25897 25898 * mpz/tests/t-mul.c (debug_mp, base_mul, ref_mpz_mul): 25899 Provide prototypes. 25900 (dump_abort): Provide prototype and declare properly for C++. 25901 25902 * mpz/tests/t-jac.c: #include stdlib.h and sys/time.h. 25903 25904 * mpz/tests/t-fdiv.c 25905 (dump_abort): Provide prototype and declare properly for C++. 25906 (debug_mp): Provide prototype. 25907 * mpz/tests/t-fdiv_ui.c: Likewise. 25908 * mpz/tests/t-gcd.c: Likewise. 25909 * mpz/tests/t-powm.c: Likewise. 25910 * mpz/tests/t-powm_ui.c: Likewise. 25911 * mpz/tests/t-sqrtrem.c: Likewise. 25912 * mpz/tests/t-tdiv_ui.c: Likewise. 25913 * mpz/tests/t-tdiv.c: Likewise. 25914 25915 * mpz/tests/t-2exp.c: #include stdlib.h and sys/time.h. 25916 Remove #include of longlong.h. 25917 25918 * mpz/tests/io.c: #include config.h, stdlib.h, sys/time.h, and 25919 conditionally unistd.h. 25920 25921 * mpz/tests/dive.c: #include stdlib.h and sys/time.h. 25922 (dump_abort): Provide prototype and declare properly for C++. 25923 (debug_mp): Provide prototype. 25924 * mpz/tests/logic.c: Likewise. 25925 25926 * mpz/tests/convert.c (debug_mp): Provide prototype. 25927 * mpz/tests/t-root.c (debug_mp): Likewise. 25928 25929 * mpz/tests/bit.c: #include stdlib.h and sys/time.h. 25930 25931 * mpq/tests/t-get_d.c: #include stdlib.h and sys/time.h. 25932 (dump): Provide prototype and declare properly for C++. 25933 25934 * mpq/tests/t-cmp_ui.c: #include stdio.h, stdlib.h and sys/time.h. 25935 (ref_mpq_cmp_ui): Declare properly for C++. 25936 25937 * mpq/tests/t-cmp.c: #include stdlib.h and sys/time.h. 25938 (ref_mpq_cmp): Declare properly for C++. 25939 (dump): Delete unused function. 25940 25941 * mpf/random2.c (myrandom): New function. 25942 (mpf_random2): Use it. 25943 25944 * mpn/generic/random2.c: #include stdlib.h (for random/mrand48). 25945 (myrandom): New function. 25946 (mpn_random2): Use it. 25947 25948 * mpf/tests/t-add.c: #include stdlib.h and sys/time.h. 25949 (oo): Remove unused function. 25950 * mpf/tests/t-conv.c: Likewise. 25951 * mpf/tests/t-sub.c: Likewise. 25952 * mpf/tests/t-dm2exp.c: Likewise. 25953 * mpf/tests/t-muldiv.c: Likewise. 25954 * mpf/tests/t-sqrt.c: Likewise. 25955 25956 * mpf/tests/reuse.c: #include stdlib.h and sys/time.h. 25957 Use PROTO on some typedefs. 25958 (oo): Remove function. 25959 (dump_abort): Call mpf_dump instead of oo. 25960 25961 * mpf/set_str.c: #include stdlib.h (for strtol). 25962 25963 * mpf/random2.c: #include stdlib.h (for random/mrand48). 25964 * mpn/alpha/udiv_arnnd: File deleted. 25965 25966 * Remove K&R function headers. 25967 259682001-01-02 Torbjorn Granlund <tege@swox.com> 25969 25970 * mpn/generic/mul.c: Clean up spacing and indentation. 25971 25972 * mpn/generic/mul_fft.c (mpn_fft_add_modF): Use mpn_decr_u. 25973 Clean up spacing and indentation. 25974 25975 * extract-dbl.c: Generalize to handle smaller limb sizes. 25976 259772001-01-01 Torbjorn Granlund <tege@swox.com> 25978 25979 * mpbsd/mout.c: Output newline after "0". 25980 259812000-12-31 Torbjorn Granlund <tege@swox.com> 25982 25983 * ltmain.sh: Remove space between `#!' and `$SHELL' when generating 25984 `libtool'. 25985 25986 * mpbsd/tests/t-misc.c (check_itom): Exclude test for all Cray 25987 vector systems. Correct comment. 25988 259892000-12-31 Kevin Ryde <kevin@swox.se> 25990 25991 * gmp.texi (ABI and ISA): New enough gcc needed for mips n32 etc, gcc 25992 2.95 needed for sparc 64-bit ABI, gcc 2.8 needed for -mv8plus. 25993 25994 * configure.in ([cjt]90,sv1-cray-unicos*): Preserve user specified 25995 MPN_PATH, amend test program indenting. 25996 (none-*-*): Add -DNO_ASM to gcc to disable longlong.h asm macros in 25997 generic C. 25998 25999 * config.sub (j90, t90): Preserve these, don't let configfsf.sub turn 26000 them into c90. 26001 26002 * config.guess (m68k-*-nextstep*,m68k-*-openstep*): Don't transform 26003 m68k to m68020, since m68k is already interpreted as 68020. 26004 260052000-12-30 Kevin Ryde <kevin@swox.se> 26006 26007 * mpq/neg.c: Rewrite, use mpn, avoid denominator copy if unnecessary. 26008 26009 * mpz/tstbit.c: Rewrite, slightly simplified. 26010 * mpz/tests/bit.c (check_tstbit): New test, and add a couple more 26011 diagnostics elsewhere. 26012 26013 * configure.in (x86 gcc_cflags_cpu): Add -m486 for gcc 2.7.2. 26014 (ccbase): Only use a known compiler in eval statements (avoids 26015 problems with non-symbol characters). 26016 (ccbase): Use GMP_PROG_CC_IS_GNU to identify gcc installed under a 26017 different name. 26018 (cclist): Use same style $abi as other variables. 26019 26020 * acinclude.m4 (GMP_PROG_CC_IS_GNU): New macro. 26021 (GMP_GCC_MARCH_PENTIUMPRO): Use $ccbase to identify gcc. 26022 (GMP_ASM_TYPE): Define TYPE to empty, not "dnl", when no .type needed. 26023 (GMP_ASM_SIZE): Ditto for SIZE, which ensures EPILOGUE on the last 26024 line of a file doesn't leave a tab and no newline. 26025 (GMP_ASM_UNDERSCORE): Add a prototype for C++. 26026 26027 * configure.in (sys/mman.h, mprotect): New tests. 26028 * mpn/tests/try.c: Use them, and HAVE_UNISTD_H too. 26029 26030 * configure.in (getopt.h): Remove test. 26031 * tune/speed.c, mpn/tests/try.c (getopt.h): Remove include, since 26032 plain getopt() is in <unistd.h>. 26033 26034 * configure.in, gmp-h.in (mips*-*-irix6*): Set limb_n32=longlong 26035 rather than using _ABIN32. 26036 260372000-12-29 Torbjorn Granlund <tege@swox.com> 26038 26039 * mpz/tests/reuse.c: Rename dump_abort => dump. 26040 * mpz/tests/reuse.c: Generate operands using gmp_rand*. 26041 * mpz/tests/convert.c: Likewise. 26042 26043 * configure.in: Detect T90-ieee systems; move Cray path 26044 selection to after AC_PROG_CC. Invoke AC_PROG_CPP. 26045 * mpn/cray/cfp: New directory. Move cfp specific files here. 26046 * mpn/cray/cfp/mulwwc90.s: New file. 26047 * mpn/cray/cfp/mulwwj90.s: New file. 26048 * mpn/cray/mulww.s: Delete. 26049 260502000-12-27 Torbjorn Granlund <tege@swox.com> 26051 26052 * mpn/cray/ieee/mul_1.c: New file. 26053 * mpn/cray/ieee/addmul_1.c: New file. 26054 * mpn/cray/ieee/submul_1.c: New file. 26055 * mpn/cray/ieee/gmp-mparam.h: New file. 26056 26057 * mpn/cray/gmp-mparam.h: Disable UMUL_TIME and UDIV_TIME. 26058 26059 * mpn/cray/hamdist.c: New file. 26060 * mpn/cray/popcount.c: New file. 26061 * mpn/cray/rshift.c: New file. 26062 * mpn/cray/lshift.c: New file. 26063 26064 * longlong.h: Add count_leading_zeros for _CRAY. 26065 Reorganize _CRAY stuff. 26066 260672000-12-24 Kevin Ryde <kevin@swox.se> 26068 26069 * configure.in (alpha*-cray-unicos*): Disable SPEED_CYCLECOUNTER_OBJ, 26070 as tune/alpha.asm doesn't suit. 26071 26072 * mpn/generic/sqrtrem.c, mpz/pow_ui.c, mpz/powm_ui.c, mpf/get_str.c, 26073 mpf/set_str.c: Use mpn_sqr_n when applicable, not mpn_mul_n. 26074 260752000-12-23 Torbjorn Granlund <tege@swox.com> 26076 26077 * mpn/generic/mul_fft.c: Reformat. 26078 (mpn_fft_neg_modF): Remove. 26079 (mpn_fft_mul_2exp_modF): Inline mpn_fft_neg_modF. 26080 26081 * mpn/cray/gmp-mparam.h: Retune. 26082 26083 * configure.in (*-cray-unicos*): Pass `-O3 -htask0'. 26084 (vax*-*-*): Fix typo. 26085 26086 * mpn/cray/mul_1.c: Use dynamic arrays, get rid of TMP_*. 26087 * mpn/cray/addmul_1.c: Likewise. 26088 * mpn/cray/submul_1.c: Likewise. 26089 * mpn/cray/add_n.c: Likewise. 26090 * mpn/cray/sub_n.c: Likewise. 26091 26092 * configure.in (default cc_cflags,cc_64_cflags): Remove -g/add -O. 26093 (mips*-*-irix[6789]*]): Remove -g from cc_*_cflags. 26094 260952000-12-22 Torbjorn Granlund <tege@swox.com> 26096 26097 * mpn/generic/mul_n.c: Delete K&R function headers. 26098 26099 * mpn/generic/mul_n.c (mpn_kara_mul_n): Clean up type confusion 26100 between mp_limb_t and mp_size_t. 26101 (mpn_kara_sqr_n): Likewise. 26102 26103 * mpn/generic/mul_n.c (mpn_kara_mul_n): Use mpn_incr_u. 26104 (mpn_kara_sqr_n): Likewise. 26105 26106 * mpn/generic/mul_n.c (mpn_kara_mul_n): Change handling of `sign' 26107 to work around GCC 2.8.1 MIPS bug. 26108 26109 * configure.in (implied alpha*-cray-unicos*): Remove -g from cc_cflags. 26110 261112000-12-21 Torbjorn Granlund <tege@swox.com> 26112 26113 * mpn/alpha/invert_limb.asm: Simplify a bit. 26114 Add handling of bigend systems. 26115 * mpn/alpha/unicos.m4: Define `bigend'. 26116 * mpn/alpha/default.m4: Define `bigend' (to expand to nothing). 26117 26118 * tests/t-constants.c (CHECK_CONSTANT): Print using %lx. 26119 26120 * mpn/alpha/gmp-mparam.h: Remove sizes for plain C types. 26121 * mpn/alpha/ev5/gmp-mparam.h: Likewise. 26122 * mpn/alpha/ev6/gmp-mparam.h: Likewise. 26123 26124 * mpn/alpha/unicos.m4: Define LEA. 26125 * mpn/alpha/default.m4: Likewise. 26126 * mpn/alpha/invert_limb.asm: Use LEA for loading symbolic addresses. 26127 * mpn/alpha/cntlz.asm: Likewise. 26128 26129 * mpn/alpha/cntlz.asm: Don't use `ldbu', use slightly slower 26130 `ldq_u' + `extbl' instead. 26131 26132 * mpn/alpha/unicos.m4: Define EXTERN. 26133 * mpn/alpha/default.m4: Define EXTERN (to expand to nothing). 26134 * mpn/alpha/cntlz.asm: Declare __clz_tab usign `EXTERN' (for the 26135 benefit of Unicos). 26136 261372000-12-21 Kevin Ryde <kevin@swox.se> 26138 26139 * mpn/alpha/unicos.m4 (GSYM_PREFIX): Define for the benefit of 26140 __clz_tab. 26141 261422000-12-20 Torbjorn Granlund <tege@swox.com> 26143 26144 * longlong.h: Add udiv_qrnnd and count_leading_zeros for _CRAYMPP 26145 systems. 26146 261472000-12-19 Torbjorn Granlund <tege@swox.com> 26148 26149 * configure.in (*sparc*-*-*): Remove -g from cc_cflags and acc_cflags. 26150 26151 * mpn/generic/sqrtrem.c (mpn_sqrtrem): Separate `limb' values from 26152 `size' values. 26153 26154 * configure.in (*-cray-unicos*): Add `-Wa,-B' to cc_cflags. 26155 26156 * demos/pexpr.c (rstate): New variable. 26157 (main): Initialize rstate. 26158 (enum op_t): Add RANDOM. 26159 (fns): Add field for RANDOM. 26160 (mpz_eval_expr): Handle RANDOM. 26161 261622000-12-19 Kevin Ryde <kevin@swox.se> 26163 26164 * mpn/generic/sqrtrem.c: Rewrite by Paul Zimmermann, based on his 26165 Karatsuba Square Root algorithm. 26166 * gmp.texi (Square Root Algorithm): Update. 26167 26168 * tune/many.pl: New file. 26169 26170 * mpn/tests/try.c,ref.[ch] (mpn_preinv_mod_1, mpn_sb_divrem_mn, 26171 mpn_tdiv_qr, mpn_gcd_finda, mpn_kara_mul_n, mpn_kara_sqr_n, 26172 mpn_toom3_mul_n, mpn_toom3_sqr_n): Add testing. 26173 * mpn/tests/ref.c: Cast some "0"s in function calls. 26174 26175 * mpn/x86/k7/mmx/mod_1.asm: Add preinv_mod_1 entrypoint, remove extra 26176 variable for loop termination. 26177 26178 * mpn/x86/p6/mmx/mod_1.asm: Remove file, in favour of the following. 26179 * mpn/x86/p6/mod_1.asm: New file. 26180 26181 * mpn/x86/pentium/mod_1.asm: New file. 26182 261832000-12-18 Torbjorn Granlund <tege@swox.com> 26184 26185 * configure.in (mips*-*-irix[6789]*): Pass options to compiler using 26186 `-Wc'. 26187 261882000-12-18 Kevin Ryde <kevin@swox.se> 26189 26190 * mpn/x86/k6/pre_mod_1.asm: New file. 26191 26192 * tune/tuneup.c (USE_PREINV_MOD_1): Tune this, rearrange mpn_divrem_1 26193 and mpn_mod_1 handling in support of it. 26194 * tune/Makefile.am: Consequent changes to divrem_1.c and mod_1.c. 26195 26196 * gmp-impl.h (USE_PREINV_MOD_1, MPN_MOD_OR_PREINV_MOD_1): New macros. 26197 * mpn/generic/perfsqr.c, mpz/pprime_p.c: Use MPN_MOD_OR_PREINV_MOD_1. 26198 26199 * configure.in: Let an asm mod_1 provide a preinv_mod_1 entrypoint. 26200 26201 * mpn/alpha/default.m4: Remove some newlines, add some asserts. 26202 (r0 etc, f0 etc): Use defreg and deflit. 26203 (PROLOGUE, PROLOGUE_GP, EPILOGUE): Use GSYM_PREFIX. 26204 * mpn/alpha/unicos.m4: Remove some newlines, add some asserts. 26205 * mpn/alpha/invert_limb.asm: Remove unused second DATASTART parameter. 26206 * mpn/alpha/cntlz.asm: Use mpn_count_leading_zeros and __clz_tab. 26207 26208 * mpn/asm-defs.m4 (changecom): Comments on portability. 26209 (__clz_tab, modlimb_invert_table): New macros, matching gmp-impl.h. 26210 (count_leading_zeros, count_trailing_zeros): New define_mpn's. 26211 (PROLOGUE etc): Comments on usage, add some asserts. 26212 (OPERATION_[lr]shift): Use m4_not_for_expansion, for the benefit of 26213 lorrshift multifunc. 26214 26215 * mpn/Makeasm.am (RM_TMP): New variable controlling tmp-*.s 26216 removal, for development purposes. 26217 26218 * mpz/fac_ui.c: Fix for long long limb by using mpn_mul_1 not 26219 mpz_mul_ui, and note some possible enhancements. 26220 26221 * mpz/tests/t-fac_ui.c: New test. 26222 * mpz/tests/Makefile.am (check_PROGRAMS): Add it. 26223 * macos/Makefile.in: Ditto, and add t-fib_ui too. 26224 26225 * mpn/generic/[lr]shift.c: Remove some DEBUG code adequately covered 26226 by new parameter ASSERTs. 26227 26228 * longlong.h (count_trailing_zeros): Assert x!=0. 26229 26230 * doc/configuration: Updates for new configure things, add some notes 26231 on test setups. 26232 262332000-12-16 Torbjorn Granlund <tege@swox.com> 26234 26235 * configure.in (*-*-aix): Pass -qmaxmem=20000 to xlc also for 64-bit 26236 compiles. 26237 * configure.in: Disable shared libs for *-*-ultrix*. 26238 262392000-12-15 Torbjorn Granlund <tege@swox.com> 26240 26241 * configure.in (powerpc*-*-*): Pass -Wa,-mppc when using gcc. 26242 26243 * gmp-impl.h (_EXTERN_INLINE): #define different for GCC and other 26244 compilers. 26245 26246 * gmp-h.in (__gmp_inline): Remove. 26247 * mp-h.in: Likewise. 26248 * mpn/generic/gcd.c: Use `inline' instead of `__gmp_inline'. 26249 26250 * configure.in (mips*-*-irix[6789]*): Define *_ldflags. 26251 262522000-12-14 Torbjorn Granlund <tege@swox.com> 26253 26254 * mpn/generic/pre_mod_1.c: Use proper type for udiv_qrnnd 26255 parameter `dummy'. 26256 26257 * mpn/generic/divrem_1.c: Use explicit `!= 0' in if statement. 26258 * mpn/generic/mod_1.c: Likewise. 26259 262602000-12-14 Kevin Ryde <kevin@swox.se> 26261 26262 * config.guess (mips-*-irix[6789]*): Transform to mips64. 26263 (m68k-*-nextstep* | m68k-*-openstep*): Transform to m68020. 26264 262652000-12-13 Torbjorn Granlund <tege@swox.com> 26266 26267 * tests/t-constants.c (main): Conditionalize use of PP_INVERTED. 26268 26269 * mpn/mp_bases.c: Handle 4-bit limbs. 26270 (main): Add code for generating tables. 26271 26272 * mpn/generic/popham.c: Handle limb bitsizes of 4, 8, 16. 26273 Suffix all 32-bit constant with `L'. 26274 Use CNST_LIMB for 64-bit constants. 26275 262762000-12-13 Kevin Ryde <kevin@swox.se> 26277 26278 * gmp-impl.h (FIB_THRESHOLD): Defaults for 4,8,16 bits per limb, and 26279 an arbitrary fallback default. 26280 (modlimb_invert): Add efficient code for 8,16 (or 4) bits per limb. 26281 26282 * configure.in (mips3, mips64): Don't bother with o32 (mips2 32-bit 26283 limb) on IRIX 6. 26284 26285 * Makefile.am (SUBDIRS): Put "tests" first so tests/t-constants.c is 26286 run first, to pick up any limb size mismatch. 26287 26288 * tune/tuneup.c (DIVREM_1, MOD_1): Fix result values, were off by 1. 26289 26290 * mpz/fib_ui.c (table1, table2): Add data for 4,8,16 bits per limb. 26291 262922000-12-12 Torbjorn Granlund <tege@swox.com> 26293 26294 * gmp-impl.h (LIMBS_PER_DOUBLE): Define for any limb bitsize. 26295 262962000-12-11 Torbjorn Granlund <tege@swox.com> 26297 26298 * mpn/mp_bases.c: Add tables for 8-bit and 16-bit limbs. 26299 Round existing `double' values properly. 26300 26301 * gmp-h.in (__gmp_randstate_struct): Prefix field names with _mp_ 26302 to keep out of user name space. 26303 (__gmp_randata_lc): Likewise. 26304 * randclr.c, randlc.c, randlc2x.c, randraw.c, randsd.c, randsdui.c: 26305 Corresponding changes. 26306 26307 * gmp-impl.h (PP): #define for machines with BITS_PER_MP_LIMB 26308 of 2, 4, 8, and 16. 26309 (PP_FIRST_OMITTED): New, define for various BITS_PER_MP_LIMB. 26310 (PP_MASK): Remove. 26311 (PP_MAXPRIME): Remove. 26312 26313 * mpn/generic/perfsqr.c: Generalize PP handling for machines with 26314 limbs of < 32 bits. Allow PP_INVERTED to be undefined. 26315 * mpz/pprime_p.c: Likewise. 26316 263172000-12-10 Torbjorn Granlund <tege@swox.com> 26318 26319 * mpn/generic/mul_1.c: Declare parameters in C89 style. 26320 263212000-12-10 Kevin Ryde <kevin@swox.se> 26322 26323 * tune/Makefile.am (speed_LDFLAGS, speed_ext_LDFLAGS, tune_LDFLAGS): 26324 Don't use -all-static, as gcc 2.95.2 on i386 solaris 8 doesn't like 26325 it. 26326 26327 * configure.in (mips3,mips64): Add ABI=64, name the others ABI=n32 and 26328 ABI=o32. 26329 * mpn/mips3/gmp-mparam.h (BITS_PER_LONGINT): Remove #define and let 26330 configure determine it, since it varies with ABI=64 or ABI=n32. 26331 * gmp.texi (ABI and ISA): Update. 26332 (mpz_mod_ui): Remark that it's identical to mpz_fdiv_r_ui. 26333 (mpn_divexact_by3): Qualify a statement needing mp_bits_per_limb even. 26334 26335 * mul_fft.c (mpn_fft_mul_modF_K etc): Patch by Paul Zimmermann to fix 26336 results in certain cases of recursing into a further FFT. 26337 263382000-12-09 Torbjorn Granlund <tege@swox.com> 26339 26340 * mpz/cmpabs.c: Remove unused variable. 26341 * mpz/rrandomb.c: Likewise. 26342 * mpz/xor.c: Likewise. 26343 263442000-12-07 Torbjorn Granlund <tege@swox.com> 26345 26346 * mpn/generic/gcdext.c: Handle double carry when computing s1. 26347 Merge two code blocks for computing s0 and s1. 26348 263492000-12-07 Kevin Ryde <kevin@swox.se> 26350 26351 * configure.in (hppa*-*-*): Remove -Aa -D_HPUX_SOURCE from 26352 cc_cflags/cppflags, and instead let AM_C_PROTOTYPES add it, or -Ae, 26353 whichever works. 26354 26355 * configure.in (*-*-aix[34]*): Disable shared by default, but let 26356 the user override that, if desired. 26357 * gmp.texi (Notes for Particular Systems): Update. 26358 263592000-12-06 Torbjorn Granlund <tege@swox.com> 26360 26361 * mpq/cmp_ui.c: Streamline. 26362 263632000-12-06 Kevin Ryde <kevin@swox.se> 26364 26365 * tune/divrem_1_div.c,divrem_1_inv.c,mod_1_div.c,mod_1_inv.c, 26366 gcdext_double.c: New files for measuring. 26367 * tune/Makefile.am (libspeed_la_SOURCES): Add them. 26368 * tune/speed.c,speed.h,common.c: Add measuring of them. 26369 (mpn_preinv_mod_1, mpz_jacobi, mpz_powm_ui): Add measuring. 26370 26371 * speed.c (getopt_long): Don't use this, just plain getopt. 26372 * configure.in (getopt_long): Remove test. 26373 26374 * gmp-impl.h (MPN_KARA_MUL_N_TSIZE, MPN_KARA_MUL_N_MINSIZE, 26375 MPN_TOOM3_MUL_N_TSIZE, MPN_TOOM3_MUL_N_MINSIZE): New macros, and 26376 assume toom3 square tsize was meant to be the same as the mul (both 26377 are overestimates). 26378 * tune/tuneup.c, mpn/generic/mul.c, mpn/generic/mul_n.c: Use them. 26379 * mpn/generic/mul_n.c (mpn_toom3_sqr_n): Fix an ASSERT to use 26380 TOOM3_SQR_THRESHOLD not TOOM3_MUL_THRESHOLD, add a few that might 26381 be more realistic size checks. 26382 * tune/speed.h (SPEED_ROUTINE_MPN_MUL_N_TSPACE etc): Use minsize. 26383 26384 * mpn/generic/divrem_1.c: Partial rewrite, merge fractional part 26385 calculation, skip a divide step in more cases, introduce 26386 DIVREM_1_NORM_THRESHOLD and DIVREM_1_UNNORM_THRESHOLD. 26387 * mpn/generic/mod_1.c: Partial rewrite, skip a divide step in more 26388 cases, introduce MOD_1_NORM_THRESHOLD, MOD_1_UNNORM_THRESHOLD. 26389 * longlong.h (UDIV_PREINV_ALWAYS): New define, set for alpha and ia64. 26390 * tune/tuneup.c (DIVREM_1_NORM_THRESHOLD, DIVREM_1_UNNORM_THRESHOLD, 26391 MOD_1_NORM_THRESHOLD, MOD_1_UNNORM_THRESHOLD): Tune these. 26392 * gmp-impl.h [TUNE_PROGRAM_BUILD]: Support for this. 26393 * tune/Makefile.am (TUNE_MPN_SRCS): Add divrem_1.c and mod_1.c. 26394 26395 * gmp-impl.h (UDIV_NORM_PREINV_TIME): Renamed from UDIV_PREINV_TIME. 26396 * mpn/generic/perfsqr.c, mpn/generic/sb_divrem_mn.c, 26397 mpn/x86/*/gmp-mparam.h: Ditto. 26398 * gmp-impl.h (UDIV_UNNORM_PREINV_TIME): New define. 26399 26400 * configure.in (AC_C_INLINE, HAVE_INLINE): New test and define. 26401 * gmp-impl.h (inline): Remove, use config.h. 26402 (_EXTERN_INLINE): Redefine based on HAVE_INLINE. 26403 (mpn_zero_p): Use HAVE_INLINE. 26404 26405 * acinclude.m4 (GMP_PROG_AR, GMP_PROG_NM): Don't add flags to a user 26406 selected $AR or $NM. 26407 26408 * tune/tuneup.c (all): Print how long the tuning took. 26409 26410 * configure.in (AM_C_PROTOTYPES): Use this, not GMP_ANSI2KNR. 26411 * acinclude.m4 (GMP_ANSI2KNR): Remove. 26412 26413 * Makefile.am (gmp.h, mp.h): In DISTCLEANFILES not CLEANFILES. 26414 26415 * gmp-h.in (mpn_divmod, mpn_divmod_1, mpn_divexact_by3): Cast some 26416 zeros, for the benefit of K&R if long!=int. 26417 26418 * mpn/lisp/gmpasm-mode.el (gmpasm-comment-start-regexp): Add "*" for 26419 the benefit of cray. 26420 26421 * compat.c (mpn_divexact_by3, mpn_divmod_1): Return types should be 26422 mp_limb_t, not int, and need an actual "return". 26423 264242000-12-05 Torbjorn Granlund <tege@swox.com> 26425 26426 * mpn/sparc32/v8/supersparc/gmp-mparam.h: Retune. 26427 * mpn/alpha/gmp-mparam.h: Tune for 21064. 26428 26429 * longlong.h: Reformat to avoid newlines within strings. 26430 26431 * gmp-impl.h (inline): Disable if GCC has defined __STRICT_ANSI__. 26432 26433 * configure.in: Do a `mkdir tune' before creating tune/sqr_basecase.c. 26434 26435 * Makefile.am: Treat mp.h analogously to gmp.h. 26436 26437 configure.in (*-*-aix): Pass -qmaxmem=20000 to xlc. 26438 26439 * mp-h.in: Renamed from mp.h. 26440 Add #define for _LONG_LONG_LIMB. 26441 Move some other fixes from gmp-h.in. 26442 * mp.h: Removed. 26443 * configure.in: Generate mp.h from mp-h.in like we handle 26444 gmp-h.in/gmp.h. 26445 264462000-12-04 Torbjorn Granlund <tege@swox.com> 26447 26448 * acinclude.m4: Fix typo testing for bad HP compiler. 26449 264502000-12-03 Torbjorn Granlund <tege@swox.com> 26451 26452 * mpbsd/tests/t-misc.c (check_itom): Exclude some tests for Cray 26453 CFP systems. 26454 26455 * longlong.h (CRAYIEEE umul_ppmm): New. 26456 26457 * mpn/cray/gmp-mparam.h (BITS_PER_SHORTINT): 32 => 64. 26458 (*_THRESHOLD): Tune. 26459 26460 * configure.in: Disable shared libs for *-*-unicos*. 26461 264622000-12-03 Kevin Ryde <kevin@swox.se> 26463 26464 * configure.in, tune/Makefile.am: Create tune/sqr_basecase.c during 26465 configure, and use it unconditionally in $(nodist_tuneup_SOURCES). 26466 Fixes a problem with sqr_basecase.lo under --disable-static. 26467 264682000-12-01 Torbjorn Granlund <tege@swox.com> 26469 26470 * mpf/tests/t-get_d.c (LOW_BOUND,HIGH_BOUND): #define for non-IEEE 26471 Cray systems. 26472 26473 * gmp-impl.h (union ieee_double_extract): Test for _CRAYIEEE. 26474 264752000-11-30 Torbjorn Granlund <tege@swox.com> 26476 26477 * mpz/tests/t-mul.c (base_mul): Fix re-evaluation problems in macro 26478 invocations. 26479 (ref_mpz_mul): New name from mpz_refmul. Make static. 26480 (base_mul): New name for _mpn_mul_classic. 26481 264822000-11-30 Kevin Ryde <kevin@swox.se> 26483 26484 * configure.in: Rewrite of CC/CFLAGS selection scheme, introduce a 26485 notion of ABI, merge compiler and mpn path selection, add flags 26486 selection for AR and NM, let CC without CFLAGS work. 26487 (AC_PROG_CC): Use this, not GMP_SELECT_CC. 26488 * acinclude.m4 (GMP_PROG_CC_WORKS): Don't use AC_TRY_COMPILE, combine 26489 cc/cflags parameter. 26490 (GMP_PROG_CC_FIND, GMP_CHECK_CC_64BIT, GMP_PROG_CC_SELECT): Remove. 26491 * gmp.texi (Installing GMP): Updates for new scheme. 26492 26493 * configure.in (AC_CANONICAL_HOST): Use this and $host, not $target. 26494 * acinclude.m4, acconfig.h, longlong.h, mpn/x86/x86-defs.m4, 26495 mpn/x86/k7/mmx/popham.asm: Ditto, renaming HAVE_TARGET_CPU to 26496 HAVE_HOST_CPU. 26497 * gmp.texi (Build Options, and elsewhere): Update. 26498 26499 * acinclude.m4 (GMP_COMPARE_GE): New macro. 26500 (GMP_GCC_MARCH_PENTIUMPRO): Use it, add CC parameter, check for GCC. 26501 (GMP_HPC_HPPA_2_0): New macro, adapted from GMP_CHECK_CC_64BIT. 26502 26503 * acinclude.m4 (GMP_PROG_AR): New macro, using AC_CHECK_TOOL, adding 26504 GMP flags. 26505 * configure.in: Use it 26506 26507 * gmp-h.in: Renamed from gmp.h. 26508 (@define_LONG_LONG_LIMB@): Placeholder for instantiation. 26509 (__GNU_MP__): Bump to 3. 26510 * acinclude.m4 (GMP_VERSION): Get version from gmp-h.in. 26511 * configure.in: Create gmp.h from gmp-h.in to set _LONG_LONG_LIMB. 26512 * gmp.texi.h (ABI and ISA): Mention this. 26513 * acconfig.h (_LONG_LONG_LIMB): Remove undef. 26514 * Makefile.am: Distribute gmp-h.in, not gmp.h. 26515 26516 * configure.in (AC_PROG_CPP, AC_PROG_INSTALL, AC_PROG_LN_S): Remove, 26517 dragged in by other macros. 26518 (gmp_asm_syntax_testing): Renamed from gmp_no_asm_syntax_testing. 26519 (AC_EXEEXT, AC_OBJEXT): Remove, done automatically by libtool. 26520 * configure.in, acinclude.m4: Remove "" from "`foo`", being 26521 unnecessary and not portable. 26522 26523 * configure.in (GMP_LDFLAGS): New AC_SUBST flags for libtool link. 26524 (powerpc64*-*-aix*): Use for -Wc,-maix to fix shared library creation, 26525 but can't build shared and static at the same time. 26526 * Makefile.am (libgmp_la_LDFLAGS, libmp_la_LDFLAGS): Use 26527 $(GMP_LDFLAGS). 26528 * gmp.texi (Notes for Particular Systems): Update AIX problem 26529 26530 * configure.in (AC_CONFIG_LINKS): Use where needed, not via gmp_links. 26531 (gmp_srclinks): Build up as needed, not via gmp_links. 26532 26533 * acinclude.m4 (GMP_INIT): Do CONFIG_TOP_SRCDIR and asm-defs.m4 here. 26534 * configure.in (asm-defs.m4): Consequent changes. 26535 26536 * acinclude.m4 (GMP_INCLUDE_MPN): Using include_mpn(), replacing 26537 GMP_INCLUDE and GMP_SINCLUDE. 26538 * configure.in (gmp_m4postinc): Remove this scheme, use 26539 GMP_INCLUDE_MPN instead. 26540 26541 * configure.in (*-*-sco3.2v5*): Force ac_cv_archive_cmds_need_lc=no, 26542 until libtool does this itself. 26543 * gmp.texi (Known Build Problems): Remove SCO -lc problem. 26544 26545 * configure, INSTALL.autoconf, etc: Update to autoconf 2000-11-29. 26546 * acinclude.m4 (GMP_C_SIZES): Use AC_CHECK_SIZEOF. 26547 * gmp.texi (Known Build Problems): Remove version.c sed/config.h 26548 problem, fixed. 26549 26550 * ltmain.sh, aclocal.m4: Update to libtool 2000-11-25. 26551 * ltconfig: No longer required, but leave an empty dummy for automake. 26552 * gmp.texi (Known Build Problems): Remove SunOS native ar ranlib 26553 problem, fixed. 26554 26555 * */Makefile.in, aclocal.m4: Update to automake 2000-11-25. 26556 * mpbsd/tests/Makefile.am, mpfr/tests/Makefile.am (check_PROGRAMS): 26557 Remove dummy, no longer required. 26558 * mpbsd/tests/dummy.c, mpfr/tests/dummy.c: Remove files. 26559 * depcomp: Remove file, no longer required (with no-dependencies). 26560 26561 * texinfo.tex: Update to 2000-11-09. 26562 * gmp.texi (Build Options): Mention PDF from gmp.texi. 26563 * Makefile.am (MOSTLYCLEANFILES): Add gmp.tmp, from new texinfo.tex. 26564 26565 * gmp.texi (Build Options): List alphaev56, alphapca56, alphaev67, 26566 hppa2.0n and power among supported CPUs. 26567 265682000-11-30 Torbjorn Granlund <tege@swox.com> 26569 26570 * mpz/tests/t-mul.c: Increase max operand size from 2^17 bits 26571 to 2^19 bits. Misc cleanups. 26572 265732000-11-26 Kevin Ryde <kevin@swox.se> 26574 26575 * tune/tuneup.c (FIB_THRESHOLD): Cope better with different speeds of 26576 odd and even sizes. 26577 26578 * longlong.h (alpha): Use udiv_qrnnd and count_leading_zeros on all 26579 compilers, not just gcc. 26580 26581 * pre_mod_1.c: Use conditional subtract to always skip a division. 26582 (UMUL_TIME, UDIV_TIME): Remove defaults, now in longlong.h. 26583 265842000-11-22 Torbjorn Granlund <tege@swox.com> 26585 26586 * mpn/pa64w/gmp-mparam.h: Retune. 26587 * mpn/pa64/gmp-mparam.h: Retune. 26588 * mpn/sparc64/gmp-mparam.h: Retune. 26589 265902000-11-22 Kevin Ryde <kevin@swox.se> 26591 26592 * gmp-impl.h (ABOVE_THRESHOLD, BELOW_THRESHOLD): New macros. 26593 * mpn/generic/gcdext.c: Use them. 26594 26595 * mpn/generic/gcdext.c [WANT_GCDEXT_ONE_STEP]: Force only one step. 26596 * tune/gcdextos.c, tune/gcdextod.c: New files, one step gcdext, single 26597 and double. 26598 * tune/Makefile.am (libspeed_la_SOURCES): Add them. 26599 (TUNE_MPN_SRCS): Remove gcdext.c. 26600 * tune/speed.h, tune/common.c, tune/speed.c: Add measuring. 26601 * tune/tuneup.c: Use for GCDEXT_THRESHOLD, plus check if double limb 26602 is ever better. Should be more accurate, and hopefully faster. 26603 26604 * tune/gcdext_single.c: New file, gcdext forced to single limbs. 26605 * tune/Makefile.am: Add it. 26606 * tune/speed.h, tune/common.c, tune/speed.c: Add measuring, and of 26607 invert_limb. 26608 26609 * tune/speed.h (speed_params r): Use mp_limb_t, not long. 26610 * tune/speed.h, tune/common.c: Don't "switch" on "r". 26611 * tune/speed.c (r_string): Accept limb sized constants. 26612 (choice scale): Add a scale factor (eg. "2.33*mpn_add_n"). 26613 * tune/common.c (SPEED_ROUTINE_UDIV_QRNND_A): Default r to 26614 __mp_bases[10].big_base, being a full limb value. 26615 26616 * configure.in (alphapca56*-*-*): Use ev5 mpn path. 26617 (am29000*-*-*): Remove this, leave the canonical a29k. 26618 (z8k*-*-*, z8kx*-*-*): Changed from z8000, since z8k is canonical. 26619 (gmp_mpn_functions_optional): Add invert_limb, use for alpha and ia64. 26620 26621 * configure.in (alloca): Accept yes/no/detect, generate an error if 26622 "yes" but not available. 26623 * gmp.texi (Build Options): Update. 26624 26625 * acinclude.m4 (GMP_TRY_ASSEMBLE): Make conftest.out available. 26626 (GMP_ASM_ALIGN_FILL_0x90): Use it. 26627 26628 * acinclude.m4 (GMP_ASM_X86_MMX) [*-*-solaris*]: Check for solaris 26629 2.6 "as" movq bug. 26630 * gmp.texi (Notes for Particular Systems): Update x86 MMX note. 26631 266322000-11-21 Torbjorn Granlund <tege@swox.com> 26633 26634 * tune/Makefile.am (EXTRA_DIST): List hppa2w.asm. 26635 26636 * tune/hppa2.asm: Change level directive to "2.0n". 26637 * tune/hppa2w.asm: New file. 26638 * configure.in [SPEED_CYCLECOUNTER_OBJS switch]: Separate out hppa2.0w. 26639 26640 * mpn/pa64/gmp-mparam.h (BITS_PER_LONGINT): 64 => 32. 26641 266422000-11-21 Kevin Ryde <kevin@swox.se> 26643 26644 * urandom.h (random): No prototype if glibc stdlib.h has already 26645 provided it (avoids an int32_t/long conflict). 26646 26647 * tune/Makefile.am (LDFLAGS): Use -all-static. 26648 (speed-dynamic): Dynamic linked version of speed.c. 26649 * tune/README: Update. 26650 26651 * mpn/generic/gcd.c (find_a): Use native version if available. 26652 * acconfig.h (HAVE_NATIVE_mpn_gcd_finda): Add #undef. 26653 * gmp-impl.h (mpn_gcd_finda): Add prototype and define. 26654 * mpn/asm-defs.m4 (mpn_gcd_finda): New define_mpn. 26655 * tune/gcd_finda_gen.c: #undef any HAVE_NATIVE_mpn_gcd_finda. 26656 * configure.in (gmp_mpn_functions_optional): Add gcd_finda. 26657 * mpn/x86/k6/gcd_finda.asm: New file. 26658 26659 * tune/tuneup.c (POWM_THRESHOLD): Slightly bigger size steps. 26660 26661 * gmp-impl.h (__GMP_IMPL_H__): Protect against multiple inclusion. 26662 * tune/gcd_bin.c, tune/powm_mod.c, tune/powm_redc.c: Use #undef after 26663 gmp-impl.h to force thresholds. 26664 * tune/tuneup.c (print_define, fft): No need for #ifndefs on 26665 thresholds any more. 26666 266672000-11-20 Torbjorn Granlund <tege@swox.com> 26668 26669 * mpz/tests/t-powm.c: Analogous changes as made 2000-11-12 to t-mul.c. 26670 * mpz/tests/t-powm_ui.c: Likewise. 26671 * mpz/tests/t-pow_ui.c: Likewise. 26672 * mpz/tests/t-root.c: Likewise. 26673 26674 * configure.in [compiler switch]: Pass "-Aa -D_HPUX_SOURCE" to cc for 26675 all hppa versions. 26676 26677 * mpn/hppa/hppa1_1/udiv_qrnnd.S: Reference data using PC relative 26678 addressing (was r19 relative addressing). 26679 266802000-11-18 Torbjorn Granlund <tege@swox.com> 26681 26682 * rand.c: (__gmp_rand_lc_scheme): Convert strings to hexadecimal. 26683 (gmp_randinit): Expect strings in hexadecimal. 26684 266852000-11-18 Kevin Ryde <kevin@swox.se> 26686 26687 * configfsf.guess, configfsf.sub: Update to 2000-11-16. 26688 * config.guess (alpha*-*-openbsd*): Do exact cpu detection. 26689 266902000-11-14 Torbjorn Granlund <tege@swox.com> 26691 26692 * mpz/tests/t-fdiv.c: Analogous changes as made 2000-11-12 to t-mul.c. 26693 * mpz/tests/t-tdiv_ui.c: Likewise. 26694 * mpz/tests/t-fdiv_ui.c: Likewise. 26695 * mpz/tests/t-sqrtrem.c: Likewise. 26696 * mpz/tests/t-gcd.c: Likewise. 26697 266982000-11-13 Kevin Ryde <kevin@swox.se> 26699 26700 * mpn/Makeasm.am: New file, splitting out assembler rules. 26701 * mpn/Makefile.am, tune/Makefile.am: Use it. 26702 26703 * mpn/Makefile.am (@CPP@): Remove this, automake already gives it. 26704 26705 * configure.in (AC_CHECK_LIBM): New test, and AC_SUBST it. 26706 * Makefile.am (MPFR_LIBADD_OPTION): Use it. 26707 * demos/Makefile.am (qcn_LDADD): Ditto. 26708 * tune/Makefile.am (libspeed_la_LIBADD): Ditto. 26709 * tests/rand/Makefile.am (libstat_la_LIBADD): Ditto. 26710 26711 * tune/time.c (timeval_diff_secs): Better calculation. 26712 (read_real_time): New measuring method for AIX power/powerpc. 26713 (speed_endtime): Protect against negative times. 26714 * tune/common.c (speed_measure): Protect against big reps. 26715 * tune/freq.c (speed_cpu_frequency_measure_one): Better timeval diff. 26716 * tune/speed.h (TIMEVAL_DIFF_SEC,USEC): Remove macros. 26717 * configure.in: (sys/systemcfg.h, read_real_time): New tests. 26718 267192000-11-13 Torbjorn Granlund <tege@swox.com> 26720 26721 * mpz/tests/t-mul.c: Remove #include urandom.h. 26722 * mpz/tests/t-tdiv.c: Likewise. 26723 26724 * configure.in [SPEED_CYCLECOUNTER_OBJS switch]: 26725 Declare hppa.asm as just 32 bits (cyclecounter_size=1). 26726 267272000-11-12 Torbjorn Granlund <tege@swox.com> 26728 26729 * mpz/tests/t-mul.c 26730 (main): Generate random numbers using gmp_rand* functions. 26731 (main): Distribute random numbers non-uniformly. 26732 (main): Seed by current time if GMP_CHECK_RANDOMIZE is set. 26733 (_mpn_mul_classic): Streamline. 26734 * mpz/tests/t-tdiv.c: Analogous changes. 26735 26736 * demos/pexpr.c (HAVE_sigaltstack): Fix typo in testing for _UNICOS. 26737 Also test for __hpux. 26738 267392000-11-11 Torbjorn Granlund <tege@swox.com> 26740 26741 * mpn/alpha/ev5/gmp-mparam.h: Retune. 26742 26743 * mpn/alpha/ev6/gmp-mparam.h: Retune. 26744 26745 * mpn/alpha/ev6/add_n.asm: Misc cleanups. 26746 26747 * mpn/alpha/ev6/sub_n.asm: New file. 26748 267492000-11-10 Torbjorn Granlund <tege@swox.com> 26750 26751 * configure.in [path switch] (alphaev6*-*-*): Add alpha/ev5 to path. 26752 26753 * mpn/alpha/ev6/add_n.asm: New file. 26754 267552000-11-10 Kevin Ryde <kevin@swox.se> 26756 26757 * mpz/powm.c (redc): Make global under WANT_REDC_GLOBAL. 26758 * tune/powm_mod.c, tune/powm_redc.c: New files. 26759 * tune/Makefile.am (libspeed_la_SOURCES): Add them. 26760 * tune/*: Add measuring of redc, mpz_mod, mpz_powm_mod, mpz_powm_redc. 26761 26762 * tune/tuneup.c (POWM_THRESHOLD): Determine from redc and mpz_mod. 26763 * tune/Makefile.am (TUNE_MPZ_SRCS): Remove powm. 26764 267652000-11-10 Torbjorn Granlund <tege@swox.com> 26766 26767 * mpn/mips3/gmp-mparam.h: Retune. 26768 26769 * configure.in (os_64bit): Rename to check_64bit_compiler. 26770 267712000-11-09 Torbjorn Granlund <tege@swox.com> 26772 26773 * configure.in [SPEED_CYCLECOUNTER_OBJS switch]: Choose hppa/hppa2 code 26774 depending on $CC64. 26775 267762000-11-09 Kevin Ryde <kevin@swox.se> 26777 26778 * mpn/x86/pentium/mul_1.asm: Unroll 2x, saving 1 c/l when in L1. 26779 Add 1c entrypoint. 26780 * mpn/x86/pentium/aorsmul_1.asm: Add 1c entrypoints, shave a couple 26781 of cycles at entry and exit. 26782 26783 * configure.in (power1,2,2sc): Support these as synonyms for plain 26784 power. 26785 26786 * acinclude.m4 (GMP_ASM_X86_SHLDL_CL): GMP_DEFINE WANT_SHLDL_CL here. 26787 (GMP_ASM_X86_MMX, GMP_ASM_X86_SHLDL_CL): Add X86 into the names. 26788 * configure.in: Consequent changes. 26789 26790 * gmp.texi (Notes for Particular Systems): Remarks about power/powerpc. 26791 (Reentrancy): Remarks about simultaneous writing. 26792 (Reporting Bugs): Ask for configfsf.guess. 26793 267942000-11-08 Kevin Ryde <kevin@swox.se> 26795 26796 * acinclude.m4 (GMP_FUNC_ALLOCA): New macro. 26797 * configure.in: Use it. 26798 * gmp-impl.h (alloca): Conditionals and setups as per autoconf 26799 (should make alloca available on more non-gcc compilers). 26800 26801 * acinclude.m4: Misc reformatting, simplify some quoting. 26802 (GMP_ASM_UNDERSCORE, GMP_ASM_X86_MCOUNT): Use $CC $CFLAGS $CPPFLAGS. 26803 (GMP_ASM_UNDERSCORE, GMP_ASM_ALIGN_FILL_0x90, GMP_ASM_RODATA): Put 26804 AC_REQUIREs outside AC_CACHE_CHECK. 26805 (GMP_C_SIZES): Use $srcdir/gmp.h, not -I; use $CPPFLAGS. 26806 (GMP_ASM_UNDERSCORE): Use "gmp_compile" variable, and only rm 26807 conftes1* conftes2*. 26808 (GMP_PROG_NM): New macro, require it in appropriate GMP_ASM_*. 26809 (GMP_TRY_ASSEMBLE): New macro, use it in various GMP_ASM_*. 26810 * configure.in: Use GMP_PROG_NM. 26811 26812 * mpn/tests/spinner.c (spinner_signal): Use RETSIGTYPE. 26813 (spinner_init): Force output to unbuffered. 26814 26815 * mpn/x86/README.family: Notes about GOT table and imul, misc updates. 26816 * mpn/x86/k7/diveby3.asm: Change to 3 operands for immediate imul. 26817 * mpn/x86/k6/diveby3.asm: Ditto. 26818 268192000-11-06 Torbjorn Granlund <tege@swox.com> 26820 26821 * urandom.h: Simplify and make it work properly for 64-bit 26822 machines also in environments without `random'. 26823 268242000-11-04 Torbjorn Granlund <tege@swox.com> 26825 26826 * configure.in [path switch]: Don't match rs6000-*-*, in 26827 particular don't assume POWER. 26828 26829 * tune/tuneup.c (fft): Remove usleep calls. 26830 26831 * config.guess: Don't pass "$@" when it is known to be empty. 26832 26833 * Makefile.am (EXTRA_DIST): List configfsf.guess and configfsf.sub. 26834 268352000-11-04 Kevin Ryde <kevin@swox.se> 26836 26837 * configfsf.guess, configfsf.sub: Moved from config.guess and 26838 config.sub. 26839 * config.guess, config.sub: New files, wrappers around around 26840 configfsf versions. 26841 * configfsf.guess: Update to FSF 2000-10-23. 26842 * configfsf.sub: Update to FSF 2000-10-25. 26843 26844 * acinclude.m4 (GMP_ASM_POWERPC_R_REGISTERS): New macro. 26845 * mpn/powerpc32/powerpc-defs.m4: New file, regmap.m4 r0 etc macros 26846 conditionalized by GMP_ASM_POWERPC_R_REGISTERS. 26847 * mpn/powerpc32/regmap.m4: Remove file. 26848 * configure.in (powerpc*-*-*): Use all this. 26849 26850 * mpz/divegcd.c: New file, providing mpz_divexact_gcd. 26851 * Makefile.am, mpz/Makefile.am: Add it. 26852 * gmp-impl.h (mpz_divexact_gcd): Add prototype. 26853 * mpq/aors.c,canonicalize.c,div.c,mul.c: Use it. 26854 26855 * longlong.h [pentium] (count_leading_zeros): New macro. 26856 (__clz_tab): Always provide prototype. 26857 * acconfig.h (HAVE_TARGET_CPU_): Add x86s. 26858 26859 * tune/speed.[ch],common.c (count_leading_zeros, 26860 count_trailing_zeros, __udiv_qrnnd_c): Add measuring. 26861 26862 * configure.in (X86_PATTERN): Move from here ... 26863 * acinclude.m4 (X86_PATTERN): ... to here. 26864 (GMP_ASM_RODATA): Use it. 26865 26866 * configure.in (srandom): New test. 26867 * mpn/tests/try.c: Use it. 26868 * tune/speed.c: Ditto, and conditionalize getrusage and headers. 26869 268702000-11-02 Kevin Ryde <kevin@swox.se> 26871 26872 * mpn/Makefile.am (nodist_libdummy_la_SOURCES): Add udiv_qrnnd.c 26873 and udiv_w_sdiv.c. 26874 26875 * mpn/generic/mul_n.c (mpn_kara_sqr_n): Remove a duplicate 26876 subtract at the evaluate stage. 26877 268782000-11-01 Torbjorn Granlund <tege@swox.com> 26879 26880 * configure.in [compiler switch] (sparc64-*-linux*): Spell 26881 gmp_xoptcflags_gcc properly, and pass same options as for other 26882 sparcv9 configs. 26883 26884 * tune/speed.h (SPEED_ROUTINE_MPN_GET_STR): Fix type of wsize. 26885 268862000-10-31 Torbjorn Granlund <tege@swox.com> 26887 26888 * configure.in [compiler switch] (sparc64-*-linux*): Remove -mvis 26889 from gmp_xoptflags_gcc, this might not be an ultrasparc. 26890 Remove -m32 from gmp_cflags_gcc; add -Wa,-xarch=v8plus. 26891 268922000-10-29 Torbjorn Granlund <tege@swox.com> 26893 26894 * mpn/ia64/lorrshift.asm: New file. 26895 26896 * configure.in: New mulfunc `lorrshift' for lshift and rshift. 26897 268982000-10-29 Kevin Ryde <kevin@swox.se> 26899 26900 * mpn/generic/mul_n.c (mpn_kara_sqr_n): Delete code performing 26901 superfluous mpn_sub_n calls. 26902 26903 * configure.in (found_asm, M4): Account for SPEED_CYCLECOUNTER_OBJ, 26904 for the benefit of targets whose only .asm is a cycle counter. 26905 26906 * tune/tuneup.c (fft): Remove bogus usleep calls. 26907 269082000-10-28 Torbjorn Granlund <tege@swox.com> 26909 26910 * mpn/ia64/invert_limb.asm: Get return value for 0x800...00 right. 26911 26912 * tune/Makefile.am (EXTRA_DIST): Add ia64.asm. 26913 26914 * tune/ia64.asm: Fix typo. 26915 26916 * add_n.asm addmul_1.asm mul_1.asm popcount.asm sub_n.asm: 26917 Preserve ar.lc as required by ABI. 26918 * longlong.h (ia64 udiv_qrnnd): New. 26919 26920 * configure.in [path switch] (ia64*-*-*): Set extra_functions. 26921 * mpn/ia64/invert_limb.asm: New file. 26922 269232000-10-27 Torbjorn Granlund <tege@swox.com> 26924 26925 * configure.in [compiler switch]: 26926 Get rid of c89 for all hppa flavours--it is an evil compiler! 26927 26928 * tune/speed.h (SPEED_ROUTINE_MPN_SET_STR): Fix type of xp. 26929 (SPEED_ROUTINE_MPN_GET_STR): Fix type of wp. 26930 269312000-10-27 Kevin Ryde <kevin@swox.se> 26932 26933 * gmp.texi (Fibonacci Number Algorithm): New section. 26934 26935 * mpz/tests/t-fib_ui.c: New file. 26936 * mpz/tests/Makefile.am (check_PROGRAMS): Add it. 26937 26938 * mpz/fib_ui.c: Rewrite, same formulas but using mpn functions and 26939 some lookup tables, much faster at small to moderate sizes. 26940 * gmp-impl.h (MPZ_FIB_SIZE): New macro. 26941 (FIB_THRESHOLD): Establish default here. 26942 * tune/tuneup.c (FIB_THRESHOLD): Start search after the new table 26943 data. 26944 26945 * mpn/x86/x86-defs.m4 (mcount_movl_GOT_ebx): Rename from movl_GOT_ebx, 26946 and don't use GSYM_PREFIX with _GLOBAL_OFFSET_TABLE_. 26947 26948 * tune/freq.c (speed_cpu_frequency_measure): New test comparing 26949 gettimeofday and speed_cyclecounter, should cover many systems. 26950 269512000-10-27 Torbjorn Granlund <tege@swox.com> 26952 26953 * mpn/ia64/gmp-mparam.h: Retune. 26954 269552000-10-26 Torbjorn Granlund <tege@swox.com> 26956 26957 * longlong.h (ia64): Set UMUL_TIME and UDIV_TIME. 26958 26959 * mpn/ia64/submul_1.c: Fix typo. 26960 269612000-10-25 Kevin Ryde <kevin@swox.se> 26962 26963 * tune/freq.c (speed_cpu_frequency_sysctl): New test, supporting 26964 hw.model for BSD flavours. 26965 * configure.in (sysctl, sys/param.h): New tests. 26966 269672000-10-24 Torbjorn Granlund <tege@swox.com> 26968 26969 * tune/freq.c: Explicitly #include config.h before other include files. 26970 26971 * mpz/tests/reuse.c (FAIL2): New #define. 26972 (main): Use FAIL2. Now this test properly returns non-zero exit 26973 status when it fails. 26974 26975 * mpn/powerpc32/gmp-mparam.h: Retune. 26976 * mpn/powerpc64/gmp-mparam.h: Retune. 26977 269782000-10-24 Kevin Ryde <kevin@swox.se> 26979 26980 * mpn/x86/k6/cross.pl: Support 8 and 16 byte code alignment. 26981 26982 * mpq/aors.c, mpq/canonicalize.c: Skip two mpz_divexact calls if 26983 gcd gives 1, which should be 60% of the time. 26984 * gmp-impl.h (MPZ_EQUAL_1_P): New macro. 26985 * mpq/mul.c, mpq/div.c: Use it, and a new DIV_OR_SET. 26986 26987 * tune/tuneup.c (xp_block, yp_block): Initialize these with random 26988 data. Fixes GCD_ACCEL and GCDEXT thresholds, and latest POWM. 26989 269902000-10-23 Torbjorn Granlund <tege@swox.com> 26991 26992 * configure.in [SPEED_CYCLECOUNTER_OBJS switch]: Add ia64 case. 26993 26994 * mpn/ia64/gmp-mparam.h: Fill in some parameters. 26995 26996 * mpn/ia64/submul_1.c: New file. 26997 26998 * tune/ia64.asm: New file. 26999 27000 * gmp-impl.h (union ieee_double_extract): Handle ia64. 27001 27002 * mpn/mp_bases.c: Decrease chars_per_bit_exactly for entry 1 to 27003 work around buggy ia64-linux. 27004 27005 * longlong.h (ia64 umul_ppmm): Update register flags to match new GCC. 27006 270072000-10-22 Torbjorn Granlund <tege@swox.com> 27008 27009 * mpn/alpha/ev6/gmp-mparam.h (DC_THRESHOLD): Update. 27010 * mpn/alpha/ev6/submul_1.asm: New file. 27011 270122000-10-22 Kevin Ryde <kevin@swox.se> 27013 27014 * tune/gcd_bin.c: New file. 27015 * tune/gcd_finda_gen.c: New file. 27016 * tune/Makefile.am (libspeed_la_SOURCES): Add them. 27017 * tune/speed.[ch],common.c (mpn_gcd_binary, find_a): Add measuring. 27018 27019 * * (__gmp_allocate_func etc): Rename from _mp_allocate_func etc. 27020 (__gmp_default_allocate etc): Rename from _mp_default_allocate etc. 27021 * gmp-impl.h (__GMP_REALLOCATE_FUNC_TYPE, 27022 __GMP_REALLOCATE_FUNC_LIMBS): New macros. 27023 27024 * gmp-impl.h (DC_THRESHOLD): Establish default here, set to 3*KARA 27025 since that's the measured average. 27026 * mpn/generic/dc_divrem_n.c, mpn/generic/tdiv_qr.c (DC_THRESHOLD): 27027 Remove default. 27028 270292000-10-21 Torbjorn Granlund <tege@swox.com> 27030 27031 * mpn/Makefile.am (TARG_DIST): Add ia64. 27032 270332000-10-21 Kevin Ryde <kevin@swox.se> 27034 27035 * *: Change BZ -> DC. 27036 * mpn/generic/dc_divrem_n.c: Renamed from bz_divrem_n.c. 27037 27038 * doc/multiplication: Remove file, now in the manual. 27039 * doc/assembly_code: Ditto. 27040 * tune/README: Remove some parts now in the manual. 27041 27042 * gmp.texi (@m etc): Add and use some new macros. 27043 (Integer Division - mpz_[cft]div_*): Merge descriptions, for brevity 27044 and to emphasise similarities. 27045 (Low-Level Functions - mpn_[lr]shift): Specify count as 1 to 27046 mp_bits_per_limb-1. 27047 (Algorithms): New chapter. 27048 (References): Add some papers. 27049 27050 * mpn/generic/mul_n.c (mpn_toom3_mul_n, mpn_toom3_sqr_n): Remove some 27051 unused variables. 27052 * mpn/generic/mul_fft.c (mpn_fft_best_k): Ditto. 27053 27054 * tune/freq.c: New file, split from time.c. 27055 * tune/time.c: Rewrite, now more automated. 27056 * configure.in, tune/*: Consequent changes. 27057 270582000-10-20 Torbjorn Granlund <tege@swox.com> 27059 27060 * mpn/ia64/default.m4: New file. 27061 * configure.in [config.m4 switch] (ia64*-*-*): Use ia64/default.m4. 27062 27063 * mpn/ia64/mul_1.asm: New file. 27064 * mpn/ia64/addmul_1.asm: New file. 27065 * mpn/ia64/add_n.asm: New file. 27066 * mpn/ia64/sub_n.asm: New file. 27067 * mpn/ia64/popcount.asm: New file. 27068 * mpn/ia64/README: New file. 27069 27070 * mpn/alpha/cntlz.asm: Override `.set noat' from ASM_START. 27071 27072 * configure.in (HAVE_TARGET_CPU_*): Support hppa1.0, hppa1.1, hppa2.0 27073 by sed'ing the period into `_'. 27074 27075 * acconfig.h: Add #undefs for hppa targets. 27076 27077 * longlong.h (udiv_qrnnd): Fix typo in last change. 27078 27079 * mpz/tstbit.c: Rewrite (partly to work around GCC 2.95.2 HPPA bug). 27080 27081 * configure.in [path switch]: 27082 (hppa2.0*-*-*): For non-CC64 case, update path. 27083 27084 * configure.in [compiler switch]: 27085 (hppa2.0w-*-*): Match with same regexp in both places. 27086 (hppa*-*-*): New case. 27087 (all hppa alternatives): Don't inherit default gmp_cflags_cc, 27088 gmp_cflags_c89. 27089 270902000-10-18 Torbjorn Granlund <tege@swox.com> 27091 27092 * configure.in (alpha*-*-*): Define gmp_xoptcflags_gcc like for 27093 alpha*-*-osf*. 27094 27095 * longlong.h (x86 udiv_qrnnd): Change `d' => `dx' to avoid K&R C 27096 stringification. 27097 270982000-10-15 Kevin Ryde <kevin@swox.se> 27099 27100 * doc/configuration: Updates. 27101 27102 * demos/calc.y: Remove some comments. 27103 271042000-10-14 Kevin Ryde <kevin@swox.se> 27105 27106 * gmp.texi (Parameter Conventions, Memory Management): New sections 27107 split from "Variable Conventions". 27108 (Efficiency, Debugging, Profiling): New sections in "GMP Basics". 27109 (Reentrancy): Some rewording, add note on standard I/O. 27110 (Build options): Add --enable-assert and --enable-profiling. 27111 27112 * configure.in (--enable-profiling): New option. 27113 * acinclude.m4 (GMP_ASM_X86_MCOUNT): New macro, finding how to profile. 27114 * mpn/x86/x86-defs.m4 (PROLOGUE_cpu, call_mcount): Profiling support. 27115 27116 * acinclude.m4, configure.in (GMP_ASM_*): Rename from GMP_CHECK_ASM_*, 27117 to follow autoconf conventions. 27118 27119 * configure.in: Run GMP_CHECK_ASM tests only if needed. 27120 * acinclude.m4 (GMP_CHECK_ASM_MMX): Don't use GMP_CHECK_ASM_TEXT. 27121 27122 * mpn/x86/x86-defs.m4 (ASSERT): Allow no condition, to just emit code. 27123 271242000-10-13 Kevin Ryde <kevin@swox.se> 27125 27126 * mpq/md_2exp.c: New file. 27127 * mpq/Makefile.am (libmpq_la_SOURCES): Add it. 27128 * Makefile.am (MPQ_OBJECTS): Ditto. 27129 * gmp.h (mpq_mul_2exp, mpq_div_2exp): Add prototypes. 27130 * gmp.texi (Rational Arithmetic): Add documentation. 27131 27132 * mpq/tests/t-md_2exp.c: New file. 27133 * mpq/tests/Makefile.am (check_PROGRAMS): Add it. 27134 27135 * mpn/generic/perfsqr.c: Add/amend some comments. 27136 27137 * gmp.texi (Known Build Problems): Note VERSION problem with old 27138 sed, do some minor rewording. 27139 (Build Options): Add cygwin and djgpp URLs, mention INSTALL.autoconf, 27140 mention HTML. 27141 (Getting the Latest Version of GMP): Move this ... 27142 (Introduction to GMP): ... to here. 27143 (Compatibility with older versions): Just refer to 2.x and 3.x, not 27144 every minor version. 27145 (Initializing Integers): Note restrictions on mpz_array_init'ed 27146 variables. 27147 (Integer Logic and Bit Fiddling): Note bits are numbered from 0. 27148 27149 * INSTALL.autoconf: New file. 27150 * Makefile.am (EXTRA_DIST): Add it. 27151 27152 * tune/Makefile.am, tune/tuneup.c, configure.in, gmp-impl.h: New 27153 scheme for recompiled objects used by tune program. Don't use 27154 libgmptune.a, make better use of libtool, work with ansi2knr. 27155 27156 * tune/speed.h,common.c (SPEED_ROUTINE_MPZ_POWM): Use s->yp and 27157 s->xp_block, make exponent a fixed size. 27158 271592000-10-07 Torbjorn Granlund <tege@swox.com> 27160 27161 * mpn/mips3/gmp-mparam.h: Retune. 27162 27163 * mpn/generic/mul_n.c (USE_MORE_MPN): Revert last change. 27164 271652000-10-06 Torbjorn Granlund <tege@swox.com> 27166 27167 * mpn/mips3/add_n.s: Decrease carry recurrence from 4 to 3 cycles. 27168 * mpn/mips3/sub_n.s: Likewise. 27169 271702000-10-04 Torbjorn Granlund <tege@swox.com> 27171 27172 * configure.in (sparc64-*-linux*): Set path according to CC64. 27173 271742000-10-04 Kevin Ryde <kevin@swox.se> 27175 27176 * acinclude.m4 (GMP_CHECK_ASM_UNDERSCORE): Use LABEL_SUFFIX, not a 27177 hard-coded ":". 27178 27179 * config.sub: Don't demand "86" in CPU name for SCO. 27180 27181 * configure.in (supersparc-*-*): Remove -DSUPERSPARC. 27182 * longlong.h: Use HAVE_TARGET_CPU_supersparc. 27183 27184 * configure.in (HAVE_TARGET_CPU_*): AC_DEFINE from $target_cpu. 27185 * acconfig.h: Add #undefs, but only for targets of interest. 27186 271872000-10-03 Torbjorn Granlund <tege@swox.com> 27188 27189 * mpn/alpha/cntlz.asm: Rewrite. 27190 27191 * mp_clz_tab.c (__clz_tab): Half table size to 128 entires. 27192 * longlong.h (count_leading_zeros): Demand just 128 entries from 27193 __clz_tab. 27194 27195 * configure.in (mips-sgi-irix6.*): Pass -mips3 in addition to options 27196 for n32 ABI. 27197 27198 * longlong.h: Move NO_ASM test around all assembly code. 27199 From gcc: 27200 * longlong.h (count_leading_zeros): Sparclite scan instruction was 27201 being invoked incorrectly. 27202 Replace __mc68332__ with __mcpu32__. 27203 Add ARC support. 27204 272052000-10-02 Torbjorn Granlund <tege@swox.com> 27206 27207 * mpn/mips3/gmp-mparam.h: Retune for both gcc and cc. 27208 27209 * mpn/generic/mul_n.c (USE_MORE_MPN): Remove exception for __mips. 27210 (interpolate3): Cast mp_limb_t variables to mp_limb_signed_t 27211 when testing sign bit. 27212 27213 * mpn/alpha/ev6/gmp-mparam.h: Retune. 27214 * mpn/powerpc32/gmp-mparam.h: Retune. 27215 * mpn/powerpc64/gmp-mparam.h: Retune. 27216 * mpn/x86/pentium/gmp-mparam.h: Retune. 27217 * mpn/x86/pentium/mmx/gmp-mparam.h: Retune. 27218 * mpn/sparc32/v9/gmp-mparam.h: Retune. 27219 * mpn/x86/k6/gmp-mparam.h: Retune. 27220 * mpn/x86/p6/gmp-mparam.h: Retune. 27221 * mpn/x86/k7/gmp-mparam.h: Retune. 27222 * mpn/sparc64/gmp-mparam.h: Retune. 27223 27224 * mpn/m68k/gmp-mparam.h: New file. 27225 * mpn/alpha/ev5/gmp-mparam.h: New file. 27226 27227 * gmp-impl.h (default MPN_COPY): Remove final `;'. 27228 27229 * tune/time.c (speed_endtime): Rewrite. 27230 27231 * tune/speed.h (SPEED_ROUTINE_MPZ_POWM): Set base to a large value, 27232 not 2. 27233 27234 * demos/pexpr.c (setup_error_handler): Fix typo. 27235 27236 * mpz/powm.c (redc): New function, based on old mpz_redc. Don't 27237 multiply here. 27238 (mpz_redc): Remove. 27239 (mpz_powm): Major changes, partially reverting to mpn calls. 27240 Multiply before calling redc. 27241 (mpz_powm): Use TMP_ allocation. 27242 (mpz_powm): Refine calculation of k (width of exponent window). 27243 (mpz_powm): Cast constants to mp_limb_t before left shifting. 27244 27245 * longlong.h: Use ia64 count_leading_zeros just when __GNUC__. 27246 272472000-09-29 Kevin Ryde <kevin@swox.se> 27248 27249 * acinclude.m4 (GMP_C_SIZES): New macro. 27250 * configure.in: Use it. 27251 * acconfig.in (BYTES_PER_MP_LIMB etc): Add #undefs. 27252 * mpn/generic/gmp-mparam.h (BYTES_PER_MP_LIMB etc): Remove #defines. 27253 * gmp.texi (Known Build Problems): Remove 64-bit generic C 27254 gmp-mparam.h problem, now fixed. 27255 27256 * configure.in: Only run GMP_PROG_M4 if it's actually needed. 27257 272582000-09-27 Torbjorn Granlund <tege@swox.com> 27259 27260 * demos/pexpr.c: Clean up code for systems not supporting 27261 sigaltstack. Handle old Linux without sigaltstack. Properly 27262 disable all stuff related to sigaltstack under Unicos. 27263 27264 * mpn/alpha/ev6/addmul_1.asm: Use explicit offset for all load and 27265 store insns. Helps old gas. 27266 27267 * longlong.h (count_leading_zeros): Define for ia64. 27268 272692000-09-27 Paul Zimmermann <Paul.Zimmermann@loria.fr> 27270 27271 * mpn/generic/bz_divrem_n.c: Fix qhl handling, simplify. 27272 272732000-09-27 Kevin Ryde <kevin@swox.se> 27274 27275 * mpn/Makefile.in (.SUFFIXES): Regenerate with patched automake to 27276 get .s before .c, which is needed to override ansi2knr .c rules. 27277 27278 * gmp.texi (mpn_sqrtrem): Fix r2p==NULL return value description 27279 to match the code (change by Torbjorn). 27280 (mpn_gcd, mpn_gcdext, mpn_sqrtrem, mpn_tdiv_qr): Note most 27281 significant limbs must be non-zero. 27282 (mpn_gcd, mpn_gcdext, mpn_sqrtrem): Clarify destination size 27283 requirements. 27284 (mpn_gcd_1): Clarify value must be non-zero, not just size. 27285 27286 * gmp-impl.h (mpn_zero_p): New inline function. 27287 * mpn/generic/inlines.c: Add gmp-impl.h. 27288 * mpf/integer.c, mpz/get_d.c, mpn/generic/mul_fft.c: Use it. 27289 27290 * mpn/generic/gcd.c: Use MPN_COPY_INCR not MPN_COPY. 27291 * mpf/add_ui.c: Ditto. 27292 * mpf/add.c: Ditto, and fix test to skip copy. 27293 272942000-09-26 Kevin Ryde <kevin@swox.se> 27295 27296 * gmp-impl.h, longlong.h, mpn/generic/*.c: Add ASSERTs for various 27297 parameter restrictions. 27298 27299 * gmp-impl.h (UDIV_PREINV_TIME): New macro. 27300 * mpn/generic/sb_divrem_mn.c: Use it. 27301 * mpn/generic/perfsqr.c: Ditto. 27302 * mpn/x86/*/gmp-mparam.h (UDIV_PREINV_TIME): Add values. 27303 27304 * macos/Makefile.in: Add mpz/tests/t-get_si.c, mpf/tests/t-set_f.c, 27305 and new multi-function mpz and mpq files. 27306 273072000-09-25 Kevin Ryde <kevin@swox.se> 27308 27309 * randlc.c, randlc2x.c, randsd.c, mpz/urandomb.c, mpz/urandomm.c: 27310 Use mpz_ptr and mpz_srcptr for parameters. 27311 * gmp.h (gmp_randinit_lc, gmp_randinit_lc_2exp, gmp_randseed, 27312 mpz_urandomb, mpz_urandomm): Corresponding change to prototypes. 27313 * randsdui.c: Remove wrong K&R parameters part. 27314 273152000-09-12 Kevin Ryde <kevin@swox.se> 27316 27317 * gmp-impl.h (mpn_tdiv_qr): Move prototype from here ... 27318 * gmp.h (mpn_tdiv_qr): ... to here. 27319 27320 * gmp.texi (Miscellaneous Rational Functions): Comment-out and 27321 move version 1 compatibility note to "Compatibility" section. 27322 (Rational Number Functions): Ditto for canonicalization note. 27323 273242000-09-10 Kevin Ryde <kevin@swox.se> 27325 27326 * mpn/x86/pentium/com_n.asm: New file. 27327 27328 * gmp.texi (Rational Arithmetic): Add mpq_abs. 27329 (Miscellaneous Rational Functions): Merge and simplify descriptions of 27330 mpq_get_num, mpq_get_den, mpq_set_num, mpq_set_den. 27331 27332 * mpq/abs.c: New file. 27333 * mpq/Makefile.am (libmpq_la_SOURCES): Add it. 27334 * Makefile.am (MPQ_OBJECTS): Add it. 27335 * gmp.h (mpq_abs): Add prototype. 27336 27337 * mpq/set_den.c: Don't discard sign when copying, this makes the 27338 code match the manual. 27339 273402000-09-07 Torbjorn Granlund <tege@swox.com> 27341 27342 * tune/alpha.asm: Rewrite to actually work right. 27343 273442000-09-07 Kevin Ryde <kevin@swox.se> 27345 27346 * tune/common.c,speed.[ch]: Add measuring of mpn_sqrtrem, 27347 mpn_get_str, mpn_set_str. 27348 * tune/README: Various updates. 27349 273502000-09-06 Torbjorn Granlund <tege@swox.com> 27351 27352 * mpz/fits.c: Correct type of `data'. 27353 273542000-09-06 Kevin Ryde <kevin@swox.se> 27355 27356 * gmp.texi (Build Options): Clarify where to find CFLAGS. 27357 (Known Build Problems): Note SCO -lc problem. 27358 27359 * tune/speed.h (SPEED_ROUTINE_MPN_GCD_CALL): Fix for sizes > 512 limbs. 27360 27361 * doc/multiplication: Corrections and additions suggested by Paul. 27362 27363 * tune/modlinv.c: New file with alternate modlimb_inverts. 27364 * tune/Makefile.am, tune/speed.[ch]: Add measuring of them. 27365 * tune/speed.c (FLAG_NODATA): New attribute, use for mpz_bin_uiui, 27366 mpz_fib_ui, mpz_fac_ui. 27367 27368 * mpn/x86/t-zdisp.sh: New file. 27369 27370 * tests/t-modlinv.c: New file. 27371 * tests/Makefile.am (check_PROGRAMS): Add it. 27372 27373 * mpq/tests/t-set_f.c: New file. 27374 * mpq/tests/Makefile.am (check_PROGRAMS): Add it. 27375 27376 * gmp-impl.h (MPQ_CHECK_FORMAT): New macro. 27377 * mpq/tests/t-get_d.c: Use it. 27378 27379 * mpq/set_f.c: New file. 27380 * mpq/Makefile.am (libmpq_la_SOURCES): Add it. 27381 * Makefile.am (MPQ_OBJECTS): Ditto. 27382 * gmp.h: Add prototype. 27383 * gmp.texi (Miscellaneous Rational Functions): Document mpq_set_f, 27384 correct return type of mpq_set_d. 27385 273862000-09-03 Kevin Ryde <kevin@swox.se> 27387 27388 * mpz/aors_ui.c: New file merging add_ui.c and sub_ui.c, no object 27389 code changes. 27390 * mpz/add_ui.c, mpz/sub_ui.c: Remove files. 27391 * mpz/Makefile.am: Update. 27392 27393 * gmp-impl.h (MPZ_FITS_STYPE_SDT, MPZ_FITS_UTYPE_SDT): New macros. 27394 * mpz/fits.c: New file merging six separate fits*.c. 27395 * mpz/fits_sshort_p.c, fits_sint_p.c, fits_slong_p.c, fits_ushort_p.c, 27396 fits_uint_p.c, fits_ulong_p.c: Remove files 27397 * mpz/Makefile.am: Use new fits.c, change object names from 27398 fits_*_p.lo to fits_*.lo to avoid SunOS 4 native "ar" warnings. 27399 * Makefile.am (MPZ_OBJECTS): Change from fits_*_p.lo to fits_*.lo. 27400 27401 * acinclude.m4 (GMP_CHECK_ASM_RODATA): New macro, defining RODATA. 27402 * configure.in: Use it. 27403 * mpn/x86/k[67]/mmx/popham.asm: Use it. 27404 27405 * mpn/x86/*/*.asm: Use "TEXT" not ".text". 27406 274072000-09-02 Kevin Ryde <kevin@swox.se> 27408 27409 * mpq/aors.c: New file merging add.c and sub.c, no object code changes. 27410 * mpq/add.c, mpq/sub.c: Remove files. 27411 * mpq/Makefile.am: Update. 27412 27413 * mpz/aors.c: New file merging add.c and sub.c, no object code changes. 27414 * mpz/add.c, mpz/sub.c: Remove files. 27415 * mpz/Makefile.am, mpbsd/Makefile.am: Update. 27416 27417 * configure.in: Re-apply "PROLOGUE.*" regexp change for the 27418 benefit of alpha PROLOGUE_GP, lost in path search reorganisation. 27419 27420 * mpn/x86/x86-defs.m4 (jadcl0, cmov_simulate, ASSERT, 27421 movl_text_address): Don't use "1:" style labels. 27422 (Zdisp): Rearrange a bit, switch to all hex. 27423 * mpn/x86/README.family: Note SCO "as" doesn't support "1:" style 27424 local labels, misc rewordings. 27425 274262000-08-29 Torbjorn Granlund <tege@swox.com> 27427 27428 * demos/primes.c: Include string.h. 27429 27430 * config.guess (x86 variant recog code): Remove dummy*.o files 27431 generated by some compilers. 27432 274332000-08-28 Kevin Ryde <kevin@swox.se> 27434 27435 * acinclude.m4 (GMP_CHECK_ASM_ALIGN_FILL_0x90): Fix Solaris 2.8 27436 warning message suppression, add notes about SCO. 27437 27438 * Makefile.am (MPZ_OBJECTS etc): Move some comments. 27439 274402000-08-25 Kevin Ryde <kevin@swox.se> 27441 27442 * mpz/pprime_p.c (mpz_millerrabin): Fix a TMP_FREE. 27443 27444 * gmp.texi (Copying): Refer to Lesser not Library GPL. 27445 (GMP and Reentrancy): Note stack-alloc.c is not reentrant, and 27446 that SCO <ctype.h> is potentially not reentrant. 27447 27448 * acinclude.m4 (GMP_CHECK_ASM_UNDERSCORE): Test by attempting to 27449 link with or without an underscore. 27450 * gmp.texi (Known Build Problems): Remove SunOS 4 native grep 27451 GSYM_PREFIX problem, now fixed. 27452 27453 * gmp-impl.h (MODLIMB_INVERSE_3): New constant. 27454 * mpn/generic/diveby3.c: Use it instead of own INVERSE_3. 27455 * mpn/generic/mul_n.c: Ditto. 27456 * tests/t-constants.c: Check it, and PP_INVERTED too. 27457 27458 * acinclude.m4 (GMP_GCC_MARCH_PENTIUMPRO): New macro. 27459 * configure.in [p6 and athlon] (gmp_optcflags_gcc): Use it to 27460 possibly add -march=pentiumpro. 27461 27462 * gmp-impl.h (MPZ_SET_STR_OR_ABORT, MPF_SET_STR_OR_ABORT): New macros. 27463 * mpz/tests/t-bin.c, mpz/tests/t-get_si.c, mpz/tests/t-jac.c, 27464 mpz/tests/t-misc.c: Use them. 27465 * mpf/tests/t-conv.c, mpf/tests/t-misc.c: Ditto. 27466 * mpz/tests/convert.c: Ditto and amend diagnostics slightly. 27467 * mpz/tests/t-misc.c (check_mpz_set_si): Remove a superfluous init. 27468 * mpz/tests/io.c: Differentiate between I/O and data conversion errors. 27469 27470 * mpn/generic/aors_n.c: New file merging add_n and sub_n, no 27471 object code changes. 27472 * mpn/generic/add_n.c: Remove file. 27473 * mpn/generic/sub_n.c: Remove file. 27474 27475 * mpn/generic/aorsmul_1.c: New file merging addmul_1 and submul_1, 27476 no object code changes. 27477 * mpn/generic/addmul_1.c: Remove file. 27478 * mpn/generic/submul_1.c: Remove file. 27479 27480 * mpn/generic/popham.c: New file merging popcount and hamdist, no 27481 object code changes. 27482 * mpn/generic/popcount.c: Remove file. 27483 * mpn/generic/hamdist.c: Remove file. 27484 274852000-08-24 Torbjorn Granlund <tege@swox.com> 27486 27487 * gmp-impl.h (mpn_com_n): Fix typo. 27488 274892000-08-23 Torbjorn Granlund <tege@swox.com> 27490 27491 * demos/primes.c (main): Don't call mpz_probab_prime_p for numbers 27492 that are known to be prime after sieving. 27493 (main): Declare and initialize max_s_prime_squared. 27494 (MAX_S_PRIME): Increase. 27495 (ST_SIZE): Increase. 27496 274972000-08-23 Kevin Ryde <kevin@swox.se> 27498 27499 * gmp-impl.h (ASSERT_ALWAYS): Change to statement style. 27500 (JACOBI_TWO_U_BIT1): Remove ASSERT. 27501 (MPZ_CHECK_FORMAT): Use ASSERT_ALWAYS as a statement. 27502 275032000-08-21 Torbjorn Granlund <tege@swox.com> 27504 27505 * gmp-impl.h (ASSERT): Use do..while for dummy version. 27506 27507 * mpf/get_str.c: Don't set n_digits from digits_computed_so_far 27508 when the converted operand becomes zero. Misc cleanups. 27509 275102000-08-21 Kevin Ryde <kevin@swox.se> 27511 27512 * mpz/fdiv_r_2exp.c, mpz/lcm.c, mpz/urandomm.c: Add missing 27513 TMP_MARK/FREE, avoiding memory leak when using stack-alloc.c. 27514 275152000-08-20 Kevin Ryde <kevin@swox.se> 27516 27517 * mpz/set.c [BERKELEY_MP] (move): Add conditionals to build as 27518 "move" for libmp. 27519 * mpbsd/Makefile.am: Use mpz/set.c, not move.c. 27520 * Makefile.am (MPBSD_OBJECTS): Corresponding change. 27521 * mpbsd/move.c: Remove file. 27522 27523 * mpn/Makefile.am, mpz/Makefile.am, mpq/Makefile.am, mpf/Makefile.am, 27524 mpbsd/Makefile.am (-DOPERATION_foo): Use "foo" even for ansi2knr 27525 "foo_" objects. Do this with the makefiles to keep the sources 27526 cleaner. 27527 * mpz/mul_siui.c, mpf/integer.c: Revert to plain OPERATION_* forms. 27528 27529 * mpn/lisp/gmpasm-mode.el (gmpasm-remove-from-list): Renamed from 27530 gmpasm-delete-from-list, because it's non-destructive. 27531 (gmpasm-font-lock-keywords): Add some more keywords. 27532 275332000-08-16 Kevin Ryde <kevin@swox.se> 27534 27535 * tune/mul_n_mpn.c, tune/mul_n_open.c: New files, being forced 27536 open-coded and mpn #includes of mpn/generic/mul_n.c. 27537 * tune/*: Add measuring of them. 27538 * tune/speed.c: Print command line into *.gnuplot file. 27539 27540 * mpn/generic/mul_n.c (USE_MORE_MPN): Change to #if not #ifdef for 27541 using the value, add #ifndef for providing the default. 27542 * mpn/sparc64/gmp-mparam.h (USE_MORE_MPN): Add #ifndef. 27543 27544 * tests/t-constants.c: New file. 27545 * tests/Makefile.am (check_PROGRAMS): Add it. 27546 27547 * mpz/get_si.c: Use LONG_MAX, not BITS_PER_MP_LIMB, so the result 27548 doesn't depend on limb size when outside the range of a long 27549 (though such results are not actually documented). 27550 * mpz/tests/t-get_si.c: New file. 27551 * mpz/tests/Makefile.am (check_PROGRAMS): Add it. 27552 27553 * mpn/tests/try.c (call): Cast popcount and hamdist calls, 27554 for the benefit of long long limb. 27555 275562000-08-15 Kevin Ryde <kevin@swox.se> 27557 27558 * mp.h (mp_set_memory_functions): Add missing #define. 27559 * mpbsd/tests/allfuns.c (mp_set_memory_functions): Verify its 27560 existence. 27561 27562 * mpf/tests/t-misc.c (check_mpf_getset_prec): New test, verifying 27563 reverted behaviour of mpf_get_prec. 27564 27565 * mpn/tests/ref.c (refmpn_strip_twos): Use refmpn_copyi, not 27566 MPN_COPY_INCR. 27567 27568 * mpz/mul_siui.c, mpf/integer.c: Recognise OPERATION_*_ forms 27569 produced under ansi2knr. 27570 27571 * configure.in (mpn_objects, mpn_objs_in_libgmp): Add $U to .c 27572 objects when ansi2knr in use. 27573 27574 * mpn/Makefile.am (AUTOMAKE_OPTIONS): Enable ansi2knr. 27575 (libdummy.la): Add this, not built, to create ansi2knr style rules 27576 for all potential .c files. 27577 * mpz/Makefile.am, mpq/Makefile.am, mpf/Makefile.am, mpfr/Makefile.am, 27578 mpbsd/Makefile.am, mpq/tests/Makefile.am, tests/Makefile.am 27579 (AUTOMAKE_OPTIONS): Enable ansi2knr (now everywhere). 27580 * Makefile.am (MPZ_OBJECTS, MPQ_OBJECTS, MPF_OBJECTS, MPFR_OBJECTS, 27581 MPBSD_OBJECTS, libmp_la_DEPENDENCIES): Add $U to all .lo filenames. 27582 275832000-08-03 Torbjorn Granlund <tege@swox.com> 27584 27585 * mpn/alpha/ev6/addmul_1.asm: Correct number of cycles to 3.5/28. 27586 275872000-08-02 Torbjorn Granlund <tege@swox.com> 27588 27589 * Version 3.1 released. 27590 27591 * gmp.texi: Rephrase mpf_urandomb documentation. 27592 27593 * mpn/alpha/ev6: New directory with ev6/21264 optimized code. 27594 * mpn/alpha/ev6/addmul_1.asm: New file. 27595 * mpn/alpha/ev6/gmp-mparam.h: New file. 27596 275972000-08-02 Kevin Ryde <kevin@swox.se> 27598 27599 * demos/factorize.c (random): Don't use "inline". 27600 27601 * mpfr/log.c, mpfr/mul_ui.c, mpfr/round.c, mpfr/set.c, mpfr/set_d.c: 27602 Corrections to K&R parts. 27603 27604 * Makefile.am (EXTRA_HEADERS): Omit $(MPFR_HEADERS_OPTION). 27605 * mpfr/Makefile.am (EXTRA_DIST): Add mpfr.h. 27606 27607 * gmp.texi (Known Build Problems): Note problem stripping libgmp.a. 27608 276092000-08-02 Kent Boortz <kent@swox.com> 27610 27611 * mpfr: Integrated experimental version of mpfr-0.4. 27612 * configure.in: Changes for option --enable-mpfr. 27613 * Makefile.am: Changes for option --enable-mpfr. 27614 276152000-08-01 Torbjorn Granlund <tege@swox.com> 27616 27617 * mpn/generic/popcount.c: Disable SPARC v9 popc_limb pattern. 27618 * mpn/generic/hamdist.c: Likewise. 27619 276202000-08-01 Kevin Ryde <kevin@swox.se> 27621 27622 * mpn/tests/try.c (try_init): Account for ALIGNMENTS when sizing 27623 source and dest regions. 27624 276252000-07-31 Torbjorn Granlund <tege@swox.com> 27626 27627 * mpf/get_str.c: Develop three extra digits, not just one. 27628 276292000-07-31 Kevin Ryde <kevin@swox.se> 27630 27631 * gmp.texi (References): Add URL for invariant division. 27632 276332000-07-30 Kevin Ryde <kevin@swox.se> 27634 27635 * tune/time.c (speed_cpu_frequency_proc_cpuinfo): Add support for 27636 alpha linux "cycle frequency". 27637 27638 * mpn/sparc64/gmp-mparam.h: Re-run tune program for FFT thresholds. 27639 276402000-07-29 Kevin Ryde <kevin@swox.se> 27641 27642 * gmp.texi (ABI and ISA): Add sparc64-*-linux*. 27643 * configure.in [sparc64-*-linux*] (gmp_cflags64_gcc): Same flags 27644 as under solaris. 27645 27646 * configure.in (--enable-fft): New option, default "no". 27647 * gmp.texi (Build Options): Describe it. 27648 * mpn/generic/mul.c, mpn/generic/mul_n.c [WANT_FFT]: Use it. 27649 * tune/tuneup.c [WANT_FFT]: By default don't probe FFTs if not enabled. 27650 * NEWS: Multiplication optionally using FFT. 27651 27652 * tune/README: Notes on FFT and GCD thresholds, other minor updates. 27653 27654 * Makefile.am: Expunge the macos generated files update stuff. 27655 276562000-07-28 Kevin Ryde <kevin@swox.se> 27657 27658 * mpn/x86/*/gmp-mparam.h: Add some FFT thresholds. 27659 276602000-07-28 Kent Boortz <kent@swox.se> 27661 27662 * macos/Asm*, macos/CmnObj, macos/Mp*: Delete directories. 27663 * macos/Makefile: Delete file. 27664 * macos/Makefile.cw: Delete file. 27665 * macos/config.h: Delete file. 27666 * macos/Asm/*.s: Delete files. 27667 * macos/configure: Create target directories. Don't transform 27668 '(C)' to '(;)' in a 'dnl' line comment in .asm file. 27669 * Makefile.am: Delete macos targets. 27670 * macos/README: Reflect that we reverted back to a build 27671 process that require ""macos/configure" to run on MacOS. 27672 This imply that MacPerl is needed for a build in MacOS. 27673 276742000-07-27 Kevin Ryde <kevin@swox.se> 27675 27676 * mpn/generic/mul_fft.c: New file, by Paul Zimmermann, minor mods 27677 applied. 27678 * configure.in (gmp_mpn_functions): Add it. 27679 * mpn/generic/mul.c, mpn/generic/mul_n.c: Use it. 27680 * doc/multiplication: Describe it (briefly). 27681 27682 * gmp-impl.h (FFT_MUL_THRESHOLD etc): New thresholds. 27683 (mpn_fft_best_k, mpn_fft_next_size, mpn_mul_fft, mpn_mul_fft_full): 27684 New functions. 27685 (numberof, TMP_ALLOC_TYPE etc, _MP_ALLOCATE_FUNC_TYPE etc, 27686 UNSIGNED_TYPE_MAX etc): New macros. 27687 27688 * tune/*: Add FFT threshold tuning and speed measuring. 27689 * tune/common.c: Avoid huge macro expansions for umul and udiv. 27690 27691 * mpz/tests/t-bin.c, mpz/tests/t-jac.c, mpz/tests/t-misc.c, 27692 mpbsd/tests/t-misc.c, mpf/tests/t-misc.c, mpn/tests/try.c, 27693 mpn/tests/spinner.c: Use new gmp-impl.h macros. 27694 27695 * demos/Makefile.am (BUILT_SOURCES): Don't need calc.c etc under this. 27696 276972000-07-27 Torbjorn Granlund <tege@swox.com> 27698 27699 * mpn/ia64/gmp-mparam.h: New file. 27700 277012000-07-26 Torbjorn Granlund <tege@swox.com> 27702 27703 * demos/isprime.c: Handle any number of arguments and print 27704 classification for each. Add `-q' option for old behaviour. 27705 277062000-07-26 Kevin Ryde <kevin@swox.se> 27707 27708 * gmp.texi (Build Options): Mention djgpp stack size. 27709 (Notes for Package Builds): New section. 27710 (Compatibility with older versions): Update for 3.1, add mpf_get_prec. 27711 27712 * demos/factorize.c [__GLIBC__]: Don't declare random() under glibc. 27713 27714 * gmp.h (gmp_version): Add prototype and define. 27715 27716 * Makefile.am: Keep macos directory generated files up-to-date 27717 during development and on a "make dist". 27718 277192000-07-25 Torbjorn Granlund <tege@swox.com> 27720 27721 * mpn/hppa/gmp-mparam.h: Update threshold values from new `tune' run. 27722 27723 * mpn/pa64/gmp-mparam.h: Fill in values from `make tune' run. 27724 * mpn/pa64w/gmp-mparam.h: Likewise. 27725 * mpn/mips3/gmp-mparam.h: Likewise. 27726 27727 * tune/hppa2.asm: Fix typo in .level directive. 27728 27729 * configure.in: Add sparc64-*-linux* support (from Jakub Jelinek). 27730 * configure: Regenerate. 27731 27732 * mpn/sparc64/rshift.asm: Use %g5 instead of volatile stack frame area 27733 for return value (from Jakub Jelinek). 27734 * mpn/sparc64/lshift.asm: Likewise. 27735 27736 * mpf/get_prc.c: Revert Aug 8, 1996 change. 27737 27738 * version.c: No longer static. 27739 27740 * mpn/pa64/gmp-mparam.h: Only #define *_THRESHOLD if not already 27741 defined. 27742 * mpn/pa64w/gmp-mparam.h: Likewise. 27743 * mpn/arm/gmp-mparam.h: Likewise. 27744 * mpn/mips3/gmp-mparam.h: Likewise. 27745 277462000-07-25 Kevin Ryde <kevin@swox.se> 27747 27748 * INSTALL: It's "info -f ./gmp.info" to be sure of hitting the 27749 gmp.info in the current directory. 27750 27751 * Makefile.am (libmp_la_DEPENDENCIES): Add mpz/cmp.lo, for last 27752 mpz/powm.c fix. 27753 27754 * mpn/sparc64/addmul1h.asm, mpn/sparc64/submul1h.asm: Renamed from 27755 addmul_1h.asm, submul_1h.asm to avoid name conflicts on an 8.3 27756 filesystem. 27757 * mpn/sparc64/addmul_1.asm, mpn/sparc64/submul_1.asm, 27758 mpn/sparc64/mul_1.asm: Update include_mpn()s. 27759 277602000-07-24 Torbjorn Granlund <tege@swox.com> 27761 27762 * Update header of all files previously under the Library GPL 27763 to instead be under the Lesser GPL. 27764 27765 * COPYING.LIB: Now Lesser GPL. 27766 * demos/primes.c: Change license to GPL (was Library GPL). 27767 * demos/isprime.c: Change license to GPL (was Library GPL). 27768 27769 * gmp.h (error code enum): Add GMP_ERROR_BAD_STRING (currently unused). 27770 27771 * mpz/tests/t-mul.c: Default SIZE to a function of TOOM3_MUL_THRESHOLD. 27772 Improve error messages. Decrease reps. 27773 277742000-07-22 Kevin Ryde <kevin@swox.se> 27775 27776 * tune/speed.h: Decrease the amount of data used for gcd and powm 27777 measuring, to make the tune go a bit faster. 27778 277792000-07-21 Kent Boortz <kent@swox.se> 27780 27781 * macos/Asm*, macos/CmnObj, macos/Mp*: Directories no longer created 27782 from configure script, now part of dist. 27783 * macos/Makefile 27784 * macos/Makefile.cw 27785 * macos/config.h 27786 * macos/Asm/*.s 27787 New files and directories that is the output from configure. This way 27788 no Perl installation is required to build on MacOS, just MPW. 27789 * macos/configure: Added prefix '__g' to exported assembler labels. 27790 Changed to handle new m4 syntax instead of the old cpp syntax in asm. 27791 * macos/Makefile.in: Corrected 'clean' target, added 'distclean' 27792 and 'maintainer_clean'. Added "mpn/mp_bases.c" to build. 27793 * macos/README: Reflect the new build process without configure. 27794 Corrected the file structure for Apple MPW installation. 27795 277962000-07-21 Torbjorn Granlund <tege@swox.com> 27797 27798 * mpf/tests/t-muldiv.c: Relax error limit. Make precision depend 27799 on SIZE. Misc changes. 27800 27801 * configure: Regenerate. 27802 278032000-07-20 Kent Boortz <kent@swox.com> 27804 27805 * macos/Makefile.in: Removed hard coded targets, added special 27806 targets found in Makefile.am files. 27807 * macos/configure: Generate targets from top configure script and 27808 Makefile.am files. Made script runnable from Unix for testing. 27809 * macos/README: Notes about search paths for includes, contributed 27810 by Marco Bambini. 27811 * configure.in: Added comment about lines that the "macos/configure" 27812 script depend on. 27813 278142000-07-20 Torbjorn Granlund <tege@swox.com> 27815 27816 * mpz/powm.c (mpz_powm): After final mpz_redc call, subtract `mod' 27817 from result if it is greater than `mod'. 27818 278192000-07-19 Torbjorn Granlund <tege@swox.com> 27820 27821 * mpn/hppa/gmp-mparam.h: Fill in values from `make tune' run. 27822 * mpn/alpha/gmp-mparam.h: Likewise. 27823 * mpn/powerpc32/gmp-mparam.h: Likewise. 27824 27825 * tune/hppa.asm: New file. 27826 * tune/hppa2.asm: New file. 27827 * configure.in (SPEED_CYCLECOUNTER_OBJS): Set for hppa2*-*-* and 27828 hppa*-*-*. 27829 * tune/Makefile.am (EXTRA_DIST): Add hppa.asm and hppa2.asm. 27830 27831 * tune/speed.h (SPEED_ROUTINE_MPN_BZ_DIVREM_CALL): Declare `marker'; 27832 invoke TMP_FREE. 27833 27834 * mpn/hppa/hppa1_1/udiv_qrnnd.S: Use "%" instead of "'" for 27835 reloc/symbol delimiter. 27836 278372000-07-16 Torbjorn Granlund <tege@swox.com> 27838 27839 * mpn/powerpc64/gmp-mparam.h: Update with output from tune utility. 27840 * mpn/powerpc64/copyi.asm: New file. 27841 * mpn/powerpc64/copyd.asm: New file. 27842 278432000-07-16 Kevin Ryde <kevin@swox.se> 27844 27845 * tune/*: Add measuring for umul_ppmm and udiv_qrnnd. 27846 278472000-07-14 Kevin Ryde <kevin@swox.se> 27848 27849 * mpn/x86/k6/k62mmx: New directory. 27850 * configure.in (k6[23]*-*-*): Use it. 27851 * mpn/x86/k6/k62mmx/copyi.asm, mpn/x86/k6/k62mmx/copyd.asm: Move from 27852 mmx directory, improve code alignment a bit. 27853 * mpn/x86/k6/k62mmx/lshift.asm, mpn/x86/k6/k62mmx/rshift.asm: Ditto, 27854 and improve addressing modes for pre-CXT cores. 27855 * mpn/x86/x86-defs.m4 (Zdisp): Add an instruction. 27856 * mpn/x86/k6/mmx/lshift.asm, mpn/x86/k6/mmx/rshift.asm: New files, 27857 suiting plain K6. 27858 * mpn/x86/README, mpn/x86/k6/README: Updates. 27859 * mpn/x86/k6/mmx/*.asm: Update some comments. 27860 27861 * mpn/tests/Makefile.am: Use $(MAKE) in .asm rules, not "m". 27862 * tune/Makefile.am: Use $(EXEEXT) and libtool --config objdir, for 27863 the benefit of djgpp. 27864 27865 * */Makefile.in: Regenerate with patched automake that adds 27866 $(EXEEXT) to EXTRA_PROGRAMS. 27867 27868 * mpn/tests/try.c: Add #ifdef to SIGBUS, for the benefit of djgpp. 27869 * config.guess: Recognise pc:*:*:* as an x86, for djgpp. 27870 27871 * configure: Regenerate with patched autoconf to fix temp file 27872 ".hdr" which is invalid on a DOS 8.3 filesystem, and to fix two 27873 sed substitutes that clobbered a ":" in $srcdir (eg. a DOS drive 27874 spec). 27875 27876 * mpz/tests/io.c: Use one fp opened "w+", since separately opened 27877 input and output doesn't work on MS-DOS 6.21. 27878 27879 * tests/rand/Makefile.am (allprogs): Pseudo-target to build everything. 27880 (CLEANFILES): Add EXTRA_PROGRAMS and EXTRA_LTLIBRARIES. 27881 (manual-test, manual-bigtest): Add $(EXEEXT) to dependencies. 27882 27883 * tests/rand/*/Makefile.in: Regenerate with patched automake that adds 27884 $(EXEEXT) to EXTRA_PROGRAMS. 27885 278862000-07-13 Torbjorn Granlund <tege@swox.com> 27887 27888 * mpz/tests/t-root.c: Also test mpz_perfect_power_p. 27889 Generate `nth' so that there will be fewer trivial values. 27890 27891 * mpz/root.c: Reverse return value in tests for detecting root of +1 27892 and -1. 27893 27894 * mpz/perfpow.c: Use TMP_ALLOC interface. 27895 278962000-07-12 Torbjorn Granlund <tege@swox.com> 27897 27898 * mpz/perfpow.c (primes): Make it const. 27899 279002000-07-06 Kevin Ryde <kevin@swox.se> 27901 27902 * mpn/x86/k6/cross.pl: New file. 27903 27904 * mpn/x86/*/gmp-mparam.h: Updates to thresholds, conditionalize 27905 all _TIME defines. 27906 * mpn/x86/pentium/mmx/gmp-mparam.h: New file. 27907 * mpn/sparc64/gmp-mparam.h: Update thresholds. 27908 * mpn/sparc32/v9/gmp-mparam.h: Ditto. 27909 279102000-07-04 Kevin Ryde <kevin@swox.se> 27911 27912 * NEWS: Updates. 27913 * mpn/x86/*/README: Miscellaneous updates. 27914 27915 * tune/speed-ext.c: New file. 27916 * tune/Makefile.am: Add it. 27917 * tune/README: Updates. 27918 * tune/speed.h (SPEED_ROUTINE_MPN_DIVREM_2): Bug fixes. 27919 27920 * demos/calc.y,calclex.l: New files. 27921 * demos/calc.c,calc.h,calclex.c: New files, generated from .y and .l. 27922 * demos/Makefile.am: Add them. 27923 27924 * gmp.h (mpq_swap, mpf_swap): Add prototypes and defines. 27925 279262000-07-01 Kevin Ryde <kevin@swox.se> 27927 27928 * gmp.texi (ABI and ISA): New section, bringing together ABI notes. 27929 (Build Options): Add MPN_PATH, various updates. 27930 (Build Options): Add note on setting CFLAGS when setting CC. 27931 (Notes for Particular Systems): Add -march=pentiumpro problem. 27932 (Known Build Problems): Note on gmp-mparam.h for 64-bit generic C. 27933 (GMP Variable Conventions): Add some info on user defined functions. 27934 (Reporting Bugs): Minor rewording. 27935 27936 * configure.in (MPN_PATH): Renamed from mpn_path. 27937 27938 * gmp-impl.h (ULONG_MAX,ULONG_HIGHBIT,...,SHORT_MAX): New defines. 27939 * mp[zf]/tests/t-misc.c: Use them. 27940 27941 * mpbsd/tests/t-misc.c: New file. 27942 * mpbsd/tests/Makefile.am: Add it. 27943 27944 * Makefile.am (LIBGMP_LT_*, LIBMP_LT_*): Bump version info. 27945 * gmp.h (__GNU_MP_VERSION_*): Bump to 3.1. 27946 27947 * mpf/tests/Makefile.am (AUTOMAKE_OPTIONS): Add ansi2knr. 27948 27949 * Makefile.am (libmp_la_SOURCES): Add mp_set_fns.c, accidentally 27950 omitted in gmp 3.0.x. 27951 * gmp.texi (Custom Allocation): Note this is available in mpbsd, 27952 and some minor rewording. 27953 279542000-06-30 Torbjorn Granlund <tege@swox.com> 27955 27956 * demos/factorize.c (random): New function, defined conditionally. 27957 (factor_using_pollard_rho): Use it, not mrand48. 27958 27959 * mpn/cray/README: New file. 27960 279612000-06-30 Kevin Ryde <kevin@swox.se> 27962 27963 * mpn/x86/pentium/aorsmul_1.asm: Add MULFUNC_PROLOGUE. 27964 27965 * mpz/tests/t-jac.c: Test limbs on mpn_jacobi_base, not just ulongs. 27966 27967 * gmp-impl.h, mpn/tests/try.c, mpn/tests/spinner.c, tune/speed.c: 27968 Use config.h unconditionally, not under HAVE_CONFIG_H. 27969 27970 * demos/pexpr.c [__DJGPP__]: Patch by Richard Dawe to not use 27971 setup_error_handler on djgpp. 27972 27973 * tune/*: Locate data to help direct-mapped caches, add measuring 27974 of mpz_init/clear, mpz_add and mpz_bin_uiui, various cleanups. 27975 * configure.in (AC_CHECK_FUNCS): Add popen. 27976 279772000-06-29 Torbjorn Granlund <tege@swox.com> 27978 27979 * mpf/mul_2exp.c: Streamline criterion for whether to use mpn_lshift or 27980 mpn_rshift. Increase precision when exp is a multiple of 27981 BITS_PER_MP_LIMB primarily to make exp==0 be a noop. 27982 * mpf/div_2exp.c: Analogous changes. 27983 27984 * mpf/tests/t-dm2exp.c: Set u randomly in loop. Perform more 27985 mpf_mul_2exp testing. 27986 27987 * configure.in: Recognize cray vector processors with a broad `*'; 27988 move after alpha* not to match that. 27989 279902000-06-28 Kevin Ryde <kevin@swox.se> 27991 27992 * mpz/tests/io.c: Use a disk file, not a pipe, switch to ansi2knr 27993 style, switch from MP_INT to mpz_t, add a couple of error checks. 27994 * mpz/tests/Makefile.am (CLEANFILES): Add io.tmp, in case io.c fails. 27995 279962000-06-27 Torbjorn Granlund <tege@swox.com> 27997 27998 * mpf/tests/t-get_d.c: Be more lax about relative error, to handle Cray 27999 floating point format. 28000 28001 * mpq/tests/t-get_d.c: Decrease default reps to 1000. 28002 28003 * mpf/tests/t-conv.c: Correct type of `bexp'. 28004 28005 * configure.in (cray vector machines): Don't inherit gmp_cflags_cc. 28006 28007 * tune/Makefile.am (EXTRA_DIST): Delete sparc64.asm. 28008 28009 * configure.in (cray vector machines): Set extra_functions. 28010 28011 * mpn/cray/mulww.f: New file with vectorizing cray code. 28012 * mpn/cray/mulww.s: Generated from mulww.f. 28013 * mpn/cray/mul_1.c: New file. 28014 * mpn/cray/addmul_1.c: New file. 28015 * mpn/cray/submul_1.c: New file. 28016 * mpn/cray/add_n.c: New file. 28017 * mpn/cray/sub_n.c: New file. 28018 280192000-06-26 Kevin Ryde <kevin@swox.se> 28020 28021 * acinclude.m4 (GMP_CHECK_ASM_ALIGN_FILL_0x90): Fix so it actually 28022 detects solaris 2.6, and also suppress warning on solaris 2.8. 28023 * configure.in (SPEED_CYCLECOUNTER): Remove spurious "athlon" from 28024 sparc case. 28025 28026 * mpn/lisp/gmpasm-mode.el: Move keymap to the top of the docstring. 28027 280282000-06-21 Kevin Ryde <kevin@swox.se> 28029 28030 * mpn/generic/mul_n.c (mpn_kara_mul_n, mpn_kara_sqr_n): Use 28031 mp_size_t for n2. 28032 (mpn_toom3_mul_n, mpn_toom3_sqr_n): Use mp_size_t for size 28033 parameters and "l" variables. 28034 * gmp-impl.h (mpn_toom3_mul_n, mpn_toom3_sqr_n): Update prototypes. 28035 28036 * mpbsd/itom.c, mpbsd/sdiv.c: Add casts for correct handling of 28037 -0x80...00 on systems with sizeof(short)==sizeof(int). 28038 28039 * mpz/tests/t-misc.c: Move "bin" test from here ... 28040 * mpz/tests/t-bin.c: ... to here, and add a new (2k,k) test too. 28041 * mpz/tests/Makefile.am (check_PROGRAMS): Add t-bin. 28042 28043 * mpz/bin_ui.c [_LONG_LONG_LIMB]: Use mpn_divrem_1, since kacc is 28044 a limb not a ulong. 28045 * mpz/bin_uiui.c [_LONG_LONG_LIMB]: Ditto, and use mpn_mul_1 too, 28046 since nacc is a limb. 28047 28048 * mpf/tests/t-misc.c (check_mpf_set_si, check_mpf_cmp_si): 28049 New file, testing mpf_set_si, mpf_init_set_si, and mpf_cmp_si. 28050 * mpf/tests/Makefile.am (check_PROGRAMS): Add it. 28051 28052 * mpz/tests/t-misc.c (check_mpz_set_si, check_mpz_cmp_si): 28053 New tests, for mpz_set_si, mpz_init_set_si, and mpz_cmp_si. 28054 28055 * mpz/set_si.c, mpz/iset_si.c, mpz/cmp_si.c [_LONG_LONG_LIMB]: Fix 28056 handling of -0x80..00. 28057 * mpf/set_si.c, mpf/iset_si.c, mpf/cmp_si.c [_LONG_LONG_LIMB]: Ditto. 28058 280592000-06-19 Torbjorn Granlund <tege@swox.com> 28060 28061 * demos/primes.c: Properly handle arguments `m +n'. 28062 280632000-06-17 Torbjorn Granlund <tege@swox.com> 28064 28065 * config.sub: Recognize k5 and k6 with common pattern. 28066 28067 * mpq/tests/t-get_d.c: Also test mpq_set_d. Misc improvements. 28068 28069 * mpq/set_d.c: Special case 0.0. Don't call mpn_rshift with 0 count. 28070 Allocate correct amount of memory for numerator. Delete spurious 28071 ASSERT_ALWAYS(1). 28072 280732000-06-17 Kevin Ryde <kevin@swox.se> 28074 28075 * mpz/perfsqr.c: Fix so that zero is considered a perfect square. 28076 (Was wrongly calling mpn_perfect_square_p with size==0.) 28077 280782000-06-16 Kevin Ryde <kevin@swox.se> 28079 28080 * configure.in: Set k5*-*-* to use basic i386 code until there's 28081 something specific. Add path=x86 as a default for x86s. 28082 28083 * acinclude.m4 (GMP_CHECK_ASM_ALIGN_LOG): Generate 28084 ALIGN_LOGARITHMIC setting, not a full ALIGN definition. 28085 (GMP_CHECK_ASM_ALIGN_FILL_0x90): New test. 28086 * configure.in [x86-*-*]: Use GMP_CHECK_ASM_ALIGN_FILL_0x90. 28087 * mpn/asm-defs.m4 (ALIGN): New macro. 28088 * mpn/x86/x86-defs.m4 (ALIGN): Remove supplementary definition. 28089 28090 * tune/*: Plain "unsigned" for speed_cyclecounter. 28091 * configure.in: Use tune/sparcv9.asm for 32 and 64 bit modes. 28092 * tune/sparc64.asm: Remove file. 28093 280942000-06-15 Torbjorn Granlund <tege@swox.com> 28095 28096 * mpn/x86/k7/mmx/copyi.asm: Use `testb' instead of `test'. 28097 * mpn/x86/k7/mmx/copyd.asm: Likewise. 28098 28099 * mpn/x86/k7/mmx/lshift.asm: Avoid using `~' (Solaris as problems). 28100 * mpn/x86/k7/mmx/rshift.asm: Likewise. 28101 * mpn/x86/k6/aors_n.asm: Likewise. 28102 * mpn/x86/k7/aors_n.asm: Likewise. 28103 * mpn/x86/k7/mul_basecase.asm: Likewise. 28104 281052000-06-13 Torbjorn Granlund <tege@swox.com> 28106 28107 * tune/sparcv9.asm: Tune, deleting two instructions. 28108 28109 * tune/alpha.asm: Update to unified speed_cyclecounter. 28110 281112000-06-11 Kevin Ryde <kevin@swox.se> 28112 28113 * mpz/tests/reuse.c (FAIL): Add a K&R version. 28114 Use _PROTO on some typedefs. 28115 * mpz/tests/t-misc.c: Add gmp-impl.h for "const". 28116 28117 * configure.in: Rework mpn multi-function and optional files. 28118 Names standardized, no need for explicit declarations, all picked 28119 up in one $path traversal. 28120 * doc/configuration: Updates. 28121 28122 * tests/rand/t-rand.c (main): Change "usage" to work with K&R. 28123 281242000-06-10 Kevin Ryde <kevin@swox.se> 28125 28126 * mpn/x86/pentium/mmx/popham.asm, mpn/x86/p6/mmx/popham.asm, 28127 mpn/x86/p6/p3mmx/popham.asm, mpn/x86/p6/diveby3.asm: Add 28128 MULFUNC_PROLOGUE for correct HAVE_NATIVE_* matching. 28129 28130 * mpn/x86/x86-defs.m4 (cmov_bytes_tttn): Use eval() on expressions. 28131 (cmov_available_p): Switch to list CPUs which do have cmov. 28132 * mpn/x86/p6/sqr_basecase.asm, mpn/x86/k6/sqr_basecase.asm, 28133 mpn/x86/k7/sqr_basecase.asm: Use eval() for multiplication. 28134 * mpn/x86/README.family: Various updates. 28135 281362000-06-09 Kevin Ryde <kevin@swox.se> 28137 28138 * mpbsd/tests/allfuns.c (main): Call exit() instead of doing return. 28139 28140 * doc/tasks.html, doc/projects.html: Moved from projects directory. 28141 * doc/multiplication: New file. 28142 * Makefile.am (EXTRA_DIST): Remove projects, add doc. 28143 28144 * Makefile.am (libgmp_la_LIBADD, libmp_la_LIBADD): Remove 28145 unnecessary -lm. 28146 * INSTALL: Remove -lm from instructions. 28147 * demos/Makefile.am (qcn_LDADD): Add -lm. 28148 28149 * tune/*: Add measuring for mpn_divrem_2 and modlimb_invert, 28150 improve addsub_n. Switch to unified speed_cyclecounter. 28151 * configure.in: Update configs for speed_cyclecounter. 28152 28153 * gmp-impl.h (MP_LIMB_T_MAX, MP_LIMB_T_HIGHBIT): New macros. 28154 * mpn/generic/diveby3.c, mpn/generic/mul_n.c, mpn/generic/gcd.c, 28155 tune/speed.c, mpn/tests/ref.c: Use them. 28156 28157 * mpn/tests/spinner.c: Remove setitimer, just alarm is enough. 28158 * configure.in (AC_CHECK_FUNCS): Remove setitimer. 28159 * mpn/tests/x86call.asm: Start with junk in %eax, %ecx, %edx. 28160 * mpn/tests/ref.[ch] (refmpn_addsub_nc): New function. 28161 * mpn/tests/try.c: Add some support for mpn_addsub_nc. 28162 * mpn/tests/Makefile.am (EXTRA_PROGRAMS): Remove addsub_n and 28163 addsub_n_2 which don't currently build. 28164 * mpn/tests/copy.c: Test MPN_COPY_INCR, not __gmpn_copy. 28165 28166 * tests/rand/Makefile.am (libstat_la_LIBADD): Add -lm, no longer on 28167 libgmp.la. 28168 (findlc_LDADD): Use libstat.la. 28169 (AUTOMAKE_OPTIONS): Use ansi2knr. 28170 281712000-06-08 Torbjorn Granlund <tege@swox.com> 28172 28173 * configure.in (alpha*-*-osf*): Default `flavour' to ev6 for ev6 and 28174 higher. 28175 (alpha*-*-*): Likewise. 28176 (alpha*-*-osf*: gmp_optcflags_cc): Move -arch/-tune flags from 28177 gmp_xoptcflags_gcc. 28178 28179 * mpn/Makefile.am (TARG_DIST): Add pa64w. 28180 28181 * longlong.h: Wrap 64-bit hppa code in #ifndef LONGLONG_STANDALONE. 28182 281832000-06-07 Torbjorn Granlund <tege@swox.com> 28184 28185 * mpz/remove.c: Fail for `src' being zero. 28186 28187 * mpz/tests/reuse.c: Test more functions. 28188 (FAIL): New define. 28189 28190 * mpz/tests/t-powm.c: Loop during operand generation while they 28191 are mathematically ill-defined (used to just skip such tests). 28192 28193 * mpz/powm.c (mpz_redc): Clean up argument declarations. 28194 28195 * configure.in (gmp_cflags64_gcc): Don't add bogus -mWHAT option. 28196 (sparcv9-*-solaris2.[7-9]], gmp_cflags64_gcc): 28197 Inherit from previous gmp_cflags64_gcc; pass `-m64 -mptr64'. 28198 (ia64*-*-*): New. 28199 28200 * mpn/generic/dump.c: Make it work when an mp_limb_t is not `long'. 28201 28202 * mpf/set_prc.c: MPN_COPY => MPN_COPY_INCR. 28203 282042000-06-06 Torbjorn Granlund <tege@swox.com> 28205 28206 * mpn/generic/mul_n.c (mpn_toom3_mul_n, mpn_toom3_sqr_n): 28207 Use mpn_incr_u for final carry propagation. 28208 28209 * mpz/tests/t-gcd.c: Add calls to mpz_gcdext with argument t == NULL. 28210 28211 * mpz/tests/reuse.c: Major rewrite; test many more functions. 28212 28213 * mpz/powm_ui.c: When exp is 0, change res assign order in order 28214 to handle argument overlap. 28215 * mpz/powm.c: When exp is 0, change res assign order in order 28216 to handle argument overlap. Handle negative exp and mod arguments. 28217 28218 * mpz/gcdext.c: Rework code after mpn_gcdext call to handle 28219 argument overlap. 28220 28221 * mpz/fdiv_qr.c: Read dividend->_mp_size before calling mpz_tdiv_qr 28222 in order to handle argument overlap. 28223 * mpz/cdiv_qr.c: Likewise. 28224 28225 * mpf/tests/reuse.c: Fix typo that effectively disabled `dis_funcs' 28226 tests. Clean up test for mpf_ui_div. 28227 282282000-06-06 Kevin Ryde <kevin@swox.se> 28229 28230 * mpn/x86/p6/sqr_basecase.asm: New file. 28231 * mpn/x86/mod_1.asm: Avoid one conditional jump. 28232 * mpn/x86/p6/gmp-mparam.h: Update thresholds, #ifndef UMUL_TIME 28233 and UDIV_TIME, add COUNT_TRAILING_ZEROS_TIME. 28234 28235 * mp_minv_tab.c: New file. 28236 * Makefile.am (libgmp_la_SOURCES, libmp_la_SOURCES): Add it. 28237 * gmp-impl.h (modlimb_invert): New macro. 28238 * mpz/powm.c: Remove mpz_dmprepare, use modlimb_invert instead. 28239 * mpn/generic/bdivmod.c: Use modlimb_invert instead of a loop. 28240 * mpn/generic/gcd.c: Inline two small mpn_bdivmod calls, use 28241 MPN_COPY_INCR not MPN_COPY in one place. 28242 282432000-06-05 Torbjorn Granlund <tege@swox.com> 28244 28245 * mpf/tests/reuse.c (dsi_funcs): Add mpf_mul_2exp and mpf_div_2exp. 28246 (main): Clean up test for mpf_div_ui. 28247 28248 * mpf/mul_2exp.c: Correct criterion for whether to use mpn_lshift or 28249 mpn_rshift. MPN_COPY => MPN_COPY_INCR. Coerce the two assignments to 28250 r->_mp_size. 28251 28252 * mpf/div_2exp.c: Use mpn_rshift instead of mpn_lshift when overlap 28253 so requires. MPN_COPY => MPN_COPY_INCR. 28254 28255 * mpf/tests/t-dm2exp.c: Correct type of res_prec. 28256 282572000-06-04 Kevin Ryde <kevin@swox.se> 28258 28259 * mpz/bin_uiui.c: Fix result for n==0 and n==k. 28260 * mpz/bin_ui.c: Fix result for k>n, add support for n<0. 28261 * gmp.texi (Number Theoretic Functions): Update mpz_bin_ui to 28262 note n<0 is supported. 28263 28264 * mpz/tests/t-misc.c: New file. 28265 * mpz/tests/Makefile.am (check_PROGRAMS): Add it. 28266 282672000-05-31 Kevin Ryde <kevin@swox.se> 28268 28269 * tune/speed.* (FLAG_R_OPTIONAL): New option for routines, use on 28270 mpn_gcd_1 and mpn_mul_basecase. 28271 * tune/README: Update. 28272 28273 * tune/alpha.asm: New file, by Torbjorn. 28274 * tune/Makefile.am (EXTRA_DIST): Add it. 28275 * configure.in (alpha*-*-*): Use it. 28276 282772000-05-31 Linus Nordberg <linus@swox.se> 28278 28279 * doc/configuration: New file. 28280 282812000-05-30 Torbjorn Granlund <tege@swox.com> 28282 28283 * mpn/generic/mul_basecase.c: Call mpn_mul_2 and mpn_addmul_2 28284 if available. Don't include longlong.h. 28285 28286 * doc/isa_abi_headache: New file. 28287 282882000-05-30 Linus Nordberg <linus@swox.se> 28289 28290 * configure.in (NM): Use AC_PROG_NM rather than AC_CHECK_TOOL to 28291 find `nm'. (AC_PROG_NM comes with Libtool and is needed to get 28292 the `-B' option (BSD compatible output) included in $NM.) 28293 (AR): Use AC_CHECK_PROG rather than AC_CHECK_TOOL to find `ar'. 28294 (Now that NM isn't a cross compilation tool, don't give the 28295 impression that we know how to cross compile.) 28296 (CCAS): Remove spurious comment. 28297 28298 * gmp.texi (Notes for Particular Systems): Remove comment about 28299 using GNU `nm' on AIX since system nm now works. 28300 283012000-05-29 Torbjorn Granlund <tege@swox.com> 28302 28303 * mpn/power/mul_1.s: Remove [PR] from first word in function 28304 descriptor. 28305 * mpn/power/addmul_1.s: Likewise. 28306 * mpn/power/submul_1.s: Likewise. 28307 283082000-05-28 Kevin Ryde <kevin@swox.se> 28309 28310 * configure.in, tune/*: Change pentium rdtsc cycle scheme to 28311 HAVE_SPEED_CYCLECOUNTER and SPEED_CYCLECOUNTER_OBJS. 28312 * tune/pentium.asm: Renamed and converted from rdtsc.asm. 28313 * tune/sparcv9.asm: New file, by Torbjorn. 28314 * tune/sparc64.asm: New file. 28315 * tune/tuneup.c: Put a limit on gcdext search. 28316 28317 * gmp.h (mp_set_memory_functions): Add extern "C". 28318 * mp.h (__GNU_MP__): Bump to "3". 28319 * mpz/add.c,mul.c,powm.c,sub.c,sqrtrem.c,tdiv_qr.c [BERKELEY_MP]: 28320 Include mp.h for mpbsd compile. 28321 * mpz/gcd.c: Ditto, and remove _mpz_realloc declaration. 28322 28323 * gmp.texi (Integer Functions): Flatten @subsections into @sections. 28324 (Floating-point Functions): Ditto. 28325 (Integer Random Numbers): Split from miscellaneous as a sep section. 28326 (Installing GMP): Make nodes for the sections. 28327 Add more "@cindex"s. 28328 (Known Build Problems): Remove SunOS get_d problem, believed fixed. 28329 (Notes for Particular Systems): Remove HPPA note since now PIC. 28330 (References): URL for Jebelean. 28331 283322000-05-27 Torbjorn Granlund <tege@swox.com> 28333 28334 * mpn/pa64w: New directory, contents based on corresponding mpn/pa64 28335 files. 28336 * configure.in (hppa2.0w-*-*): New. 28337 * mpz/tests/io.c (_INCLUDE_POSIX_SOURCE): Define when __hpux before 28338 including stdio.h. 28339 * gmp-impl.h: Always define DItype and UDItype. 28340 283412000-05-27 Kevin Ryde <kevin@swox.se> 28342 28343 * tune/common.c (speed_measure): Correction to array sorting, 28344 better diagnostic when measuring fails. 28345 * tune/time.c: Add microsecond accurate getrusage method. 28346 28347 * tune/time.c (speed_cpu_frequency_processor_info): New function. 28348 * configure.in (AC_CHECK_FUNCS): Add processor_info. 28349 283502000-05-26 Linus Nordberg <linus@swox.se> 28351 28352 * gmp.texi (Installing GMP): Shared libraries work for AIX < 4.3 28353 if using GNU nm. 28354 283552000-05-26 Torbjorn Granlund <tege@swox.com> 28356 28357 * tune/tuneup.c (SIGNED_TYPE_MAX): Shift `-1' instead of `1' to 28358 avoid signed overflow. 28359 28360 * demos/pexpr.c (setup_error_handler): Don't call sigaltstack on 28361 Unicos. 28362 283632000-05-25 Torbjorn Granlund <tege@swox.com> 28364 28365 * insert-dbl.c: Work around GCC 2.8 bug. 28366 * extract-dbl.c: Likewise. 28367 28368 * config.sub: Allow i586, i686, i786 again. 28369 28370 * config.guess: Use X86CPU for lots more systems. 28371 283722000-05-25 Linus Nordberg <linus@swox.se> 28373 28374 * mpbsd/tests/dummy.c (main): Call exit() instead of doing return 28375 (some old SysV machines don't get this correct, I've heard.) 28376 283772000-05-25 Kevin Ryde <kevin@swox.se> 28378 28379 * mpf/iset_str.c: Initialize _mp_size and _mp_exp to 0, in case no 28380 digits in string, so it's the same as a separate init and set_str. 28381 283822000-05-24 Torbjorn Granlund <tege@swox.com> 28383 28384 * mpz/tests/reuse.c: Use mpz_random2 instead of mpz_random. 28385 28386 * mpz/divexact.c: Read pointers after reallocation. 28387 Compare `quot' and `den' instead of `qp' and `dp' in overlap check. 28388 Use MPN_COPY_INCR for copying from `np'. 28389 28390 (*-*-aix4.[3-9]*): Disable shared libs just for problematic AIX 28391 versions. 28392 * configure.in (*-cray-unicos*): Disable asm syntax checking; set 28393 compiler explicitly. 28394 * configure.in (hppa*-*-*): Remove code disabling shared libs. 28395 283962000-05-24 Linus Nordberg <linus@swox.se> 28397 28398 * acinclude.m4 (GMP_PROG_CC_WORKS): Don't report progress to user 28399 when doing the AIX specific test to avoid "nested output". 28400 284012000-05-22 Kevin Ryde <kevin@swox.se> 28402 28403 * mp.h (_PROTO): Copy from gmp.h, use on prototypes. 28404 Add extern "C" too. 28405 * mpbsd/tests/Makefile.am (AUTOMAKE_OPTIONS): Enable ansi2knr. 28406 * mpbsd/tests/allfuns.c: Don't execute mout, just link to it. 28407 (main): ANSI style definition. 28408 28409 * gmp-impl.h (MP_BASE_AS_DOUBLE): Change the expression to 28410 something that works on SunOS native cc. Seems to fix the 28411 mp*_get_d problems. 28412 28413 * mpn/tests/ref.c (refmpn_strip_twos): Use MPN_COPY_INCR. 28414 * mpn/tests/Makefile.am: Let .asm.o rules work with absolute $srcdir. 28415 284162000-05-21 Kevin Ryde <kevin@swox.se> 28417 28418 * mpn/x86/k7/sqr_basecase.asm: Replace file with K7 specific code. 28419 * mpn/x86/k7/README: Update. 28420 * mpn/x86/k7/gmp-mparam.h: Tune thresholds. 28421 (COUNT_TRAILING_ZEROS_TIME): New define. 28422 * mpn/x86/k6/gmp-mparam.h: Ditto. 28423 28424 * mpn/x86/pentium/mmx/popham.asm: New file (include_mpn of K6 version). 28425 * mpn/x86/p6/diveby3.asm: New file (include_mpn of P5 version). 28426 * mpn/x86/p6/mmx/popham.asm: New file (include_mpn of K6 version). 28427 * mpn/x86/p6/p3mmx/popham.asm: New file (include_mpn of K7 version). 28428 * configure.in (pentium3-*-*): Add p3mmx to $path. 28429 28430 * gmp.texi (Integer Arithmetic): Clarify mpz_jacobi op2; add 28431 mpz_*_kronecker_*. 28432 (Miscellaneous Integer Functions): Add mpz_odd_p and mpz_even_p. 28433 (Low-level Functions): Put mpn_divmod_1 with mpn_divrem_1 and note 28434 it's now a macro. 28435 (References): Add Henri Cohen. 28436 28437 * gmp.h (mpn_addmul_1c, mpn_divrem_1c, mpn_mod_1c, mpn_mul_1c, 28438 mpn_submul_1c): Add prototypes. 28439 (mpz_odd_p, mpz_even_p): New macros. 28440 28441 * mpn/asm-defs.m4 (m4wrap_prepend): New macro. 28442 (m4_error): Use it. 28443 (m4_not_for_expansion): Corrections to OPERATION symbols. 28444 More comments about variations between m4 versions. 28445 * mpn/x86/x86-defs.m4 (PROLOGUE): Use m4wrap_prepend (fixes error 28446 exit under BSD m4, previously m4_error printed the message but the 28447 exit code was 0). 28448 28449 * gmp.h (mpn_divmod_1): Change to a macro calling mpn_divrem_1. 28450 * mpn/generic/divrem_1.c: Move divmod_1.c code to here, make it 28451 static and call it __gmpn_divmod_1_internal. 28452 * mpn/generic/divmod_1.c: Remove file. 28453 * configure.in (gmp_mpn_functions): Remove divmod_1. 28454 * mpn/asm-defs.m4 (define_mpn): Remove divmod_1 and divmod_1c. 28455 * compat.c (mpn_divmod_1): Add compatibility function. 28456 * tune/*: Remove mpn_divmod_1 measuring (leave just divrem_1). 28457 28458 * acconfig.h (HAVE_NATIVE_mpn_*): Add some missing carry-in 28459 variants, remove divmod_1. 28460 28461 * mpn/x86/diveby3.asm: Use imul, update comments. 28462 28463 * demos/qcn.c: New file. 28464 * demos/Makefile.am (EXTRA_PROGRAMS): Add it. 28465 28466 * mpz/tests/t-jac.c: New file. 28467 * mpz/tests/Makefile.am (check_PROGRAMS): Add it. Enable ansi2knr. 28468 28469 * mpz/kronsz.c: New file. 28470 * mpz/kronuz.c: New file. 28471 * mpz/kronzs.c: New file. 28472 * mpz/kronzu.c: New file. 28473 * mpz/Makefile.am (libmpz_la_SOURCES): Add them. 28474 * Makefile.am (MPZ_OBJECTS): Add them. 28475 * gmp-impl.h (JACOBI_*, MPN_STRIP_LOW_ZEROS_NOT_ZERO): New macros. 28476 * gmp.h (mpz_*_kronecker_*): New defines and prototypes. 28477 28478 * mpn/generic/jacbase.c: New file. 28479 * mpn/generic/mod_1_rs.c: New file. 28480 * configure.in (gmp_mpn_functions): Add them. 28481 * gmp.h (mpn_jacobi_base, mpn_mod_1_rshift): New defines and 28482 prototypes. 28483 * longlong.h (COUNT_TRAILING_ZEROS_TIME): New define. 28484 * mpn/tests/ref.c (refmpn_mod_1_rshift): New function. 28485 * mpn/tests/try.c: Add mpn_mod_1_rshift. 28486 * tune/*: Add measuring for mpn_jacobi_base. 28487 28488 * acinclude.m4 (GMP_FINISH): Add ifdefs to allow multiple 28489 inclusion of config.m4. 28490 (GMP_PROG_M4): Put "good" message through to config.log. 28491 28492 * mpz/powm.c: Use a POWM_THRESHOLD for where redc stops. 28493 * tune/*: Add mpz_powm measuring, and tune POWM_THRESHOLD. 28494 * gmp-impl.h [TUNE_PROGRAM_BUILD] (POWM_THRESHOLD): Conditional 28495 redefinition for use when tuning. 28496 28497 * mpz/powm_ui.c: Use DIVIDE_BY_ZERO. 28498 28499 * mpz/iset_str.c: Initialize _mp_size to 0, in case no digits in 28500 string; this makes it the same as a separate init and set_str. 28501 285022000-05-20 Kevin Ryde <kevin@swox.se> 28503 28504 * mpn/asm-defs.m4: Note &,|,^ aren't bitwise in BSD m4 eval(). 28505 * mpn/x86/k6/sqr_basecase.asm: Use "%" not "&" in m4 eval()s. 28506 28507 * mpn/x86/x86-defs.m4 (Zdisp): Yet more instruction forms. 28508 285092000-05-19 Linus Nordberg <linus@swox.se> 28510 28511 * acinclude.m4 (GMP_CHECK_CC_64BIT): Don't use shell variable 28512 `ac_compile' for our own compile command string since other 28513 Autoconf macros may depend on it. 28514 285152000-05-19 Kevin Ryde <kevin@swox.se> 28516 28517 * mpn/generic/mul_n.c (mpn_toom3_mul_n, mpn_toom3_sqr_n): Fix 28518 carry propagation in final coefficient additions. 28519 285202000-05-18 Linus Nordberg <linus@swox.se> 28521 28522 * configure.in: Set NM before looking for compiler since 28523 GMP_CHECK_CC_64BIT needs it. 28524 28525 * acinclude.m4 (GMP_CHECK_CC_64BIT): Don't execute on target. 28526 (GMP_PROG_CC_FIND): Before checking if the compiler knows how to 28527 produce 64-bit code, verify that it works at all. The background 28528 is that /usr/ucb/cc on Solaris 7 successfully compiles in 64-bit 28529 mode but fails when doing final link. 28530 (GMP_PROG_CC_WORKS): Report to user what's happening. 28531 285322000-05-17 Linus Nordberg <linus@swox.se> 28533 28534 * config.guess: Use X86CPU for x86 Cygwin. 28535 285362000-05-16 Kevin Ryde <kevin@swox.se> 28537 28538 * mpn/x86/p6/mmx/divrem_1.asm: New file. 28539 * mpn/x86/p6/mmx/mod_1.asm: New file. 28540 * mpn/x86/p6/README: Update. 28541 * mpn/x86/divrem_1.asm: Update comments. 28542 * mpn/x86/mod_1.asm: Ditto. 28543 285442000-05-14 Kevin Ryde <kevin@swox.se> 28545 28546 * tune/speed.h: Run gcd functions on a set of data. 28547 28548 * mpn/tests/try.c: New file. 28549 * mpn/tests/try.h: New file. 28550 * mpn/tests/spinner.c: New file. 28551 * mpn/tests/trace.c: New file. 28552 * mpn/tests/x86call.asm: New file. 28553 * mpn/tests/x86check.c: New file. 28554 * mpn/tests/ref.c (refmpn_hamdist): Allow size==0. 28555 (refmpn_gcd): New function, and other additions supporting it. 28556 * mpn/tests/ref.h: More prototypes. 28557 * mpn/tests/Makefile.am: Add try program, use ansi2knr. 28558 28559 * mpn/x86/k7/mmx/popham.asm: New file. 28560 * mpn/x86/k6/mmx/popham.asm: New file. 28561 * mpn/x86/k6/sqr_basecase.asm: Unroll the addmul, for approx 1.3x 28562 speedup above 15 limbs. 28563 * mpn/x86/k7/README: Update. 28564 * mpn/x86/k6/README: Update, and add notes on plain K6 and pre-CXT 28565 K6-2 problems. 28566 * configure.in (k6*-*-*, athlon-*-*): Add popham. 28567 28568 * mpn/x86/pentium/diveby3.asm: New file. 28569 * mpn/x86/pentium/README: Update. 28570 28571 * gmp.texi (Installing GMP): Add note on bad OpenBSD 2.6 m4. 28572 (Reporting Bugs): Ask for config.m4 if asm file related. 28573 (I/O of Rationals): New section, add mpq_out_str. 28574 (References): Add url for on-line gcc manuals. 28575 A few node and menu updates. 28576 28577 * INSTALL: Better command line argument checking for test progs. 28578 Change MP -> GMP. 28579 28580 * configure.in (WANT_ASSERT, USE_STACK_ALLOC, HAVE_PENTIUM_RDTSC): 28581 Put descriptions here, not in acconfig.h. 28582 (CALLING_CONVENTIONS_OBJS): New AC_SUBST (for mpn/tests/try). 28583 (HAVE_CALLING_CONVENTIONS): New AC_DEFINE. 28584 (AC_CHECK_HEADERS): Add sys/time.h. 28585 (AC_CHECK_FUNCS): Add getpagesize, setitimer. 28586 (KARATSUBA_SQR_THRESHOLD): Strip trailing comments from the 28587 #define when passing through to config.m4. 28588 * acconfig.h (PACKAGE, VERSION, WANT_ASSERT, USE_STACK_ALLOC, 28589 HAVE_PENTIUM_RDTSC): No need for #undefs, autoheader gets them 28590 from configure.in. 28591 28592 * acinclude.m4 (GMP_PROG_M4): Check for broken OpenBSD 2.6 m4 28593 eval(), put messages into config.log. 28594 * mpn/asm-defs.m4: Add notes and test for OpenBSD 2.6 m4. 28595 28596 * mpq/out_str.c: New file. 28597 * mpq/Makefile.am (libmpq_la_SOURCES): Add it. 28598 * Makefile.am (MPQ_OBJECTS): Ditto. 28599 * gmp.h (mpq_out_str): New define and prototype. 28600 286012000-05-12 Kevin Ryde <kevin@swox.se> 28602 28603 * configure.in (CONFIG_TOP_SRCDIR): Fix to use $srcdir not 28604 $top_srcdir (which doesn't exist). 28605 * acinclude.m4 (GMP_C_ANSI2KNR): Fix setting U=_. 28606 * gmp-impl.h (mpn_com_n, MPN_LOGOPS_N_INLINE): Fix missing "do" 28607 (not currently used, probably no ill effect anyway). 28608 286092000-05-11 Torbjorn Granlund <tege@swox.com> 28610 28611 * randraw.c (lc): Major overhaul (pending rewrite). 28612 (_gmp_rand): Rewrite. 28613 286142000-05-08 Torbjorn Granlund <tege@swox.com> 28615 28616 * mpz/tests/convert.c: Call free via _mp_free_func. 28617 * mpf/tests/t-conv.c: Likewise. 28618 28619 * memory.c: Add code enabled for DEBUG that adds special patterns 28620 around allocated blocks. 28621 286222000-05-05 Linus Nordberg <linus@swox.se> 28623 28624 * gmp.texi (Miscellaneous Float Functions): Correct parameter list 28625 for mpf_urandomb(). 28626 28627 * configure.in: Invoke AC_REVISION. 28628 286292000-05-05 Kevin Ryde <kevin@swox.se> 28630 28631 * gmp.texi: Use @dircategory and @direntry. 28632 (Installing GMP): Clarification for --target, updates on SunOS 28633 problems. 28634 (Integer Arithmetic): Add mpz_mul_si. 28635 (Initializing Rationals): Add mpq_swap. 28636 (Assigning Floats): Add mpf_swap. 28637 (Low-level Functions): Add mpn_divexact_by3c, and details of what 28638 the calculation actually gives. 28639 (Low-level Functions): Note extra space needed by mpn_gcdext, 28640 clarify the details a bit. 28641 28642 * compat.c: New file, entry points for upward binary compatibility. 28643 (mpn_divexact_by3): Compatibility function. 28644 * Makefile.am (libgmp_la_SOURCES): Add compat.c. 28645 28646 * mpn/tests/ref.c: Rearrange macros for ansi2knr. 28647 (div1): Renamed from div to avoid library function. 28648 (refmpn_divexact_by3c, refmpn_gcd_1, refmpn_popcount, 28649 refmpn_hamdist): New functions. 28650 * mpn/tests/ref.h: Add extern "C", add new prototypes. 28651 28652 * gmp.h (gmp_randinit, etc): Add extern "C". 28653 (_mpq_cmp_ui): Fix prototype name from mpq_cmp_ui. 28654 (mpn_divexact_by3): Now a macro calling mpn_divexact_by3c. 28655 (mpn_divexact_by3c): New prototype and define. 28656 28657 * mpn/x86/diveby3.asm: Change to mpn_divexact_by3c. 28658 * mpn/x86/k6/diveby3.asm: Ditto. 28659 * mpn/generic/diveby3.c: Ditto. 28660 * mpn/asm-defs.m4: Ditto on the define_mpn. 28661 * acconfig.h (HAVE_NATIVE_mpn_divexact_by3c): New define. 28662 28663 * mpq/swap.c: New file, derived from mpz/swap.c. 28664 * mpf/swap.c: Ditto. 28665 * mpq/Makefile.am: Add swap.c. 28666 * mpf/Makefile.am: Ditto. 28667 * Makefile.am: Add two new "swap.lo"s. 28668 28669 * mpn/x86/k6/mmx/com_n.asm: Fix an addressing bug (fortunately 28670 this code hasn't been used anywhere yet). 28671 28672 * mpn/x86/k7/mmx/divrem_1.asm: New file. 28673 * mpn/x86/k7/mmx/mod_1.asm: New file. 28674 * mpn/x86/k7/diveby3.asm: New file. 28675 * mpn/x86/k7/README: Update. 28676 28677 * mpn/x86/k7/aorsmul_1.asm: Use new cmovCC, no object code change. 28678 * mpn/x86/k7/mul_basecase.asm: Ditto. 28679 * mpn/x86/p6/aorsmul_1.asm: Ditto. 28680 28681 * mpn/x86/x86-defs.m4 (defframe_empty_if_zero): Eval the argument. 28682 (cmovCC): New macros, replacing individual cmovCC_reg_reg forms. 28683 (Zdisp): Recognise more instructions. 28684 (shldl,etc): Use m4_instruction_wrapper(). 28685 (ASSERT, movl_text_address): New macros. 28686 28687 * mpn/asm-defs.m4: Add remarks on SunOS /usr/bin/m4 and new 28688 OpenBSD m4. 28689 (m4_assert_numargs_internal_check): Remove a spurious parameter. 28690 (m4_empty_if_zero): Eval the argument. 28691 (m4_assert, m4_assert_numargs_range, m4_config_gmp_mparam, 28692 m4_instruction_wrapper): New macros. 28693 286942000-05-04 Linus Nordberg <linus@swox.se> 28695 28696 * gmp.texi (Reporting Bugs): Be explicit about output from running 28697 a command. 28698 286992000-05-02 Torbjorn Granlund <tege@swox.com> 28700 28701 * mpn/generic/bz_divrem_n.c (mpn_bz_divrem_n): Handle non-zero return 28702 from first mpn_bz_div_3_halves_by_2 call. 28703 (mpn_bz_divrem_aux): Likewise. 28704 287052000-04-30 Kevin Ryde <kevin@swox.se> 28706 28707 * tune/* (GCD_ACCEL_THRESHOLD, GCDEXT_THRESHOLD): Tune these. 28708 28709 * mpn/generic/gcdext.c (GCDEXT_THRESHOLD): Rename from THRESHOLD, 28710 use with >=, adjust default to 17 accordingly. 28711 Use new *_SWAP macros. 28712 28713 * mpn/generic/gcd.c (GCD_ACCEL_THRESHOLD): Rename from 28714 ACCEL_THRESHOLD, use with >=, adjust default to 5 accordingly. 28715 Use new *_SWAP macros. 28716 28717 * mpf/get_str.c, mpf/set_str.c, mpf/sub.c, mpz/add.c, mpz/ior.c, 28718 mpz/and.c, mpz/sub.c, mpz/xor.c, mpz/ui_pow_ui.c, 28719 mpn/generic/mul.c: Use new *_SWAP macros. 28720 28721 * stack-alloc.h: Add extern "C" around prototypes. 28722 28723 * gmp-impl.h: (MP_PTR_SWAP, etc): New macros. 28724 (_mp_allocate_func, etc): Use _PROTO. 28725 [TUNE_PROGRAM_BUILD]: More changes in tune program build part. 28726 287272000-04-28 Torbjorn Granlund <tege@swox.com> 28728 28729 * mpn/pa64/add_n.s: Add `,entry' to export directive. 28730 * mpn/pa64/addmul_1.S, mpn/pa64/lshift.s, mpn/pa64/mul_1.S, 28731 mpn/pa64/rshift.s, mpn/pa64/sub_n.s, mpn/pa64/submul_1.S, 28732 mpn/pa64/umul_ppmm.S: Likewise. 28733 * mpn/hppa/hppa1_1/udiv_qrnnd.S: New name for udiv_qrnnd.s. 28734 Add PIC support. 28735 287362000-04-29 Kevin Ryde <kevin@swox.se> 28737 28738 * gmp-impl.h [TUNE_PROGRAM_BUILD] (TOOM3_MUL_THRESHOLD_LIMIT): New 28739 define. 28740 * mpn/generic/mul_n.c [TUNE_PROGRAM_BUILD] (mpn_mul_n): Use 28741 TOOM3_MUL_THRESHOLD_LIMIT, not a hard coded 500. 28742 28743 * memory.c: Use <stdlib.h> for malloc etc, and use _PROTO. 28744 * stack-alloc.c: Don't use C++ reserved word "this". 28745 * urandom.h: Put extern "C" around prototypes. 28746 * mpz/powm.c: Switch a couple of parameters to "const", which they 28747 are, to satisfy g++. 28748 28749 * randraw.c, stack-alloc.c, mpbsd/mout.c, mpbsd/mtox.c: Add casts to 28750 help g++. 28751 28752 * stack-alloc.c: Provide dual ANSI/K&R function definitions. 28753 * mpz/addmul_ui.c,get_d.c,inp_str.c,perfpow.c,powm.c,pprime_p.c, 28754 rrandomb.c,set_str.c,ui_pow_ui.c: Ditto. 28755 * mpf/integer.c,set_str.c: Ditto. 28756 * mpbsd/min.c,xtom.c: Ditto. 28757 * mpn/generic/bz_divrem_n.c,dump.c,gcd_1.c,get_str.c,hamdist.c, 28758 popcount.c,random.c,random2.c,set_str.c: Ditto. 28759 28760 * rand.c: Use <stdio.h> for NULL. 28761 * mpz/gcd_ui.c,gcdext.c,mul.c,perfpow.c,powm_ui.c,root.c,sqrt.c, 28762 sqrtrem.c: Ditto 28763 * mpf/sqrt.c,sqrt_ui.c: Ditto. 28764 * mpn/generic/perfsqr.c,sqrtrem.c: Ditto. 28765 28766 * gmp-impl.h (NULL, malloc, realloc, free): Don't define/declare. 28767 (extern "C"): Add around function prototypes. 28768 (mpn_kara_mul_n, mpn_kara_sqr_n, mpn_toom3_mul_n, mpn_toom3_sqr_n): 28769 Add prototypes. 28770 [TUNE_PROGRAM_BUILD] (FIB_THRESHOLD): Add necessary redefinitions for 28771 use by tune program. 28772 * mpn/generic/mul_n.c: Remove mpn_toom3_mul_n prototype. 28773 28774 * acinclude.m4 (GMP_C_ANSI2KNR): New macro. 28775 (GMP_CHECK_ASM_MMX, GMP_CHECK_ASM_SHLDL_CL): Fix to use 28776 $gmp_cv_check_asm_text which is what GMP_CHECK_ASM_TEXT sets. 28777 * configure.in (GMP_C_ANSI2KNR): Use this instead of AM_C_PROTOTYPES, 28778 for reasons described with its definition. 28779 28780 * demos/Makefile.am (ansi2knr): Use $(top_builddir) nor $(top_srcdir). 28781 28782 * mpz/fib_ui.c (FIB_THRESHOLD): Rename from FIB_THRES, for consistency. 28783 (FIB_THRESHOLD): Conditionalize so gmp-mparam.h can define a value. 28784 (mpz_fib_bigcase): Use >= FIB_THRESHOLD, same as main mpz_fib_ui. 28785 * tune/tuneup.c,Makefile.am (FIB_THRESHOLD): Tune this. 28786 28787 * configure.in (*-*-aix* gmp_m4postinc): Fix setting (don't overwrite 28788 a value just stored). 28789 287902000-04-26 Kevin Ryde <kevin@swox.se> 28791 28792 * mpn/sparc32/udiv_fp.asm: Use mpn_udiv_qrnnd macro. 28793 * mpn/sparc32/udiv_nfp.asm: Ditto. 28794 * mpn/sparc32/v8/supersparc/udiv.asm: Ditto. 28795 * mpn/sparc32/umul.asm: Name the function mpn_umul_ppmm. 28796 * mpn/sparc32/v8/umul.asm: Ditto. 28797 * mpn/powerpc32/umul.asm: Ditto. 28798 28799 * mpn/x86/syntax.h: Remove file, since now unused. 28800 28801 * configure.in (x86): Remove -DBROKEN_ALIGN and -DOLD_GAS 28802 previously used by .S files. 28803 (x86 extra_functions): Add udiv and umul. 28804 (GMP_PROG_M4): Use this instead of AC_CHECK_PROG(M4,m4,...) 28805 (HAVE_NATIVE_*): Loosen up the regexp to "PROLOGUE.*" so as to 28806 accept PROLOGUE_GP on alpha. 28807 28808 * acconfig.h (HAVE_NATIVE_mpn_umul_ppmm, udiv_qrnnd, invert_limb): 28809 New template defines. 28810 * mpn/asm-defs.m4 (mpn_umul_ppmm, mpn_udiv_qrnnd): New define_mpn()s. 28811 * longlong.h (umul_ppmm, udiv_qrnnd): Use a library version if 28812 it's available and an asm macro isn't. 28813 * gmp-impl.h (invert_limb): Ditto. 28814 28815 * gmp-impl.h (ASSERT_NOREALLOC): Not a good idea, remove it. 28816 28817 * acinclude.m4 (GMP_PROG_M4): New macro. 28818 288192000-04-25 Linus Nordberg <linus@swox.se> 28820 28821 * gmp.texi (Random State Initialization): Correct arguments to 28822 `gmp_randinit'. 28823 28824 * acinclude.m4 (GMP_VERSION): Change `eval' --> `m4_eval'. Fix 28825 from Kevin. 28826 * aclocal.m4: Regenerate. 28827 288282000-04-25 Kevin Ryde <kevin@swox.se> 28829 28830 * mpn/x86/aors_n.asm: Remove parentheses around an immediate that 28831 Solaris "as" doesn't like, change by Torbjorn. 28832 288332000-04-24 Kevin Ryde <kevin@swox.se> 28834 28835 * configure.in (AC_CHECK_FUNCS): Add strtoul. 28836 28837 * mpn/generic/mul_n.c [TUNE_PROGRAM_BUILD] (mpn_mul_n): Bigger 28838 array for karatsuba temporary space for tune program build. 28839 (mpn_toom3_sqr_n) Remove an unused variable. 28840 28841 * demos/Makefile.am (AUTOMAKE_OPTIONS): Add ansi2knr. 28842 Add "allprogs:" pseudo-target. 28843 * demos/factorize.c, demos/isprime.c: Switch to ANSI functions, 28844 rely on ansi2knr. 28845 28846 * gmp.texi (Getting the Latest Version of GMP): Add reference to 28847 ftp.gnu.org mirrors list. 28848 * INSTALL: Add arg count check to example programs. 28849 28850 * mpn/x86/*/*.asm: Convert to FORTRAN ... or rather to 28851 FORTRAN-style "C" commenting to support Solaris "as". 28852 * mpn/x86/x86-defs.m4: Ditto, and add another Zdisp insn. 28853 * mpn/asm-defs.m4 (C): Update comments. 28854 * mpn/x86/README.family: Add a note on commenting, remove 28855 description of .S files. 28856 28857 * mpn/sparc64/addmul_1.asm, mul_1.asm, submul_1.asm: Use 28858 include_mpn(). 28859 288602000-04-23 Torbjorn Granlund <tege@swox.com> 28861 28862 * config.sub: Merge with FSF version of April 23. 28863 28864 * mpn/powerpc32: Use dnl/C instead of `#' for comments. 28865 28866 * config.guess: Get "model" limit between pentium 2 and pentium3 right. 28867 Get rid of code determining `_' prefix; use double labels instead. 28868 * config.guess: Partially merge with FSF version of April 22. 28869 (Don't bring over NetBSD changes for now.) 28870 288712000-04-23 Kevin Ryde <kevin@swox.se> 28872 28873 * tune/Makefile.am, tune/README, tune/common.c, tune/rdtsc.asm, 28874 tune/speed.c, tune/speed.h, tune/time.c, tune/tuneup.c: New files. 28875 * tune/Makefile.in: New file, generated from Makefile.am. 28876 28877 * gmp-impl.h (ASSERT_NOREALLOC,TMP_ALLOC_LIMBS): New macros. 28878 [TUNE_PROGRAM_BUILD] Further mods for tune program builds. 28879 28880 * mpz/Makefile.am: Add -DOPERATION_$* for new mul_siui.c. 28881 Add rules to build mul_si and mul_ui from a common mul_siui.c. 28882 * mpz/mul_siui.c: New file, derived from and replacing mul_ui.c. 28883 * gmp.h (mpz_mul_si): New prototype and define. 28884 28885 * mpn/tests/*.c [__i386__] (CLOCK): Don't use floating point in 28886 CLOCK because cpp can't handle floats in #if's (TIMES is derived 28887 from CLOCK by default). 28888 28889 * mpn/asm-defs.m4 (include_mpn): New macro. 28890 (m4_assert_numargs) Changes to implementation. 28891 28892 * mpf/Makefile.am: Add -DOPERATION_$* for new integer.c. 28893 Remove explicit rules for floor.o etc. 28894 * mpf/integer.c: Use OPERATION_$* for floor/ceil/trunc. 28895 28896 * mpn/Makefile.am: Put "tests" in SUBDIRS. 28897 * mpn/tests/Makefile.am: New file providing rules to build test 28898 programs, nothing done in a "make all" or "make check" though. 28899 * mpn/tests/README: New file. 28900 28901 * acconfig.h (HAVE_PENTIUM_RDTSC): New define. 28902 28903 * configure.in (x86): Rearrange target cases. 28904 Add mulfunc aors_n and aorsmul_1 for x86 and pentium (now all x86s). 28905 Remove asm-syntax.h generation not needed. 28906 Remove now unused family=x86. 28907 (sparc) Remove unused family=sparc. 28908 (HAVE_PENTIUM_RDTSC) New AC_DEFINE and AM_CONDITIONAL. 28909 (AM_C_PROTOTYPES) New test, supporting ansi2knr. 28910 (AC_CHECK_HEADERS) Add getopt.h, unistd.h and sys/sysctl.h for 28911 tune progs. 28912 (AC_CHECK_FUNCS) Add getopt_long, sysconf and sysctlbyname for 28913 tune progs. 28914 (config.m4 CONFIG_TOP_SRCDIR) Renamed from CONFIG_SRCDIR. 28915 (config.m4 asm-defs.m4) Use CONFIG_TOP_SRCDIR and include(). 28916 (gmp_m4postinc) Use include_mpn(). 28917 (gmp_links) Omit asm-defs.m4/asm.m4 and gmp_m4postinc's. 28918 (MULFUNC_PROLOGUE) Fix regexps so all functions get AC_DEFINE'd. 28919 (PROLOGUE) Ditto (native copyi and copyd were unused in gmp 3). 28920 (KARATSUBA_SQR_THRESHOLD) Copy from gmp-mparam.h into config.m4. 28921 (AC_OUTPUT) Add tune/Makefile, mpn/tests/Makefile. 28922 28923 * Makefile.am (AUTOMAKE_OPTIONS): Add ansi2knr. 28924 (SUBDIRS): Add tune, reorder directories. 28925 (MPZ_OBJECTS): Add mpz/mul_si.lo. 28926 (libmp_la_SOURCES): Use this for top-level objects, not .lo's. 28927 * ansi2knr.c, ansi2knr.1: New files, provided by automake. 28928 28929 * mpn/x86/aors_n.asm: Convert add_n.S and sub_n.S to a 28930 multi-function aors_n.asm, no object code change. 28931 * mpn/x86/pentium/aors_n.asm: Ditto. 28932 * mpn/x86/aorsmul_1.asm: Ditto for addmul/submul. 28933 * mpn/x86/pentium/aorsmul_1.asm: Ditto. 28934 28935 * mpn/x86/lshift.asm, mpn/x86/mul_1.asm, mpn/x86/mul_basecase.asm, 28936 mpn/x86/rshift.asm: Convert from .S, no object code change. 28937 * mpn/x86/pentium/lshift.asm, mpn/x86/pentium/mul_1.asm, 28938 mpn/x86/pentium/mul_basecase.asm, mpn/x86/pentium/rshift.asm: Ditto. 28939 28940 * gmp.texi (Reporting Bugs): Itemize the list of things to include. 28941 (Miscellaneous Float Functions): Correct typo in mpf_ceil etc 28942 argument types. 28943 Change @ifinfo -> @ifnottex for benefit of makeinfo --html. 28944 Remove unnecessary @iftex's around @tex. 28945 289462000-04-22 Torbjorn Granlund <tege@swox.com> 28947 28948 * config.guess: Generalize x86 cpu determination code. 28949 Now works on Solaris. 28950 28951 * mpz/nextprime.c: Rewrite still disabled code. 28952 28953 * configure.in: Specifically match freebsd[3-9]. 28954 289552000-04-21 Torbjorn Granlund <tege@swox.com> 28956 28957 * rand.c: Call mpz_clear for otherwise leaking mpz_t. 28958 28959 * mpz/pprime_p.c (mpz_probab_prime_p): Merge handling of negative 28960 n into code for handling small positive n. Merge variables m and n. 28961 After dividing, simply call mpz_millerrabin. 28962 (isprime): Local variables now use attribute `long'. 28963 (mpz_millerrabin): New static function, based on code from 28964 mpz_probab_prime_p. 28965 (millerrabin): Now simple workhorse for mpz_millerrabin. 28966 289672000-04-19 Torbjorn Granlund <tege@swox.com> 28968 28969 * gmp-impl.h: Fix parenthesis error in test for __APPLE_CC__. 28970 289712000-04-18 Linus Nordberg <linus@swox.se> 28972 28973 * NEWS: Add info about shared libraries. Remove reference to 28974 gmp_randinit_lc. 28975 289762000-04-17 Torbjorn Granlund <tege@swox.com> 28977 28978 * Version 3.0 released. 28979 28980 * mpn/arm/add_n.S: New version from Robert Harley. 28981 * mpn/arm/addmul_1.S: Likewise. 28982 * mpn/arm/mul_1.S: Likewise. 28983 * mpn/arm/sub_n.S: Likewise. 28984 28985 * gmp.h (__GNU_MP_VERSION_PATCHLEVEL): Now 0. 28986 289872000-04-17 Linus Nordberg <linus@swox.se> 28988 28989 * configure.in (hppa2.0*-*-*): Pass `+O3' to cc/c89 in 64-bit mode 28990 to avoid compiler bug. 28991 (ns32k*-*-*): Fix typo in path. Change by Kevin. 28992 (alpha*-*-osf*): New case. Pass assembly flags for architecture 28993 to gcc. 28994 (alpha*-*-*): Don't bother searching for cc. 28995 * configure: Regenerate. 28996 28997 * Makefile.am (EXTRA_DIST): Add `macos', `.gdbinit'. 28998 * Makefile.in: Regenerate. 28999 * mpn/Makefile.am (EXTRA_DIST): Add `m88k', `lisp'. 29000 * mpn/Makefile.in: Regenerate. 29001 290022000-04-16 Kevin Ryde <kevin@swox.se> 29003 29004 * README: Updates, and don't duplicate the example in INSTALL. 29005 * INSTALL: Minor updates. 29006 * gmp.texi (Installing MP): Minor edits, restore CC/CFLAGS description. 29007 290082000-04-16 Linus Nordberg <linus@swox.se> 29009 29010 * configure.in (*-*-cygwin*): Select BSD_SYNTAX to avoid 29011 .type/.size in PROLOGUE for ELF_SYNTAX. Override ALIGN definition 29012 from x86/syntax.h. 29013 (gmp_xoptcflags_${CC}): New set of variables, indicating 29014 ``exclusive optional cflags''. 29015 (most sparcs): Use gmp_xoptcflags instead of gmp_optcflags to 29016 ensure that we pass CPU type to older gcc. 29017 (CFLAGS): CFLAGS on the command line was spoiled. 29018 * configure: Regenerate. 29019 290202000-04-16 Linus Nordberg <linus@swox.se> 29021 29022 * configure.in: Invoke AC_PROG_LIBTOOL directly. 29023 29024 * acinclude.m4 (GMP_PROG_CC_FIND): Quote source variable when 29025 setting CC64 and CFLAGS64. 29026 (GMP_PROG_CC_SELECT): Cache result. 29027 (GMP_PROG_LIBTOOL): Remove. 29028 29029 * aclocal.m4: Regenerate. 29030 * configure: Regenerate. 29031 290322000-04-16 Linus Nordberg <linus@swox.se> 29033 29034 * tests/rand/t-rand.c (main): Add non-ANSI function declaration. 29035 Don't use `const'. 29036 290372000-04-16 Torbjorn Granlund <tege@swox.com> 29038 29039 * mpn/generic/dump.c: Suppress output of leading zeros. 29040 29041 * mpz/inp_str.c: Fix memory leakage. 29042 29043 * mpz/tests/reuse.c (dss_func_division): Add a final 1. 29044 29045 * longlong.h (alpha count_leading_zeros): Wrap in __MPN. 29046 * mpn/alpha/cntlz.asm: Use __gmpn prefix (by means of __MPN). 29047 29048 * longlong.h (__umul_ppmm, __udiv_qrnnd): Wrap in __MPN. 29049 * mpn/alpha/udiv_qrnnd.S: Use __gmpn prefix. 29050 * mpn/hppa/udiv_qrnnd.s: Likewise. 29051 * mpn/hppa/hppa1_1/udiv_qrnnd.s: Likewise. 29052 * mpn/pa64/udiv_qrnnd.c: Likewise (by means of __MPN). 29053 * mpn/pa64/umul_ppmm.S: Likewise. 29054 * mpn/sparc32/udiv_fp.asm: Likewise (by means of MPN). 29055 * mpn/sparc32/udiv_nfp.asm: Likewise (by means of MPN). 29056 * mpn/sparc32/v8/supersparc/udiv.asm: Likewise (by means of MPN). 29057 29058 * mpn/generic/tdiv_qr.c: Work around gcc 2.7.2.3 i386 register handling 29059 bug. 29060 29061 * mpn/generic/tdiv_qr.c: Use udiv_qrnnd instead of mpn_divrem_1 29062 when computing appropriate quotient; mpn_divrem_1 writes too 29063 many quotient limbs. 29064 29065 * mpn/asm-defs.m4: invert_normalized_limb => invert_limb. 29066 * mpn/alpha/invert_limb.asm: mpn_invert_normalized_limb => 29067 mpn_invert_limb. 29068 * gmp.h: Likewise. 29069 * gmp-impl.h (alpha specific): invert_normalized_limb => invert_limb; 29070 wrap with __MPN. 29071 * longlong.h (alpha udiv_qrnnd): Likewise. 29072 290732000-04-16 Kevin Ryde <kevin@swox.se> 29074 29075 * gmp.h (mp_set_memory_functions,mp_bits_per_limb,gmp_errno): Add 29076 #defines so the library symbols are __gmp_*. 29077 * errno.c: Include gmp.h. 29078 * gmp-impl.h (_mp_allocate_func,etc): Add #defines to __gmp_*. 29079 (__clz_tab): New #define to __MPN(clz_tab). 29080 * stack-alloc.c (__gmp_allocate_func,etc): Change from _mp_*. 29081 29082 * Makefile.am (libmp_la_DEPENDENCIES): Add some mpz files needed 29083 for new mpz_powm (pow in libmp). 29084 (EXTRA_DIST): Add projects directory. 29085 29086 * mpn/*: Change __mpn to __gmpn. 29087 * gmp.h (__MPN): Ditto. 29088 * stack_alloc.c,stack-alloc.h: Change __tmp to __gmp_tmp. 29089 29090 * mpn/generic/sb_divrem_mn.c (mpn_sb_divrem_mn): Avoid gcc 2.7.2.3 29091 i386 register handling bug (same as previously in mpn_divrem_classic). 29092 29093 * mpn/generic/divrem.c: Now contains mpn_divrem, which is not an 29094 internal function, so remove warning comment. 29095 29096 * gmp.texi (Compatibility with Version 2.0.x): Source level only. 29097 290982000-04-16 Linus Nordberg <linus@swox.se> 29099 29100 * configure.in (hppa1.0*): Prefer c89 to cc. 29101 * configure: Regenerate. 29102 291032000-04-15 Linus Nordberg <linus@swox.se> 29104 29105 * configure.in: If `mpn_path' is set by user on configure command 29106 line, use that as path. 29107 * configure: Regenerate. 29108 291092000-04-15 Linus Nordberg <linus@swox.se> 29110 29111 * configure.in (hppa2.0*): Use path "hppa/hppa1_1 hppa" if no 29112 64-bit compiler was found. 29113 * configure: Regenerate. 29114 291152000-04-15 Linus Nordberg <linus@swox.se> 29116 29117 * configure.in: Honor `CC' and `CFLAGS' set by user on configure 29118 command line. 29119 * acinclude.m4: (GMP_PROG_CC_SELECT): Set CFLAGS if not set already. 29120 * aclocal.m4: Regenerate. 29121 * configure: Regenerate. 29122 291232000-04-15 Linus Nordberg <linus@swox.se> 29124 29125 * acinclude.m4 (GMP_PROG_CC_FIND): Remove debug output. Remove 29126 commented out code. 29127 * aclocal.m4: Regenerate. 29128 * configure: Regenerate. 29129 29130 * configure.in: Make all `-mcpu' options to gcc optional. 29131 * configure: Regenerate. 29132 29133 * tests/rand/Makefile.am: Don't do anything for target 'all'. 29134 * tests/rand/Makefile.in: Regenerate. 29135 291362000-04-15 Kevin Ryde <kevin@swox.se> 29137 29138 * README: Small updates. 29139 * NEWS: Add some things about 3.0. 29140 29141 * mpz/Makefile.am (EXTRA_DIST): Remove dmincl.c. 29142 29143 * Makefile.am: Use -version-info on libraries, not -release. 29144 29145 * mpz/tdiv_qr.c: Add mdiv function header #ifdef BERKELEY_MP. 29146 * mpbsd/Makefile.am: Use mpz/tdiv_qr.c, not mdiv.c. 29147 * Makefile.am (MPBSD_OBJECTS): Change mdiv.lo to tdiv_qr.lo. 29148 (libmp_la_DEPENDENCIES): Add mp_clz_tab.lo. 29149 * mpbsd/mdiv.c: Remove file. 29150 29151 * config/mt-linux,mt-m68k,mt-m88110,mt-ppc,mt-ppc64-aix,mt-pwr, 29152 mt-sprc8-gcc,mt-sprc9-gcc,mt-supspc-gcc,mt-vax,mt-x86, 29153 mpn/config/mt-pa2hpux,mt-sprc9,t-oldgas,t-ppc-aix,t-pwr-aix: 29154 Remove configure fragments not used since change to autoconf. 29155 29156 * mpn/generic/bz_divrem_n.c,sb_divrem_mn.c: Add comment that 29157 internal functions are changeable and shouldn't be used directly. 29158 291592000-04-15 Linus Nordberg <linus@swox.se> 29160 29161 * configure.in: Remove debug output. 29162 * configure: Regenerate. 29163 291642000-04-15 Torbjorn Granlund <tege@swox.com> 29165 29166 * mpn/generic/tdiv_qr.c: Don't use alloca directly. 29167 29168 * mpz/tdiv_qr.c: Fix typo. 29169 * mpz/tdiv_r.c: Fix typo. 29170 * mpz/tdiv_q.c: Fix typo. 29171 29172 * configure.in: Disable -march=pentiumpro due to apparent compiler 29173 problems. 29174 29175 * mpz/powm.c: Replace with new code from Paul Zimmermann. 29176 29177 * mpz/tdiv_q.c: Remove debug code. 29178 29179 * mpn/generic/divrem.c: Remove C++ style `//' commented-out code. 29180 * mpn/generic/sb_divrem_mn.c: Likewise. 29181 291822000-04-14 Torbjorn Granlund <tege@swox.com> 29183 29184 * mpz/cdiv_q.c: Change temp allocation for new requirements of 29185 mpz_tdiv_qr. 29186 * mpz/fdiv_q.c: Likewise. 29187 29188 * mpn/sparc64/gmp-mparam.h: Set up parameters for TOOM3. 29189 29190 * mpz/dmincl.c: Delete file. 29191 * mpz/tdiv_qr.c: Rewrite using mpn_tdiv_qr. 29192 * mpz/tdiv_r.c: Likewise. 29193 * mpz/tdiv_q.c: Likewise. 29194 29195 * mpn/generic/tdiv_qr.c: New file. 29196 * mpn/generic/bz_divrem_n.c: New file. 29197 * mpn/generic/sb_divrem_mn.c: New file. 29198 29199 * gmp-impl.h (MPZ_REALLOC): New macro. 29200 (mpn_sb_divrem_mn): Declare. 29201 (mpn_bz_divrem_n): Declare. 29202 (mpn_tdiv_qr): Declare. 29203 29204 * configure.in (gmp_mpn_functions): Delete divrem_newt and divrem_1n; 29205 add tdiv_qr, bz_divrem_n, and sb_divrem_mn. 29206 * mpn/generic/divrem_newt.c: Delete file. 29207 * mpn/generic/divrem_1n.c: Delete file. 29208 29209 * gmp.h (mpn_divrem_newton): Remove declaration. 29210 (mpn_divrem_classic): Remove declaration. 29211 29212 * gmp.h (mpn_divrem): Remove function definition. 29213 * mpn/generic/divrem.c: Replace mpn_divrem_classic with a 29214 mpn_divrem wrapper. 29215 292162000-04-14 Kevin Ryde <kevin@swox.se> 29217 29218 * mpf/dump.c, mpz/dump.c, mpn/generic/dump.c, 29219 mpn/generic/divrem.c, mpn/generic/divrem_1n.c, 29220 mpn/generic/divrem_2.c, mpn/generic/divrem_newt.c, 29221 mpn/generic/mul.c, mpn/generic/mul_basecase.c, 29222 mpn/generic/mul_n.c, mpn/generic/sqr_basecase.c, 29223 mpn/generic/udiv_w_sdiv.c: Add comment that internal functions are 29224 changeable and shouldn't be used directly. 29225 29226 * mpq/div.c: Use DIVIDE_BY_ZERO (previously didn't get an 29227 exception on zero divisor). 29228 29229 * mpf/tests/t-get_d.c, mpz/tests/reuse.c: Add K&R function 29230 definitions. 29231 * mpz/tests/t-2exp.c: Don't use ANSI-ism 2ul. 29232 29233 * gmp.texi (Installing MP): Build problem notes for GSYM_PREFIX 29234 and ranlib on native SunOS. 29235 Particular systems notes about AIX and HPPA shared libraries 29236 disabled. 29237 (MP Basics): Add that undocumented things shouldn't be used. 29238 (Introduction to MP): Add to CPUs listed. 29239 29240 * acinclude.m4 (GMP_CHECK_ASM_UNDERSCORE): Don't depend on C 29241 having "void". 29242 292432000-04-13 Linus Nordberg <linus@swox.se> 29244 29245 * mpn/pa64/udiv_qrnnd.c (__udiv_qrnnd64): Add K&R function 29246 definition. 29247 29248 * configure.in: Disable shared libraries for hppa*. 29249 (mips-sgi-irix6.*): Fix flags for 64-bit gcc. 29250 (hppa2.0*-*-*): Prefer c89 to cc. 29251 * configure: Regenerate. 29252 29253 * gmp.h (gmp_randalg_t): Remove comma after last element. 29254 29255 * tests/rand/t-rand.c: Add copyright notice. 29256 292572000-04-13 Kevin Ryde <kevin@swox.se> 29258 29259 * mpn/generic/mul_n.c, mpn/generic/gcdext.c, mpz/nextprime.c, 29260 mpz/remove.c, mpz/root.c: Add K&R function definitions. 29261 * mpz/rrandomb.c: Fix typo in K&R part. 29262 * stack-alloc.c: Add K&R style function pointer declarations. 29263 29264 * mpz/root.c: Use SQRT_OF_NEGATIVE on even roots of negatives. 29265 Use DIVIDE_BY_ZERO on a "zero'th" root. 29266 29267 * configure: Regenerate with autoconf backpatched to fix --srcdir 29268 absolute path wildcards that bash doesn't like, change by Linus. 29269 29270 * gmp.texi (Integer Arithmetic): Document mpz_nextprime. 29271 (Miscellaneous Integer Functions): Fix mpz_fits_* formatting. 29272 (Installing MP): Comment-out CC and CFLAGS description. 29273 292742000-04-13 Linus Nordberg <linus@swox.se> 29275 29276 * rand.c (gmp_randinit): Don't combine va_alist with ordinary 29277 arguments for non STDC. 29278 292792000-04-13 Torbjorn Granlund <tege@swox.com> 29280 29281 * mpz/nextprime.c: Use proper names of new random types and functions. 29282 29283 * mpz/rrandomb.c: New file. 29284 * mpz/Makefile.am: List it. 29285 * mpz/Makefile.in: Regenerate. 29286 * Makefile.am: Here too. 29287 * Makefile.in: Regenerate. 29288 * gmp.h: Declare mpz_rrandomb. 29289 292902000-04-12 Linus Nordberg <linus@swox.se> 29291 29292 * Makefile.am, demos/Makefile.am, mpbsd/Makefile.am, 29293 mpbsd/tests/Makefile.am, mpf/Makefile.am, mpf/tests/Makefile.am, 29294 mpn/Makefile.am, mpq/Makefile.am, mpq/tests/Makefile.am, 29295 mpz/Makefile.am, mpz/tests/Makefile.am, tests/Makefile.am, 29296 tests/rand/Makefile.am (AUTOMAKE_OPTIONS): Add 'no-dependencies'. 29297 29298 * Makefile.in, demos/Makefile.in, mpbsd/Makefile.in, 29299 mpbsd/tests/Makefile.in, mpf/Makefile.in, mpf/tests/Makefile.in, 29300 mpn/Makefile.in, mpq/Makefile.in, mpq/tests/Makefile.in, 29301 mpz/Makefile.in, mpz/tests/Makefile.in, tests/Makefile.in, 29302 tests/rand/Makefile.in: Regenerate. 29303 293042000-04-12 Linus Nordberg <linus@swox.se> 29305 29306 * randlc.c (gmp_randinit_lc): Disable function. 29307 * gmp.texi (Random State Initialization): Remove gmp_randinit_lc. 29308 29309 * acinclude.m4 (GMP_CHECK_CC_64BIT): Compiling an empty main 29310 successfully with `-n32' will have to suffice on irix6. 29311 * aclocal.m4: Regenerate. 29312 29313 * configure.in (sparc): Don't pass -D_LONG_LONG_LIMB to compiler. 29314 (mips-sgi-irix6.*): Use compiler option `-n32' rather than `-64' 29315 for 64-bit `cc'. Add options for gcc. 29316 * configure: Regenerate. 29317 29318 * mpf/urandomb.c (mpf_urandomb): Add third parameter 'nbits'. If 29319 'nbits' doesn't make even limbs, shift up result before 29320 normalizing. 29321 29322 * gmp.h (mpf_urandomb): Add parameter to prototype. 29323 29324 * mpf/urandom.c: Rename file to ... 29325 * mpf/urandomb.c: ... this. 29326 * Makefile.am (MPF_OBJECTS): Change urandom.lo --> urandomb.lo. 29327 * Makefile.in: Regenerate. 29328 * mpf/Makefile.am (libmpf_la_SOURCES): Change urandom.c --> urandomb.c. 29329 * mpf/Makefile.in: Regenerate. 29330 29331 * config.in: Regenerate for HAVE_DECL_OPTARG. 29332 29333 * randraw.c (_gmp_rand): Fix bug with _LONG_LONG_LIMB. 29334 (lc): Change return type. 29335 Use one temporary storage instead of two. 29336 Handle seed of size 0. 29337 Avoid modulus operation in some cases. 29338 Abort if M is not a power of 2. 29339 Fix bug with 64-bit limbs. 29340 Fix bug with small seed, small A and large M. 29341 29342 * tests/rand/gen.c (main): Include gmp.h. Remove macros MIN, MAX. Add 29343 option '-q'. Don't demand argument N. Change parameters in call 29344 to mpf_urandomb. 29345 29346 * tests/rand/t-rand.c: New file for testing random number generation. 29347 29348 * tests/rand/Makefile.am: Run t-rand for 'make check'. 29349 (test, bigtest): Rename to manual-test, manual-bigtest. 29350 * tests/rand/Makefile.in: Regenerate. 29351 293522000-04-12 Kevin Ryde <kevin@swox.se> 29353 29354 * gmp-impl.h: Include config.h before TMP_ALLOC, so 29355 --disable-alloca works. 29356 29357 * mpbsd/Makefile.am: Don't recompile top-level sources here. 29358 * Makefile.am (libmp_la_DEPENDENCIES): Put objects here instead, 29359 add errno.lo and stack-alloc.lo. 29360 29361 * mpn/asm-defs.m4: Add a test and message for the unsuitable SunOS m4. 29362 * gmp.texi (Installing MP): Update note on SunOS m4 failure. 29363 29364 * acconfig.h: Add copyright notice using @TOP@. 29365 29366 * stack-alloc.c: Use _mp_allocate_func, not malloc. 29367 * gmp.texi (Installing MP): Note this under --disable-alloca. 29368 29369 * gmp.texi (Comparison Functions): mpz_cmp_abs => mpz_cmpabs. 29370 (Integer Arithmetic): mpz_prime_p not yet implemented, comment out. 29371 (Float Arithmetic): mpf_pow_ui now implemented, uncomment-out. 29372 (Miscellaneous Float Functions): Add mpf_ceil, mpf_floor, mpf_trunc. 29373 (Low-level Functions): Add mpn_random2, with mpn_random. 29374 29375 * mpn/m68k/mc68020/udiv.S: Rename from udiv.s. 29376 * mpn/m68k/mc68020/umul.S: Ditto. 29377 29378 * mpn/alpha/umul.asm: Rename from umul.s, remove .file and 29379 compiler identifiers. 29380 29381 * mpn/powerpc32/syntax.h: Removed, no longer used. 29382 29383 * mpn/a29k/udiv.s: Remove .file and compiler identifiers. 29384 * mpn/a29k/umul.s: Ditto. 29385 29386 * mpn/tests/ref.c: Use WANT_ASSERT. 29387 * mpn/tests/ref.h: Use _PROTO. 29388 29389 * mpbsd/configure.in: Removed, no longer required. 29390 29391 * mpf/div.c: Use DIVIDE_BY_ZERO. 29392 * mpf/div_ui.c: Ditto. 29393 * mpf/ui_div.c: Ditto. 29394 * mpq/inv.c: Ditto. 29395 * mpf/sqrt.c: Use SQRT_OF_NEGATIVE. 29396 * mpz/sqrt.c: Ditto. 29397 * mpz/sqrtrem.c: Ditto. 29398 29399 * gmp-impl.h (GMP_ERROR,SQRT_OF_NEGATIVE): New macros. 29400 (DIVIDE_BY_ZERO): Use GMP_ERROR. 29401 (__mp_bases): #define to __MPN(mp_bases). 29402 294032000-04-11 Linus Nordberg <linus@swox.se> 29404 29405 * tests/rand/stat.c (main): Initialize `l1runs' at declaration. 29406 294072000-04-11 Kevin Ryde <kevin@swox.se> 29408 29409 * mpz/fib_ui.c: Add K&R function definitions. 29410 29411 * mpbsd/tests/Makefile.am (TESTS): Add a dummy test to avoid a 29412 shell problem with an empty "for tst in $(TESTS) ; ...". 29413 * mpbsd/tests/dummy.c: New file. 29414 294152000-04-10 Torbjorn Granlund <tege@swox.com> 29416 29417 * mpz/bin_uiui.c: Delete several unused variables. 29418 Add copyright notice. 29419 * mpz/bin_ui.c: Add copyright notice. 29420 29421 * longlong.h: Declare __count_leading_zeros for alpha. 29422 294232000-04-10 Linus Nordberg <linus@swox.se> 29424 29425 * rand.c (gmp_randinit): Change parameter list to (rstate, alg, ...). 29426 * gmp.h: Change prototype accordingly. 29427 * mpz/pprime_p.c (millerrabin): Change call accordingly. 29428 29429 * configure.in: Check for `optarg'. 29430 * configure: Regenerate. 29431 29432 * mpn/Makefile.am: Remove incorrect comment. 29433 * mpn/Makefile.in: Regenerate. 29434 29435 * gmp.h: Rename most of the random number functions, structs and some 29436 of the struct members. 29437 * rand.c (gmp_randinit): Likewise. 29438 * randclr.c (gmp_randclear): Likewise. 29439 * randlc.c (gmp_randinit_lc): Likewise. 29440 * randlc2x.c (gmp_randinit_lc_2exp): Likewise. 29441 * randraw.c (lc): Likewise. 29442 (_gmp_rand_getraw): Likewise. 29443 * randsd.c (gmp_randseed): Likewise. 29444 * randsdui.c (gmp_randseed_ui): Likewise. 29445 * gmp.texi: Likewise. 29446 29447 * gmp.texi: Use three hyphens for a dash. 29448 (Low-level Functions): Remove documentation for gmp_rand_getraw. 29449 (Random Number Functions): Add info on where to find documentation 29450 on the random number functions. 29451 29452 * tests/rand/Makefile.am (test, bigtest): Quote argument to grep. 29453 * tests/rand/Makefile.in: Regenerate. 29454 29455 * tests/rand/gen.c: Declare optarg, optind, opterr if not already 29456 declared. 29457 (main): Use new names for the random stuff. 29458 (main): Don't use strtoul() if we don't have it. Use strtol() 29459 instead, if we have it. Otherwise, use atoi(). 29460 (main): Use srandom/srandomdev for __FreeBSD__ only. 29461 (main): Use new parameter order to gmp_randinit(). 29462 29463 * tests/rand/stat.c: Declare optarg, optind, opterr if not already 29464 declared. 29465 294662000-04-10 Torbjorn Granlund <tege@swox.com> 29467 29468 * mpz/pprime_p.c: Pass 0L for mpz_scan1. mpz_mmod => mpz_mod. 29469 (millerrabin): Use new random interface. 29470 (millerrabin): ... and don't forget to call gmp_randclear. 29471 29472 * mpz/nextprime.c: New file. 29473 * gmp.h: Declare mpz_nextprime. 29474 * mpz/Makefile.am: List nextprime.c. 29475 * mpz/Makefile.in: Regenerate. 29476 * Makefile.am: List mpz/nextprime.lo. 29477 * Makefile.in: Regenerate. 29478 294792000-04-10 Kevin Ryde <kevin@swox.se> 29480 29481 * move-if-change, mpz/tests/move-if-change, mpq/tests/move-if-change, 29482 mpf/tests/move-if-change: Remove, no longer used. 29483 29484 * Makefile.am (SUBDIRS): Add tests, demos, mpbsd. 29485 (libmp.la): New target, conditional on WANT_MPBSD. 29486 (libgmp_la_LIBADD): Add -lm. 29487 (AUTOMAKE_OPTIONS): Add check-news. 29488 (include_HEADERS): Setup to install gmp.h and possibly mp.h. 29489 (DISTCLEANFILES): Add generated files. 29490 (check): Remove explicit target (now uses check-recursive). 29491 29492 * configure.in: Use AM_CONFIG_HEADER. 29493 Add --enable-mpbsd setting automake conditional WANT_MPBSD. 29494 Output demos/Makefile, mpbsd/Makefile and mpbsd/tests/Makefile. 29495 29496 * mpz/Makefile.am: Add SUBDIRS=tests, shorten INCLUDES since now 29497 using AM_CONFIG_HEADER. 29498 * mpq/Makefile.am: Ditto. 29499 * mpf/Makefile.am: Ditto, and add DISTCLEANFILES. 29500 * mpn/Makefile.am: Shorten INCLUDES, amend some comments. 29501 * mpz/tests/Makefile.am: Use TESTS and $(top_builddir). 29502 * mpf/tests/Makefile.am: Ditto. 29503 * mpq/tests/Makefile.am: Ditto. 29504 * demos/Makefile.am: New file. 29505 29506 * mpbsd/Makefile.am: New file, derived from old mpbsd/Makefile.in. 29507 * mpbsd/Makefile.in: Now generated from Makefile.am. 29508 * mpbsd/realloc.c: Removed, use mpz/realloc.c instead. 29509 * mpbsd/tests/Makefile.am: New file. 29510 * mpbsd/tests/Makefile.in: New file, generated from Makefile.am. 29511 * mpbsd/tests/allfuns.c: New file. 29512 29513 * gmp.texi (Top): Use @ifnottex, to help makeinfo --html. 29514 (Installing MP): Describe --enable-mpbsd and demo programs. 29515 29516 * tests/rand/statlib.c: mpz_cmp_abs => mpz_cmpabs. 29517 29518 * tests/rand/Makefile.am (LDADD): Don't need -lm (now in libgmp.la). 29519 (EXTRA_PROGRAMS): Not noinst_PROGRAMS. 29520 (INCLUDES): Shorten to -I$(top_srcdir) now using AM_CONFIG_HEADER. 29521 295222000-04-09 Torbjorn Granlund <tege@swox.com> 29523 29524 * mpz/urandomm.c: Get type of count right. 29525 Simplify computation of nbits. 29526 295272000-04-08 Torbjorn Granlund <tege@swox.com> 29528 29529 * mpz/urandomb.c: Fix reallocation condition. 29530 Simplify size computation. 29531 295322000-04-08 Linus Nordberg <linus@swox.se> 29533 29534 * acinclude.m4 (GMP_CHECK_CC_64BIT): Add special handling for 29535 HPUX. 29536 (GMP_CHECK_ASM_W32): Ditto. 29537 * aclocal.m4: Regenerate. 29538 29539 * mpn/Makefile.am: Use $(CCAS) for assembling. 29540 (.asm.obj): Add rule. 29541 * mpn/Makefile.in: Regenerate. 29542 29543 * gmp.texi (Miscellaneous Integer Functions): Fix typos. 29544 29545 * configure.in: Never pass `-h' to grep. 29546 (mips-sgi-irix6.[2-9]*): Try to find 64-bit compiler. 29547 (hppa1.0*-*-*): New flag for cc. 29548 (hppa2.0*-*-*): Try to find 64-bit compiler. Chose path, set 29549 CCAS. 29550 * configure: Regenerate. 29551 295522000-04-08 Torbjorn Granlund <tege@swox.com> 29553 29554 * mpz/bin_ui.c: Don't depend on ANSI C features. 29555 * mpz/bin_uiui.c: Likewise. 29556 29557 * Makefile.am (MPZ_OBJECTS): mpz/cmp_abs* => mpz/cmpabs*. 29558 (MPQ_OBJECTS): Add mpq/set_d.lo. 29559 (MPZ_OBJECTS): Add mpz/fits*.lo. 29560 * Makefile.in: Regenerate. 29561 29562 * mpz/cmpabs.c: New name for mpz/cmp_abs.c. 29563 * mpz/cmpabs_ui.c: New name for mpz/cmp_abs_ui.c. 29564 * mpz/Makefile.am: Corresponding changes. 29565 * mpz/Makefile.in: Regenerate. 29566 * gmp.h: mpz_cmp_abs* => mpz_cmpabs*. 29567 29568 * mpz/addmul_ui.c (mpn_neg1): Don't depend on ANSI C features. 29569 29570 * mpz/invert.c: Use TMP_MARK since we invoke MPZ_TMP_INIT. 29571 29572 * gmp.h (mpq_set_d): Declare correctly. 29573 (mpz_root): Use _PROTO. 29574 (mpz_remove): Use _PROTO. 29575 (mpf_pow_iu): Use _PROTO. 29576 29577 * mpn/asm-defs.m4 (MPN_PREFIX): Revert previous change. 29578 * gmp.h (__MPN): Revert previous change. 29579 29580 * mpz/perfpow.c: De-ANSI-fy. Add copyright notice. 29581 29582 * mpz/set_d.c: Misc cleanups. 29583 29584 * mpq/set_d: New file. 29585 * gmp.h: Declare mpq_set_d. 29586 * mpq/Makefile.am: List set_d.c. 29587 * mpq/Makefile.in: Regenerate. 29588 295892000-04-07 Torbjorn Granlund <tege@swox.com> 29590 29591 * mpz/fits_sint_p.c: New file. 29592 * mpz/fits_slong_p.c: New file. 29593 * mpz/fits_sshort_p.c: New file. 29594 * mpz/fits_uint_p.c: New file. 29595 * mpz/fits_ulong_p.c: New file. 29596 * mpz/fits_ushort_p.c: New file. 29597 * gmp.h: Declare mpz_fits_*. 29598 * mpz/Makefile.am: List fits_* files. 29599 * mpz/Makefile.in: Regenerate. 29600 296012000-04-06 Kevin Ryde <kevin@swox.se> 29602 29603 * gmp.texi (Installing MP): Add known build problem SunOS 4.1.4 m4 29604 failure. 29605 29606 * mpn/x86/pentium/gmp-mparam.h: Tune thresholds. 29607 * mpn/x86/p6/gmp-mparam.h: Ditto. 29608 * mpn/x86/k6/gmp-mparam.h: Tune thresholds, add UMUL_TIME, UDIV_TIME. 29609 * mpn/x86/k7/gmp-mparam.h: Tune thresholds, amend UMUL_TIME. 29610 29611 * mpn/generic/mul_n.c (mpn_kara_mul_n): Add an ASSERT. 29612 (mpn_kara_sqr_n): Add an ASSERT, use KARATSUBA_SQR_THRESHOLD. 29613 (mpn_toom3_sqr_n): Eliminate second evaluate3. 29614 29615 * gmp-impl.h (mpn_com_n,MPN_LOGOPS_N_INLINE): Don't allow size==0. 29616 (tune_mul_threshold,tune_sqr_threshold): Conditionalize 29617 declarations on TUNE_PROGRAM_BUILD. 29618 29619 * mpn/generic/sqr_basecase.c: Add an assert. 29620 296212000-04-05 Torbjorn Granlund <tege@swox.com> 29622 29623 * gmp.h, mpn/asm-defs.m4: List the same functions for __MPN, but 29624 leave some commented out. 29625 29626 * gmp-impl.h (MPN_LOGOPS_N_INLINE): Optimize. 29627 (mpn_com_n): Optimize. 29628 29629 * gmp.h (__MPN): Make it use __gmpn instead of __mpn for consistency. 29630 * mpn/asm-defs.m4 (MPN_PREFIX): Likewise. 29631 29632 * gmp.h (GMP_ERROR_ALLOCATE): New errcode. 29633 29634 * gmp-impl.h (MPN_MUL_N_RECURSE): Delete. 29635 (MPN_SQR_RECURSE): Delete. 29636 29637 * gmp-impl.h (TARGET_REGISTER_STARVED): New define. 29638 29639 * gmp-impl.h (mpn_kara_sqr_n): Remap with __MPN. 29640 (mpn_toom3_sqr_n): Likewise. 29641 (mpn_kara_mul_n): Likewise. 29642 (mpn_toom3_mul_n): Likewise. 29643 (mpn_reciprocal): Likewise. 29644 29645 * gmp-impl.h (__gmpn_mul_n): Remove declaration. 29646 (__gmpn_sqr): Likewise. 29647 * gmp.h (mpn_sqr_n): Declare/remap. 29648 * mpn/generic/mul.c (mpn_sqr_n): New name for mpn_sqr. 29649 29650 * gmp.h (mpn_udiv_w_sdiv): Move __MPN remap from here... 29651 * gmp-impl.h: ...to here. 29652 296532000-04-05 Linus Nordberg <linus@swox.se> 29654 29655 * gmp.texi (Top): Add `Random Number Functions' to menu. 29656 (Introduction to MP): Fix typo. 29657 (MP Basics): Create menu for all sections. Move `Random Number 29658 Functions' to its own chapter. Add nodes for all sections. 29659 (Function Classes): Mention random generation functions under 29660 miscellaneous. 29661 (Miscellaneous Integer Functions): Update mpz_urandomb, 29662 mpz_urandomm. 29663 (Low-level Functions): Remove mpn_rawrandom. 29664 (Random State Initialization): Update. 29665 29666 * mpf/urandom.c (mpf_urandomb): Remove SIZE parameter. Normalize 29667 result correctly. 29668 29669 * gmp.h (mpf_urandomb): Remove SIZE parameter. 29670 29671 * randraw.c (gmp_rand_getraw): Handle the case where (1) the LC 29672 scheme doesn't generate even limbs and (2) more than one LC 29673 invocation is necessary to produce the requested number of bits. 29674 296752000-04-05 Torbjorn Granlund <tege@swox.com> 29676 29677 * mpn/generic/mul_n.c (INVERSE_3): New name for THIRD, define for 29678 any BITS_PER_MP_LIMB. 29679 (MP_LIMB_T_MAX): New. 29680 (mpn_divexact3_n): Remove. 29681 (interpolate3): Use mpn_divexact_by3 instead of mpn_divexact3_n. 29682 296832000-04-05 Kevin Ryde <kevin@swox.se> 29684 29685 * gmp-impl.h (KARATSUBA_MUL_THRESHOLD<2): Remove cpp test. 29686 (tune_mul_threshold,tune_sqr_threshold): Add declarations, used in 29687 development only. 29688 29689 * mpn/x86/k7/sqr_basecase.asm: New file, only a copy of k6 for now. 29690 296912000-04-04 Torbjorn Granlund <tege@swox.com> 29692 29693 * gmp-impl.h (TOOM3_MUL_THRESHOLD): Provide default. 29694 (TOOM3_SQR_THRESHOLD): Provide default. 29695 29696 * mpn/generic/mul_n.c: Rewrite (mostly by Robert Harley). 29697 * mpn/generic/mul.c: Rewrite (mostly by Robert Harley). 29698 29699 * configure.in (sparcv9 64-bit OS): Set extra_functions. 29700 297012000-04-04 Linus Nordberg <linus@swox.se> 29702 29703 * mpn/generic/rawrandom.c: Remove file and replace with randraw.c 29704 on top level. 29705 (mpn_rawrandom): Rename to gmp_rand_getraw. 29706 29707 * randraw.c: New file; essentially a copy of 29708 mpn/generic/rawrandom.c. 29709 (gmp_rand_getraw): New function (formerly known as mpn_rawrandom). 29710 29711 * mpz/urandomb.c (mpz_urandomb): Change mpn_rawrandom --> 29712 gmp_rand_getraw. 29713 * mpz/urandomm.c (mpz_urandomb): Ditto. 29714 * mpf/urandom.c (mpf_urandomb): Ditto. 29715 29716 * gmp.h (gmp_rand_getraw): Add function prototype. 29717 (mpn_rawrandom): Remove function prototype. 29718 29719 * Makefile.am (libgmp_la_SOURCES): Add randraw.c. 29720 * Makefile.in: Regenerate. 29721 29722 * configure.in (gmp_mpn_functions): Remove rawrandom. 29723 * configure: Regenerate. 29724 297252000-04-04 Linus Nordberg <linus@swox.se> 29726 29727 * gmp.h (GMP_ERROR enum): Remove comma after last enumeration 29728 since the AIX compiler (xlc) doesn't like that. 29729 29730 * randlc.c (gmp_rand_init_lc): Allocate enough space for seed to 29731 hold any upcoming seed. 29732 * randlc2x.c (gmp_rand_init_lc_2exp): Likewise. 29733 29734 * mpn/generic/rawrandom.c: Remove debugging code. 29735 (mpn_lc): Don't reallocate seed. 29736 29737 * mpz/urandomm.c (mpz_urandomm): Implement function. 29738 29739 * mpz/urandomb.c (mpz_urandomb): Fix typo in function definition. 29740 297412000-04-04 Kevin Ryde <kevin@swox.se> 29742 29743 * make.bat: Removed (no longer works, no longer supported). 29744 * mpn/msdos/asm-syntax.h: Removed (was used only by make.bat). 29745 297462000-04-03 Torbjorn Granlund <tege@swox.com> 29747 29748 * mpn/generic/brandom.c: New file, replacing random2. 29749 297502000-04-02 Torbjorn Granlund <tege@swox.com> 29751 29752 * mpn/sparc32/v9/submul_1.asm: Change some carry-form instructions 29753 into their plain counterparts. 29754 29755 * mpn/sparc64/copyi.asm: Avoid executing ALIGN. 29756 29757 * mpn/sparc64/mul_1.asm: Handle overlap of rp/sp. 29758 * mpn/sparc64/addmul_1.asm: Likewise. 29759 * mpn/sparc64/submul_1.asm: Likewise. 29760 297612000-04-01 Linus Nordberg <linus@swox.se> 29762 29763 * gmp.h: Fix function prototypes for randomization functions. 29764 (__gmp_rand_lc_scheme_struct): Replace `m' with `m2exp'. Remove 29765 unused `bits'. 29766 (__gmp_rand_data_lc): Add `m2exp' as another way of representing 29767 the modulus. 29768 (__gmp_rand_state_struct): Remove unused `size'. 29769 29770 * rand.c (__gmp_rand_scheme): Use better multipliers. Remove test 29771 schemes. Replace `m' with `m2exp'. 29772 (gmp_rand_init): Change parameters and return type. Use `m2exp' 29773 instead of `m'. Set `gmp_errno' on error. Disable BBS algorithm. 29774 29775 * randlc.c (gmp_rand_init_lc): Don't use malloc(). Change 29776 parameters. 29777 29778 * randclr.c (gmp_rand_clear): Don't use free(). Disable BBS 29779 algorithm. Set `gmp_errno' on error. 29780 29781 * randlc2x.c (gmp_rand_init_lc_2exp): New function. 29782 * randsd.c (gmp_rand_seed): New function. 29783 * randsdui.c (gmp_rand_seed_ui): New function. 29784 * randlcui.c: Remove unused file. 29785 29786 * mpn/generic/rawrandom.c (mpn_rawrandom): Rewrite. 29787 (mpn_lc): New static function. 29788 29789 * mpz/urandomb.c (mpz_urandomb): Use ABSIZ() instead of SIZ() for 29790 determining size of ROP. 29791 29792 * mpf/urandom.c (mpf_urandomb): Add third parameter, nbits. (Not 29793 used yet!) 29794 Change parameter order to mpn_rawrandom(). 29795 29796 * Makefile.am (libgmp_la_SOURCES): Add errno.c, randlc2x.c, 29797 randsd.c, randsdui.c. Remove randui.c. 29798 (MPZ_OBJECTS): Rename urandom.lo --> urandomb.lo. Add urandomm.lo. 29799 * Makefile.in: Regenerate. 29800 29801 * mpz/Makefile.am (libmpz_la_SOURCES): Change urandom.c --> 29802 urandomb.c. Add urandomm.c. 29803 * mpz/Makefile.in: Regenerate. 29804 29805 * tests/rand/Makefile.am (noinst_PROGRAMS): Change findcl --> findlc. 29806 Add gen.static. 29807 * tests/rand/Makefile.in: Regenerate. 29808 29809 * tests/rand/gen.c (main): Add mpz_urandomm. Add command line options 29810 `-C', `-m', extend `-a'. Use *mp*_*rand*() with new parameters. Call 29811 gmp_rand_seed(). 29812 298132000-04-01 Kevin Ryde <kevin@swox.se> 29814 29815 * acinclude.m4 (GMP_CHECK_ASM_DATA): Plain .data for hpux. 29816 * configure.in (CCAS): No CFLAGS, they're added when it's used. 29817 (CONFIG_SRCDIR): New define for config.m4. 29818 * mpn/sparc64/addmul_1.asm: Use it for an include(). 29819 * mpn/sparc64/submul_1.asm: Ditto. 29820 * mpn/sparc64/mul_1.asm: Ditto. 29821 298222000-03-31 Linus Nordberg <linus@swox.se> 29823 29824 * mpz/urandom.c: Rename to... 29825 * mpz/urandomb.c: ...this. 29826 29827 * mpz/urandomb.c (mpz_urandomb): Change operand order in call to 29828 mpn_rawrandom(). Use ABSIZ() instead of SIZ() when checking size 29829 of ROP. 29830 29831 * mpz/urandomm.c: New file. 29832 298332000-03-31 Kevin Ryde <kevin@swox.se> 29834 29835 * acinclude.m4 (GMP_CHECK_ASM_MMX): Give a warning when mmx code 29836 will be omitted. 29837 298382000-03-30 Torbjorn Granlund <tege@swox.com> 29839 29840 * mpn/sparc64/mul_1h.asm: New file. 29841 * mpn/sparc64/addmul_1h.asm: New file. 29842 * mpn/sparc64/submul_1h.asm: New file. 29843 * mpn/sparc64/mul_1.asm: Rewrite. 29844 * mpn/sparc64/addmul_1.asm: Rewrite. 29845 * mpn/sparc64/submul_1.asm: Rewrite. 29846 298472000-03-28 Torbjorn Granlund <tege@swox.com> 29848 29849 * mpn/sparc32/v9/mul_1.asm: Fix typo in branch prediction. 29850 * mpn/sparc32/v9/addmul_1.asm: Likewise. 29851 * mpn/sparc32/v9/submul_1.asm: Likewise. 29852 298532000-03-25 Kevin Ryde <kevin@swox.se> 29854 29855 * mpn/lisp/gmpasm-mode.el: Fix some comment detection, use custom, 29856 fontify more keywords, turn into a standalone mode. 29857 29858 * stamp-vti: New file, generated together with version.texi. 29859 29860 * acinclude.m4 (GMP_VERSION,GMP_HEADER_GETVAL): New macros. 29861 * configure.in (AM_INIT_AUTOMAKE): Use GMP_VERSION. 29862 298632000-03-24 Kevin Ryde <kevin@swox.se> 29864 29865 * INSTALL: Updates for new configure system. 29866 29867 * configure.in: Add gmp_optcflags_gcc for the x86s, setting -mcpu 29868 and -march. 29869 298702000-03-23 Torbjorn Granlund <tege@swox.com> 29871 29872 * demos/pexpr.c (mpz_eval_expr): Properly initialize rhs/lhs 29873 for ROOT. 29874 298752000-03-23 Kevin Ryde <kevin@swox.se> 29876 29877 * config.guess (i?86:*:*:*): Use uname -m if detection program fails. 29878 29879 * mpn/x86/README: Remove remarks on the now implemented MMX shifts. 29880 * mpn/x86/k6/README: Add speed of mpn_divexact_by3, update mpn_mul_1. 29881 29882 * gmp.texi (Installing MP): Corrections to target CPUs. 29883 29884 * version.c: Use VERSION from config.h, add copyright comment, 29885 restore "const" somehow lost. 29886 29887 * configure.in (a29k*-*-*): Fix directory name. 29888 298892000-03-22 Torbjorn Granlund <tege@swox.com> 29890 29891 * demos/pexpr.c (op_t): Add ROOT. 29892 (fns): Add ROOT. 29893 (mpz_eval_expr): Add ROOT. 29894 29895 * mpz/root.c: Handle roots of negative numbers. 29896 Fix other border cases. 29897 Fix rare memory leakage. 29898 29899 * errno.c: New file. 29900 299012000-03-21 Torbjorn Granlund <tege@swox.com> 29902 29903 * gmp.h (error number enum): New anonymous enum. 29904 (gmp_errno): New. 29905 29906 * gmp.h (__GNU_MP_VERSION, __GNU_MP_VERSION_MINOR): Bump for GMP 3.0. 29907 299082000-03-20 Torbjorn Granlund <tege@swox.com> 29909 29910 * mpn/alpha/unicos.m4 (FLOAT64): New define. 29911 * mpn/alpha/default.m4 (FLOAT64): New define. 29912 * mpn/alpha/invert_limb.asm (C36): Use FLOAT64. 29913 299142000-03-21 Kevin Ryde <kevin@swox.se> 29915 29916 * mpn/x86/k6/diveby3.asm: Tiny speedup. 29917 29918 * acinclude.m4 (GMP_CHECK_ASM_SHLDL_CL): New macro. 29919 * configure.in: Use it, set WANT_SHLDL_CL in config.m4. 29920 * mpn/x86/x86-defs.m4 (shldl,shrdl,shldw,shrdw): New macros, using 29921 WANT_SHLDL_CL. 29922 * mpn/x86/k6/mmx/lshift.asm: Use shldl macro. 29923 * mpn/x86/k7/mmx/lshift.asm: Ditto. 29924 * mpn/x86/pentium/mmx/lshift.asm: Ditto. 29925 * mpn/x86/k6/mmx/rshift.asm: Use shrdl macro. 29926 * mpn/x86/k7/mmx/rshift.asm: Ditto. 29927 * mpn/x86/pentium/mmx/rshift.asm: Ditto. 29928 * mpn/x86/README.family: Add a note about this. 29929 299302000-03-20 Linus Nordberg <linus@swox.se> 29931 29932 * mpn/generic/rawrandom.c (mpn_rawrandom): Handle seed value of 0 29933 correctly. 29934 29935 * configure.in: Fix detection of alpha flavour. 29936 Set compiler options for `sparcv8'. 29937 * configure: Regenerate. 29938 29939 * rand.c (__gmp_rand_scheme): Clean up some. Use slightly better 29940 multipliers. 29941 29942 * configure.in (AC_OUTPUT): Add tests/Makefile and 29943 tests/rand/Makefile. 29944 29945 * acinclude.m4 (AC_CANONICAL_BUILD): Define to 29946 `_AC_CANONICAL_BUILD' to deal with incompatibilities between 29947 Autoconf and Libtool. 29948 (AC_CHECK_TOOL_PREFIX): Likewise. 29949 29950 * Makefile.am (EXTRA_DIST): Add directory `tests'. 29951 29952 * mkinstalldirs: Update (Automake 2000-03-17). 29953 * ltconfig: Update (Libtool 2000-03-17). 29954 * ltmain.sh: Ditto. 29955 29956 * configure: Regenerate with new autoconf/-make/libtool suite. 29957 * aclocal.m4: Ditto. 29958 * config.in: Ditto. 29959 * all Makefile.in's: Ditto. 29960 299612000-03-20 Torbjorn Granlund <tege@swox.com> 29962 29963 * demos/pexpr.c (main): Don't allow `-N' for base, require `-bN'. 29964 29965 * mpn/alpha/unicos.m4 (cvttqc): New define. 29966 * mpn/alpha/invert_limb.asm: Use new define for cvttqc. 29967 299682000-03-19 Kevin Ryde <kevin@swox.se> 29969 29970 * mpn/x86/k6/sqr_basecase.asm: Tiny amendments for 3x3 case. 29971 29972 * gmp.texi: Use @include version.texi. 29973 Use @email and @uref. 29974 (Installing MP): Rewrite for new configure. 29975 (Low-level Functions): Add mpn_divexact_by3. 29976 29977 * configure.in (--enable-alloca): New option. 29978 * acconfig.h (USE_STACK_ALLOC): For --disable-alloca. 29979 299802000-03-18 Kent Boortz <kent@swox.com> 29981 29982 * macos: New directory with macos port files. 29983 299842000-03-17 Torbjorn Granlund <tege@swox.com> 29985 29986 * gmp-impl.h (union ieee_double_extract): Check _CRAYMPP. 29987 29988 * mpn/asm-defs.m4 (invert_normalized_limb): Define. 29989 29990 * mpn/alpha: Translate `.s' files to `.asm'. 29991 29992 * configure: Regenerate. 29993 29994 * mpn/alpha/invert_limb.asm: Replace dash in file name with underscore. 29995 * configure.in: Corresponding change. 29996 29997 * configure.in: Assign special "path" for alphaev6. 29998 29999 * mpn/alpha/unicos.m4: New file. 30000 * configure.in (alpha*-cray-unicos*): [This part of the change 30001 commited 2000-03-13 by linus] 30002 * mpn/alpha/default.m4: New file. 30003 * configure.in (alpha*-*-*): Use it. 30004 300052000-03-17 Kevin Ryde <kevin@swox.se> 30006 30007 * mpn/x86/pentium/rshift.S: Use plain rcrl (not rcrl $1) for 30008 shift-by-1 case, significant speedup. 30009 * mpn/x86/pentium/README: Add shift-by-1 speed. 30010 300112000-03-16 Torbjorn Granlund <tege@swox.com> 30012 30013 * config.guess: Handle Cray T3D/E. 30014 300152000-03-15 Kevin Ryde <kevin@swox.se> 30016 30017 * mpn/generic/diveby3.c: New file. 30018 * mpn/x86/diveby3.asm: New file. 30019 * mpn/x86/k6/diveby3.asm: New file. 30020 * gmp.h (mpn_divexact_by3): Prototype and define. 30021 * mpn/asm-defs.m4: define_mpn(divexact_by3). 30022 * configure.in (gmp_mpn_functions): Add diveby3. 30023 30024 * mpn/x86/pentium/sqr_basecase.asm: A few better addressing modes. 30025 30026 * configure.in: Add AC_C_STRINGIZE and AC_CHECK_TYPES((void)). 30027 * gmp-impl.h (ASSERT): Use them. 30028 30029 * mpn/x86/k7/mmx/lshift.asm: New file. 30030 * mpn/x86/k7/mmx/rshift.asm: Rewrite simple loop and return value 30031 handling, add some pictures. 30032 300332000-03-14 Torbjorn Granlund <tege@swox.com> 30034 30035 * mpn/sparc32/v8/mul_1.asm: Make PIC actually work. 30036 * mpn/sparc32/v8/addmul_1.asm: Likewise. 30037 30038 * mpn/sparc32/v8/mul_1.asm: Use m4 ifdef, not cpp #if. 30039 * mpn/sparc32/v8/addmul_1.asm: Likewise. 30040 30041 * mpn/asm-defs.m4 (C): New define for comments. 30042 * mpn/sparc32: Start comments with `C'. 30043 30044 * config.guess: Remove `SunOS 6' handling. 30045 Recognize sun4m and sun4d architectures under old SunOS. 30046 300472000-03-14 Linus Nordberg <linus@swox.se> 30048 30049 * configure.in (gmp_srclinks): Set to list of links created by 30050 configure. 30051 * configure: Regenerate. 30052 30053 * Makefile.am (libgmp_la_LDFLAGS): Set version info. 30054 (DISTCLEANFILES): Include @gmp_srclinks@. 30055 * Makefile.in: Regenerate. 30056 300572000-03-13 Linus Nordberg <linus@swox.se> 30058 30059 * configure.in: Remove some changequote's by quoting the strings 30060 containing `[]'. 30061 Add support for `alpha*-cray-unicos*'. 30062 AC_DEFINE `_LONG_LONG_LIMB' instead of passing it in CFLAGS. 30063 Conditionalize the assembler syntax checks. 30064 * configure: Regenerate. 30065 * config.in: Regenerate. 30066 30067 * acinclude.m4 (GMP_PROG_CCAS): Remove macro. 30068 * aclocal.m4: Regenerate. 30069 300702000-03-13 Kevin Ryde <kevin@swox.se> 30071 30072 * mpn/x86/p6/README: New file. 30073 30074 * mpn/x86/k6/mul_1.asm: Rewrite, smaller and slightly faster. 30075 30076 * mpn/lisp/gmpasm-mode.el: Rewrite assembler comment detection and 30077 handling. 30078 30079 * configure.in: Separate mmx directories for each x86 flavour. 30080 * configure: Regenerate. 30081 300822000-03-12 Kevin Ryde <kevin@swox.se> 30083 30084 * mpn/x86/x86-defs.m4 (ALIGN): Supplement definition from 30085 config.m4 so as to pad with nops not zeros on old gas. 30086 30087 * mpn/x86/k7/mmx/copyd.asm: Use plain emms (femms is just an alias 30088 for emms now). 30089 * mpn/x86/k7/mmx/copyi.asm: Ditto. 30090 * mpn/x86/k7/mmx/rshift.asm: Ditto. 30091 * mpn/x86/x86-defs.m4: Amend comments. 30092 30093 * mpn/x86/mod_1.asm: Add comments on speeds. 30094 30095 * mpn/x86/pentium/mmx/lshift.asm: New file. 30096 * mpn/x86/pentium/mmx/rshift.asm: New file. 30097 * mpn/x86/pentium/README: Add speeds of various routines. 30098 300992000-03-10 Linus Nordberg <linus@swox.se> 30100 30101 * configure.in: Reorganize. 30102 Use AC_CHECK_TOOL to find `ar'. 30103 Add post-includes `regmap.m4' and `aix.m4' for AIX targets. 30104 asm-syntax.h is not needed for PPC or sparc anymore. 30105 (powerpc64-*-aix*): Compiler is always 64-bit. Use `-q64 30106 -qtune=pwr3' to xlc and `-maix64 -mpowerpc64' to gcc. Pass `-X 30107 64' to `ar' and `nm'. 30108 (pentiummmx): Use GMP_CHECK_ASM_MMX and avoid MMX assembly path if 30109 assembler is not MMX capable. 30110 (pentium[23]): Likewise. 30111 (athlon): Likewise. 30112 (k6*): Likewise. 30113 * configure: Regenerate. 30114 30115 * acinclude.m4 (GMP_PROG_CC_WORKS): New macro. 30116 (GMP_PROG_CC_FIND): Use GMP_PROG_CC_WORKS instead of 30117 AC_TRY_COMPILER. Make sure that the *first* working 32-bit 30118 compiler is used if no 64-bit compiler is found. 30119 (GMP_CHECK_ASM_MMX): New macro. 30120 * aclocal.m4: Regenerate. 30121 30122 * Makefile.in: Regenerate. (CC_TEST removed.) 30123 * mpf/Makefile.in: Likewise. 30124 * mpn/Makefile.in: Likewise. 30125 * mpq/Makefile.in: Likewise. 30126 * mpz/Makefile.in: Likewise. 30127 * mpf/tests/Makefile.in: Likewise. 30128 * mpq/tests/Makefile.in: Likewise. 30129 * mpz/tests/Makefile.in: Likewise. 30130 30131 * acconfig.h (_LONG_LONG_LIMB): Add. 30132 30133 * gmp-impl.h: Include config.h only if HAVE_CONFIG_H is defined. 30134 301352000-03-09 Kevin Ryde <kevin@swox.se> 30136 30137 * mpn/x86/pentium/mul_basecase.S: Small speedup by avoiding an AGI. 30138 30139 * mpn/x86/k7/mmx/copyd.asm: Tiny speedup by avoiding popl. 30140 * mpn/x86/k7/mmx/copyi.asm: Ditto. 30141 * mpn/x86/k7/mul_basecase.asm: Ditto. 30142 301432000-03-07 Torbjorn Granlund <tege@swox.com> 30144 30145 * config.guess: Better recognize POWER/PowerPC processor type. 30146 301472000-03-07 Kevin Ryde <kevin@swox.se> 30148 30149 * mpn/generic/addsub_n.c: Use HAVE_NATIVE_* now in config.h. 30150 30151 * mpn/asm-defs.m4: Add comments about SysV m4. 30152 (m4_log2): Don't use <<. 30153 (m4_lshift,m4_rshift): New macros. 30154 301552000-03-06 Torbjorn Granlund <tege@swox.com> 30156 30157 * mpn/powerpc32/regmap.m4: Map cr0 => `0', etc. 30158 301592000-03-06 Kevin Ryde <kevin@swox.se> 30160 30161 * mpn/tests/ref.c (refmpn_divexact_by3): New function. 30162 * mpn/tests/ref.h: Prototype. 30163 30164 * acconfig.h (WANT_ASSERT): New define. 30165 * configure.in (--enable-assert): Turn on WANT_ASSERT. 30166 * assert.c: New file. 30167 * Makefile.am: Add to build. 30168 * gmp-impl.h (ASSERT): New macro. 30169 (ASSERT_NOCARRY) Renamed from assert_nocarry. 30170 (MPZ_CHECK_FORMAT): Use ASSERT_ALWAYS. 30171 * mpn/tests/ref.c: Use ASSERT. 30172 * mpf/get_str.c: Use ASSERT_ALWAYS. 30173 * mpf/set_str.c: Remove old assert macro. 30174 30175 * mpn/x86/x86-defs.m4 (cmovnz_ebx_ecx): New macro. 30176 * mpn/x86/p6/aorsmul_1.asm: Use cmov. 30177 30178 * mpn/x86/lshift.S: Use %dl with testb, not %edx. No object code 30179 change, testb was still getting generated. 30180 * mpn/x86/rshift.S: Ditto. 30181 301822000-03-03 Torbjorn Granlund <tege@swox.com> 30183 30184 * longlong.h: Add IA-64 support. 30185 30186 * mpn/powerpc32: Misc cleanups. 30187 * mpn/powerpc32/aix.m4: New file (mainly by Linus). 30188 * mpn/powerpc64/aix.m4: New file (mainly by Linus). 30189 * mpn/powerpc64: Translate `.S' files to `.asm'. 30190 30191 * configure.in: Fix tyops. 30192 * configure: Regenerate. 30193 301942000-03-02 Torbjorn Granlund <tege@swox.com> 30195 30196 * mpn/powerpc32/regmap.m4: New file. 30197 * mpn/powerpc32: Translate `.S' files to `.asm'. 30198 * configure.in: Use mpn/powerpc32/regmap.m4 for powerpc targets 30199 except some weird ones. 30200 302012000-03-03 Kevin Ryde <kevin@swox.se> 30202 30203 * mpn/lisp/gmpasm-mode.el: Suppress postscript comment prefixes in 30204 filladapt. 30205 30206 * mpn/x86/pentium/sqr_basecase.asm: New file. 30207 * mpn/x86/pentium/gmp-mparam.h (KARATSUBA_SQR_THRESHOLD): Update. 30208 30209 * configure.in: Add --enable-assert, enable k6 logops functions. 30210 30211 * mpn/x86/k6/mmx/copyi.asm: Use m4 for divide, not as. 30212 * mpn/x86/k6/mmx/copyd.asm: Ditto. 30213 * mpn/x86/README.family: Add a note on this. 30214 302152000-03-02 Kevin Ryde <kevin@swox.se> 30216 30217 * mpn/x86/k6/aors_n.asm: Don't use stosl. 30218 * mpn/x86/copyi.asm: Use cld to clear direction flag. 30219 * mpn/x86/divrem_1.asm: Ditto. 30220 * mpn/x86/README.family: Add a note on this. 30221 30222 * mpn/x86/k6/mmx/copyi.asm: Rewrite. 30223 * mpn/x86/k6/mmx/copyd.asm: New file. 30224 * mpn/x86/k6/README: Update, and small amendments. 30225 30226 * mpn/x86/x86-defs.m4 (Zdisp): New macro. 30227 * mpn/asm-defs.m4 (m4_stringequal_p): New macro. 30228 30229 * mpn/x86/p6/aorsmul_1.asm: Use Zdisp to force zero displacements. 30230 * mpn/x86/k6/aorsmul_1.asm: Ditto. 30231 * mpn/x86/k6/mul_1.asm: Ditto. 30232 * mpn/x86/k6/mul_basecase.asm: Ditto. 30233 * mpn/x86/k7/aors_n.asm: Ditto. 30234 * mpn/x86/k7/aorsmul_1.asm: Ditto. 30235 * mpn/x86/k7/mul_1.asm: Ditto. 30236 * mpn/x86/k7/mul_basecase.asm: Ditto. 30237 * mpn/x86/README.family: Add a note on this. 30238 302392000-02-27 Kevin Ryde <kevin@swox.se> 30240 30241 * mpn/generic/divrem.c (mpn_divrem_classic): Patch to avoid gcc 30242 2.7.2.3 i386 register handling bug. 30243 30244 * mpn/x86/k6/aors_n.asm: Rewrite. 30245 * mpn/x86/k6/mmx/lshift.asm: Rewrite. 30246 * mpn/x86/k6/mmx/rshift.asm: Rewrite. 30247 * mpn/x86/k6/README: Update. 30248 30249 * mpn/x86/k7/mmx/copyd.asm: Support size==0. 30250 * mpn/x86/k7/mmx/copyi.asm: Ditto. 30251 * mpn/x86/k6/mmx/copyi.asm: Ditto. 30252 * gmp-impl.h: Comment size==0 allowed in MPN_COPY_INCR and 30253 MPN_COPY_DECR. 30254 * configure.in: Enable x86 copyi, copyd; add k6 com_n. 30255 302562000-02-25 Torbjorn Granlund <tege@swox.com> 30257 30258 * demos/pexpr.c (power): Move factorial handing code from `factor' 30259 to `power'. 30260 30261 * demos/factorize.c (factor_using_pollard_rho): Move resetting of `c' 30262 to before checking for a non-zero gcd. 30263 302642000-02-25 Kevin Ryde <kevin@swox.se> 30265 30266 * mpn/asm-defs.m4 (MULFUNC_PROLOGUE): New macro by Linus. 30267 * mpn/x86/k6/aors_n.asm: Use MULFUNC_PROLOGUE. 30268 * mpn/x86/k6/aorsmul_1.asm: Ditto. 30269 * mpn/x86/k7/aors_n.asm: Ditto. 30270 * mpn/x86/k7/aorsmul_1.asm: Ditto. 30271 * mpn/x86/p6/aorsmul_1.asm: Ditto. 30272 30273 * mpn/tests/ref.c (refmpn_copyi,refmpn_copyd): Allow size==0. 30274 30275 * gmp-impl.h: Move mpn_and_n, mpn_andn_n, mpn_com_n, mpn_ior_n, 30276 mpn_iorn_n, mpn_nand_n, mpn_nior_n, mpn_xor_n and mpn_xorn_n here 30277 from gmp.h. Use HAVE_NATIVE_mpn_* to make these functions or 30278 inlines. 30279 30280 * gmp-impl.h: Move mpn_copyd, mpn_copyi here from gmp.h. 30281 * gmp-impl.h (MPN_COPY_INCR): Use mpn_copyi if available. 30282 * gmp-impl.h (MPN_COPY_DECR): Use mpn_copyd if available. 30283 30284 * mpn/x86/k6/mmx/com_n.asm: Moved into mmx subdirectory. 30285 * mpn/x86/k6/mmx/copyi.asm: Ditto. 30286 * mpn/x86/k6/mmx/lshift.asm: Ditto. 30287 * mpn/x86/k6/mmx/rshift.asm: Ditto. 30288 * mpn/x86/k7/mmx/rshift.asm: Ditto. 30289 * mpn/x86/k6/mmx/logops_n.asm: New file. 30290 * configure.in (k6*-*-*): Add logops_n.asm. 30291 * mpn/x86/k6/README: Update. 30292 30293 * mpn/x86/k7/mmx/copyi.asm: New file. 30294 * mpn/x86/k7/mmx/copyd.asm: New file. 30295 * mpn/x86/k7/README: Update. 30296 302972000-02-24 Kevin Ryde <kevin@swox.se> 30298 30299 * mpn/x86/x86-defs.m4 (femms): Generate emms if 3dnow not available. 30300 * mpn/x86/x86-defs.m4 (FRAME_popl): New macro. 30301 30302 * Makefile.am: Add info_TEXINFOS = gmp.texi 30303 30304 * mpn/x86/divrem_1.asm: Moved from mpn/x86/k6, allow size==0, 30305 conditionalize loop versus decl/jnz. 30306 * mpn/x86/mod_1.asm: Ditto. 30307 * mpn/x86/divmod_1.asm: Removed. 30308 * gmp.texi (mpn_divrem_1,mpn_mod_1): Add that size==0 is allowed. 30309 * mpn/tests/ref.c (refmpn_divrem_1c,etc): Allow size==0. 30310 30311 * mpn/x86/k6/aors_n.asm: Avoid gas 1.92.3 leal displacement 30312 expression problem. 30313 * mpn/x86/k6/aorsmul_1.asm: Ditto. 30314 * mpn/x86/k6/mul_1.asm: Ditto. 30315 * mpn/x86/k6/mul_basecase.asm: Ditto 30316 * mpn/x86/k7/aors_n.asm: Ditto. 30317 * mpn/x86/k7/aorsmul_1.asm: Ditto. 30318 * mpn/x86/k7/mul_1.asm: Ditto. 30319 * mpn/x86/k7/mul_basecase.asm: Ditto. 30320 * mpn/x86/k7/rshift.asm: Ditto. 30321 * mpn/x86/p6/aorsmul_1.asm: Ditto. 30322 * mpn/x86/README.family: Describe problem. 30323 303242000-02-24 Linus Nordberg <linus@swox.se> 30325 30326 * acinclude.m4 (GMP_CHECK_ASM_LSYM_PREFIX): Add dummy symbol to 30327 testcase to avoid nm failure. Try nm before piping to grep. 30328 30329 * acconfig.h: Undef HAVE_NATIVE_func for every mpn function found 30330 in gmp.h. 30331 30332 * configure.in: Invoke AC_CONFIG_HEADERS. 30333 Don't invoke AM_CONFIG_HEADER; it makes autoconf confused. 30334 Dig out entry points declared in assembly code and AC_DEFINE proper 30335 HAVE_NATIVE_func. 30336 30337 * mpn/asm-defs.m4 (MULFUNC_PROLOGUE): New macro. 30338 30339 * mpn/x86/p6/aorsmul_1.asm: Use MULFUNC_PROLOGUE. 30340 * mpn/x86/k6/aors_n.asm: Likewise. 30341 30342 * Makefile.am (EXTRA_DIST): Add config.in; needed when we don't 30343 use AM_CONFIG_HEADER in configure.in. 30344 30345 * mpn/Makefile.am (INCLUDES): Add `-I..' for config.h and 30346 gmp-mparam.h. 30347 * mpf/Makefile.am: Likewise. 30348 * mpq/Makefile.am: Likewise. 30349 * mpz/Makefile.am: Likewise. 30350 30351 * mpf/tests/Makefile.am (INCLUDES): Add `-I../..' for config.h and 30352 gmp-mparam.h. 30353 * mpq/tests/Makefile.am: Likewise. 30354 * mpz/tests/Makefile.am: Likewise. 30355 30356 * configure: Regenerate. 30357 * aclocal.m4: Regenerate. 30358 * config.in: Regenerate. 30359 * Makefile.in: Regenerate. 30360 * mpf/Makefile.in: Regenerate. 30361 * mpn/Makefile.in: Regenerate. 30362 * mpq/Makefile.in: Regenerate. 30363 * mpz/Makefile.in: Regenerate. 30364 * mpf/tests/Makefile.in: Regenerate. 30365 * mpq/tests/Makefile.in: Regenerate. 30366 * mpz/tests/Makefile.in: Regenerate. 30367 303682000-02-23 Kevin Ryde <kevin@swox.se> 30369 30370 * mpn/x86/addmul_1.S: Amend comments, this code no longer used by 30371 PentiumPro. 30372 * mpn/x86/submul_1.S: Ditto. 30373 30374 * mpn/x86/k6/com_n.asm: Rewrite, smaller but same speed. 30375 30376 * mpn/x86/addmul_1.S: Add PROLOGUE and EPILOGUE to get .type and 30377 .size for ELF. Rename #define size to n to avoid .size. 30378 * mpn/x86/lshift.S: Ditto. 30379 * mpn/x86/mul_1.S: Ditto. 30380 * mpn/x86/mul_basecase.S: Ditto. 30381 * mpn/x86/rshift.S: Ditto. 30382 * mpn/x86/submul_1.S: Ditto. 30383 * mpn/x86/udiv.S: Ditto. 30384 * mpn/x86/umul.S: Ditto. 30385 * mpn/x86/pentium/add_n.S: Ditto. 30386 * mpn/x86/pentium/addmul_1.S: Ditto. 30387 * mpn/x86/pentium/lshift.S: Ditto. 30388 * mpn/x86/pentium/mul_1.S: Ditto. 30389 * mpn/x86/pentium/mul_basecase.S: Ditto. 30390 * mpn/x86/pentium/rshift.S: Ditto. 30391 * mpn/x86/pentium/sub_n.S: Ditto. 30392 * mpn/x86/pentium/submul_1.S: Ditto. 30393 303942000-02-22 Linus Nordberg <linus@swox.se> 30395 30396 * acinclude.m4 (GMP_INIT): Use temporary file cnfm4p.tmp for 30397 post-defines. 30398 (GMP_FINISH): Ditto. 30399 (GMP_DEFINE): Add third optional argument specifying location in 30400 outfile. 30401 (GMP_DEFINE_RAW): New macro. 30402 * aclocal.m4: Regenerate. 30403 30404 * configure.in: Add `HAVE_TARGET_CPU_$target_cpu' using 30405 GMP_DEFINE_RAW. 30406 * configure: Regenerate. 30407 30408 * mpz/tests/Makefile.am: New test t-root. 30409 * mpz/tests/Makefile.in: Regenerate. 30410 304112000-02-22 Torbjorn Granlund <tege@swox.com> 30412 30413 * mpz/root.c: Complete rewrite; still primitive, but at least correct. 30414 * mpz/tests/t-root.c: New test. 30415 304162000-02-22 Kevin Ryde <kevin@swox.se> 30417 30418 * mpn/x86/k7/mul_basecase.asm: New file. 30419 * mpn/x86/k7/README: Add mpn_mul_basecase speed. 30420 * mpn/x86/k7/gmp-mparam.h: New file. 30421 30422 * mpn/x86/x86-defs.m4 (loop_or_decljnz,cmov_bytes): New macros. 30423 * mpn/asm-defs.m4 (m4_ifdef_anyof_p): New macro. 30424 30425 * mpn/x86/k6/aorsmul_1.asm: New file. 30426 * mpn/x86/k6/addmul_1.S: Removed (was a copy of pentium version). 30427 * mpn/x86/k6/submul_1.S: Removed (was a copy of pentium version). 30428 30429 * mpn/x86/p6/aorsmul_1.asm: Use OPERATION_addmul_1 and 30430 OPERATION_submul_1. 30431 * mpn/x86/k6/aors_n.asm: Use OPERATION_add_n and OPERATION_sub_n. 30432 * configure.in: Declare multi-function files for k6 and p6. 30433 30434 * configure.in: Add HAVE_TARGET_CPU_$target_cpu for config.m4. 30435 * mpn/asm-defs.m4 (define_not_for_expansion): New macro. 30436 30437 * mpn/generic/divrem_1n.c (__gmpn_divrem_1n): New file, split from 30438 mpn/generic/divrem_1.c. 30439 * mpn/generic/divrem_1.c: Ditto. 30440 * configure.in (gmp_mpn_functions): Ditto. 30441 304422000-02-21 Torbjorn Granlund <tege@swox.com> 30443 30444 * gmp.h: Undo 1996-10-06 NeXT change, it was clearly improperly 30445 written. 30446 304472000-02-21 Linus Nordberg <linus@swox.se> 30448 30449 * configure.in: Link <src>/mpn/asm-defs.m4 to <build>mpn/asm.m4. 30450 * configure: Regenerate. 30451 304522000-02-21 Linus Nordberg <linus@swox.se> 30453 30454 * mpn/x86/k7/aorsmul_1.asm: Change OPERATION_ADDMUL --> 30455 OPERATION_addmul_1. Change OPERATION_SUBMUL --> 30456 OPERATION_submul_1. 30457 30458 * mpn/x86/k7/aors_n.asm: Change OPERATION_ADD --> OPERATION_add_n. 30459 Change OPERATION_SUB --> OPERATION_sub_n. 30460 30461 * mpn/Makefile.am: Pass -DOPERATION_$* to preprocessors. 30462 * mpn/Makefile.in: Regenerate. 30463 30464 * configure.in: Symlink mpn/asm-defs.m4 to build-dir/mpn. Link 30465 multi-function files to mpn/<function>.asm and remove function 30466 name from `gmp_mpn_functions'. 30467 * configure: Regenerate. 30468 30469 * acinclude.m4 (GMP_FINISH): Tell user what we're doing. 30470 * aclocal.m4: Regenerate. 30471 304722000-02-21 Kevin Ryde <kevin@swox.se> 30473 30474 * gmp-impl.h: Rename __gmpn_mul_basecase to mpn_mul_basecase and 30475 __gmpn_sqr_basecase to mpn_sqr_basecase, remove __gmpn prototypes. 30476 * mpn/x86/mul_basecase.S: Ditto. 30477 * mpn/x86/pentium/mul_basecase.S: Ditto. 30478 30479 * configure.in (gmp_m4postinc): Use x86-defs.m4 on athlon-*-* too. 30480 304812000-02-20 Kevin Ryde <kevin@swox.se> 30482 30483 * acinclude.m4 (GSYM_PREFIX): Drop $1, change by Linus. 30484 * mpn/asm-defs.m4 (PROLOGUE,EPILOGUE): Use GSYM_PREFIX as a 30485 string, change by Linus. 30486 * mpn/x86/x86-defs.m4: Use GSYM_PREFIX as a string. 30487 30488 * mpn/x86/k6/gmp-mparam.h: New file. 30489 * mpn/asm-defs.m4 (m4_warning): New macro. 30490 30491 * mpn/x86/README: Amendments per new code and directories. 30492 * mpn/x86/README.family: New file. 30493 * mpn/x86/k6/README: New file. 30494 * mpn/x86/k7/README: New file. 30495 30496 * mpn/generic/mul_n.c: Rename __gmpn_mul_basecase to 30497 mpn_mul_basecase and __gmpn_sqr_basecase to mpn_sqr_basecase. 30498 * mpn/generic/mul_basecase.c: Ditto. 30499 * mpn/generic/sqr_basecase.c: Ditto. 30500 * mpn/generic/mul.c: Ditto. 30501 305022000-02-19 Linus Nordberg <linus@swox.se> 30503 30504 * configure.in: Don't try to symlink more than one multi-func 30505 file. 30506 * configure: Regenerate. 30507 305082000-02-18 Linus Nordberg <linus@swox.se> 30509 30510 * acinclude.m4 (GMP_CHECK_ASM_UNDERSCORE): GMP_DEFINE 30511 `GSYM_PREFIX'. Run ACTIONs even when value is found in cache. 30512 (GMP_CHECK_ASM_ALIGN_LOG): GMP_DEFINE `ALIGN'. Run ACTIONs even 30513 when value is found in cache. 30514 * aclocal.m4: Regenerate. 30515 30516 * configure.in: Don't define GSYM_PREFIX or ALIGN. 30517 Add mechanism for multi-function files. 30518 * configure: Regenerate. 30519 305202000-02-18 Kevin Ryde <kevin@swox.se> 30521 30522 * configure.in (gmp_m4postinc): Enable x86-defs.m4. 30523 * mpn/x86/k7/mul_1.asm: Fix include. 30524 * mpn/x86/k6/mul_basecase.S: Removed (copy of the pentium version). 30525 * mpn/x86/k6/mul_basecase.asm: New file. 30526 * mpn/x86/k6/sqr_basecase.asm: New file. 30527 * mpn/x86/k6/com_n.asm: New file. 30528 * mpn/x86/k6/copyi.asm: New file. 30529 * gmp.texi (Low-level Functions): Clarify mpn overlaps permitted. 30530 * gmp-impl.h (MPN_OVERLAP_P): New macro. 30531 * gmp-impl.h (assert_nocarry): New macro. 30532 * mpn/tests/ref.c: New file, based in part on other mpn/tests/*.c. 30533 * mpn/tests/ref.h: New file. 30534 305352000-02-17 Linus Nordberg <linus@swox.se> 30536 30537 * Makefile.am (dist-hook): Don't include any emacs backup files 30538 (*.~*) in dist. 30539 * Makefile.in: Regenerate. 30540 305412000-02-17 Torbjorn Granlund <tege@swox.com> 30542 30543 * mpn/sparc32/v9/mul_1.asm: Use `rd' to get current PC; get rid of 30544 getpc function. 30545 * mpn/sparc32/v9/addmul_1.asm: Likewise. 30546 * mpn/sparc32/v9/submul_1.asm: Likewise. 30547 305482000-02-17 Kevin Ryde <kevin@swox.se> 30549 30550 * gmp.h: Add prototypes and defines for mpn_and_n, mpn_andn_n, 30551 mpn_com_n, mpn_copyd, mpn_copyi, mpn_ior_n, mpn_iorn_n, 30552 mpn_mul_basecase, mpn_nand_n, mpn_nior_n, mpn_sqr_basecase, 30553 mpn_xor_n, mpn_xorn_n. 30554 30555 * mpn/asm-defs.m4: Many additions making up initial version. 30556 * mpn/asm-defs.m4 (L): Use defn(`LSYM_PREFIX'). 30557 * mpn/x86/x86-defs.m4: New file. 30558 * mpn/x86/k6/aors_n.asm: New file. 30559 * mpn/x86/k6/divmod_1.asm: New file. 30560 * mpn/x86/k6/divrem_1.asm: New file. 30561 * mpn/x86/k6/lshift.S: Removed (was a copy of the pentium version). 30562 * mpn/x86/k6/lshift.asm: New file. 30563 * mpn/x86/k6/mod_1.asm: New file. 30564 * mpn/x86/k6/mul_1.S: Removed (was a copy of the pentium version). 30565 * mpn/x86/k6/mul_1.asm: New file. 30566 * mpn/x86/k6/rshift.S: Removed (was a copy of the pentium version). 30567 * mpn/x86/k6/rshift.asm: New file. 30568 * mpn/x86/k7/aors_n.asm: New file. 30569 * mpn/x86/k7/aorsmul_1.asm: New file. 30570 * mpn/x86/k7/mul_1.asm: New file. 30571 * mpn/x86/k7/rshift.asm: New file. 30572 * mpn/x86/p6/aorsmul_1.asm: New file. 30573 * mpn/x86/copyi.asm: New file. 30574 * mpn/x86/copyd.asm: New file. 30575 * mpn/lisp/gmpasm-mode.el: New file. 30576 305772000-02-16 Torbjorn Granlund <tege@swox.com> 30578 30579 * mpn/sparc32/v9/mul_1.asm: Conditionalize for PIC. 30580 * mpn/sparc32/v9/addmul_1.asm: Likewise. 30581 * mpn/sparc32/v9/submul_1.asm: Likewise. 30582 * mpn/sparc32/v8/supersparc/udiv.asm: Likewise. 30583 * mpn/sparc32/udiv_fp.asm: Likewise. 30584 305852000-02-16 Linus Nordberg <linus@swox.se> 30586 30587 * configure.in: Add mechanism for including target specific 30588 m4-files in config.m4. 30589 * configure: Regenerate. 30590 30591 * acinclude.m4 (GMP_PROG_CCAS): Begin assembly lines (except 30592 labels) with a tab character. HP-UX demands it. 30593 (GMP_CHECK_ASM_SIZE): Ditto. 30594 (GMP_CHECK_ASM_LSYM_PREFIX): Ditto. 30595 (GMP_CHECK_ASM_LABEL_SUFFIX): Set to empty string for HP-UX. 30596 (GMP_CHECK_ASM_GLOBL): Change `.xport' --> `.export'. 30597 * aclocal.m4: Regenerate. 30598 305992000-02-16 Linus Nordberg <linus@swox.se> 30600 30601 * acinclude.m4 (GMP_CHECK_ASM_LSYM_PREFIX): Define LSYM_PREFIX as 30602 the prefix only, no argument. 30603 * aclocal.m4: Regenerate. 30604 * configure: Regenerate. 30605 30606 * mpn/asm-defs.m4 (L): No argument to LSYM_PREFIX. 30607 306082000-02-15 Linus Nordberg <linus@swox.se> 30609 30610 * acinclude.m4: Prefix all temporary shell variables with 30611 `gmp_tmp_'. 30612 (GMP_PROG_CC_FIND): Use defaults if no arguments are passed. 30613 Quote use of arguments. 30614 (GMP_PROG_CCAS): New macro. 30615 (GMP_INIT): New macro. 30616 (GMP_FINISH): New macro. 30617 (GMP_INCLUDE): New macro. 30618 (GMP_SINCLUDE): New macro. 30619 (GMP_DEFINE): New macro. 30620 (GMP_CHECK_ASM_LABEL_SUFFIX): New macro. 30621 (GMP_CHECK_ASM_TEXT): New macro. 30622 (GMP_CHECK_ASM_DATA): New macro. 30623 (GMP_CHECK_ASM_GLOBL): New macro. 30624 (GMP_CHECK_ASM_TYPE): New macro. 30625 (GMP_CHECK_ASM_SIZE): New macro. 30626 (GMP_CHECK_ASM_LSYM_PREFIX): New macro. 30627 (GMP_CHECK_ASM_W32): New macro. 30628 * aclocal.m4: Regenerate. 30629 30630 * configure.in: Find m4 and nm for target. 30631 Use new macros to create config.m4. 30632 Prefix all temporary shell variables with `tmp_'. 30633 Pass `-X 64' to nm for 64-bit PPC target with 64-bit compiler. 30634 * configure: Regenerate. 30635 30636 * Makefile.am (dist-hook): *Really* remove all CVS dirs in 30637 dist. 30638 * Makefile.in: Regenerate. 30639 30640 * mpn/Makefile.am: Add target for building .lo and .o from 30641 .asm. 30642 Pass -DPIC to preprocessor (CPP/m4) when building .lo. 30643 Build .o a second time for target .lo, without -DPIC to 30644 preprocessor. 30645 (SUFFIX): Add `.asm'. 30646 (EXTRA_DIST): Add asm-defs.m4. 30647 * mpn/Makefile.in: Regenerate. 30648 30649 * mpf/Makefile.in: Regenerate. 30650 * mpf/tests/Makefile.in: Regenerate. 30651 * mpq/Makefile.in: Regenerate. 30652 * mpq/tests/Makefile.in: Regenerate. 30653 * mpz/Makefile.in: Regenerate. 30654 * mpz/tests/Makefile.in: Regenerate. 30655 306562000-02-15 Torbjorn Granlund <tege@swox.com> 30657 30658 * mpn/sparc32/udiv_fp.asm: Change `RODATA' to `DATA'. 30659 * mpn/sparc32/v8/supersparc/udiv.asm: Likewise. 30660 * mpn/sparc32/v9/addmul_1.asm: Likewise. 30661 * mpn/sparc32/v9/submul_1.asm: Likewise. 30662 * mpn/sparc32/v9/mul_1.asm: Likewise. 30663 30664 * mpn/sparc32/add_n.asm: Rename `size' -> `n'. 30665 * mpn/sparc32/sub_n.asm: Likewise. 30666 30667 * sparc32: Rename `.s' and `.S' files to `.asm'. 30668 * sparc64: Rename `.s' and `.S' files to `.asm'. 30669 306702000-02-11 Torbjorn Granlund <tege@swox.com> 30671 30672 * config.sub: Adopt to new config.guess sparc naming conventions. 30673 30674 * config.guess (sun4u:SunOS:5.*:*): Change `sparc9' to `sparcv9'. 30675 * config.guess (sun4m:SunOS:5.*:*): Change to sun4[md]:SunOS:5.*:* and 30676 change `sparc8' to `sparcv8'. 30677 30678 * mpn/x86/add_n.S: Use PROLOGUE/EPILOGUE. 30679 * mpn/x86/sub_n.S: Likewise. 30680 30681 * mpn/x86/syntax.h (PROLOGUE): New name for PROLOG. 30682 * mpn/x86/syntax.h (EPILOGUE): New name for EPILOG. 30683 306842000-02-11 Linus Nordberg <linus@swox.se> 30685 30686 * configure.in: Better path for 64-bit sparc without 64-bit cc. 30687 Change sparc8 --> sparcv8. 30688 Change sparc9 --> sparcv9. 30689 * configure: Regenerate. 30690 306912000-02-10 Linus Nordberg <linus@swox.se> 30692 30693 * configure.in: Use Autoconf. 30694 * Makefile.am: New file. 30695 30696 * AUTHORS: New file. 30697 * COPYING: New file. 30698 * acinclude.m4: New file. 30699 * acconfig.h: New file. 30700 30701 * configure: Generate. 30702 * Makefile.in: Generate. 30703 * aclocal.m4: Generate. 30704 * config.in: Generate. 30705 30706 * install.sh: Remove. 30707 * install-sh: New file from Automake. 30708 * missing: New file from Automake. 30709 * ltconfig: New file from Libtool. 30710 * ltmain.sh: New file from Libtool. 30711 30712 * mpf/Makefile.am: New file. 30713 * mpf/Makefile.in: Generate. 30714 * mpf/configure.in: Remove. 30715 * mpf/tests/Makefile.am: New file. 30716 * mpf/tests/Makefile.in: Generate. 30717 * mpf/tests/configure.in: Remove. 30718 30719 * mpn/Makefile.am: New file. 30720 * mpn/Makefile.in: Generate. 30721 * mpn/configure.in: Remove. 30722 30723 * mpq/Makefile.am: New file. 30724 * mpq/Makefile.in: Generate. 30725 * mpq/configure.in: Remove. 30726 * mpq/tests/Makefile.am: New file. 30727 * mpq/tests/Makefile.in: Generate. 30728 * mpq/tests/configure.in: Remove. 30729 30730 * mpz/Makefile.am: New file. 30731 * mpz/Makefile.in: Generate. 30732 * mpz/configure.in: Remove. 30733 * mpz/tests/Makefile.am: New file. 30734 * mpz/tests/Makefile.in: Generate. 30735 * mpz/tests/configure.in: Remove. 30736 307372000-02-10 Torbjorn Granlund <tege@swox.com> 30738 30739 * mpn/x86/add_n.S: Don't use label L0 twice. 30740 * mpn/x86/sub_n.S: Likewise. 30741 307422000-01-20 Linus Nordberg <linus@swox.se> 30743 30744 * demos/pexpr.c: Don't use setup_error_handler() in windoze. 30745 307462000-01-19 Torbjorn Granlund <tege@swox.com> 30747 30748 * demos/pexpr.c (sigaltstack): #define to sigstack for AIX. 30749 (setup_error_handler): Don't write to ss_size and ss_flags 30750 on AIX. 30751 307522000-01-11 Torbjorn Granlund <tege@swox.com> 30753 30754 * mpn/configure.in (hppa2.0*-*-*): Move assignment of 30755 target_makefile_frag to where it belongs. 30756 307571999-12-21 Torbjorn Granlund <tege@swox.com> 30758 30759 * longlong.h (v9 umul_ppmm): New #define. 30760 (v9 udiv_qrnnd): New #define. 30761 307621999-12-14 Torbjorn Granlund <tege@swox.com> 30763 30764 * mpn/generic/divmod_1.c: Use invert_limb. 30765 * mpn/generic/mod_1.c: Use invert_limb. 30766 30767 * gmp-impl.h (invert_limb): Put definition here. 30768 * mpn/generic/divrem.c (invert_limb): Delete definition. 30769 * mpn/generic/divrem_2.c (invert_limb): Delete definition. 30770 30771 * gmp.h (mpn_divrem): Inhibit for non-gcc. 30772 But declare (undo 1999-11-22 change). 30773 30774 * gmp-impl.h (DItype,UDItype): Do these also if _LONG_LONG_LIMB. 30775 30776 * longlong.h: Move 64-bit hppa code out of __GNUC__ conditional. 30777 30778 * stack-alloc.c (HSIZ): New #define. 30779 (__tmp_alloc): Use HSIZ instead of sizeof(tmp_stack). 30780 307811999-12-10 Torbjorn Granlund <tege@swox.com> 30782 30783 * config.sub: Clean up handling of x86 CPUs: Properly recognize 30784 Amd CPUs as unique entities. Use manufacturer's names of 30785 processors ("pentium", etc); still match ambiguous names like 30786 "i586", "i686", "p6" but be conservative in interpreting them. 30787 30788 * configure.in: Recognize x86 CPU types known by config.guess. 30789 * mpn/configure.in: Likewise. Add x86/mmx path component as 30790 appropriate. 30791 (athlon-*-*): Fix typo. 30792 30793 * config.guess: Update x86 recog code to initially match 30794 more than just i386. 30795 Call K6-2 and K6-III for "k62" and "k63" respectively. 30796 30797 * config.guess: Recognize x86 CPU types. 30798 Update code for FreeBSD, NetBSD, OpenBSD, Linux. 30799 308001999-12-08 Torbjorn Granlund <tege@swox.com> 30801 30802 * mpf/pow_ui.c: Avoid final squaring in loop. 30803 308041999-12-07 Torbjorn Granlund <tege@swox.com> 30805 30806 * gmp-impl.h (udiv_qrnnd_preinv2gen): Prefix local variables with `_'. 30807 (udiv_qrnnd_preinv2norm): Likewise. 30808 From Kevin Ryde: 30809 (HAVE_ALLOCA): #define also if defined (alloca). 30810 308111999-12-04 Torbjorn Granlund <tege@swox.com> 30812 30813 * mpn/tests/add_n.c: Set OPS from CLOCK. 30814 * mpn/tests/sub_n.c: Likewise. 30815 * mpn/tests/mul_1.c: Likewise. 30816 * mpn/tests/addmul_1.c: Likewise. 30817 * mpn/tests/submul_1.c: Likewise. 30818 30819 * mpn/tests/lshift.c: Update from add_n.c. 30820 * mpn/tests/rshift.c: Likewise. 30821 308221999-12-03 Torbjorn Granlund <tege@swox.com> 30823 30824 * mpn/powerpc64/copy.S: New file. 30825 308261999-12-02 Torbjorn Granlund <tege@swox.com> 30827 30828 * mpn/sparc64/copy.s: New file. 30829 30830 * mpn/tests/copy.c: New file. 30831 30832 * mpn/configure.in: Recognize more Amd CPUs; Set special paths for 30833 k7 CPU. 30834 30835 * configure.in: Recognize Amd x86 CPUs. 30836 30837 * mpz/fdiv_r_2exp.c: In rounding code, read in->_mp_size before 30838 writing to res->_mp_size. 30839 30840 * mpn/powerpc64/*.S: Clean up assembly syntax, add function headers. 30841 * mpn/powerpc64/gmp-mparam.h: (KARATSUBA_MUL_THRESHOLD): #define. 30842 (KARATSUBA_SQR_THRESHOLD): #define. 30843 30844 * mpn/tests/add_n.c (main): Only print test number if TIMES==1 30845 and not printing. 30846 (main): Don't run reference code if NOCHECK. 30847 * mpn/tests/sub_n.c: Likewise. 30848 * mpn/tests/mul_1.c: Likewise. 30849 * mpn/tests/addmul_1.c: Likewise. 30850 * mpn/tests/submul_1.c: Likewise. 30851 30852 * mpn/tests/lshift.c: (main): Only print test number if TIMES==1 30853 and not printing. 30854 * mpn/tests/rshift.c: Likewise. 30855 308561999-11-22 Torbjorn Granlund <tege@swox.com> 30857 30858 * gmp.h (mpz_init_set_str): Declare using __gmp_const. 30859 (mpz_set_str): Likewise. 30860 (mpf_init_set_str): Likewise. 30861 (mpf_set_str): Likewise. 30862 (mpn_set_str): Likewise. 30863 (__gmp_0): Likewise. 30864 (mpn_divrem): Remove separate declaration; it's defined later in 30865 this file. 30866 30867 * gmp.h: Replace "defined (__STD__)' by (__STDC__-0) in 30868 expressions involving more than one term, to handle Sun's compiler 30869 that most helpfully sets __STDC__ to 0. 30870 * gmp-impl.h: Likewise. 30871 * longlong.h: Likewise. 30872 308731999-11-21 Torbjorn Granlund <tege@swox.com> 30874 30875 * mpn/sparc64/gmp-mparam.h (KARATSUBA_MUL_THRESHOLD): #define. 30876 (KARATSUBA_SQR_THRESHOLD): #define. 30877 30878 * mpn/sparc64/lshift.s: Compensate stack references for odd stack ptr. 30879 * mpn/sparc64/rshift.s: Likewise. 30880 30881 * mpn/sparc64/addmul_1.s: Propagate carry properly. 30882 * mpn/sparc64/submul_1.s: Likewise. 30883 30884 * mpn/sparc64/sub_n.s: Rewrite. 30885 30886 * mpn/sparc64/sub_n.s: Get operand order for main subcc right 30887 (before scrapping this code for new code). 30888 308891999-11-20 Torbjorn Granlund <tege@swox.com> 30890 30891 * mpn/sparc64/add_n.s: Rewrite. 30892 308931999-11-17 Torbjorn Granlund <tege@swox.com> 30894 30895 * mpn/x86/syntax.h (PROLOG): New #define. 30896 (EPILOG): New #define. 30897 30898 * gmp.h (mpn_addsub_n): Declare. 30899 * gmp.h (mpn_add_nc): Declare. 30900 * gmp.h (mpn_sub_nc): Declare. 30901 * mpn/powerpc64/addsub_n.S: New file. 30902 309031999-11-17 Torbjorn Granlund <tege@swox.com> 30904 30905 * mpn/alpha/gmp-mparam.h 30906 (KARATSUBA_MUL_THRESHOLD): Only #define #ifndef. 30907 (KARATSUBA_SQR_THRESHOLD): Likewise. 30908 309091999-11-14 Torbjorn Granlund <tege@swox.com> 30910 30911 * mpn/x86/mul_1.S: Unroll and optimize for P6 and K7. 30912 309131999-11-09 Torbjorn Granlund <tege@swox.com> 30914 30915 * mpn/x86/p6/gmp-mparam.h 30916 (KARATSUBA_MUL_THRESHOLD): Only #define #ifndef. 30917 (KARATSUBA_SQR_THRESHOLD): Likewise. 30918 309191999-11-05 Torbjorn Granlund <tege@swox.com> 30920 30921 * mpn/generic/addsub_n.c: New file. 30922 309231999-11-02 Torbjorn Granlund <tege@swox.com> 30924 30925 * config.guess: Handle alpha:FreeBSD with alpha:NetBSD. 30926 30927 * configure.in (vax*-*-*): New case. 30928 * config/mt-vax: New file. 30929 * mpn/vax/add_n.s: Rewrite. 30930 * mpn/vax/sub_n.s: Rewrite. 30931 309321999-10-31 Torbjorn Granlund <tege@swox.com> 30933 30934 * mpn/vax/rshift.s: New file. 30935 * mpn/vax/lshift.s: New file. 30936 309371999-10-29 Torbjorn Granlund <tege@swox.com> 30938 30939 * config.sub: Handle k5 and k6. 30940 * mpn/configure.in: Recognize k6. 30941 30942 * mpf/tests/t-get_d.c (LOW_BOUND, HIGH_BOUND): New #defines. 30943 (main): Tighten error bounds to 14 digits. 30944 30945 * longlong.h (default umul_ppmm, when smul_ppmm exists): 30946 Rename __m0 => __xm0, __m1 => __xm1. 30947 (default smul_ppmm): Likewise. 30948 309491999-10-11 Torbjorn Granlund <tege@swox.com> 30950 30951 * config.guess: Reverse the test for POWER vs PowerPC. 30952 * config.guess (sun4m:SunOS:5.*:*): New case. 30953 * config.guess (sun4u:SunOS:5.*:*): New case. 30954 309551999-09-29 Torbjorn Granlund <tege@swox.com> 30956 30957 * mpn/generic/divrem_2.c: Clean up comments. 30958 309591999-09-23 Torbjorn Granlund <tege@swox.com> 30960 30961 * mpz/tests/Makefile.in: Use move-if-change when generating binaries. 30962 * mpf/tests/Makefile.in: Likewise. 30963 * mpq/tests/Makefile.in: Likewise. 30964 * mpz/tests/move-if-change: New file. 30965 * mpf/tests/move-if-change: New file. 30966 * mpq/tests/move-if-change: New file. 30967 30968 * gmp.h (mpn_incr_u): New macro (from mpn/generic/mul_n.c). 30969 (mpn_decr_u): New macro. 30970 30971 * mpn/generic/mul_n.c (mpn_incr): Delete. 30972 * mpn/generic/mul_n.c: Update usages mpn_incr => mpn_incr_u. 30973 * mpn/generic/divrem_newt.c: Use mpn_incr_u and mpn_decr_u instead of 30974 mpn_add_1 and mpn_sub_1. 30975 * mpn/generic/sqrtrem.c: Likewise. 30976 * mpz/cdiv_q_ui.c: Likewise. 30977 * mpz/cdiv_qr_ui.c: Likewise. 30978 * mpz/fdiv_q_ui.c: Likewise. 30979 * mpz/fdiv_qr_ui.c: Likewise. 30980 30981 * mpn/generic/sqrtrem.c: Start single-limb Newton iteration from 18 30982 bits. 30983 309841999-07-27 Torbjorn Granlund <tege@swox.com> 30985 30986 * mpn/generic/divrem_1.c (__gmpn_divrem_1n): New function. 30987 30988 * mpn/generic/divrem_2.c: New file, code from divrem.c, `case 2:'. 30989 * mpn/Makefile.in: Compile divrem_2.c. 30990 * make.bat: Compile divrem_2.c. 30991 * mpn/configure.in (functions): Add divrem_2. 30992 * gmp.h: Declare mpn_divrem_2. 30993 30994 * mpn/generic/divrem.c: Delete special cases, handle just divisors 30995 of more than 2 limbs. 30996 * gmp.h (mpn_divrem): Call mpn_divrem_1, mpn_divrem_2, as appropriate. 30997 30998 * mpn/generic/divrem.c: Rework variable usage for better register 30999 allocation. 31000 310011999-07-26 Torbjorn Granlund <tege@swox.com> 31002 31003 * mpn/alpha/ev5/add_n.s: Rewrite for better ev6 speed. 31004 * mpn/alpha/ev5/sub_n.s: Likewise. 31005 310061999-07-21 Torbjorn Granlund <tege@swox.com> 31007 31008 * longlong.h (alpha): Define umul_ppmm for cc. 31009 31010 * gmp-impl.h (DItype, UDItype): Define for non-gcc if _LONGLONG is 31011 defined. 31012 310131999-07-15 Torbjorn Granlund <tege@swox.com> 31014 31015 * longlong.h (powerpc64 count_leading_zeros): Fix typo. 31016 (powerpc64 add_ssaaaa): Fix typos. 31017 (powerpc64 sub_ddmmss): Fix typos. 31018 310191999-07-14 Torbjorn Granlund <tege@swox.com> 31020 31021 * mpz/tests/Makefile.in: Pass XCFLAGS when linking. 31022 * mpf/tests/Makefile.in: Likewise. 31023 * mpq/tests/Makefile.in: Likewise. 31024 * mpn/Makefile.in (.S.o): Pass XCFLAGS. 31025 31026 * longlong.h: Add support for 64-bit PowerPC. 31027 * config.sub: Handle "powerpc64". 31028 * configure.in: Likewise. 31029 * mpn/configure.in: Suppress use of config/t-ppc-aix for now, 31030 it seems compiler passes proper options. 31031 * mpn/powerpc64/*.S: New files. 31032 31033 * Makefile.in (FLAGS_TO_PASS): Pass "AR=$(AR)". 31034 310351999-07-07 Torbjorn Granlund <tege@swox.com> 31036 31037 * demos/pexpr.c (factor): Change alloca call to a malloc/free pair. 31038 31039 * mpn/powerpc32/syntax.h: Add #define's for crN. 31040 31041 * gmp.h (gmp_rand_algorithm): Remove spurious `,'. 31042 310431999-07-05 Torbjorn Granlund <tege@swox.com> 31044 31045 * mpn/generic/divrem_1.c: Normalize divisor when needed. 31046 310471999-07-02 Torbjorn Granlund <tege@swox.com> 31048 31049 * mpn/configure.in (powerpc*-apple-mach): New configuration. 31050 * mpn/powerpc32/*: Add support for apple-macho syntax. 31051 * mpn/powerpc32/syntax.h: New file. 31052 * gmp-impl.h: Don't use `__attribute__' syntax for Apple's perversion 31053 of GCC. 31054 310551999-05-26 Linus Nordberg <linus@swox.se> 31056 31057 * rand.c (gmp_rand_init): Fix typo. 31058 31059 * mpn/generic/rawrandom.c (mpn_rawrandom): Count bits, not limbs, 31060 to keep track of how many rounds to do in loop. Clean up 31061 temporary allocation. Update `seedsize' inside loop. Mask off 31062 the correct number of bits from final result. Init `mcopyp' even 31063 when not normalizing `m'. 31064 31065 * randlc.c (gmp_rand_init_lc): Fix typo (don't call 31066 mpz_init_set_ui()). 31067 31068 * mpn/generic/rawrandom.c (mpn_rawrandom): Set SIZ(s->seed) when 31069 reallocating. 31070 31071 * tests/rand/Makefile (test, bigtest): Add 33-bit tests. 31072 31073 * tests/rand/gen.c (main): Set precision of variable passed to 31074 mpf_urandomb(). Add option `-p'. 31075 310761999-05-25 Linus Nordberg <linus@swox.se> 31077 31078 * randcm.c: Remove. 31079 * randcmui.c: Remove. 31080 * Makefile.in: Remove randcm and randcmui. 31081 * make.bat: Ditto. 31082 * gmp-impl.h: Remove prototypes for __gmp_rand_init_common() and 31083 __gmp_rand_init_common_ui(). 31084 * randlc.c (gmp_rand_init_lc): Don't call 31085 __gmp_rand_init_common(). 31086 31087 * randlcui.c (gmp_rand_init_lc_ui): Don't call 31088 __gmp_rand_init_common_ui(). 31089 31090 * gmp.h (__gmp_rand_state_struct): Remove unused member `maxval'. 31091 * randclr.c (gmp_rand_clear): Remove reference to s->maxval. 31092 * randcm.c (__gmp_rand_init_common): Ditto 31093 31094 * mpn/generic/rawrandom.c (mpn_rawrandom): Don't calculate nlimbs 31095 twice. 31096 31097 * gmp.h (__gmp_rand_dist): Remove. 31098 310991999-05-24 Linus Nordberg <linus@swox.se> 31100 31101 * mpn/generic/rawrandom.c: Clean up comments. 31102 31103 * gmp.texi: Add documentation for random number generation. 31104 311051999-05-21 Linus Nordberg <linus@swox.se> 31106 31107 * gmp.h: Typedef `gmp_rand_state' as an array with one element. 31108 Change prototypes accordingly. 31109 * gmp-impl.h: Change prototypes using `gmp_rand_state'. 31110 * rand.c (gmp_rand_init): Take `gmp_rand_state' as argument 31111 instead of a pointer to a `gmp_rand_state'. 31112 * mpf/urandom.c (mpf_urandomb): Ditto. 31113 * mpz/urandom.c (mpz_urandomb): Ditto. 31114 * mpn/generic/rawrandom.c (mpn_rawrandom): Ditto. 31115 * randcmui.c (__gmp_rand_init_common_ui): Ditto. 31116 * randlc.c (gmp_rand_init_lc): Ditto. 31117 * randlcui.c (gmp_rand_init_lc_ui): Ditto. 31118 * randui.c (gmp_rand_init_ui): Ditto. 31119 * randcm.c (__gmp_rand_init_common): Ditto. 31120 * randclr.c (gmp_rand_clear): Ditto. 31121 31122 * tests/rand/gen.c (main): Pass `s' to rand-funcs instead of address 31123 of `s'. 31124 311251999-05-20 Linus Nordberg <linus@swox.se> 31126 31127 * Makefile.in: Rename randi.c --> rand.c, randi_lc.c --> randlc.c, 31128 randicom.c --> randcm.c. Add randui.c, randcmui.c, randlcui.c. 31129 * make.bat: Ditto. 31130 31131 * gmp.h: Add prototypes for gmp_rand_init_ui() and 31132 gmp_rand_init_lc_ui(). 31133 * gmp-impl.h: Add prototypes for __gmp_rand_init_common() and 31134 __gmp_rand_init_common_ui(). 31135 31136 * randlc.c, randcm.c, randclr.c, rand.c: Change #include of 31137 <gmp.h> to "gmp.h". 31138 * randclr.c: Include stdlib.h for free(). 31139 * rand.c: Include gmp-impl.h. 31140 311411999-05-12 Torbjorn Granlund <tege@swox.com> 31142 31143 * mpn/configure.in: Put generic m68k alternative last. 31144 311451999-05-04 Torbjorn Granlund <tege@swox.com> 31146 31147 * demos/pexpr.c (setup_error_handler): Use sigemptyset to create 31148 empty set (for portability). 31149 (fns): Fix typo '#if #if'. 31150 (mpz_eval_expr): Implement FERMAT and MERSENNE. 31151 31152 * demos/pexpr.c: Cast longjmp argument via long to silent warnings on 31153 64-bit hosts. 31154 311551999-05-03 Torbjorn Granlund <tege@swox.com> 31156 31157 * demos/pexpr.c: Add #defines for GMP 1.x and 2.0 compatibility. 31158 31159 * demos/pexpr.c (setup_error_handler): New function; take signal 31160 handler setup code from main(), with major modifications to use modern 31161 signal interface. 31162 (main): Remove signal handler setup code; call setup_error_handler. 31163 311641999-04-29 Linus Nordberg <linus@swox.se> 31165 31166 * tests/rand/findcl.c (main): Add option '-i' for interval factor. 31167 Separate v and merit lose figures. Add '-v' for version. 31168 311691999-04-28 Linus Nordberg <linus@swox.se> 31170 31171 * tests/rand/statlib.c: Change debugging stuff. 31172 31173 * tests/rand/gmpstat.h: Add debug values definitions. 31174 31175 * tests/rand/findcl.c (main): Print low and high merit on startup. 31176 Print version string on startup. Catch SEGV and HUP. Add option -d 31177 for debug. Fix bug making test for v too hard. 31178 (sh_status): New function. 31179 (sh_status): Flush stdout. Add RCSID. 31180 311811999-04-27 Linus Nordberg <linus@swox.se> 31182 31183 * tests/rand/Makefile (clean): Add target. 31184 311851999-04-27 Linus Nordberg <linus.nordberg@canit.se> 31186 31187 * tests/rand/stat.c: Include gmpstat.h. 31188 Add global int g_debug. 31189 31190 * tests/rand/spect.c: Include <unistd.h>. 31191 31192 * tests/rand/findcl.c (main): Input is `m', not all factors of `m'. 31193 Print only the very first matching multiplier. Include <unistd.h>. 31194 Flush stdout. Print "done." when done. 31195 31196 * tests/rand/spect.c: Move everything but main() to statlib.c. 31197 31198 * tests/rand/findcl.c: New file. 31199 31200 * tests/rand/gmpstat.h: New file. 31201 31202 * tests/rand/statlib.c (merit, merit_u, f_floor, vz_dot, 31203 spectral_test): New functions. 31204 312051999-04-27 Torbjorn Granlund <tege@swox.com> 31206 31207 * mpn/configure.in: Fix typo, "sparc-*)" was "sparc)". 31208 312091999-04-21 Torbjorn Granlund <tege@swox.com> 31210 31211 * config.sub: Recognize ev6. 31212 312131999-04-12 Linus Nordberg <linus.nordberg@canit.se> 31214 31215 * urandom.c: Split up into randclr.c, randi.c, randi_lc.c, 31216 randicom.c. 31217 * randclr.c, randi.c, randi_lc.c, randicom.c: New files. 31218 * Makefile.in: Remove urandom. Add randclr, randi, randi_lc, 31219 randicom. 31220 * make.bat: Ditto 31221 312221999-03-31 Torbjorn Granlund <tege@matematik.su.se> 31223 31224 * configure.in (sparc9-*-solaris2.[789]*, etc): New alternative. 31225 * mpn/configure.in: Use mt-sprc9 also for ultrasparc*-*-solaris2*. 31226 312271999-03-30 Linus Nordberg <linus.nordberg@canit.se> 31228 31229 * urandom.c (__gmp_rand_scheme): Change NULL->0. 31230 Include "gmp.h" instead of <gmp.h>. 31231 312321999-03-29 Linus Nordberg <linus.nordberg@canit.se> 31233 31234 * gmp.h (__gmp_rand_data_lc): Now holds a, c, m instead of scheme 31235 struct. 31236 (__gmp_rand_lc_scheme_struct): Remove mpz_t's `a' and `m'. 31237 31238 * tests/rand/stat.c (f_freq): Don't print 2nd level results if doing 31239 1st level. 31240 31241 * tests/rand/gen.c (main): Set default algorithm to mpz_urandomb. 31242 (main): Add option -c. 31243 312441999-03-24 Linus Nordberg <linus.nordberg@canit.se> 31245 31246 * tests/rand/Makefile (GMPINC): Rename to GMPH. 31247 (GMPH): Add gmp-mparam.h. 31248 (CFLAGS): Add -I$(GMPLIBDIR)/mpn 31249 312501999-03-23 Linus Nordberg <linus.nordberg@canit.se> 31251 31252 * Makefile.in: Compile top-dir/urandom.c. 31253 * make.bat: Ditto. 31254 31255 * mpn/Makefile.in: Compile rawrandom.c. 31256 * make.bat: Ditto. 31257 31258 * mpn/configure.in (functions): Add rawrandom. 31259 31260 * gmp.h (__gmp_rand_scheme_struct): Rename to 31261 __gmp_rand_lc_scheme_struct. 31262 (__gmp_rand_data_lc): Remove member 'n'. Allocate a 31263 __gmp_rand_lc_scheme_struct instead of a pointer to one. 31264 Add prototype for gmp_rand_init_lc(), mpn_rawrandom(). 31265 New prototype for mpz_urandomb(). 31266 31267 * urandom.c: New file. 31268 (__gmp_rand_init_common): New function. 31269 (gmp_rand_init_lc): New function. 31270 (gmp_rand_init): Don't init data_lc->n. Call gmp_rand_init_lc() 31271 and __gmp_rand_init_common(). 31272 (gmp_rand_clear): Remove reference to data_lc->n. 31273 31274 * mpz/urandom.c (gmp_rand_init, gmp_rand_clear): Move to new file 31275 urandom.c in top-dir. 31276 (mpz_urandomb): Add function parameter nbits. Call mpn_rawrandom(). 31277 31278 * mpf/urandom.c (mpf_urandomb): Call mpn_rawrandom(). 31279 31280 * mpn/generic/rawrandom.c: New file. 31281 (mpn_rawrandom): New function. 31282 312831999-03-17 Torbjorn Granlund <tege@matematik.su.se> 31284 31285 * extract-dbl.c: When packing result, adjust exp when sc == 0. 31286 31287 * mpf/tests/t-get_d.c: New file. 31288 * mpf/tests/Makefile.in: Compile t-get_d.c. 31289 312901999-03-16 Linus Nordberg <linus.nordberg@canit.se> 31291 31292 * mpz/urandom.c (__gmp_rand_scheme): Add extra braces around the 31293 mpz_t members. 31294 31295 * make.bat: Compile mpz/urandom.c and mpf/urandom.c 31296 31297 * tests/rand/statlib.c (ks_table): Use mpf_pow_ui() and exp(). 31298 31299 * tests/rand/gen.c: Include unistd.h for getopt. 31300 313011999-03-15 Linus Nordberg <linus.nordberg@canit.se> 31302 31303 * mpz/urandom.c (gmp_rand_init): New function. 31304 (gmp_rand_clear): New function. 31305 (mpz_urandomb): New function. 31306 31307 * mpz/Makefile.in: Compile urandom.c 31308 31309 * mpf/urandom.c (mpf_urandomb): New function. 31310 31311 * mpf/Makefile.in: Compile urandom.c. 31312 31313 * gmp.h (__gmp_rand_state_struct, __gmp_rand_scheme_struct): New 31314 structs for randomization functions. 31315 (gmp_rand_dist, gmp_rand_alogrithm): New enums for randomization 31316 functions. 31317 (mpz_urandomb, mpf_urandomb): Add prototype. 31318 (gmp_rand_init, gmp_rand_clear): Add prototype. 31319 31320 * tests/rand/gen.c, stat.c, statlib.c, statlib.h: New files. 31321 * tests/rand/Makefile, tests/rand/ChangeLog: New files. 31322 313231999-03-15 Torbjorn Granlund <tege@matematik.su.se> 31324 31325 * .gdbinit: New file. 31326 31327 * mpz/dump.c: New file. 31328 * mpz/Makefile.in: Compile dump.c. 31329 * make.bat: Likewise. 31330 * gmp.h (mpz_dump): Declare. 31331 313321999-03-14 Torbjorn Granlund <tege@matematik.su.se> 31333 31334 * mpz/tests/reuse.c: Also test mpz_invert and mpz_divexact. 31335 31336 * mpz/tests/convert.c: Update to GMP 2 variable syntax. 31337 313381999-03-13 Torbjorn Granlund <tege@matematik.su.se> 31339 31340 * mpf/README: New file. 31341 * mpz/README: New file. 31342 31343 * mpf/pow_ui.c: New file. 31344 * mpf/Makefile.in: Compile pow_ui.c. 31345 * make.bat: Likewise. 31346 * gmp.h (mpf_pow_ui): Declare. 31347 313481999-03-12 Torbjorn Granlund <tege@matematik.su.se> 31349 31350 * mpn/configure.in: Stage 1 of rewrite. 31351 * mpn/underscore.h: New name for bsd.h. 31352 * mpn/sysv.h: Deleted. 31353 31354 * mpn/m68k/*: Don't include sysdep.h. 31355 31356 * mpn/pa64/README: New file. 31357 313581999-03-11 Torbjorn Granlund <tege@matematik.su.se> 31359 31360 * mpn/powerpc32/add_n.S: Add support for both AIX and ELF syntax. 31361 Renamed from `.s'. 31362 * mpn/powerpc32/sub_n.S: Likewise. 31363 * mpn/powerpc32/lshift.S: Likewise. 31364 * mpn/powerpc32/rshift.S: Likewise. 31365 * mpn/powerpc32/mul_1.S: Likewise. 31366 * mpn/powerpc32/addmul_1.S: Likewise. 31367 * mpn/powerpc32/submul_1.S: Likewise. 31368 31369 * mpn/powerpc32/umul.S: New file. 31370 * mpn/sparc32/v8/umul.S: New file. 31371 * mpn/sparc32/umul.S: New file. 31372 * mpn/x86/umul.S: New file. 31373 * mpn/x86/udiv.S: New file. 31374 31375 * mpn/Makefile.in (mul_basecase.o): Delete rule. 31376 313771999-02-22 Torbjorn Granlund <tege@matematik.su.se> 31378 31379 * configure.in (hppa2.0*-*-*): Force use of GCC. 31380 31381 * extract-dbl.c: Handle IEEE denormalized numbrs. Clean up. 31382 313831998-12-02 Torbjorn Granlund <tege@matematik.su.se> 31384 31385 * mpn/Makefile.in (CCAS): New macro. 31386 (.s.o): Use CCAS. 31387 (.S.o): Likewise. 31388 31389 * mpn/Makefile.in (mul_basecase.o): Add dependency. 31390 (sqr_basecase.o): Likewise. 31391 (mod_1.o): Likewise. 31392 31393 * demos/pexpr.c (cputime): Test also __hpux. 31394 (cleanup_and_exit): Check SIGXCPU only #ifdef LIMIT_RESOURCE_USAGE. 31395 31396 * mpz/tests/t-2exp.c: Use urandom, not random. 31397 31398 * mpn/configure.in (arm*-*-*): New alternative. 31399 314001998-11-30 Torbjorn Granlund <tege@matematik.su.se> 31401 31402 * gmp-impl.h (union ieee_double_extract): Special case for 31403 little-endian arm. 31404 (LIMBS): Alias for PTR. 31405 314061998-11-26 Torbjorn Granlund <tege@matematik.su.se> 31407 31408 * longlong.h (m68000 umul_ppmm): Use `muluw', not `mulu'. 31409 (m68k stuff): Clean up; add coldfire support. 31410 314111998-11-23 Torbjorn Granlund <tege@matematik.su.se> 31412 31413 * mpn/mips3/gmp-mparam.h (KARATSUBA_MUL_THRESHOLD): #define. 31414 (KARATSUBA_SQR_THRESHOLD): #define. 31415 31416 * mpn/sparc32/v9/README: New file. 31417 314181998-11-20 Torbjorn Granlund <tege@matematik.su.se> 31419 31420 * mpn/x86/README: New file. 31421 31422 * mpn/arm/gmp-mparam.h: New file. 31423 * mpn/pa64/gmp-mparam.h: New file. 31424 * mpn/hppa/gmp-mparam.h: New file. 31425 * mpn/x86/pentium/gmp-mparam.h: New file. 31426 * mpn/sparc32/v9/gmp-mparam.h: New file. 31427 * mpn/powerpc32/gmp-mparam.h: New file. 31428 * mpn/x86/p6/gmp-mparam.h: New file. 31429 31430 * mpn/alpha/gmp-mparam.h (KARATSUBA_MUL_THRESHOLD): #define. 31431 (KARATSUBA_SQR_THRESHOLD): #define. 31432 31433 * mpn/configure.in: Point to x86/p6 when appropriate. 31434 31435 * mpn/power/umul.s: New file. 31436 * mpn/power/sdiv.s: New file. 31437 * mpn/pa64/addmul_1.S: New file. 31438 * mpn/pa64/submul_1.S: New file. 31439 * mpn/pa64/mul_1.S: New file. 31440 * mpn/pa64/udiv_qrnnd.c: New file. 31441 * mpn/pa64/umul_ppmm.S: New file. 31442 * mpn/mips2/umul.s: New file. 31443 * mpn/m68k/mc68020/umul.s: New file. 31444 * mpn/m68k/mc68020/udiv.s: New file. 31445 * mpn/hppa/hppa1_1/umul.s: New file. 31446 * mpn/alpha/umul.s: New file. 31447 * mpn/a29k/udiv.s: New file. 31448 * mpn/a29k/umul.s: New file. 31449 314501998-11-17 Torbjorn Granlund <tege@matematik.su.se> 31451 31452 * mpn/x86/mul_basecase.S: New file for non-pentiums. 31453 * mpn/x86/mul_basecase.S: Move to mpn/x86/pentium. 31454 314551998-11-16 Torbjorn Granlund <tege@matematik.su.se> 31456 31457 * make.bat: Compile mul_basecase.c and sqr_basecase.c. 31458 314591998-11-10 Torbjorn Granlund <tege@matematik.su.se> 31460 31461 * mpz/invert.c: Defer writing to parameter `invert' until 31462 end. 31463 314641998-11-03 Torbjorn Granlund <tege@matematik.su.se> 31465 31466 * mpn/pa64/udiv_qrnnd.c: Handle more border cases. 31467 314681998-10-29 Torbjorn Granlund <tege@matematik.su.se> 31469 31470 * insert-dbl.c: Special case biased exponents < 1; Get boundary for 31471 Inf right. 31472 31473 * longlong.h (COUNT_LEADING_ZEROS_NEED_CLZ_TAB): New #define. 31474 314751998-10-28 Torbjorn Granlund <tege@matematik.su.se> 31476 31477 * mpn/powerpc32/submul_1.s: Rewrite, optimizing for PPC604. 31478 * mpn/powerpc32/addmul_1.s: Likewise. 31479 * mpn/powerpc32/lshift.s: Likewise. 31480 314811998-10-23 Torbjorn Granlund <tege@matematik.su.se> 31482 31483 * config/mt-sprc9-gcc (XCFLAGS): Add -Wa,-xarch=v8plus. 31484 31485 * mpn/sparc32/v9/submul_1.s: New file. 31486 314871998-10-21 Torbjorn Granlund <tege@matematik.su.se> 31488 31489 * mpn/config/mt-pa2hpux: New file. 31490 * mpn/configure.in (hppa2.0*-*-*): Use new 64-bit code. 31491 31492 * config.sub: Recognize hppa2.0 as CPU type. 31493 31494 * longlong.h (64-bit hppa): Add umul_ppmm and udiv_qrnnd. 31495 * mpn/pa64/mul_1.S: New file. 31496 * mpn/pa64/addmul_1.S: New file. 31497 * mpn/pa64/submul_1.S: New file. 31498 * mpn/pa64/umul_ppmm.S: New file. 31499 * mpn/pa64/udiv_qrnnd.c: New file. 31500 315011998-10-20 Torbjorn Granlund <tege@matematik.su.se> 31502 31503 * mpz/pprime_p.c: Pass 1L, not 1, to mpz_cmp_ui. 31504 31505 * mpz/fdiv_q_2exp.c: Cast `long' argument to `mp_limb_t' for mpn calls. 31506 * mpz/gcd_ui.c: Likewise. 31507 * mpz/add_ui.c: Likewise. 31508 * mpz/sub_ui.c: Likewise. 31509 315101998-10-19 Torbjorn Granlund <tege@matematik.su.se> 31511 31512 * mpn/generic/bdivmod.c: Avoid using switch statement with mp_limb_t 31513 index. 31514 315151998-10-17 Torbjorn Granlund <tege@matematik.su.se> 31516 31517 * mpn/sparc32/v9/mul_1.s: Misc cleanups. 31518 * mpn/sparc32/v9/addmul_1.s: Misc cleanups. 31519 315201998-10-16 Torbjorn Granlund <tege@matematik.su.se> 31521 31522 * mpn/tests/{add,sub,}mul_1.c: Print xlimb using mpn_print. 31523 31524 * mpz/tests/t-powm.c (SIZE): Increase to 50. 31525 (EXP_SIZE): New parameter; use it for computing exp_size. 31526 315271998-10-15 Torbjorn Granlund <tege@matematik.su.se> 31528 31529 * mpn/generic/divrem_newt.c: Use TMP_ALLOC interface. 31530 31531 * mpn/generic/sqrtrem.c: Check BITS_PER_MP_LIMB before defining 31532 assembly variants of SQRT. 31533 315341998-10-14 Torbjorn Granlund <tege@matematik.su.se> 31535 31536 * mpn/tests: Clean up timing routines. Don't include longlong.h 31537 where it is not needed. 31538 (mpn_print): Handle printing when _LONG_LONG_LIMB. 31539 * mpn/tests/{add,sub,}mul_1.c: Generate xlimb with mpn_random2 31540 and do it whether TIMES != 1 or not. 31541 31542 * mpn/generic/mul_n.c: Delay assignment of `sign' for lower 31543 register pressure. 31544 31545 * mpn/sparc32/v9/mul_1.s: New file. 31546 31547 * config/mt-sprc9-gcc: New file. 31548 * configure.in: Use it. 31549 31550 * mpn/configure.in: Use sparc64 for Solaris 2.7 and later with a 31551 sparc v9 CPU. 31552 * mpn/configure.in: Use sparc32/v9 for Solaris 2.6 or earlier with 31553 a sparc v9 CPU. 31554 31555 * mpf/sub.c: In initial code for ediff == 0, limit precision 31556 before jumping to `normalize'. 31557 315581998-10-13 Torbjorn Granlund <tege@matematik.su.se> 31559 31560 * mpn/hppa/hppa2_0/add_n.s: New file. 31561 * mpn/hppa/hppa2_0/sub_n.s: New file. 31562 * mpn/configure.in: Handle hppa2.0 (32-bit code for now). 31563 31564 * config.guess: Update from egcs 1.1. 31565 (9000/[3478]??:HP-UX:*:*): Properly return 2.0 for all known 2.0 31566 machines. 31567 315681998-10-07 Torbjorn Granlund <tege@matematik.su.se> 31569 31570 * mpz/root.c (mpz_root): New file. 31571 * mpz/Makefile.in: Compile it. 31572 * make.bat: Likewise. 31573 * gmp.h (mpz_root): Declare. 31574 31575 * mpz/perfpow.c: New file. 31576 * mpz/Makefile.in: Compile it. 31577 * make.bat: Likewise. 31578 * gmp.h (mpz_perfect_power_p): Declare. 31579 31580 * mpz/remove.c: New file. 31581 * mpz/Makefile.in: Compile it. 31582 * make.bat: Likewise. 31583 * gmp.h (mpz_remove): Declare. 31584 31585 * mpz/bin_ui.c: New file. 31586 * mpz/Makefile.in: Compile it. 31587 * make.bat: Likewise. 31588 * gmp.h (mpz_bin_ui): Declare. 31589 31590 * mpz/bin_uiui.c: New file. 31591 * mpz/Makefile.in: Compile it. 31592 * make.bat: Likewise. 31593 * gmp.h (mpz_bin_uiui): Declare. 31594 315951998-09-16 Torbjorn Granlund <tege@matematik.su.se> 31596 31597 * longlong.h: Test for __powerpc__ in addition to _ARCH_PPC. 31598 31599Sat Sep 5 17:22:28 1998 Torbjorn Granlund <tege@matematik.su.se> 31600 31601 * mpf/cmp_si.c: Compare most significant mantissa limb before 31602 trying to deduce anything from the limb count. 31603 * mpf/cmp_ui.c: Likewise. 31604 31605Tue Aug 18 10:24:39 1998 Torbjorn Granlund <tege@matematik.su.se> 31606 31607 * mpz/pprime_p.c (mpz_probab_prime_p): Add new code block 31608 for doing more dividing. 31609 31610Sat Aug 15 18:43:17 1998 Torbjorn Granlund <tege@matematik.su.se> 31611 31612 * mpn/generic/divrem_newt.c: New name for divrem_newton.c. 31613 * mpn/Makefile.in: Corresponding changes. 31614 * mpn/configure.in: Likewise. 31615 31616Wed Aug 12 23:07:09 1998 Torbjorn Granlund <tege@matematik.su.se> 31617 31618 * config.guess: Handle powerpc for NetBSD. 31619 31620Tue Jul 28 23:10:55 1998 Torbjorn Granlund <tege@matematik.su.se> 31621 31622 * mpz/fib_ui.c: New file. 31623 * mpz/Makefile.in: Compile it. 31624 * make.bat: Likewise. 31625 * gmp.h (mpz_fib_ui): Declare. 31626 31627Wed Jun 17 22:52:58 1998 Torbjorn Granlund <tege@matematik.su.se> 31628 31629 * make.bat: Fix typo, `asm-synt.h' => `asm-syntax.h'. 31630 31631Wed Jun 3 11:27:32 1998 Torbjorn Granlund <tege@matematik.su.se> 31632 31633 * config/mt-pwr: New file. 31634 * config/mt-ppc: New file. 31635 * configure.in: Use the new files. 31636 31637Tue Jun 2 13:04:17 1998 Torbjorn Granlund <tege@matematik.su.se> 31638 31639 * mpn/sparc32/v9/addmul_1.s: New file. 31640 * mpn/config/mt-sprc9: New file. 31641 * mpn/configure.in: Use mt-sprc9. 31642 31643Tue May 26 11:24:18 1998 Torbjorn Granlund <tege@matematik.su.se> 31644 31645 * demos/factorize.c (factor_using_pollard_rho): Pass correct 31646 parameters in recursive calls; join the two recursion arms. 31647 31648 * mpf/set_q.c: Set result sign. 31649 When normalizing the numerator, don't allow it to increase in size 31650 beyond prec. 31651 31652Tue May 19 17:28:14 1998 Torbjorn Granlund <tege@matematik.su.se> 31653 31654 * demos/factorize.c (factor_using_division): Call fflush 31655 also for the factor 2. 31656 31657Mon May 18 15:51:01 1998 Torbjorn Granlund <tege@matematik.su.se> 31658 31659 * make.bat: Pass -fomit-frame-pointer. Do not pass -g. 31660 31661Tue May 5 01:42:50 1998 Torbjorn Granlund <tege@matematik.su.se> 31662 31663 * mpz/Makefile.in (LOCAL_CC): Remove definition. 31664 31665 * gmp.h: Get rid of GMP_SMALL stuff. 31666 * mpz/Makefile.in: Likewise. 31667 * mpq/Makefile.in: Likewise. 31668 * mpf/Makefile.in: Likewise. 31669 31670 * mpz/invert.c: Fix typo in comment. 31671 31672Mon May 4 23:05:32 1998 Torbjorn Granlund <tege@matematik.su.se> 31673 31674 * mpn/generic/sqrtrem.c: Check that __arch64__ is not defined 31675 before defining sparc SQRT. 31676 31677Mon Apr 20 19:16:17 1998 Torbjorn Granlund <tege@matematik.su.se> 31678 31679 * mpn/generic/gcdext.c: Allow gp to be NULL. 31680 316811998-04-03 Torbjorn Granlund <tege@matematik.su.se> 31682 31683 * mpn/configure.in: Recognize `alphaev5*', not `alphaev5'. 31684 31685 * config.guess: Handle CPU variants for NetBSD. 31686 31687Mon Mar 16 13:07:54 1998 Torbjorn Granlund <tege@matematik.su.se> 31688 31689 * mpz/pprime_p.c: Use mpn_mod_1/mpn_preinv_mod_1 for computing mod PP, 31690 not mpz_tdiv_r_ui (which expects an `unsigned long'). 31691 (mpz_probab_prime_p): Change type of `r' to mp_limb_t. 31692 31693Thu Mar 12 17:19:04 1998 Torbjorn Granlund <tege@matematik.su.se> 31694 31695 * gmp.h (mpf_ceil, mpf_floor, mpf_trunc): Add declarations. 31696 31697 * config.guess: Update from FSF version. 31698 * config.sub: Likewise. 31699 31700 * config.guess: Add special handling of alpha-*-NetBSD. 31701 31702Wed Mar 11 00:55:34 1998 Torbjorn Granlund <tege@matematik.su.se> 31703 31704 * mpz/inp_str.c: Update from set_str.c. 31705 Properly increment `nread' when skipping minus sign. 31706 31707 * mpz/set_str.c: Check for empty string after having skipped 31708 leading zeros. 31709 31710Mon Mar 9 19:28:00 1998 Torbjorn Granlund <tege@matematik.su.se> 31711 31712 * mpz/set_str.c: Skip leading zeros. 31713 31714Wed Mar 4 19:29:16 1998 Torbjorn Granlund <tege@matematik.su.se> 31715 31716 * gmp.h (mpz_cmp_si): Cast argument before calling mpz_cmp_ui. 31717 31718 * demos/factorize.c: Rewrite. 31719 317201998-02-04 Torbjorn Granlund <tege@matematik.su.se> 31721 31722 * configure.in (i[3456]86* etc): Check if using gcc before 31723 choosing mt-x86. 31724 31725 * configure.in (m68*-*-*): New alternative. 31726 * config/mt-m68k: New file. 31727 31728 * mpn/alpha/invert-limb.s: Put tables in text segment, 31729 since not all systems support "rdata". 31730 31731Wed Feb 4 02:20:57 1998 Torbjorn Granlund <tege@matematik.su.se> 31732 31733 * gmp.h (__GNU_MP_VERSION_SNAP): New #define. 31734 (__GNU_MP_VERSION_MINOR): Now 1. 31735 31736Wed Jan 28 22:29:36 1998 Torbjorn Granlund <tege@tunnis.tmg.se> 31737 31738 * longlong.h (alpha udiv_qrnnd): #define UDIV_NEEDS_NORMALIZATION. 31739 31740Wed Jan 28 20:28:19 1998 Torbjorn Granlund <tege@sophie.matematik.su.se> 31741 31742 * mpz/pprime_p.c (mpz_probab_prime_p): Delete 59 from tried divisors. 31743 31744Mon Jan 26 01:39:02 1998 Torbjorn Granlund <tege@tunnis.tmg.se> 31745 31746 * mpz/pprime_p.c (mpz_probab_prime_p): Major overhaul: Check small 31747 numbers specifically; check small factors, then perform a fermat test. 31748 31749Tue Jan 13 14:58:28 1998 Torbjorn Granlund <tege@tunnis.tmg.se> 31750 31751 * longlong.h (alpha udiv_qrnnd): Call __mpn_invert_normalized_limb 31752 and udiv_qrnnd_preinv. 31753 31754Wed Jan 7 01:52:54 1998 Torbjorn Granlund <tege@tunnis.tmg.se> 31755 31756 * mpn/configure.in (alpha*, extra_functions): Add invert-limb and 31757 remove udiv_qrnnd. 31758 31759 * mpn/tests/divrem.c: Get allocations right. 31760 31761 * mpn/generic/divrem.c: Conditionally pre-invert most significant 31762 divisor limb. 31763 31764Tue Jan 6 23:08:54 1998 Torbjorn Granlund <tege@tunnis.tmg.se> 31765 31766 * mpn/generic/divrem_1.c: Rename variables to comply to conventions. 31767 Make `i' have type `mp_size_t'. 31768 31769Tue Dec 30 22:21:42 1997 Torbjorn Granlund <tege@matematik.su.se> 31770 31771 * mpz/tdiv_qr_ui.c: Return the remainder. 31772 * mpz/tdiv_r_ui.c: Likewise. 31773 * mpz/tdiv_q_ui.c: Likewise. 31774 * gmp.h: Change return type of mpz_tdiv_qr_ui, mpz_tdiv_r_ui, 31775 mpz_tdiv_q_ui. 31776 31777 * mpz/tdiv_ui.c: New file. 31778 * mpz/Makefile.in: Compile it. 31779 * make.bat: Likewise. 31780 * gmp.h (mpz_tdiv_ui): Declare. 31781 31782Fri Nov 7 04:21:15 1997 Torbjorn Granlund <tege@matematik.su.se> 31783 31784 * mpf/integer.c (FUNC_NAME): Fix bogus test for mpf_trunc. 31785 31786 * demos/isprime.c: New file. 31787 31788 Sat Nov 1 19:32:25 1997 Torbjorn Granlund <tege@matematik.su.se> 31789 31790 * mpz/cmp_abs.c: New file. 31791 * mpz/Makefile.in: Compile it. 31792 * make.bat: Likewise. 31793 * gmp.h (mpz_cmp_abs): Declare. 31794 31795 * mpz/cmp_abs_ui.c: New file. 31796 * mpz/Makefile.in: Compile it. 31797 * make.bat: Likewise. 31798 * gmp.h (mpz_cmp_abs_ui): Declare. 31799 31800Sat Sep 27 04:49:52 1997 Torbjorn Granlund <tege@tunnis.tmg.se> 31801 31802 * mpz/fdiv_r_2exp.c: Get allocation for `tmp' right. 31803 31804 * mpz/fdiv_q_2exp.c: In final result adjustment code, handle 31805 that intermediate result is zero. 31806 31807 * mpz/tests/t-2exp.c: New file. 31808 * mpz/tests/Makefile.in: Handle t-2exp.c. 31809 31810Fri Sep 26 16:29:21 1997 Torbjorn Granlund <tege@tunnis.tmg.se> 31811 31812 * mpz/divexact.c: Fix typo in test for whether to copy numerator to 31813 quotient and move that statement to after handling quotient and 31814 denominator overlap. Misc cleanups. 31815 31816 * mpn/generic/gcd.c: Change count argument of mpn_lshift/mpn_rshift 31817 calls to `unsigned int'. 31818 * mpz/divexact.c: Likewise. 31819 31820Mon Sep 22 02:19:52 1997 Torbjorn Granlund <tege@pro.tmg.se> 31821 31822 * mpz/tests/t-powm.c: Decrease `reps' to 2500. 31823 31824 * mpz/tests/t-pow_ui.c: New file. 31825 * mpz/tests/Makefile.in: Handle t-pow_ui.c. 31826 31827 * mpz/ui_pow_ui.c: Get special cases for exponent and base right. 31828 31829 * mpz/pow_ui.c: Increase temp space allocation by 1 limb. 31830 Split `rsize' into two variables; compute space allocation into 31831 `ralloc'. 31832 31833Sun Sep 7 04:15:12 1997 Torbjorn Granlund <tege@pro.tmg.se> 31834 31835 * mpn/pa64/lshift.s: New file. 31836 * mpn/pa64/rshift.s: New file. 31837 * mpn/pa64/sub_n.s: New file. 31838 31839Sat Sep 6 19:14:13 1997 Torbjorn Granlund <tege@gmp.tmg.se> 31840 31841 * mpn/pa64/add_n.s: New file. 31842 * mpn/pa64: New directory. 31843 31844Tue Aug 19 16:17:09 1997 Torbjorn Granlund <tege@pro.tmg.se> 31845 31846 * mpz/swap.c: New file. 31847 * mpz/Makefile.in: Compile it. 31848 * make.bat: Likewise. 31849 * gmp.h (mpz_swap): Declare. 31850 31851 * mpn/generic/mul_n.c: Push assignment of x and y pointers into the 31852 if/else clauses in several places. (Decreases register pressure.) 31853 31854Mon Aug 18 03:29:50 1997 Torbjorn Granlund <tege@pro.tmg.se> 31855 31856 * mpn/thumb/add_n.s: New file. 31857 * mpn/thumb/sub_n.s: New file. 31858 * mpn/arm/add_n.s: New file. 31859 * mpn/arm/sub_n.s: New file. 31860 31861 * mpz/powm.c: After mpn_mul_n and mpn_mul calls, adjust product size 31862 if most significant limb is zero. 31863 * mpz/powm_ui.c: Likewise. 31864 31865Fri Aug 15 02:13:57 1997 Torbjorn Granlund <tege@pro.tmg.se> 31866 31867 * mpn/arm/m/mul_1.s: New file. 31868 * mpn/arm/m/addmul_1.s: New file. 31869 31870 * mpn/powerpc32/mul_1.s: Rewrite. 31871 31872 * mpn/alpha/mul_1.s: Prefix labels with `.'. 31873 31874Mon Aug 11 02:37:16 1997 Torbjorn Granlund <tege@pro.tmg.se> 31875 31876 * mpn/powerpc32/add_n.s: Rewrite. 31877 * mpn/powerpc32/sub_n.s: Rewrite. 31878 31879Sun Aug 10 17:07:15 1997 Torbjorn Granlund <tege@pro.tmg.se> 31880 31881 * mpn/powerpc32/addmul_1.s: Delete obsolete comments. 31882 * mpn/powerpc32/submul_1.s: Likewise. 31883 31884Fri Jul 25 20:07:54 1997 Torbjorn Granlund <tege@pro.tmg.se> 31885 31886 * mpz/addmul_ui.c: New file. 31887 * mpz/Makefile.in: Compile it. 31888 * make.bat: Likewise. 31889 * gmp.h (mpz_addmul_ui): Declare. 31890 31891 * mpz/setbit.c: Add missing code after final `else'. 31892 31893Tue Jul 22 17:45:01 1997 Torbjorn Granlund <tege@tunnis.tmg.se> 31894 31895 * mpn/sh/add_n.s: Fix typo. 31896 * mpn/sh/sub_n.s: Likewise. 31897 31898 * longlong.h (ns32k count_trailing_zeros): Fix typo. 31899 31900 * insert-dbl.c: Check for exponent overflow and return Inf. 31901 31902 * mpz/get_d.c: Rewrite to avoid rounding errors. 31903 31904Thu May 29 11:51:07 1997 Torbjorn Granlund <tege@pro.tmg.se> 31905 31906 * mpq/add.c: Swap some usages of tmp1 and tmp2 to make sure 31907 their allocation suffices. 31908 * mpq/sub.c: Likewise. 31909 31910Wed Apr 16 02:24:25 1997 Torbjorn Granlund <tege@pro.tmg.se> 31911 31912 * demos/pexpr.c: New file. 31913 31914 * mpn/generic/mul_n.c: Misc optimizations from Robert Harley. 31915 31916 * gmp-impl.h (MPZ_PROVOKE_REALLOC): New #define. 31917 31918Sat Apr 12 17:54:04 1997 Torbjorn Granlund <tege@pro.tmg.se> 31919 31920 * mpz/tstbit.c: New file. 31921 * mpz/Makefile.in: Compile it. 31922 * make.bat: Likewise. 31923 * gmp.h (mpz_tstbit): Declare. 31924 31925 * mpz/tests/logic.c: Use MPZ_CHECK_FORMAT. 31926 * mpz/tests/bit.c: New test. 31927 * mpz/tests/Makefile.in: Handle bit.c. 31928 31929 * mpz/ior.c: In -OP2,+OP1 case, normalize OP2 after call to mpn_sub_1. 31930 31931 * gmp-impl.h (MPZ_CHECK_FORMAT): New #define. 31932 31933Thu Apr 10 00:30:14 1997 Torbjorn Granlund <tege@tmg.se> 31934 31935 * longlong.h (POWER/PowerPC): Test _ARCH_PWR instead of _IBMR2. 31936 31937Wed Apr 9 18:23:31 1997 Torbjorn Granlund <tege@pro.tmg.se> 31938 31939 * gmp-impl.h: Move defaulting of UMUL_TIME and UDIV_TIME from here... 31940 * longlong.h: ...to here. 31941 31942Sun Mar 30 12:16:23 1997 Torbjorn Granlund <tege@matematik.su.se> 31943 31944 * mpn/generic/next_prime.c: New file. 31945 31946 * mpn/generic/perfsqr.c: Remove definitions of PP and PP_INVERTED. 31947 * gmp-impl.h: Put them here. 31948 31949Fri Mar 28 08:18:05 1997 Torbjorn Granlund <tege@matematik.su.se> 31950 31951 * gmp-impl.h (MPN_COPY_INCR, MPN_COPY_DECR): Define as inline asm for 31952 for x86, but leave disabled for now. 31953 31954Fri Feb 28 02:39:47 1997 Torbjorn Granlund <tege@matematik.su.se> 31955 31956 * mpn/Makefile.in (.S.o): Pass SFLAGS and CFLAGS also to compiler 31957 for assembly phase. 31958 (.s.o): Pass SFLAGS. 31959 31960Wed Feb 26 06:46:08 1997 Torbjorn Granlund <tege@matematik.su.se> 31961 31962 * mpn/configure.in: For Pentium Pro, use default code, not Pentium 31963 optimized code. 31964 31965 * mpn/x86/addmul_1.S: Unroll and optimize for Pentium Pro. 31966 * mpn/x86/submul_1.S: Likewise. 31967 31968Thu Feb 13 08:26:09 1997 Torbjorn Granlund <tege@matematik.su.se> 31969 31970 * mpf/Makefile.in: Compile floor.o, ceil.o and trunc.o (from 31971 integer.c). 31972 * make.bat: Likewise. 31973 31974Wed Feb 5 05:58:44 1997 Torbjorn Granlund <tege@matematik.su.se> 31975 31976 * mpn/configure.in (alpha*): Add cntlz to extra_functions. 31977 31978Wed Feb 4 03:30:45 1997 Torbjorn Granlund <tege@matematik.su.se> 31979 31980 * mpf/integer.c: New file (supporting mpf_floor, mpf_ceil, mpf_trunc). 31981 31982Mon Feb 3 14:21:36 1997 Torbjorn Granlund <tege@matematik.su.se> 31983 31984 * make.bat: Fix typo, set_dfl_prc => set_dfl_prec. 31985 31986Sun Feb 2 02:34:33 1997 Torbjorn Granlund <tege@matematik.su.se> 31987 31988 * mpf/out_str.c: After outputting `-', decrement n_digits. 31989 31990Wed Jan 8 02:50:20 1997 Torbjorn Granlund <tege@quiet.matematik.su.se> 31991 31992 * mpn/generic/divrem.c: qextra_limbs => qxn. 31993 31994Wed Dec 18 07:50:46 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 31995 31996 * mpz/tests/t-tdiv.c (SIZE): Increase to 200. 31997 31998Tue Dec 17 19:32:48 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 31999 32000 * mpn/generic/divrem.c (mpn_divrem_classic): New name for mpn_divrem. 32001 * gmp.h (mpn_divrem): New function. 32002 * mpn/generic/divrem_newton.c: New file. 32003 * mpn/configure.in (functions): Add divrem_newton. 32004 * make.bat: Likewise. 32005 32006Thu Dec 12 17:55:13 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32007 32008 * gmp.h (_GMP_H_HAVE_FILE): Test also __dj_include_stdio_h_. 32009 32010Sat Dec 7 09:40:06 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32011 32012 * mpn/alpha/invert-limb.s: New file. 32013 32014Thu Dec 5 01:25:31 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32015 32016 * mpz/ui_pow_ui.c (mpz_pow2): New (static) function. 32017 (mpz_ui_pow_ui): Rewrite. 32018 32019 * make.bat: `pre_mod_1.c' => `pre_mod_.c'. Fix typo in path to 32020 gmp-mpar.h. 32021 32022Fri Nov 15 00:49:55 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32023 32024 * mpz/ui_pow_ui.c: Rewrite for better speed. 32025 32026Fri Nov 1 16:36:56 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32027 32028 * Makefile.in (recursive make rules): Use `&&' instead of `;' as 32029 delimiter. 32030 32031Fri Oct 25 17:12:36 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32032 32033 * gmp-impl.h (Cray/uxp MPN_COPY): Really declare as inline. 32034 32035Thu Oct 24 15:08:19 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32036 32037 * mpn/fujitsu/rshift.c: Fix typo in loop boundaries. 32038 32039Fri Oct 18 03:13:54 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32040 32041 * mpn/configure.in: Recognize `nextstep' for m68k variants; likewise 32042 for x86 variants. 32043 32044 * mpn/x86/syntax.h (INSND): New macro. 32045 * mpn/x86/[lr]shift.S: Use INSND. 32046 * mpn/x86/pentium/[lr]shift.S: Likewise. 32047 * mpn/config/t-oldgas (SFLAGS): Pass -DOLD_GAS. 32048 32049 * gmp-impl.h: In code for determining endianness, test also 32050 __BIG_ENDIAN__ and __hppa__. Remove test of __NeXT__. 32051 32052Wed Oct 16 03:50:34 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32053 32054 * mpf/set_str.c: Let `prec' determine precision used in 32055 exponentiation code; decrease allocation accordingly. 32056 32057 * mpn/vax: Change `jsob*' to `sob*' in all files. 32058 32059Tue Oct 15 03:54:06 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32060 32061 * longlong.h (m88110 udiv_qrnnd): Change type of intermediate quotient 32062 to DImode (divu.d generates a 64-bit quotient). 32063 32064 * configure.in (m88110*): Fix typo. 32065 32066 * mpf/get_str.c: Compute exp_in_base using `double' to avoid overflow. 32067 32068 * gmp-impl.h (struct bases): Change type of chars_per_bit_exactly from 32069 float to double. 32070 * mpn/mp_bases.c (__mp_bases): Give 17 digits for chars_per_bit_exactly 32071 field. 32072 32073 * mpf/get_str.c: Let `prec' determine precision used in 32074 exponentiation code; decrease allocation accordingly. 32075 32076Sun Oct 13 03:31:53 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32077 32078 * longlong.h: Major cleanup. 32079 (__udiv_qrnnd_c): Compute remainders using multiply and subtract, 32080 not explicit `%' operator. 32081 (C umul_ppmm): Get rid of a redundant __ll_lowpart. 32082 32083 * mpz/invert.c: Properly detect all operands that would yield an 32084 undefined inverse; make sure the inverse is always positive. 32085 32086 * mpz/xor.c: New file. 32087 * mpz/Makefile.in: Compile it. 32088 * make.bat: Likewise. 32089 * gmp.h (mpz_xor): Declare. 32090 32091 * mpz/tests/logic.c: Also test mpz_xor. 32092 32093 * mpz/lcm.c: Special case for when either operand equals 0. 32094 32095Sat Oct 12 01:57:09 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32096 32097 * mpn/generic/gcd.c (find_a): Don't inline on x86. 32098 32099 * Makefile.in (CFLAGS): Default to just `-g'. 32100 32101 * configure.in: Recognize 386 and 486 wherever other x86 cpus are 32102 recognized. 32103 * configure.in: Use mt-x86 for all x86 cpus. 32104 * config/mt-x86: New file. 32105 32106 * mpn/alpha/cntlz.s: New file. 32107 32108Tue Oct 8 00:16:18 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32109 32110 * longlong.h: Define smul_ppmm for Fujitsu vpp/uxp. 32111 Rewrite umul_ppmm to actually work on the hardware. 32112 32113 * mpn/x86/sub_n.S: Avoid parens around displacement of `leal'. 32114 * mpn/x86/add_n.S: Likewise. 32115 32116 * mpn/x86/syntax.h (R): Define differently depending on __STDC__. 32117 32118Mon Oct 7 16:48:08 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32119 32120 * longlong.h: Don't test for __NeXT__ in outer 68k conditional; 32121 add test for __m68k__. 32122 32123Sun Oct 6 00:59:09 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32124 32125 * gmp.h: Declare mpn_random. 32126 * make.bat: Compile mpn/generic/random.c. 32127 32128 * longlong.h: Define umul_ppmm for Fujitsu vpp/uxp. 32129 32130 * gmp-impl.h: Protect definitions using `__attribute__ ((mode (...)))' 32131 with test also for __GNUC_MINOR__. 32132 32133 * gmp.h: Don't define macros using __builtin_constant_p when using 32134 NeXT's compiler. 32135 32136Fri Oct 4 16:53:50 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32137 32138 * mpz/lcm.c: New file. 32139 * mpz/Makefile.in: Compile it. 32140 * make.bat: Likewise. 32141 * gmp.h (mpz_lcm): Declare. 32142 32143Wed Sep 25 00:06:21 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32144 32145 * mpq/tests/t-cmp_ui.c: Make sure numerator and denominator of `b' is 32146 within limits of an `unsigned long int'. 32147 32148 * mpz/tests/t-powm_ui.c: Change type of exp2 to `unsigned long int'. 32149 32150Tue Sep 24 18:58:20 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32151 32152 * mpz/powm_ui.c: Make result always positive. 32153 32154 * urandom.h (urandom): Make it return mp_limb_t. 32155 32156 * gmp-impl.h (CNST_LIMB): New macro. 32157 * mpn/mp_bases.c: Use CNST_LIMB. 32158 * mpn/generic/hamdist.c (popc_limb): Likewise. 32159 * mpn/generic/popcount.c (popc_limb): Likewise. 32160 * mpn/generic/perfsqr.c: Likewise. 32161 32162Fri Sep 20 03:08:10 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32163 32164 * mpz/pprime_p.c: When n <= 3, don't clear out n before using it. 32165 32166Wed Sep 18 11:22:45 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32167 32168 * mpn/fujitsu/mul_1.c: New file. 32169 * mpn/fujitsu/addmul_1.c: New file. 32170 * mpn/fujitsu/sub_n.c: New file. 32171 * mpn/fujitsu/add_n.c: Mew file. 32172 32173Sun Sep 15 03:13:02 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32174 32175 * mpn/generic/random.c: New file. 32176 * mpn/configure.in (functions): Add `random'. 32177 32178 * gmp-impl.h (MPN_COPY): Define as annotated inline function for 32179 Crays and Fujitsu VPPs. 32180 32181 * gmp.h (mp_size_t): Define as `int' for non-MPP Cray. 32182 (mp_exp_t): Likewise. 32183 32184 * configure.in: Add support for Fujitsu VPP machines. 32185 * mpn/configure.in: Likewise. 32186 * config.guess: Likewise. 32187 * config.sub: Likewise. 32188 32189 * mpn/fujitsu/rshift.c: New file. 32190 * mpn/fujitsu/lshift.c: New file. 32191 * mpn/fujitsu: New directory, for Fujitsu VPP machines. 32192 32193Wed Sep 11 11:34:38 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32194 32195 * mpn/generic/mul_n.c (__gmpn_mul_n): New name for impn_mul_n. 32196 Call __gmpn_mul_basecase, not impn_mul_n_basecase; update parameter 32197 list to work with __gmpn_mul_basecase. 32198 (__gmpn_sqr): New name for impn_sqr_n. 32199 Call __gmpn_sqr_basecase, not impn_sqr_n_basecase; update parameter 32200 list to work with __gmpn_sqr_basecase. 32201 (mpn_mul_n): Update calls to match new names and parameter conventions. 32202 * gmp-impl.h (MPN_MUL_N_RECURSE): Likewise. 32203 (MPN_SQR_RECURSE): New name for MPN_SQR_N_RECURSE. 32204 Update calls to match new names and parameter conventions. 32205 * mpn/generic/mul.c: Never perform multiply explicitly here, call 32206 __gmpn_mul_basecase instead. 32207 Update calls to match new names and parameter conventions. 32208 32209 * mpn/x86/mul_basecase.S: New file. 32210 * mpn/generic/mul_basecase.c: New file. 32211 * mpn/generic/sqr_basecase.c: New file. 32212 32213Wed Sep 4 02:59:21 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32214 32215 * mpz/set_str.c: Let `0b' and `0B' mean base 2. 32216 32217Fri Aug 30 00:44:00 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32218 32219 * longlong.h (x86 umul_ppmm): Work around GCC bug that was 32220 triggered by Aug 28 change. 32221 32222 * mpbsd/min.c (digit_value_in_base): New function. 32223 32224 * mpz/set_str.c: Refine allocation size computation, use 32225 chars_per_bit_exactly instead of chars_per_limb. 32226 32227 * mpbsd/Makefile.in (.c.o): Add -D_mpz_realloc=_mp_realloc. 32228 32229Wed Aug 28 02:52:14 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32230 32231 * longlong.h (x86 umul_ppmm): Don't cast result operands. 32232 (x86 udiv_qrnnd): Likewise. 32233 (default smul_ppmm): Fix typo, umul_ppmm => smul_ppmm. 32234 (default umul_ppmm): New #define using smul_ppmm. 32235 (vax smul_ppmm): New #define. 32236 (vax umul_ppmm): Delete. 32237 (POWER umul_ppmm): Delete. 32238 (IBM 370 smul_ppmm): New #define. 32239 (IBM 370 umul_ppmm): Delete. 32240 (IBM RT/ROMP smul_ppmm): New #define. 32241 (IBM RT/ROMP umul_ppmm): Delete. 32242 32243Tue Aug 27 01:03:25 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32244 32245 * gmp-impl.h (__gmp_0): Make it `const'. 32246 32247 * mpn/Makefile.in (clean mostlyclean): Comment out recursive clean 32248 of `tests'. 32249 32250 * mpn/generic/mul.c: Identify when we do squaring, and call 32251 impn_sqr_n_basecase/impn_sqr_n as appropriate. Use 32252 KARATSUBA_MUL_THRESHOLD and KARATSUBA_SQR_THRESHOLD. 32253 Don't #define KARATSUBA_THRESHOLD. 32254 32255 * mpn/generic/mul_n.c: Don't #define KARATSUBA_THRESHOLD. 32256 (impn_mul_n, impn_sqr_n): Rewrite, based on code contributed by 32257 Robert Harley. 32258 (impn_sqr_n_basecase): Rewrite. 32259 32260 * gmp-impl.h (KARATSUBA_MUL_THRESHOLD): New #define. 32261 (KARATSUBA_SQR_THRESHOLD): Likewise. 32262 (MPN_SQR_N_RECURSE): Use KARATSUBA_SQR_THRESHOLD. 32263 (MPN_MUL_N_RECURSE): Use KARATSUBA_MUL_THRESHOLD. 32264 32265 * configure.in: Fix typo in last change. 32266 32267Mon Aug 26 22:25:18 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32268 32269 * mpn/generic/random2.c: Fix typo, `alpha__' => `__alpha'. 32270 * mpf/random2.c: Likewise. 32271 32272Sun Aug 25 00:07:09 1996 Torbjorn Granlund <tege@quiet.matematik.su.se> 32273 32274 * mpz/tests/t-mul.c: Also test squaring. 32275 32276Fri Aug 16 05:12:08 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32277 32278 * mp_clz_tab.c (__clz_tab): Declare as `const'. 32279 * version.c (gmp_version): Likewise. 32280 * mpn/generic/sqrtrem.c (even_approx_tab, odd_approx_tab): Likewise. 32281 32282Thu Aug 15 02:34:47 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32283 32284 * gmp.h: Fix typo, `mips__' => `__mips'. 32285 32286 * mpf/set_str.c: Allow a number to start with a period, if next 32287 position contains a digit. 32288 32289Tue Aug 13 18:41:25 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32290 32291 * mpz/gcdext.c: Get cofactor sign right for negative input operands. 32292 Clean up code for computing tt. 32293 32294 * mpz/invert.c: Get rid of variable `rv'. 32295 32296 * mpz/divexact.c: Test for zero divisor in special case for zero 32297 dividend. 32298 32299Mon Aug 12 18:04:07 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32300 32301 * mpz/?div_*_ui.c: Special case for division by 0. 32302 * mpz/tdiv_q.c: Likewise. 32303 32304Sat Aug 10 14:45:26 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32305 32306 * mpz/dmincl.c: Special case for division by 0. 32307 32308 * mpz/tdiv_*_ui.c: Delete special case for dividend being 0; handle 32309 it when computing size after mpn_divmod_1 call. 32310 32311 * mp_bpl.c: (__gmp_junk): New variable. 32312 (__gmp_0): New constant. 32313 32314 * gmp-impl.h (DIVIDE_BY_ZERO): New #define. 32315 32316Fri Aug 9 20:03:27 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32317 32318 * mpz/divexact.c: Test for dividend being zero before testing 32319 for small divisors. 32320 32321Thu Aug 8 13:20:23 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32322 32323 * configure.in: Require operating system specification for cpus 32324 where assembly syntax differs between system. 32325 32326 * Makefile.in (many targets): Change `-' action prefix to `@'. 32327 32328 * mpn/Makefile.in: (distclean): Fix typo. 32329 32330 * mpq/cmp_ui.c: Rename function to _mpq_cmp_ui. 32331 (mpq_cmp_ui): #undef deleted. 32332 * mpz/cmp_si.c: Rename function to _mpz_cmp_si. 32333 (mpz_cmp_si): #undef deleted. 32334 * mpz/cmp_ui.c: Rename function to _mpz_cmp_ui. 32335 (mpz_cmp_ui): #undef deleted. 32336 * Makefile.in: Corresponding changes. 32337 32338 * mpf/get_prc.c: Return the *highest* precision achievable. 32339 32340 * mpf/get_str.c: Complete rewrite. 32341 32342 * mpf/set_str.c (swapptr): New #define. 32343 (assert): New #define. 32344 * mpf/set_str.c: Set prec to one more than the saved _mp_prec. 32345 Misc cleanups. 32346 32347 * mpz/set_str.c: #include string.h. 32348 * mpf/out_str.c: #include string.h. 32349 * mpbsd/xtom.c: #include string.h and ctype.h. 32350 * mpbsd/mout.c: #include string.h. 32351 32352Wed Aug 7 11:46:04 EDT 1996 Ken Weber <kweber@mcs.kent.edu> 32353 32354 * mpn/generic/gcd.c: Reorder mpn_gcd argument list. 32355 * mpz/gcd.c: Change call to mpn_gcd. 32356 * gmp.texi: Update manual entry on mpn_gcd. 32357 * mpn/generic/bdivmod.c: Delete limb cache to make mpn_bdivmod 32358 reentrant. 32359 32360Wed Aug 7 02:15:38 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32361 32362 * mpf/get_str.c: Rewrite code for converting integral part of a 32363 number with both an integral and fractional part. 32364 32365 * mpf/set_str.c: Get rid of variable xxx. New variables madj and radj. 32366 In exp_in_base==0 case, add madj to msize for EXP field. 32367 32368 * mpz/tests/t-gcd.c: Test deleted. Rename t-gcd2.c to t-gcd.c. 32369 Increase reps to 2000. 32370 * mpz/tests/t-gcd2.c: Get rid of mpz_refgcd. 32371 32372 * mpf/set_str.c: Ignore excess limbs in MP,MSIZE. 32373 32374Thu Jul 25 04:39:10 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32375 32376 * mpn/configure.in: Fix typo in setting path, "sparc" => "sparc32". 32377 32378Wed Jul 24 02:27:02 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32379 32380 * mpn/generic/gcdext.c: Reorganize and clean up. Get rid of all 32381 signed limb arithmetic. 32382 32383Mon Jul 22 02:39:56 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32384 32385 * mpn/generic/gcdext.c (mpn_gcdext): For large enough operands, 32386 work with most significant *two* limbs. 32387 (div2): New function (two variants). 32388 (THRESHOLD): New #define. 32389 32390 * mpz/gcdext.c: Fix typo in MPZ_TMP_INIT call. 32391 32392 * longlong.h (alpha UMUL_TIME): Now 30. 32393 (alpha UDIV_TIME): Now 350. 32394 (x86 UMUL_TIME): Now 10 (let Pentium decide). 32395 (SuperSPARC UDIV_TIME): Override default. 32396 32397 * extract-dbl.c (MP_BASE_AS_DOUBLE): Don't redefine here. 32398 32399 * extract-dbl.c: New name for extract-double.c. 32400 * insert-dbl.c: New name for insert-double.c. 32401 * Makefile.in: Corresponding changes. 32402 * make.bat: Likewise. 32403 32404 * mpz/Makefile.in (.c.o): Don't pass non-portable `-f' to cp. 32405 * mpq/Makefile.in: Likewise. 32406 * mpf/Makefile.in: Likewise. 32407 32408Sat Jul 20 01:35:18 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32409 32410 * mpz/getlimbn.c: Take ABS of integer->_mp_size. 32411 32412 * mpz/divexact.c: Use mpn_divmod_1 if divisor is a single limb. 32413 32414Thu Jul 18 00:31:15 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32415 32416 * mpn/generic/popcount.c (popc_limb): Use different masking trick 32417 for first step (due to David Seal). 32418 * mpn/generic/hamdist.c (popc_limb): Likewise. 32419 32420Wed Jul 17 23:21:48 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32421 32422 * mpn/generic/divrem.c: In MPN_COPY_DECR call, copy dsize - 1 limbs. 32423 32424Sun Jul 14 17:47:46 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32425 32426 * configure.in: Handle sparc9, sparc64, and ultrasparc like sparc8. 32427 32428Thu Jul 11 14:05:54 1996 J.T. Conklin <jtc@rtl.cygnus.com> 32429 32430 * longlong.h (mc680x0): Define umul_ppmm, udiv_qrnnd, sdiv_qrnnd 32431 for the '020, '030, '040, and '332. Define count_leading_zeros 32432 for the '020, '030, '040, and '060. 32433 32434Sun Jul 14 15:24:53 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32435 32436 From Joe Keane: 32437 * mpq/equal.c: Take ABS of num1_size before passing it to mpn_cmp. 32438 32439Fri Jul 12 17:11:17 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32440 32441 * mpn/generic/sqrtrem.c (SQRT): New asm for x86, but leave it 32442 disabled for now. 32443 32444 * mpn/generic/sqrtrem.c: Use MP_BASE_AS_DOUBLE. 32445 32446Wed Jul 10 03:17:45 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32447 32448 * cre-mparam.c: Delete obsolete file. 32449 32450 * gmp.h: #define _LONG_LONG_LIMB if __mips && _ABIN32. 32451 * longlong.h: Test __mips instead of __mips__. 32452 32453Sun Jul 7 23:19:13 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32454 32455 * longlong.h (_PROTO): Define, unless already defined. 32456 (alpha __udiv_qrnnd): Declare using _PROTO. 32457 (hppa __udiv_qrnnd): Likewise. 32458 (sparc __udiv_qrnnd): Likewise. 32459 32460Mon Jul 1 01:44:30 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32461 32462 * config.guess: Update from master version; add Cray x90 handling. 32463 32464Wed Jun 26 05:35:02 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32465 32466 * mpn/power/add_n.s (__mpn_add_n): Work around GAS bug. 32467 * mpn/power/sub_n.s (__mpn_sub_n): Likewise. 32468 32469 * insert-double.c: Rework loop to avoid potential overflow. 32470 32471 * mpq/get_d.c: For vax, if qsize > N_QLIMBS, ignore excess limbs. 32472 32473 * mpq/tests/t-get_d.c (SIZE): Special case for vax. 32474 32475 * gmp.h (mpX_cmp_ui): #define also when ! __GNUC__. 32476 32477Mon Jun 24 17:13:21 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32478 32479 * longlong.h (vax sdiv_qrnnd): Fix typo. 32480 32481Sat Jun 15 01:33:33 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32482 32483 * gmp.h: Support `small' and `large' type and function variants, 32484 controlled by GMP_SMALL. 32485 32486 * mpz/Makefile.in (.c.o): Compile each function twice, for small and 32487 large variant. 32488 (MPZS_OBJS): New variable. 32489 (libmpz.a): Include MPZS_OBJS in archive. 32490 * mpf/Makefile.in: Analogous changes. 32491 * mpq/Makefile.in: Analogous changes. 32492 32493 * gmp.h: Prefix all functions with __gmp, to allow namespace-clean 32494 internal calls. 32495 32496 * mp.h: Rip out __MP_SMALL__ stuff. 32497 (__mpz_struct): mp_size_t => int. 32498 32499 * mpz/invert.c: #include "gmp-impl.h". 32500 Use MPZ_TMP_INIT, not mpz_init. 32501 32502 * mpz/gcdext.c: Rewrite to call mpn_gcdext. 32503 32504Fri Jun 14 18:05:29 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32505 32506 * mpn/generic/gcdext.c (s0size): New parameter. 32507 * gmp.h (mpn_gcdext): Update prototype. 32508 32509 * mpn/generic/gcdext.c: Major rewrite. 32510 32511Mon Jun 10 00:14:27 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32512 32513 * mpn/generic/dump.c: Add missing `else'. 32514 32515Fri Jun 7 03:35:12 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32516 32517 * Makefile.in (gmp_toc.html): Pass -expandinfo to texi2html. 32518 32519Thu Jun 6 19:00:53 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32520 32521 * Version 2.0.2 released. 32522 32523 * install.sh: New file. 32524 * Makefile.in (INSTALL): Use install.sh. 32525 (install-normal): New name for target `install'. 32526 (install): New dummy target. 32527 32528 * mpz/pow_ui.c: Swap tests for (e == 0) and (bsize == 0). 32529 * mpz/ui_pow_ui.c: Swap tests for (e == 0) and (blimb == 0). 32530 32531 * config/mt-linux (AR_FLAGS): New file. 32532 * configure.in: Use config/mt-linux for all linux systems. 32533 32534Tue Jun 4 03:42:18 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32535 32536 * Version 2.0.1 released. 32537 32538 * mpf/tests/ref.c: Cast result of TMP_ALLOC to the right pointer type. 32539 32540 * extract-double.c: Test _GMP_IEEE_FLOATS with #if, not plain if. 32541 32542 * insert-double.c: Don't #include stdlib.h. 32543 32544 * gmp-impl.h (union ieee_double_extract): Test sparc and __sparc. 32545 Do not test __sparc__. 32546 32547 * mpf/reldiff.c: Change declaration to work around irix5 compiler bug. 32548 * mpq/equal.c: Likewise. 32549 32550 * mpn/generic/gcd.c: Delete spurious comma at end of enumeration. 32551 32552 * mpn/generic/gcdext.c: Add K&R declaration syntax. 32553 * stack-alloc.h: Likewise. 32554 * insert-double.c: Likewise. 32555 * extract-double.c: Likewise. 32556 * mpf/tests/reuse.c: Likewise. 32557 * mpz/tests/reuse.c: Likewise. 32558 * mpf/tests/t-sub.c: Likewise. 32559 * mpf/tests/t-add.c: Likewise. 32560 * mpf/tests/t-muldiv.c: Likewise. 32561 * mpf/tests/t-conv.c: Likewise. 32562 * mpf/tests/ref.c: Likewise. 32563 32564 * mpn/config/t-oldgas: Renamed from t-freebsd. 32565 * mpn/configure.in: Use t-oldgas for freebsd, netbsd, and some linux 32566 configurations. 32567 32568 * mpn/powerpc32/mul_1.s: Really clear cy before entering loop. 32569 * mpn/powerpc32/*.s: Fix power/powerpc syntax issues. 32570 32571 * mpn/config/t-ppc-aix: New file. 32572 * mpn/configure.in: Use t-ppc-aix for powerpc like t-pwr-aix for power. 32573 32574Wed May 29 02:07:31 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32575 32576 * gmp.h (mp_bits_per_limb): Change qualifier from `const' to 32577 __gmp_const. 32578 32579 * gmp.h (mpf_init_set_str): Add `const' qualifier for 2nd parameter. 32580 * mpf/iset_str.c: Likewise. 32581 32582Mon May 27 00:15:58 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32583 32584 * gmp-impl.h: Declare __gmp_extract_double. 32585 32586 * mpz/set_q.c: Delete unused variables. 32587 32588 * gmp.h (mpq_equal): Declare. 32589 32590 * mpf/eq.c: mpf_cmp2 -> mpf_eq. 32591 32592Fri May 24 03:20:44 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32593 32594 * mpz/iset_d.c: Don't include <math.h>. 32595 32596 * insert-double.c (__gmp_scale2): New name for scal2. 32597 * mpz/get_d.c: Corresponding change. 32598 * mpf/get_d.c: Likewise. 32599 * mpq/get_d.c: Likewise. 32600 * gmp-impl.h: Declare __gmp_scale2. 32601 32602 * mpn/generic/scan0.c: Clarify comment. 32603 32604 * mpz/set_q.c: New file. 32605 * Makefile.in: Compile it. 32606 * make.bat: Likewise. 32607 * gmp.h: Declare mpz_set_q. 32608 32609 * insert-double.c: New file. 32610 * Makefile.in: Compile it. 32611 * make.bat: Likewise. 32612 32613 * mpz/get_d.c: New file. 32614 * mpz/Makefile.in: Compile it. 32615 * make.bat: Likewise. 32616 * gmp.h: Declare mpz_get_d. 32617 32618 * mpf/get_d.c: New file. 32619 * mpf/Makefile.in: Compile it. 32620 * make.bat: Likewise. 32621 * gmp.h: Declare mpf_get_d. 32622 32623 * make.bat: Compile things in alphabetical order. 32624 32625 * gmp-impl.h (MP_BASE_AS_DOUBLE): New #define. 32626 (LIMBS_PER_DOUBLE): New #define. 32627 32628 * extract-double.c: New file. 32629 * Makefile.in: Compile it. 32630 * make.bat: Likewise. 32631 * mpz/set_d.c: Rewrite to use __gmp_extract_double. 32632 * mpf/set_d.c: Likewise. 32633 32634 * mpn/configure.in: Use t-pwr-aix also for aix 3.2.4 and up. 32635 32636Wed May 22 02:48:35 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32637 32638 * gmp-impl.h: Rework code for defining ieee_double_extract. 32639 (IEEE_DOUBLE_BIG_ENDIAN): Macro removed. 32640 (_GMP_IEEE_FLOATS): New macro. 32641 * mpn/vax/gmp-mparam.h: Delete. 32642 32643 * mpn/config/t-pwr-aix: New file. 32644 * mpn/configure.in: Use t-pwr-aix for aix 4 and later. 32645 32646Mon May 20 16:30:31 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32647 32648 * gmp.h: In code for setting _GMP_H_HAVE_FILE, test more symbols. 32649 32650 * mpf/tests/t-add.c (oo): Add some `l' printf modifiers. 32651 * mpf/tests/t-sub.c (oo): Likewise. 32652 * mpf/tests/t-conv.c (oo): Likewise. 32653 * mpf/tests/t-sqrt.c (oo): Likewise. 32654 32655 * mpz/tests/t-mul.c (_mpn_mul_classic): Remove unused variables. 32656 32657 * mpn/{pyr,i960,clipper}/*.s: Add missing copyright headers. 32658 32659Fri May 17 02:24:43 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32660 32661 * mpz/set_d.c: Call _mpz_realloc. 32662 32663 * mpq/set_z.c: New file. 32664 * mpq/Makefile.in: Compile it. 32665 * make.bat: Likewise. 32666 * gmp.h: Declare mpq_set_z. 32667 32668 * mp?/Makefile.in (libmp?.a): Depend on Makefile, not Makefile.in. 32669 * mpf/Makefile.in (test): Delete spurious target. 32670 * mpq/Makefile.in (test): Likewise. 32671 32672 * mpf/out_str.c: Use `e' to separate exponent when base <= 10. 32673 32674 * mpn/configure.in: Treat ultrasparc just like sparc v8, 32675 until 64-bit compilers are ready. 32676 32677 * mpf/set_d.c: Make it work for 64-bit machines. 32678 32679Thu May 16 20:53:57 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32680 32681 * gmp-impl.h: Set IEEE_DOUBLE_BIG_ENDIAN to 0 for little-endian 32682 machines. 32683 * mpn/x86/gmp-mparam.h: Delete file. 32684 32685 * configure.in: Treat microsparc like sparc8. 32686 32687 * urandom.h: Test __alpha instead of __alpha__, since the former 32688 is the standard symbol. 32689 * mpn/generic/random2.c: Likewise. 32690 * mpf/random2.c: Likewise. 32691 32692Tue May 14 13:42:39 1996 Torbjorn Granlund (tege@tiny.matematik.su.se) 32693 32694 * mpz/set_f.c: New file. 32695 * mpz/Makefile.in: Compile it. 32696 * gmp.h: Declare mpz_set_f. 32697 32698 * mpf/set_q.c: Simplify expression in rsize == nsize if-then-else arms. 32699 32700Tue May 14 13:03:07 1996 Torbjorn Granlund (tege@tiny.matematik.su.se) 32701 32702 * make.bat: Add all new files. 32703 32704Sun May 12 22:24:36 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32705 32706 * mpf/set_z.c: New file. 32707 * mpf/Makefile.in: Compile it. 32708 * gmp.h: Declare mpf_set_z. 32709 32710Sat May 11 19:26:25 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32711 32712 * gmp.h: Declare mpf_set_q. 32713 32714 * mpf/set_q.c: Compute prec-1 limbs in mpn_divrem call. 32715 32716Fri May 10 17:37:38 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32717 32718 * mpf/set_q.c: New file. 32719 * mpf/Makefile.in: Compile it. 32720 32721 * config.sub: Recognize sparc8. 32722 32723Wed May 8 09:19:11 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32724 32725 * mpf/tests/t-dm2exp.c: New file. 32726 32727 * mpf/tests/t-add.c: Correct header comment. 32728 * mpf/tests/t-sub.c: Likewise. 32729 * mpf/tests/t-sqrt.c: Likewise. 32730 32731 * mpf/div.c: Misc variable name cleanups. 32732 * mpf/div_ui.c: Base more closely on mpf/div.c. 32733 * mpf/ui_div.c: Likewise. 32734 32735 * mpz/tests/Makefile.in (check): Depend on Makefile. 32736 * mpq/tests/Makefile.in (check): Likewise. 32737 * mpf/tests/Makefile.in (check): Likewise. 32738 32739 * mpf/tests/t-muldiv.c: New file. 32740 * mpf/tests/Makefile.in: Compile and run `t-muldiv'. 32741 (t-ref.o): Delete spurious rule. 32742 32743 * mpf/sqrt.c: Properly detect negative input operand. 32744 32745 * mpf/sqrt_ui.c: Delete spurious header comment. 32746 * mpf/sqrt.c: Likewise. 32747 * mpz/sqrt.c: Likewise. 32748 32749 * mpz/tests/reuse.c (main): Read `reps' from command line. 32750 32751 * mpf/tests/reuse.c: New file. 32752 * mpf/tests/Makefile.in: Compile and run `reuse'. 32753 32754 * mpf/mul_ui.c: Disable code for removing low zero limbs. 32755 32756 * mpf/div.c: Fix condition for when vp and qp overlaps. 32757 32758 * mpf/add_ui.c: When sum equals u, copy up to prec+1 limbs. 32759 32760 * mpf/out_str.c: Don't output '\n' after exponent. 32761 32762 * mpf/add_ui.c: New special case for when U is completely cancelled. 32763 32764Wed Apr 24 05:33:28 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32765 32766 * Version 2.0 released. 32767 32768 * All files: Update FSF's address. 32769 32770 * Makefile.in (gmp_toc.html): New name for gmp.html. 32771 (TAGS): Depend on force. 32772 32773 * mpf/tests/t-conv.c: Pass -base to mpf_set_str. 32774 32775Sat Apr 20 03:54:06 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32776 32777 * Makefile.in (ps): New target, depend on gmp.ps. 32778 32779Fri Apr 19 14:03:15 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32780 32781 * mpf/out_str.c: Print `@' before exponent, not `e'. 32782 32783 * make.bat: Update from Makefiles. 32784 32785Thu Apr 18 01:22:05 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32786 32787 * mpf/set_str.c: If parameter `base' is negative, expect exponent 32788 to be decimal, otherwise in the same base as the mantissa. 32789 32790Wed Apr 17 17:28:36 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32791 32792 * mpf/set_dfl_prec.c: Don't return anything. 32793 * gmp.h: Corresponding changes. 32794 32795 * mpf/set_dfl_prec.c: Use `unsigned long int' for bit counts. 32796 * mpf/init2.c: Likewise. 32797 * mpf/get_prc.c: Likewise. 32798 * mpf/set_prc.c: Likewise. 32799 * mpf/set_prc_raw.c: Likewise. 32800 * mpz/popcount.c: Likewise. 32801 * mpz/hamdist.c: Likewise. 32802 * mpz/scan1.c: Likewise. 32803 * mpz/scan0.c: Likewise. 32804 * mpn/generic/popcount.c: Likewise. 32805 * mpn/generic/hamdist.c: Likewise. 32806 * mpn/generic/scan1.c: Likewise. 32807 * mpn/generic/scan0.c: Likewise. 32808 * gmp.h: Likewise. 32809 32810 * mpf/eq.c: New file, based on mpf/diff.c. 32811 * mpf/diff.c: Delete. 32812 * mpf/Makefile.in: Corresponding changes. 32813 * gmp.h: Likewise. 32814 32815 * mpf/reldiff.c: New file. 32816 * mpf/Makefile.in: Compile it. 32817 * gmp.h: Declare mpf_reldiff. 32818 32819 * mpz/iset_d.c: New file. 32820 * mpz/Makefile.in: Compile it. 32821 * gmp.h: Declare mpz_init_set_d. 32822 32823Tue Apr 16 16:28:31 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32824 32825 * Makefile.in (gmp.html): Pass -acc to texi2html. 32826 32827Mon Apr 15 16:20:24 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32828 32829 * mpf/set_str.c: Switch off code for defaulting the base from the 32830 leading characters. 32831 32832 * gmp.h (mp?_sign): Delete. 32833 (mp?_sgn): New macros. 32834 32835Fri Apr 12 17:23:33 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32836 32837 * Makefile.in (gmp.dvi): Delete tmp.* at end of rule. 32838 32839Wed Apr 10 22:52:02 1996 Torbjorn Granlund (tege@tiny.matematik.su.se) 32840 32841 * mpf/random2.c: Change of `exp' param, mp_size_t => mp_exp_t. 32842 * gmp.h: Corresponding change. 32843 32844 * gmp.h (mp_bits_per_limb): Make it const. 32845 32846Sat Mar 30 01:20:23 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32847 32848 * configure.in: Re-enable recognition of with_gcc. 32849 32850 * mpf/Makefile.in (.c.o): Pass XCFLAGS. 32851 * mpn/Makefile.in (.c.o): Likewise. 32852 * mpz/Makefile.in (.c.o): Likewise. 32853 * mpq/Makefile.in (.c.o): Likewise. 32854 * mpbsd/Makefile.in (.c.o): Likewise. 32855 * mpf/tests/Makefile.in (.c.o): Likewise. 32856 * mpz/tests/Makefile.in (.c.o): Likewise. 32857 * mpq/tests/Makefile.in (.c.o): Likewise. 32858 32859 * Makefile.in (XCFLAGS): Default to empty. 32860 (FLAGS_TO_PASS): Pass on XCFLAGS. 32861 (.c.o): Pass XCFLAGS. 32862 32863 * config/mt-m88110 (XCFLAGS): Define instead of CC. 32864 * config/mt-sprc8-gcc (XCFLAGS): Likewise. 32865 * config/mt-supspc-gcc (XCFLAGS): Likewise. 32866 32867 * configure: Don't default CC to "gcc -O2" is -with-gcc=no was 32868 specified. 32869 32870Mon Mar 25 01:07:54 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32871 32872 * urandom.h: Test for __SVR4 in addition to __svr4__. 32873 32874 * mp_bpl.c (mp_bits_per_limb): Declare as `const'. 32875 32876 * Makefile.in (CFLAGS): `-O2' => `-O'. 32877 * mpn/Makefile.in (CFLAGS): Likewise. 32878 32879 * gmp-impl.h: Get rid of obsolete field access macros. 32880 32881 * mpn/mp_bases.c (__mp_bases): 1e39 => 1e38 to work around Solaris 32882 cc compiler bug. 32883 32884 * gmp.h (__MPN): Make it work also for non-ANSI compilers. 32885 32886Thu Mar 21 01:07:54 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32887 32888 * mpf/sub.c: New special case for ediff <= 1 before generic code. 32889 Simplify generic code for ediff == 0. 32890 Rename uexp => exp. 32891 32892Mon Mar 11 18:24:57 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32893 32894 * mpf/tests/*.c: Use ref_mpf_sub for error calculation. 32895 * mpf/tests/Makefile.in: Link ref.o to all executables. 32896 32897 * mpf/tests/t-sub.c: Make u = v + 1 with 50% probability. 32898 32899Sun Mar 10 21:03:17 1996 Torbjorn Granlund (tege@tiny.matematik.su.se) 32900 32901 * mpf/get_str.c: In digit development loop for fractions, change 32902 loop condition from `<' to `<='. 32903 32904Thu Mar 7 04:58:11 1996 Torbjorn Granlund <tege@tiny.matematik.su.se> 32905 32906 * mpn/mp_bases.c (__mp_bases): 1e100 => 1e39 to avoid overflow warning. 32907 32908Wed Mar 6 01:10:42 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 32909 32910 * mpf/tests/t-sqrt.c: New file. 32911 * mpf/tests/Makefile.in: Corresponding changes. 32912 32913 * mpf/sqrt.c: Special case for square root of zero. 32914 32915 * mpq/add.c: Clean up variable names. 32916 * mpq/sub.c: Update from mpq/add.c. 32917 32918 * mpz/divexact.c: abs => ABS. 32919 * mpz/gcd.c: Likewise. Rewrite final fixup code, to decrease 32920 allocation. Misc cleanups. 32921 32922Tue Mar 5 22:24:56 1996 Torbjorn Granlund <tege@matematik.su.se> 32923 32924 * mpn/configure.in: Recognize linuxoldld as a synonym for linuxaout. 32925 32926 * gmp.h (mpn_add, mpn_add_1, mpn_sub, mpn_sub_1): Add prototypes. 32927 32928 * mpn/configure.in: Use t-freebsd also for netbsd. 32929 32930Mon Mar 4 15:13:28 1996 Torbjorn Granlund <tege@matematik.su.se> 32931 32932 * mpq/Makefile.in (cmp.o): Depend on longlong.h. 32933 32934 * mpq/equal.c: New file. 32935 * mpq/Makefile.in: Corresponding changes. 32936 32937 * mpf/tests/t-add.c: New file. 32938 * mpf/tests/t-sub.c: Renamed from t-addsub.c. 32939 * mpf/tests/ref.c: New file. 32940 * mpf/tests/Makefile.in: Corresponding changes. 32941 32942 * gmp-impl.h (SIZ, ABSIZ, PTR, EXP, PREC, ALLOC): New #defines. 32943 32944Sun Mar 3 07:45:46 1996 Torbjorn Granlund <tege@matematik.su.se> 32945 32946 * mpf/set_str.c: In exponentiation code, allocate 3 extra 32947 limbs, not just 2. 32948 32949 * mpf/get_str.c: Allocate sufficient space for tstr. 32950 When calculating exp_in_base, round result down. 32951 32952 * mpf/tests/t-conv.c: New file. 32953 * mpf/tests/Makefile.in: Corresponding changes. 32954 32955 * mp_bpl.c: New file. 32956 * gmp.h: Declare it. 32957 * Makefile.in: Corresponding changes. 32958 32959Sat Mar 2 06:27:56 1996 Torbjorn Granlund <tege@matematik.su.se> 32960 32961 * mpf/set_prc_raw.c: New file. 32962 * mpf/set_prc.c: Renamed from set_prec.c. 32963 * mpf/get_prc.c: New file. 32964 * mpf/Makefile.in: Corresponding changes. 32965 * gmp.h: Declare new functions. 32966 32967 * mpn/generic/gcdext.c: Add copyright header. 32968 32969Fri Mar 1 01:22:24 1996 Torbjorn Granlund <tege@matematik.su.se> 32970 32971 * mpn/configure.in: For ppc601, search "power" before "powerpc32". 32972 32973 * mp?/Makefile.in (AR_FLAGS): New variable. 32974 (libmp?.a): Use it. 32975 32976 * make.bat: New file. 32977 * mpn/msdos: New directory. 32978 * mpn/msdos/asm-syntax.h: New file. 32979 32980 * mpn/Makefile.in (distclean maintainer-clean): Delete asm-syntax.h. 32981 32982 * config.sub: Recognize [ctj]90-cray. 32983 32984 * mpn/configure.in: Recognize [ctj]90-cray-unicos*. 32985 32986 * mpn/generic/gcdext.c: Don't use alloca directly, use TMP_* macros. 32987 32988 * mpn/generic/gcd.c: Split increment from use of USIZE to avoid 32989 undefined behaviour. 32990 32991Thu Feb 29 04:11:24 1996 Torbjorn Granlund <tege@matematik.su.se> 32992 32993 * Makefile.in (install-info-files): Update for new install-info 32994 behaviour. 32995 32996 * mpn/power/add_n.s: Rewrite. 32997 * mpn/power/sub_n.s: Rewrite. 32998 32999Wed Feb 28 01:34:30 1996 Torbjorn Granlund <tege@matematik.su.se> 33000 33001 * mpz/pow_ui.c: Compute allocation more aggressively for small bases. 33002 * mpz/ui_pow_ui.c: Likewise. 33003 33004 * mpn/mp_bases.c (__mp_bases): Put huge value in 2nd field for index 1. 33005 33006 * mpn/generic/sqrtrem.c: sizeof (mp_limb_t) => BYTES_PER_MP_LIMB. 33007 * mpn/generic/gcd.c: Likewise. 33008 (SIGN_BIT): Compute differently. 33009 33010Mon Feb 26 00:07:36 1996 Torbjorn Granlund <tege@matematik.su.se> 33011 33012 * All files: mp_limb => mp_limb_t, mp_limb_signed => mp_limb_signed_t. 33013 33014 * Makefile.in (install, install-bsdmp, install-info-files): Depend 33015 on installdirs. chmod all installed files. 33016 33017Sun Feb 25 01:47:41 1996 Torbjorn Granlund <tege@matematik.su.se> 33018 33019 * mpbsd/configure.in: Delete debugging code. 33020 33021 * All Makefile.in: Update clean targets. 33022 33023 * Makefile.in (AR_FLAGS): New variable. 33024 (libgmp.a): Use it. 33025 (libmp.a): Likewise. 33026 33027 * VERSION: Delete file. 33028 33029 * Makefile.in (installdirs): New target. 33030 * mkinstalldirs: New file (from the texinfo package). 33031 33032 * Makefile.in (INSTALL, INSTALL_DATA, INSTALL_PROGRAM): New variables. 33033 (MAKEINFO, MAKEINFOFLAGS, TEXI2DVI): New variables. 33034 (install-info): New target. 33035 (install, install-bsdmp): Depend on install-info. 33036 ($(srcdir)/gmp.info): Changed from plain gmp.info; put info files 33037 into source directory. 33038 (distclean, mostlyclean): New targets. 33039 (maintainer-clean): New name for realclean. 33040 (uninstall): New target. 33041 (TAGS): New target. 33042 (info, dvi): New targets. 33043 (.PHONY): Assign. 33044 33045 * Makefile.in (install, install-bsdmp): Use INSTALL_DATA. 33046 33047 * mp{n,z,f,bsd}/move-if-change: Delete. 33048 33049 * mpbsd/Makefile.in (stamp-stddefh): Delete target. 33050 33051 * Makefile.in (.c.o): Pass CFLAGS last. 33052 * mpbsd/Makefile.in (.c.o): Likewise. 33053 * mpf/Makefile.in (.c.o): Likewise. 33054 * mpq/Makefile.in (.c.o): Likewise. 33055 * mpz/Makefile.in (.c.o): Likewise. 33056 * mpn/Makefile.in (.c.o): Likewise. 33057 (.S.o): Likewise. 33058 33059 * memory.c: Change allocation error message. 33060 33061 * Makefile.in (install): Prefix gmp.h with $(srcdir). 33062 (install-bsdmp): Prefix mp.h with $(srcdir). 33063 33064 * mp{n,z,f,bsd}/{configure,config.sub}: Delete. 33065 33066 * Makefile.in (gmp.dvi): Set TEXINPUTS also for 2nd tex invocation 33067 (install targets): Install gmp.info-N. 33068 33069Sat Feb 24 03:36:52 1996 Torbjorn Granlund <tege@matematik.su.se> 33070 33071 * mpf/get_str.c: Fix typo. 33072 33073 * mpz/legendre.c: Clarify expression with extra parens. 33074 33075 * version.c (gmp_version): Not static. 33076 33077 * mpf/iset_str.c: Properly return error code. 33078 33079 * mpf/add.c: Delete unused variables. 33080 * mpf/inp_str.c: Likewise. 33081 * mpq/get_d.c: Likewise. 33082 33083 * mpn/generic/dump.c: #include <stdio.h>. 33084 * mpf/dump.c: Likewise. 33085 * mpf/set_str.c: #include <ctype.h>. 33086 (strtol): Declare. 33087 33088 * gmp.h: mpn_sqrt => mpn_sqrtrem. 33089 33090 * Makefile.in (clean, realclean): Clean in mpbsd. 33091 (check): Test in mpf. 33092 33093 * mpf/Makefile.in (clean): Clean in tests. 33094 * mpq/Makefile.in (clean): Clean in tests. 33095 33096 * mpf/tests/Makefile.in: New file. 33097 * mpf/tests/configure.in: New file. 33098 * mpf/tests/t-addsub.c: New file. 33099 33100 * mpf/sub_ui.c: Simply call mpf_sub for now. 33101 33102 * mpf/sub.c: Increase prec by 1. 33103 * mpf/ui_sub.c: Likewise. 33104 33105Fri Feb 23 00:59:54 1996 Torbjorn Granlund <tege@matematik.su.se> 33106 33107 * mpf/ui_sub.c: Fix typos. 33108 33109 * mpf/get_str.c: When allocating space for tmp, allow for an extra 33110 limb. In code for fraction conversion, add special case for bases 33111 that are a power of 2. 33112 33113 * mpf/out_str.c: Output leading "0.". 33114 Default base to 10, before computing string allocation. 33115 33116 * mpf/get_str.c: Make variables for string size have type size_t. 33117 * gmp.h: Corresponding change. 33118 33119 * mpf/random2.c: Allow creation of prec+1 large mantissas. 33120 33121 * mpf/add_ui.c: Don't abort if u < 0; special case for u <= 0. 33122 Fix typo in MPN_COPY offset. 33123 * mpf/sub_ui.c: Analogous changes. 33124 33125 * mpf/set_prec.c: Rewrite. 33126 33127 * mpf/init2.c: Compute precision as in set_prec.c. 33128 33129 * mpf/div_2exp.c: Special case for u == 0. 33130 * mpf/mul_2exp.c: Likewise. Write r->_mp_size always. 33131 33132 * mpf/sqrt_ui.c: mpn_sqrt => mpn_sqrtrem. 33133 * mpf/sqrt.c: Likewise. When computing new exponent, round quotient 33134 towards -infinity. 33135 33136 * mpf/add.c: Fix typos. 33137 * mpf/sub.c: Fix typos. 33138 33139Thu Feb 22 00:24:48 1996 Torbjorn Granlund <tege@matematik.su.se> 33140 33141 * mpz/Makefile.in (stamp-stddefh): Delete target. 33142 (test): Delete target. 33143 * Makefile.in (stamp-stddefh): Delete target. 33144 (cre-stddefh.o): Delete target. 33145 (gmp.dvi): Set TEXINPUTS before invoking tex. 33146 33147 * cre-stddefh.c: Delete. 33148 33149 * mpz/sqrt.c: Fix typo. 33150 33151 * mpz/powm.c: Special case for mod == 0. 33152 * mpz/powm_ui.c: Likewise. 33153 33154 * mpz/get_si.c: Handle -0x80000000 correctly. 33155 33156 * mpz/inp_str.c: Now returns size_t. 33157 Make it return number of bytes read or error indication. 33158 * mpf/inp_str.c: Likewise. 33159 33160 * mpz/out_raw.c: Replace by mpz/out_binary.c, with modifications. 33161 * mpz/inp_raw.c: Rewrite, using mpz/inp_binary as a base. 33162 * mpz/inp_binary.c: Delete. 33163 33164 * mpn/Makefile.in (XCFLAGS): Remove variable. 33165 (.c.o): Don't pass XCFLAGS. 33166 (SFLAGS): Set to nothing. 33167 (.S.o): Pass SFLAGS, not XCFLAGS. 33168 33169 * mpn/config/t-freebsd (SFLAGS): New name for XCFLAGS. 33170 33171 * mpf/out_str.c: Make return number of bytes written or error 33172 indication. 33173 * mpz/out_str.c: Likewise. 33174 * gmp.h: Corresponding changes. 33175 33176 * gmp.h (__mpz_struct): mp_size_t => int. 33177 (__mpq_struct): Likewise. 33178 (__mpf_struct): Likewise. 33179 (mp_size_t): int => long int. 33180 33181 * mpn/cray: New directory. 33182 * mpn/cray/gmp-mparam.h: New file. 33183 * mpn/configure.in: Recognize cray variants. 33184 33185 * Makefile.in: Set defaults for prefix, libdir, etc. 33186 (install): New target. 33187 (install-bsdmp): New target. 33188 (gmp.html): New target. 33189 33190 * stack-alloc.c (__tmp_alloc): Cast void ptrs to char * in comparison. 33191 33192Wed Feb 21 04:35:02 1996 Torbjorn Granlund <tege@matematik.su.se> 33193 33194 * gmp.h: Sort mpn declarations. 33195 (mpn_gcdext): Add declaration. 33196 33197 * mpn/generic/divrem_1.c: New file. 33198 * mpn/Makefile.in (divrem_1.o): New rule. 33199 * configure.in (functions): Add divrem_1. 33200 33201 * mpn/generic/divmod.c: Delete file. 33202 * mpn/configure.in (functions): Delete divmod. 33203 * Makefile.in (divmod.o): Delete rule. 33204 * gmp.h (mpn_divmod): New #define. 33205 33206 * gmp.h (mpn_next_bit_set): Delete spurious declaration. 33207 33208 * mpn/generic/divrem.c (default case): In code assigning 33209 most_significant_q_limb, move reassignment of n0 into if statement. 33210 33211 * gmp.h (mpf_inp_str): Fix typo. 33212 (mpf_out_str): Make prototype match reality. 33213 * mpf/inp_str.c: New file. 33214 * mpf/out_str.c: New file. 33215 * mpf/Makefile.in: Compile new files. 33216 33217 * mpn/Makefile.in (dump.o): Fix dependency path. 33218 (inlines.o): Likewise. 33219 33220 * mpn/configure.in: Make m68060 be the same as m68000. Clean up 33221 m68k configs. 33222 33223Tue Feb 20 01:35:11 1996 Torbjorn Granlund <tege@matematik.su.se> 33224 33225 * mpn/generic/sqrtrem.c: Renamed from sqrt. 33226 * mpn/configure.in (functions): Corresponding change. 33227 * mpn/Makefile.in: Likewise. 33228 * mpz/sqrtrem.c: Likewise. 33229 * mpz/sqrt.c: Likewise. 33230 * mpn/generic/perfsqr.c: Likewise. 33231 33232 * Makefile.in (clean): Also remove libmp.a. 33233 Don't compile cre-conv-tab.c or mp_bases.c. 33234 cre-conv-tab.c: Delete file. 33235 (gmp.ps): New rule. 33236 33237 * mpn/mp_bases.c: New file. 33238 * mpn/Makefile.in: Compile mp_bases.c. 33239 33240 * mpz/set_str.c: Skip initial whitespace. 33241 * mpf/set_str.c: Likewise. 33242 * mpbsd/xtom.c: Likewise. 33243 33244 * gmp.h: Add missing mpz declarations. 33245 Delete all formal parameter names from declarations. 33246 33247 * mpn/Makefile.in: Add dependencies for .c files. 33248 33249 * Makefile.in (check): Write recursive make calls separately, not as 33250 a loop. 33251 (FLAGS_TO_PASS): New variable. Use it for most recursive makes. 33252 33253Mon Feb 19 01:02:20 1996 Torbjorn Granlund <tege@matematik.su.se> 33254 33255 * mpn/Makefile.in (.S.o): Pipe cpp output to grep in order to delete 33256 lines starting with #. 33257 (CPP): Set to $(CC) -E to avoid gcc dependency. 33258 33259 * mpn/m68k/syntax.h (moveql): Define to moveq for MIT_SYNTAX. 33260 33261 * mpn/hppa/hppa1_1/pa7100/addmul_1.S: Fix typo in s1_ptr alignment 33262 code. 33263 * mpn/hppa/hppa1_1/pa7100/submul_1.S: Likewise. 33264 33265 * gmp.h: Fix typos in #defines of recently added mpn functions. 33266 33267 * mpz/inp_str.c: Skip all whitespace, not just plain space. 33268 * mpbsd/min.c: Likewise. 33269 33270 * mpn/configure.in (functions): Add gcdext. 33271 * mpn/generic/gcdext.c: New file. 33272 33273 * mpz/legendre.c: mpz_div_2exp => mpz_tdiv_q_2exp. 33274 33275 * gmp.h: Surround mpn declarations with extern "C" { ... }. 33276 33277 * Makefile.in (check): New target. 33278 33279 * mpq/get_d.c: Update comments. Use rsize instead of dsize + N_QLIMBS 33280 when possible. Add special case for nsize == 0. 33281 33282 * gmp.h (mpq_get_d): Add declaration. 33283 (mpq_canonicalize): Likewise. 33284 (mpq_cmp_ui): Likewise. 33285 (mpf_diff): Likewise. 33286 (mpf_ui_sub): Likewise. 33287 (mpf_set_prec): Likewise. 33288 (mpf_random2): Likewise. 33289 33290 * gmp.h (mpz_cmp_ui): New #define. 33291 (mpz_cmp_si): New #define. 33292 (mpq_cmp_ui): New #define. 33293 (mpz_sign): New #define. 33294 (mpq_sign): New #define. 33295 (mpf_sign): New #define. 33296 (mpq_numref): New #define. 33297 (mpq_denref): New #define. 33298 33299 * mpq/set_z.c: File deleted. 33300 * mpq/Makefile.in: Corresponding changes. 33301 33302Sun Feb 18 01:34:47 1996 Torbjorn Granlund <tege@matematik.su.se> 33303 33304 * mpbsd/sdiv.c: Use _mp_realloc, not _mpz_realloc. 33305 33306 * mpz/inp_binary.c: Default stream to stdin. 33307 * mpz/inp_str.c: Likewise. 33308 * mpz/inp_raw.c: Likewise. 33309 * mpz/out_binary.c: Default stream to stdout. 33310 * mpz/out_raw.c: Likewise. 33311 * mpz/out_str.c: Likewise. 33312 33313 * mpbsd/realloc.c: New file. 33314 * mpbsd/Makefile.in: Corresponding changes. 33315 33316 * mpbsd/min.c: Rewrite (base on mpz/inp_str.c). 33317 * mpbsd/mtox.c: Rewrite (base on mpz/get_str.c). 33318 33319 * mpbsd/mout.c: Rewrite (base on mpz/out_str) but make it output 33320 spaces in each 10th position. 33321 * mpbsd/xtom.c: Rewrite (base on mpz/set_str). 33322 33323 * mpq/tests/Makefile.in (st-cmp): New file. 33324 * mpq/tests/configure.in (srcname): New file. 33325 33326 * mpz/tests/configure.in (srcname): Fix typo. 33327 33328 * mpq/cmp.c: Add check using number of significant bits, to avoid 33329 general multiplication. 33330 33331Sat Feb 17 11:58:30 1996 Torbjorn Granlund <tege@matematik.su.se> 33332 33333 * mpq/cmp_ui.c: Store cy_limb after the mpn_mul_1 calls. 33334 33335 * mpq/tests: New directory. 33336 * mpq/tests/t-cmp.c: New file. 33337 * mpq/tests/t-cmp_ui.c: New file. 33338 33339 * mpz/tests/dive.c (main): Generate zero numerator. 33340 (get_random_size) : Delete. 33341 33342 * mpz/divexact.c: Add special case for 0/x. 33343 33344 * gmp.h (mpz_mod): Add declaration. 33345 33346Fri Feb 16 18:18:39 1996 Andreas Schwab <schwab@informatik.uni-dortmund.de> 33347 33348 * mpn/m68k/*: Rewrite code not to use the INSN macros. 33349 (L): New macro to properly prefix local labels for ELF. 33350 33351Fri Feb 16 00:20:56 1996 Torbjorn Granlund <tege@matematik.su.se> 33352 33353 * gmp-impl.h (ieee_double_extract): Use plain `unsigned int' for 33354 fields. 33355 * mpn/generic/inlines.c (_FORCE_INLINES): New #define. Delete 33356 conditional __GNUC__. 33357 * gmp.h (mpn_add, mpn_sub, mpn_add_1, mpn_sub_1): 33358 Only define these if __GNUC__ || _FORCE_INLINES. 33359 * mpf/random2.c: Add missing parameter in non-ANSI header. 33360 * mpn/generic/gcd.c (SIGN_BIT): Do as #define to work around bug 33361 in AIX compilers. 33362 * mpq/get_d.c: #define N_QLIMBS. 33363 * mpz/divexact.c: Obscure division by 0 to silent compiler warnings. 33364 * stack-alloc.c: Cast void* pointer to char* before doing arithmetic 33365 on it. 33366 33367 * Makefile.in (mpbsd/libmpbsd.a): New rule. 33368 * configure.in (configdirs): Add mpbsd. 33369 33370 * gmp.h: Add declarations for a few missing mpn functions. 33371 33372 * Makefile.in (libmp.a): New rule. 33373 33374 * mpbsd/mdiv.c: #include "dmincl.c", not "mpz_dmincl.c" 33375 * gmp.h: Move #define of __GNU_MP__ into the `#if __GNU_MP__' block. 33376 * mp.h: Likewise. Update typedefs from gmp.h. 33377 * mpbsd/configure.in: New file. 33378 * mpbsd/Makefile.in: New file. 33379 * mpbsd/configure: Link to master configure. 33380 * mpbsd/config.sub: Link to master config.sub. 33381 33382 * Makefile.in: Set RANLIB_TEST. 33383 * (libgmp.a): Use it. 33384 * (libgmp.a): Do ranlib before moving the libgmp.a to the build 33385 directory. 33386 * mp?/Makefile.in: Don't use or set RANLIB. 33387 33388Thu Feb 15 16:38:41 1996 Torbjorn Granlund <tege@matematik.su.se> 33389 33390 * mpz/add_ui.c: MP_INT => mpz_t. 33391 * mpz/cmp_ui.c: Likewise. 33392 * mpz/fac_ui.c: Likewise. 33393 * mpz/inp_binary.c: Likewise. 33394 * mpz/inp_raw.c: Likewise. 33395 * mpz/legendre.c: Likewise. 33396 * mpz/jacobi.c: Likewise. 33397 * mpz/out_binary.c: Likewise. 33398 * mpz/out_raw.c: Likewise. 33399 * mpz/random2.c: Likewise. 33400 * mpz/random.c: Likewise. 33401 * mpz/realloc.c: Likewise. 33402 33403 * mpz/legendre.c: __mpz_2factor(X) => mpz_scan1(X,0), 33404 __mpz_odd_less1_2factor => mpz_scan1(X,1). 33405 * mpz/ntsup.c: File deleted. 33406 * mpz/Makefile.in: Corresponding changes. 33407 33408 * mpz/pprime_p: Use mpz_scan1 to avoid looping. 33409 33410 * mpz/fac_ui.c: Type of `k' and `p' is `unsigned long'. 33411 * mpz/pprime_p.c: Pass long to *_ui functions. 33412 * mpz/gcdext.c: Likewise. 33413 * mpz/fdiv_r_2exp.c: Likewise. 33414 * mpz/fac_ui.c: Likewise. 33415 33416 * mpz/powm.c: Don't use mpn_rshift when mod_shift_cnt is 0. 33417 33418 * mpz/tests/Makefile.in (st-sqrtrem): Fix typo. 33419 33420 * mpz/cmp_ui.c: #undef mpz_cmp_ui. 33421 * mpz/cmp_si.c: #undef mpz_cmp_si. 33422 * gmp.h (mpz_cmp_ui): New #define. 33423 (mpz_cmp_si): New #define. 33424 33425Wed Feb 14 22:11:24 1996 Torbjorn Granlund <tege@matematik.su.se> 33426 33427 * gmp.h: Test __cplusplus in addition to __STDC__. 33428 * gmp-impl.h: Likewise. 33429 33430 * gmp.h: Surround declarations with extern "C" { ... }. 33431 33432Tue Feb 13 15:20:45 1996 Torbjorn Granlund <tege@matematik.su.se> 33433 33434 * mpz/fdiv_r_2exp.c: Use MPN_NORMALIZE. 33435 * mpz/tdiv_r_2exp.c: Likewise. 33436 33437 * mpz/fdiv_r_2exp.c: New file. 33438 * mpz/fdiv_q_2exp.c: New file. 33439 * mpz/tdiv_r_2exp.c: Renamed from mpz/mod_2exp.c. 33440 * mpz/tdiv_q_2exp.c: Renamed from mpz/div_2exp.c 33441 * mpz/Makefile.in: Corresponding changes. 33442 33443 * mpz/scan0.c,scan1.c: New files. 33444 * mpz/Makefile.in: Compile them. 33445 33446 * gmp.h (mpn_normal_size): Delete. 33447 33448 * config.guess: Update from Cygnus version. 33449 33450 * mpn/m68k/rshift.S: Use INSN2 macro for lea instructions. 33451 * mpn/m68k/lshift.S: Likewise. 33452 33453 * mpn/configure.in: Fix configuration for plain 68000. 33454 33455Mon Feb 12 01:06:06 1996 Torbjorn Granlund <tege@matematik.su.se> 33456 33457 * mpz/tests/t-powm.c: Generate negative BASE operand. 33458 33459 * mpz/powm.c: Make result always positive. 33460 33461Sun Feb 11 01:44:56 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 33462 33463 * mpz/tests/*.c: Add t- prefix. 33464 * mpz/tests/Makefile.in: Corresponding changes. 33465 * mpz/tests/configure.in: Update srctrigger. 33466 33467 * mpz/tests/gcd.c: Generate negative operands. 33468 * mpz/tests/gcd2.c: Likewise. 33469 33470 * mpz/gcdext.c: At end, if G is negative, negate all G, S, and T. 33471 33472Thu Feb 8 17:16:12 UTC 1996 Ken Weber <kweber@mat.ufrgs.br> 33473 33474 * mp{z,n}/gcd.c: Change mpn_gcd interface. 33475 * gmp.h: Ditto. 33476 * gmp.texi: update documentation. 33477 33478Mon Feb 7 23:58:43 1996 Andreas Schwab <schwab@informatik.uni-dortmund.de> 33479 33480 * mpn/m68k/{lshift,rshift}.S: New files. 33481 * mpn/m68k/syntax.h: New ELF_SYNTAX macros. 33482 (MEM_INDX, R, PROLOG, EPILOG): New macros. 33483 * mpn/m68k/*.S: Use R macro with register name. Use PROLOG and EPILOG 33484 macros. Rename `size' to `s_size' or s1_size to avoid clash with ELF 33485 .size directive. 33486 * mpn/configure.in: New target m68k-*-linux*. 33487 33488Wed Feb 7 07:41:31 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 33489 33490 * Makefile.in (cre-conv-tab): Workaround for SunOS make. 33491 33492 * mpz/tests/reuse.c: New file. 33493 * mpz/tests/Makefile.in: Handle reuse.c. 33494 33495Tue Feb 6 11:56:24 UTC 1996 Ken Weber <kweber@mat.ufrgs.br> 33496 33497 * mpz/gcd.c: Fix g->size when one op is 0 and g == other op. 33498 33499Tue Feb 6 01:36:39 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 33500 33501 * gmp.h (mpz_divexact): Delete parameter names. 33502 (mpz_lcm): Delete spurious declaration. 33503 33504 * mpz/dmincl.c: Fix typo. 33505 33506Mon Feb 5 01:11:56 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 33507 33508 * mpn/generic/gcd.c (gcd_2): Declare consistently. 33509 33510 * mpz/tdiv_q.c: Optimize division by a single-limb divisor. 33511 * mpz/dmincl.c: Likewise. 33512 33513 * mpz/add.c: Use MPN_NORMALIZE instead of mpn_normal_size. 33514 * mpz/sub.c: Likewise. 33515 * mpn/generic/sqrt.c: Likewise. 33516 33517 * mpn/tests/{add_n,sub_n,lshift,rshift}.c: Put garbage in the 33518 destination arrays. 33519 33520Fri Feb 2 02:21:27 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 33521 33522 * mpz/{jacobi.c,legendre.c,ntsup.c,invert.c}: New files. 33523 * mpz/Makefile.in: Compile them. 33524 33525 * mpn/Makefile.in (INCLUDES): Don't search in `generic'. 33526 33527Thu Feb 1 02:15:11 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 33528 33529 Change from Ken Weber: 33530 * mpz/divexact.c: Make it work when quot is identical to either input. 33531 33532 * mpf/ui_sub.c: New file. 33533 * mpf/Makefile.in: Compile it. 33534 33535 * gmp-impl.h (MPZ_TMP_INIT): alloca -> TMP_ALLOC. 33536 * mpz/{c,f}div_{q,qr,r}.c: Use TMP_DECL/TMP_MARK/TMP_FREE since 33537 these use MPZ_TMP_INIT. 33538 * mpz/mod.c: Likewise. 33539 * mpq/{add,sub}.c: Likewise. 33540 * mpq/canonicalize: Likewise. 33541 33542 * mpq/{add,sub,mul,div}.c: Use mpz_divexact. MP_INT -> mpz_t. 33543 * mpq/canonicalize.c: Likewise. 33544 33545Wed Jan 31 01:45:00 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 33546 33547 * mpn/generic/gcd.c: Misc changes from Ken. 33548 33549 * mpz/tests/gcd2.c: New file. 33550 * mpz/tests/Makefile.in: Handle gcd2.c. 33551 33552 * mpn/generic/gcd.c (mpn_gcd): When GCD == ORIG_V, return vsize, 33553 not orig_vsize. Fix parameter declaration. 33554 33555 * mpz/mod_ui.c: Delete file. 33556 * mpz/Makefile.in: Don't try to compile mod_ui. 33557 33558 * mpz/cdiv_*_ui.c): Make them work right. 33559 * gmp.h: Declare cdiv*. 33560 33561Tue Jan 30 02:22:56 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 33562 33563 * mpz/{cdiv_q.c,cdiv_q_ui.c,cdiv_qr.c,cdiv_qr_ui.c,cdiv_r.c, 33564 cdiv_r_ui.c,cdiv_ui.c}: New files. 33565 * mpz/Makefile.in: Compile them. 33566 33567 * All files: Make file permissions right. 33568 33569 Changes from Ken Weber: 33570 * mpn/generic/accelgcd.c: Delete. 33571 * mpn/generic/bingcd.c: Delete. 33572 * mpn/generic/numbits.c: Delete. 33573 * mpn/generic/gcd.c: New file. 33574 * mpn/configure.in (functions): Update accordingly. 33575 * mpz/divexact.c: New file. 33576 * mpz/Makefile.in: Compile divexact.c. 33577 * mpz/gcd.c: Rewrite to accommodate for gcd changes in mpn. 33578 * gmp.h: declare new functions, delete obsolete declarations. 33579 * mpz/tests/dive.c: New file. 33580 * mpz/tests/Makefile.in: Handle dive.c. 33581 33582Mon Jan 29 03:53:24 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 33583 33584 * mpz/random.c: Handle negative SIZE parameter. 33585 33586 * mpz/tests/tdiv(_ui).c: New name for tst-dm(_ui).c. 33587 * mpz/tests/tst-mdm(_ui).c: Delete. 33588 * mpz/tests/fdiv(_ui).c: New test based in tst-mdm(_ui). 33589 * mpz/tests/*.c: Get rid of tst- prefix for DOS 8+3 naming. 33590 * mpz/tests/Makefile.in: Corresponding changes. 33591 * mpz/tests/configure.in: Update srctrigger. 33592 33593 * mpn/generic/divmod.c: Update from divrem. 33594 * mpn/generic/divrem.c: Misc cleanups. 33595 33596Sun Jan 28 03:25:08 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 33597 33598 * All files: Use new TMP_ALLOC interface. 33599 33600 * mpz/powm_ui.c: Make Jan 25 changes to powm.c also here. 33601 33602 * mpz/tests/powm_ui.c: New file. 33603 * mpz/tests/Makefile.in: Add rules for tst-powm and tst-powm_ui. 33604 33605 * Makefile.in: Update dependency list. 33606 * mpf/Makefile.in: Likewise. 33607 * mpz/Makefile.in: Likewise. 33608 * mpq/Makefile.in: Likewise. 33609 * Makefile.in: Set RANLIB simply to ranlib, and allow configure 33610 to override it. 33611 33612 * mpz/Makefile.in (conf): Delete spurious target. 33613 (mp_bases.c): Delete. 33614 (cre-conv-tab rules): Delete. 33615 33616 * Makefile.in (cre-conv-tab): Greatly simplify. 33617 33618Sat Jan 27 13:38:15 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 33619 33620 * stack-alloc.c: New file. 33621 * stack-alloc.h: New file. 33622 33623 * gmp.h (__gmp_inline): Define using __inline__. 33624 33625Thu Jan 25 00:28:37 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 33626 33627 * mpn/generic/scan0.c: New file. 33628 * mpn/generic/scan1.c: Renamed from next_bit.c. 33629 * mpn/configure.in (functions): Include scan0 and scan1. 33630 33631 * mpn/m68k/*: #include sysdep.h. Use C_GLOBAL_NAME. 33632 33633 * configure: Update from Cygnus version. 33634 * config.guess: Likewise. 33635 * config.sub: Likewise. 33636 * configure: Pass --nfp to recursive configures. 33637 33638 * mpz/tests/tst-*.c: Adjust SIZE and reps. 33639 33640 * mpz/powm.c: Move esize==0 test earlier. 33641 In final reduction of rp,rsize, don't call mpn_divmod unless 33642 reduction is really needed. 33643 33644 * mpz/tests/tst-powm.c: Fix thinko in checking code. 33645 33646 * All files: Get rid of `__' prefix from mpn_* calls and declarations. 33647 * gmp.h: #define __MPN. 33648 * gmp.h: Use __MPN in #defines for mpn calls. 33649 33650 * mpn/generic/mul_n.c: Prepend `i' to internal routines. 33651 * gmp-impl.h: Add #defines using __MPN for those internal routines. 33652 33653 * mpn/generic/sqrt.c: Change call to mpn_mul to mpn_mul_n. 33654 33655Wed Jan 24 13:28:19 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 33656 33657 * mpn/sparc32/udiv_fp.S: New name for udiv_qrnnd.S. 33658 * mpn/sparc32/udiv_nfp.S: New name for v8/udiv_qrnnd.S. 33659 * mpn/sparc32/v8/supersparc: New directory. 33660 * mpn/sparc32/v8/supersparc/udiv.S: New file. 33661 33662Tue Jan 23 01:10:11 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 33663 33664 This major contribution is from Ken Weber: 33665 * mpn/generic/accelgcd.c: New file. 33666 * mpn/generic/bdivmod.c: New file. 33667 * mpn/generic/bingcd.c: New file. 33668 * mpn/generic/gcd_1.c: Rewrite. 33669 * mpn/generic/numbits.c: New file (to go away soon). 33670 * mpz/gcd.c: Rewrite. 33671 * mpz/tests/tst-gcd.c (SIZE): Now 128. 33672 * gmp.h: Declare new functions. 33673 * mpn/configure.in (functions): List new files. 33674 * gmp-impl.h (MPN_SWAP): Delete. 33675 (MPN_LESS_BITS_LIMB, MPN_LESS_BITS, MPN_MORE_BITS): Delete. 33676 (MPN_COMPL_INCR, MPN_COMPL): Delete. 33677 33678Mon Jan 22 02:04:59 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 33679 33680 * gmp.h (mpn_name): New #define. 33681 33682 * mpn/m88k/mc88110/addmul_1.s: New file. 33683 * mpn/m88k/mc88110/add_n.S: New file. 33684 * mpn/m88k/mc88110/sub_n.S: New file. 33685 33686 * mpn/m88k/sub_n.s: Correctly initialize carry. 33687 33688 * mpn/sparc32/{add_n.S,sub_n.S,lshift.S,rshift.S): `beq' => `be'. 33689 33690Sun Jan 21 00:04:35 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 33691 33692 * mpn/sparc64/addmul_1.s: New file. 33693 * mpn/sparc64/submul_1.s: New file. 33694 * mpn/sparc64/rshift.s: New file. 33695 33696Sat Jan 20 00:32:54 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 33697 33698 * mpz/iset.c: Fix typo introduced Dec 25. 33699 33700Wed Jan 17 13:16:44 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 33701 33702 * config/mt-sprc8-gcc: New name for mt-sparc8-gcc. 33703 * config/mt-sparcv8-gcc: Delete. 33704 * configure.in: Corresponding changes. 33705 33706Tue Jan 16 16:31:01 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 33707 33708 * gmp-impl.h: #include alloca.h when necessary. 33709 33710 * longlong.h: Test __alpha instead of __alpha__, since the former 33711 is the standard symbol. 33712 33713Mon Jan 15 18:06:57 1996 Torbjorn Granlund <tege@noisy.matematik.su.se> 33714 33715 * mpn/sparc64/mul_1.s: Swap operands of mulx instructions. 33716 * mpn/sparc64/lshift.s: New file. 33717 33718Fri Dec 29 17:34:03 1995 Torbjorn Granlund <tege@noisy.matematik.su.se> 33719 33720 * mpn/x86/pentium/add_n.S: Get rid of #defines for register names. 33721 * mpn/x86/pentium/sub_n.S: Likewise. 33722 33723Thu Dec 28 03:16:57 1995 Torbjorn Granlund <tege@noisy.matematik.su.se> 33724 33725 * mpn/x86/pentium/mul_1.S: Rework loop to avoid AGI between update 33726 of loop induction variable and load insn at beginning of loop. 33727 * mpn/x86/pentium/addmul_1.S: Likewise. 33728 * mpn/x86/pentium/submul_1.S: Likewise. 33729 33730Mon Dec 25 23:22:55 1995 Torbjorn Granlund <tege@noisy.matematik.su.se> 33731 33732 * All files: Prefix user-visible structure fields with _mp_. 33733 33734Fri Dec 22 20:42:17 1995 Torbjorn Granlund <tege@noisy.matematik.su.se> 33735 33736 * mpn/configure.in (m68k configs): Terminate path variable with 33737 plain "m68k". 33738 33739Fri Dec 22 03:29:33 1995 Torbjorn Granlund <tege@noisy.matematik.su.se> 33740 33741 * mpn/sparc32/add_n.S: Update from sub_n.S to fix bugs, and to 33742 clean things up. 33743 33744 * mpn/configure.in (m68k configs): Update #include path for new 33745 mpn directory organization. 33746 33747Tue Dec 12 02:53:02 1995 Torbjorn Granlund <tege@noisy.matematik.su.se> 33748 33749 * gmp.h: Prefix all structure field with _mp_. 33750 * gmp-impl.h: Define access macros for these fields. 33751 33752Sun Dec 10 00:47:17 1995 Torbjorn Granlund <tege@noisy.matematik.su.se> 33753 33754 * mpn/alpha/addmul_1.s: Prefix labels with `.'. 33755 * mpn/alpha/submul_1.s: Likewise. 33756 * mpn/alpha/[lr]shift.s: Likewise. 33757 * mpn/alpha/udiv_qrnnd.S: Likewise. 33758 * mpn/alpha/ev5/[lr]shift.s: Likewise. 33759 33760 * mpn/alpha/ev5/lshift.s: Fix typos. 33761 33762Fri Dec 1 14:28:20 1995 Torbjorn Granlund <tege@noisy.matematik.su.se> 33763 33764 * mpn/Makefile.in (.SUFFIXES): Define. 33765 33766Wed Nov 29 23:11:57 1995 Torbjorn Granlund <tege@noisy.matematik.su.se> 33767 33768 * mpn/sparc64/{add_n.s, sub_n.s}: New files. 33769 33770Tue Nov 28 06:03:13 1995 Torbjorn Granlund <tege@noisy.matematik.su.se> 33771 33772 * mpn/x86/syntax.h: Handle ELF_SYNTAX. 33773 Rename GAS_SYNTAX => BSD_SYNTAX. 33774 33775 * mpn/configure.in: Handle linuxelf and SysV for x86 variants. 33776 33777Mon Nov 27 01:32:12 1995 Torbjorn Granlund <tege@noisy.matematik.su.se> 33778 33779 * mpn/hppa/hppa1_1/pa7100/submul_1.S: New file. 33780 33781Sun Nov 26 04:30:47 1995 Torbjorn Granlund <tege@noisy.matematik.su.se> 33782 33783 * mpn/hppa/hppa1_1/pa7100/addmul_1.S: New file. 33784 33785 * mpn/sparc32/add_n.S: Rewrite to use 64 bit loads/stores. 33786 * mpn/sparc32/sub_n.S: Likewise. 33787 33788Fri Nov 17 00:18:46 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33789 33790 * mpn/configure.in: Handle m68k on NextStep. 33791 33792Thu Nov 16 02:30:26 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33793 33794 * mpn: Reorganize machine-specific directories. 33795 * mpn/configure.in: Corresponding changes. 33796 (sh, sh2): Handle these. 33797 (m68k targets): Create asm-syntax.h. 33798 33799Thu Nov 9 02:20:50 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33800 33801 * mpn/generic/mul_n.c (____mpn_sqr_n): Delete code that calls abort. 33802 (____mpn_mul_n): Likewise. 33803 33804Tue Nov 7 03:25:12 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33805 33806 * mpf/get_str.c: In exponentiation code (two places), don't swap 33807 input and output areas when calling mpn_mul_1. 33808 * mpf/set_str.c: Likewise. 33809 33810Fri Nov 3 02:35:58 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33811 33812 * mpf/Makefile.in: Make sure all objects are listed in dependency list; 33813 delete spurious entries. 33814 33815 * mpf/mul.c: Handle U or V being 0. Allow prec+1 for result precision. 33816 33817 * mpf/set_prec.c: New computation of limb precision. 33818 * mpf/set_dfl_prec.c: Likewise. 33819 33820 * mpf/random2.c: Fix typo computing exp. 33821 * mpf/get_str.c: In (uexp > usize) case, set n_limbs as a function of 33822 the user-requested number of digits, n_digits. 33823 33824Thu Nov 2 16:25:07 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33825 33826 * mpn/generic/divrem.c (case 2): Don't move np vector back, it is 33827 never read. 33828 (default case): Put most significant limb from np in new variable n2; 33829 decrease size argument for MPN_COPY_DECR; use n2 instead of np[dsize]. 33830 33831Wed Nov 1 02:59:53 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33832 33833 * mpn/sparc/[lr]shift.S: New files. 33834 33835Tue Oct 31 00:08:12 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33836 33837 * mpz/gcd_ui.c: Set w->size unconditionally when v is zero. 33838 33839 * gmp-impl.h (assert): Delete definition. 33840 33841 * mpf/sub.c: Delete all assert calls. Delete variable `cy'. 33842 33843 * mpf/neg.c: Use prec+1 as precision. Optimize for when arguments 33844 are the same. 33845 * mpf/abs.c: Likewise. 33846 * mpf/{set,neg,abs}.c: Make structure and variable names similar. 33847 33848Mon Oct 30 12:45:26 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33849 33850 * mpf/random2.c (random): Test __SVR4 in addition to __svr4__. 33851 * mpn/generic/random2.c (random): Likewise. 33852 33853Sun Oct 29 01:54:28 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33854 33855 * mpf/div.c: Special handle U or V being 0. 33856 33857 * mpf/random2.c: New file. 33858 33859 * longlong.h (i860 rshift_rhlc): Define. 33860 (i960 udiv_qrnnd): Define. 33861 (i960 count_leading_zeros): Define. 33862 (i960 add_ssaaaa): Define. 33863 (i960 sub_ddmmss): Define. 33864 (i960 rshift_rhlc): Define. 33865 33866Sat Oct 28 19:09:15 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33867 33868 * mpn/pentium/rshift.S: Fix and generalize condition for when to use 33869 special code for shift by 1. 33870 * mpn/pentium/lshift.S: Likewise. 33871 33872Thu Oct 26 00:02:56 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33873 33874 * gmp.h: #undef __need_size_t. 33875 * mp.h: Update from gmp.h. 33876 33877Wed Oct 25 00:17:27 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33878 33879 * mpf/Makefile.in: Compile set_prec.c. 33880 * mpf/realloc.c: Delete this file. 33881 * mpf/Makefile.in: Delete mentions of realloc.c. 33882 33883 * gmp.h (__mpf_struct): Get rid of `alloc' field. 33884 * mpf/clear.c: Likewise. 33885 * mpf/init*.c: Likewise. 33886 * mpf/set_prec.c: Likewise. 33887 * mpf/iset*.c: Likewise. 33888 33889 * mpf/iset_str.c: New file. 33890 33891 * mpn/configure.in: Handle pyramid. 33892 33893 * mpf/set.c: Use prec+1 as precision. 33894 33895 * mpf/set_prec.c: New file. 33896 33897Tue Oct 24 00:56:41 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33898 33899 * mpn/generic/divrem.c: New file. Will replace mpn/generic/divmod.c 33900 when rest of source is converted. 33901 * mpn/configure.in (functions): Add `divrem' 33902 * mpn/generic/set_str.c: Never call __mpn_mul_1 with zero size. 33903 33904 * mpf/get_str.c: Completely rewritten. 33905 * mpf/add.c: Fix several problems. 33906 * mpf/sub.c: Compare operands from most significant end until 33907 first difference, exclude skipped limbs from computation. 33908 Accordingly simplify normalization code. 33909 * mpf/set_str.c: Fix several problems. 33910 * mpf/dump.c: New file. 33911 * mpf/Makefile.in: Compile dump.c. 33912 * mpf/init2.c: Set prec field correctly. 33913 33914Sun Oct 22 03:02:09 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33915 33916 * cre-conv-tab.c: #include math.h; don't declare log and floor. 33917 33918Sat Oct 21 23:04:10 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33919 33920 * mpf/mul_ui.c: Handle U being 0. 33921 33922Wed Oct 18 19:39:27 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33923 33924 * mpn/generic/set_str.c: Correctly handle input like "000000000000". 33925 Misc cleanups. 33926 33927Tue Oct 17 15:14:13 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33928 33929 * longlong.h: Define COUNT_LEADING_ZEROS_0 for machines where 33930 appropriate. 33931 33932Mon Oct 16 19:14:43 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33933 33934 * mpf/add.c: Rewrite. 33935 * mpf/set_str.c: New file. Needs more work. 33936 33937Sat Oct 14 00:14:04 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33938 33939 * mpf/div_2exp.c: Vastly simplify. 33940 * mpf/mul_2exp.c: Likewise. 33941 33942 * mpf/sub.c: Rewrite. 33943 33944 * gmp-impl.h (udiv_qrnnd_preinv2gen): Terminate comment. 33945 33946 * mpf/dump.c: Free allocated memory. 33947 33948 * gmp-impl.h (assert): Define. 33949 33950Wed Oct 11 13:31:00 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33951 33952 * mpn/pentium/rshift.S: Install new code to optimize shift-by-1. 33953 33954Tue Oct 10 00:37:21 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33955 33956 * mpn/pentium/lshift.S: Install new code to optimize shift-by-1. 33957 33958 * mpn/powerpc32/{lshift.s,rshift.s}: New files. 33959 33960 * configure.in: Fix typo. 33961 33962Sat Oct 7 08:17:09 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33963 33964 * longlong.h (smul_ppmm): Correct type of __m0 and __m1. 33965 33966Wed Oct 4 16:31:28 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33967 33968 * mpn/configure.in: Handle alphaev5. 33969 * mpn/ev4: New name for alpha subdir. 33970 * mpn/ev5: New subdir. 33971 * mpn/ev5/lshift.s: New file. 33972 33973Tue Oct 3 15:06:45 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33974 33975 * mpn/alpha/mul_1.s: Avoid static increments of pointers; use 33976 corresponding offsets in ldq and stq instructions instead. 33977 (Loop): Swap cmpult and stq to save one cycle on EV5. 33978 33979 * mpn/tests/{add_n.s,sub_n.s,lshift.s,rshift.s,mul_1.s,addmul_1.s, 33980 submul_1.s}: Don't check results if NOCHECK is defined. 33981 33982Mon Oct 2 11:40:18 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33983 33984 * longlong.h (mips umul_ppmm [32 and 64 bit versions]): 33985 Make new variants, based on GCC version number, that use `l' and `h' 33986 constraints instead of explicit mflo and mfhi instructions 33987 33988Sun Oct 1 00:17:47 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33989 33990 * mpn/mc88100/add_n.s: Decrease unrolling factor from 16 to 8. 33991 * mpn/mc88100/sub_n.s: Likewise. 33992 33993 * config/mt-m88110: New file. 33994 * configure.in: Use it. 33995 33996 * mpn/mc88110/mul_1.s: Fix thinko. 33997 33998Sat Sep 30 21:28:19 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 33999 34000 * mpz/set_d.c: Declare `size' at function start. 34001 34002 * experimental: New directory for mpx and mpz2. 34003 34004 * mpz/tdiv_q.c: Clarify comments. 34005 * mpz/{mod.c,mod_ui.c}: New file, for math mod function. 34006 34007 * mpn/sh2/{mul_1.s,addmul_1.s,submul_1.s}: New files. 34008 34009 * mpn/sh/{add_n.s,sub_n.s}: New files. 34010 34011 * mpn/pyr/{add_n.s,sub_n.s,mul_1.s,addmul_1.s}: New files. 34012 34013 * mpn/i960/{add_n.s,sub_n.s}: New files. 34014 34015 * mpn/alpha/addmul_1.s (Loop): Move decrement of r18 to before umulh, 34016 to save cycles on EV5. 34017 * mpn/alpha/submul_1.s: Ditto. 34018 * mpn/alpha/mul_1.s: Ditto. 34019 34020Thu Sep 28 02:48:59 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 34021 34022 * gmp.h (mp_limb, mp_limb_signed): Define as `long long' if 34023 _LONG_LONG_LIMB is defined. 34024 34025 * longlong.h (m88110): Test __m88110__, not __mc88110__ 34026 34027 * mpn/mc88110/mul_1.s: Rewrite. 34028 34029Tue Sep 26 23:29:05 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 34030 34031 * config.sub: Update from current Cygnus version. 34032 34033 * mpn/configure.in: Recognize canonical m88*, not mc88*. 34034 34035Fri Sep 22 14:58:05 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 34036 34037 * mpz/set_d.c: New file. 34038 * mpz/Makefile.in: Build new files. 34039 34040 * mpq/get_d.c: Replace usage of scalbn with ldexp. 34041 34042 * mpn/{vax,i386}/gmp-mparam.h: New files. 34043 * gmp-impl.h (ieee_double_extract): Define here. 34044 * mpf/set_d.c (ieee_double_extract): Not here. 34045 34046Thu Sep 21 00:56:36 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 34047 34048 * longlong.h (C umul_ppmm): Use UWtype, not USItype for temps. 34049 (udiv_qrnnd): For cases implemented with call to __udiv_qrnnd, 34050 protect with new symbol LONGLONG_STANDALONE. 34051 (68000 umul_ppmm): Use %# prefix for immediate constants. 34052 34053Wed Sep 20 15:36:23 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 34054 34055 * mpn/generic/divmod_1.c: Handle 34056 divisor_limb == 1 << (BITS_PER_MP_LIMB - 1) 34057 specifically also when normalization_steps != 0. 34058 34059Mon Sep 18 15:42:30 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 34060 34061 * mpq/get_d.c: New file. 34062 34063Sun Sep 17 02:04:36 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 34064 34065 * longlong.h (pyr): Botch up for now. 34066 34067Sat Sep 16 00:11:50 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 34068 34069 * mpn/clipper/mul_1.s: New file. 34070 * mpn/clipper/add_n.s: New file. 34071 * mpn/clipper/sub_n.s: New file. 34072 * mpn/configure.in: Handle clipper*-*-*. 34073 34074 * mpn/configure.in: Recognize rs6000-*-*. 34075 34076Fri Sep 15 00:41:34 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 34077 34078 * mpn/alpha/add_n.s: New file. 34079 * mpn/alpha/sub_n.s: New file. 34080 34081 * mpn/mips3: New name for mpn/r4000. 34082 * mpn/mips2: New name for mpn/r3000. 34083 * mpn/configure.in: Corresponding changes. 34084 34085 * mpn/generic/perfsqr.c (primes): Delete. 34086 (residue_map): Delete. 34087 34088Thu Sep 14 00:07:58 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 34089 34090 * mpn/r3000/sub_n.s: Fix typo. 34091 34092 * dm_trunc.c: Delete spurious file. 34093 34094 * mpz/out_binary.c: Fix typo. 34095 34096 * mpn/configure.in (per-target): Make mips*-*-irix6* imply r4000. 34097 34098 * gmp-impl.h: For sparc and sgi, include alloca.h. 34099 34100 * mpn/z8000/mul_1.s: Replace `test r' with `and r,r'. Replace 34101 `ldk r,#0' with `xor r,r'. 34102 34103Wed Sep 6 00:58:38 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 34104 34105 * mpz/inp_binary.c: New file. 34106 * mpz/out_binary.c: New file. 34107 * mpz/Makefile.in: Build new files. 34108 34109Tue Sep 5 22:53:51 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 34110 34111 * gmp.h (__mpz_struct): Change `long int' => `mp_size_t' for alloc 34112 and size fields. 34113 34114Sat Sep 2 17:47:59 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 34115 34116 * mpn/r4000/{add_n.s,sub_n.s}: Optimize away some pointer arithmetic. 34117 * mpn/r3000/{add_n.s,sub_n.s,lshift.s,rshift.s}: New files, 34118 derived from r4000 code. 34119 34120Fri Sep 1 05:35:52 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 34121 34122 * mpn/r3000/mul_1.s: Fix typo. 34123 34124 * mpn/powerpc32: Fix some old vs new mnemonic issues. 34125 34126 * mpn/powerpc32/{add_n.s,sub_n.s}: New files. 34127 * mpn/r4000/{add_n.s,sub_n.s,lshift.s,rshift.s}: New files. 34128 34129Wed Aug 30 10:43:47 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 34130 34131 * mpn/r3000/mul_1.s ($LC1): Use addiu for immediate add. 34132 * mpn/r4000/{mul_1.s,addmul_1.s,submul_1.s}: New files. 34133 34134 * config.guess: Update to latest FSF revision. 34135 34136Mon Aug 28 02:18:13 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 34137 34138 * mpz/out_str.c: Cast str to char * in fputs call. 34139 34140 * gmp-impl.h: Define UQItype, SItype, and USItype also 34141 when not __GNUC__. 34142 34143Fri Aug 25 01:45:04 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 34144 34145 * mpn/i386/syntax.h: Renamed from asm-syntax.h. 34146 * mpn/mc68020/syntax.h: Renamed from asm-syntax.h. 34147 * mpn/configure.in: Corresponding changes. 34148 34149Sun Aug 13 19:20:04 1995 Torbjorn Granlund <tege@bozo.matematik.su.se> 34150 34151 * mpn/generic/random2.c: Test __hpux, not hpux. 34152 34153Sat Apr 15 20:50:33 1995 Torbjorn Granlund (tege@tiny.cygnus.com) 34154 34155 * mpn/sparc/add_n.S: Make it work for PIC. 34156 * mpn/sparc/sub_n.s: Likewise. 34157 * mpn/sparc8/addmul_1.S: Likewise. 34158 * mpn/sparc8/mul_1.S: Likewise. 34159 * mpn/i386/add_n.S: Likewise. 34160 * mpn/i386/sub_n.S: Likewise. 34161 34162Thu Apr 13 23:15:03 1995 Torbjorn Granlund (tege@tiny.cygnus.com) 34163 34164 * mpn/configure.in: Don't search power subdir for generic ppc configs. 34165 Add some ppc cpu-specific configs. Misc clean up. 34166 34167Mon Apr 10 00:16:35 1995 Torbjorn Granlund (tege@tiny.cygnus.com) 34168 34169 * mpz/ui_pow_ui.c: Delete spurious code to handle negative results. 34170 34171Sun Apr 9 12:38:11 1995 Torbjorn Granlund (tege@tiny.cygnus.com) 34172 34173 * longlong.h (SPARC v8 udiv_qrnnd): Generate remainder in C, 34174 not in asm. 34175 34176 * mpn/generic/sqrt.c (SQRT): Test for __SOFT_FLOAT. 34177 34178Tue Mar 28 00:19:52 1995 Torbjorn Granlund (tege@tiny.cygnus.com) 34179 34180 * mpn/generic/hamdist.c (popc_limb): Make Mar 16 change here too. 34181 34182Fri Mar 17 23:29:22 1995 Torbjorn Granlund (tege@tiny.cygnus.com) 34183 34184 * longlong.h (SH umul_ppmm): Define. 34185 34186Thu Mar 16 16:40:44 1995 Torbjorn Granlund (tege@tiny.cygnus.com) 34187 34188 * mpn/generic/popcount.c (popc_limb): Rearrange 32 bit case 34189 to help CSE. 34190 34191Fri Mar 10 20:03:49 1995 Torbjorn Granlund (tege@tiny.cygnus.com) 34192 34193 * mpn/powerpc32/mul_1.s: Clear cy before entering loop. 34194 Rearrange loop to save a cycle. 34195 * mpn/powerpc32/addmul_1.s: New file. 34196 * mpn/powerpc32/submul_1.s: New file. 34197 34198Fri Feb 17 22:44:45 1995 Torbjorn Granlund (tege@tiny.cygnus.com) 34199 34200 * mpn/configure.in: Set target_makefile_frag for freebsd 34201 in new case stmt. 34202 * mpn/config/t-freebsd: New file. 34203 * mpn/Makefile.in: Add #### for frag insertion. 34204 (XCFLAGS): Clear by default. 34205 (.c.o, .S.o rules): Pass XCFLAGS. 34206 34207Tue Feb 7 16:27:50 1995 Torbjorn Granlund (tege@tiny.cygnus.com) 34208 34209 * longlong.h (68000 umul_ppmm): Merge improvements from henderson. 34210 34211Tue Jan 24 04:23:20 1995 Torbjorn Granlund (tege@tiny.cygnus.com) 34212 34213 * longlong.h (default umul_ppmm): Store input parameters in temporaries 34214 to avoid reading them twice. 34215 (default smul_ppmm): New definition. 34216 34217Thu Dec 29 04:20:07 1994 Jim Meyering (meyering@comco.com) 34218 34219 * generic/perfsqr.c (__mpn_perfect_square_p): Remove declaration 34220 of unused variable. 34221 * generic/pre_mod_1.c (__mpn_preinv_mod_1): Likewise. 34222 * mpz/powm.c (pow): Likewise. 34223 34224 * mpz/and.c (mpz_and): Use {} instead of `;' for empty else clause 34225 to placate `gcc -Wall'. 34226 * mpz/ior.c (mpz_ior): Likewise. 34227 34228Wed Dec 28 13:31:40 1994 Torbjorn Granlund (tege@tiny.cygnus.com) 34229 34230 * mpn/m*68*/*.S: #include asm-syntax.h, not asm.h. 34231 34232Mon Dec 26 17:15:36 1994 Torbjorn Granlund (tege@tiny.cygnus.com) 34233 34234 * longlong.h: Test for more symbols, in __mc68000__ case. 34235 34236 * mpn/mpn/config.sub: Recognize m68060. 34237 * mpn/configure.in: Change mc* to m* for 68k targets. 34238 * mpn/Makefile.in (.S.o): Delete spurious creation of temp .c file. 34239 34240Mon Dec 19 01:56:30 1994 Torbjorn Granlund (tege@tiny.cygnus.com) 34241 34242 * config.sub: Recognize pentium as a valid CPU. 34243 * mpn/configure.in: Handle pentium specifically, to use new assembly 34244 code. 34245 34246Mon Dec 19 00:13:01 1994 Jim Meyering (meyering@comco.com) 34247 34248 * gmp.h: Define _GMP_H_HAVE_FILE if FILE, __STDIO_H__, or H_STDIO 34249 is defined. 34250 * gmp.h: test _GMP_H_HAVE_FILE instead of FILE everywhere else. 34251 34252Mon Dec 19 00:04:54 1994 Kent Boortz (boortz@sics.se) 34253 34254 * Makefile.in (recursive makes): Pass CFLAGS. 34255 34256Sun Dec 18 22:34:49 1994 Torbjorn Granlund (tege@tiny.cygnus.com) 34257 34258 * mpn/pentium: New directory. 34259 34260 * mpz/pprime.c: Make sure to mpz_clear all temporaries. 34261 34262 * longlong.h: Don't use udiv instruction when SUPERSPARC is defined. 34263 * configure.in: Handle supersparc*-. 34264 * config/mt-supspc-gcc: New file. 34265 * config/mt-sparc8-gcc: New name for mt-sparcv8-gcc. 34266 34267Mon Dec 12 22:22:10 1994 Torbjorn Granlund (tege@tiny.cygnus.com) 34268 34269 * mpn/i386/*.S: #include "asm-syntax.h", not "asm.h". 34270 #include sysdep.h before asm-syntax.h. 34271 34272 * mpn/mc68020/asm-syntax.h: #undef ALIGN before defining it. 34273 * mpn/i386/asm-syntax.h: Likewise. 34274 34275 * mpn/mc68020/asm-syntax.h: New name for asm.h. 34276 * mpn/i386/asm-syntax.h: New name for asm.h. 34277 34278Tue Dec 6 21:55:25 1994 Torbjorn Granlund (tege@tiny.cygnus.com) 34279 34280 * mpz/array_init.c: Fix typo in declaration. 34281 34282Fri Nov 18 19:50:52 1994 Torbjorn Granlund (tege@tiny.cygnus.com) 34283 34284 * mpn/Makefile.in (.S.o): Pass CFLAGS and INCLUDES. 34285 34286Mon Nov 14 00:34:12 1994 Torbjorn Granlund (tege@tiny.cygnus.com) 34287 34288 * mpn/generic/random2.c (random): Test for __svr4__. 34289 34290Wed Oct 12 23:28:16 1994 Torbjorn Granlund (tege@tiny.cygnus.com) 34291 34292 * cre-conv-tab.c (main): Avoid upper-case X in printf format string. 34293 34294Tue Aug 23 17:16:35 1994 Torbjorn Granlund (tege@tiny.cygnus.com) 34295 34296 * mpz/perfsqr.c: Use mpn_perfect_square_p. 34297 * mpn/generic/perfsqr.c: New file. 34298 34299Wed Jul 6 13:46:51 1994 Torbjorn Granlund (tege@tiny.cygnus.com) 34300 34301 * mpz/array_init.c: New file. 34302 * mpz/Makefile.in: Compile array_init. 34303 * gmp.h: Declare mpz_array_init. 34304 34305Mon Jul 4 01:10:03 1994 Torbjorn Granlund (tege@tiny.cygnus.com) 34306 34307 * mpz/add.c: Fix bogus comment. 34308 * mpz/sub.c: Likewise. 34309 34310Sat Jul 2 02:14:56 1994 Torbjorn Granlund (tege@adder.cygnus.com) 34311 34312 * mpn/generic/pre_mod_1.c: New file. 34313 * mpz/perfsqr.c: Use __mpn_preinv_mod_1 when faster. 34314 34315Fri Jul 01 22:10:19 1994 Richard Earnshaw (rwe11@cl.cam.ac.uk) 34316 34317 * longlong.h (arm umul_ppmm): Fix typos in last change. Mark 34318 hard-coded registers with "%|" 34319 34320Thu Jun 30 03:59:33 1994 Torbjorn Granlund (tege@tiny.cygnus.com) 34321 34322 * mpz/perfsqr.c: Define PP, etc, for machines with 64 bit limbs. 34323 Use __mpn_mod_1. 34324 * mpz/perfsqr.c: Don't clobber REM in quadratic residue check loop. 34325 34326Wed Jun 29 18:45:41 1994 Torbjorn Granlund (tege@adder.cygnus.com) 34327 34328 * mpn/generic/sqrt.c (SQRT): New asm for IBM POWER2. 34329 34330 * mpz/gcd_ui.c: Return 0 if result does not fit an unsigned long. 34331 34332 * gmp.h: Use "defined (__STDC__)" consistently. 34333 34334Tue Jun 28 18:44:58 1994 Torbjorn Granlund (tege@adder.cygnus.com) 34335 34336 * gmp.h (mpz_get_si): Don't use "signed" keyword for return type. 34337 34338 * mpz/tests/Makefile.in: Use CFLAGS for linking. 34339 34340 * Makefile.in (CFLAGS): Use -O2 here. 34341 * mpn/Makefile (CFLAGS): Not here. 34342 34343 * mpq/cmp_ui.c: Fix typo. 34344 * mpq/canonicalize.c: Fix typo. 34345 * mpz/gcd_ui.c: Handle gcd(0,v) and gcd(u,0) correctly. 34346 * mpn/generic/gcd_1.c: Fix braino in last change. 34347 34348Mon Jun 27 16:10:27 1994 Torbjorn Granlund (tege@rtl.cygnus.com) 34349 34350 * mpz/gcd_ui.c: Change return type and return result. 34351 Allow destination param to be NULL. 34352 * gmp.h: Corresponding change. 34353 * mpn/generic/gcd_1.c: Handle zero return from mpn_mod_1. 34354 34355Tue Jun 14 02:17:43 1994 Torbjorn Granlund (tege@tiny.cygnus.com) 34356 34357 * mpn/i386/asm.h (ALIGN): Make it take a parameter. 34358 * mpn/i386/*.S: Use ALIGN to align all loops. 34359 34360 * mpn/i386/*.S: Move colon inside C_GLOBAL_NAME expression. 34361 (Makes old versions of GAS happy.) 34362 34363Sat May 28 01:43:54 1994 Torbjorn Granlund (tege@adder.cygnus.com) 34364 34365 * Many files: Delete unused variables and labels. 34366 * mpn/generic/dump.c: cast printf width argument to int. 34367 34368Wed May 25 00:42:37 1994 Torbjorn Granlund (tege@thepub.cygnus.com) 34369 34370 * mpz/gcd.c (mpz_gcd): Normalize after __mpn_sub calls. 34371 (xmod): Ignore return value of __mpn_divmod. 34372 (xmod): Improve normalization code. 34373 34374Sat May 21 01:30:09 1994 Torbjorn Granlund (tege@adder.cygnus.com) 34375 34376 * mpz/gcdext.c: Cosmetic changes. 34377 34378 * mpz/fdiv_ui.c: New file. 34379 34380Fri May 20 00:24:53 1994 Torbjorn Granlund (tege@adder.cygnus.com) 34381 34382 * mpz/tests/Makefile.in: Use explicit rules for running tests, 34383 not a shell loop. 34384 (clean): Delete stmp-*. 34385 34386 * mpz/Makefile.in: Update. 34387 34388 * mpz/div_ui.c: Don't include longlong.h. 34389 * mpz/dm_ui.c: Likewise. 34390 34391 * mpz/fdiv_q.c, mpz/fdiv_q_ui.c, mpz/fdiv_qr.c, mpz/fdiv_qr_ui.c, 34392 mpz/fdiv_r.c, mpz/fdiv_r_ui.c: New files. Code partly from deleted 34393 mdm.c, mdm_ui.c, etc, partly rewritten. 34394 * mpz/dm_floor_ui.c, mpz/dm_floor.c: Delete. 34395 * mpz/mdm.c, mpz/mdm_ui.c, mpz/mdiv.c, mpz/mdiv_ui.c, mpz/mmod.c, 34396 mpz/mmod_ui.c: Delete. 34397 34398 * mpz/tdiv_q.c, mpz/tdiv_q_ui.c, mpz/tdiv_qr.c, mpz/tdiv_qr_ui.c, 34399 mpz/tdiv_r.c, mpz/tdiv_r_ui.c: 34400 New names for files implementing truncating division. 34401 * mpz/div_ui.c, mpz/dm_ui.c, mpz/mod_ui.c: Simplify. 34402 34403 * mpn/Makefile.in (.S.o): Don't rely on CPP being defined, use CC 34404 instead. 34405 (clean): Delete tmp-*. 34406 34407Thu May 19 01:37:44 1994 Torbjorn Granlund (tege@adder.cygnus.com) 34408 34409 * mpz/cmp.c: Call __mpn_cmp. 34410 34411 * mpz/popcount.c: Fix typo. 34412 34413 * mpz/powm_ui.c: Simplify main loop. Keep principal operand size 34414 smaller than MSIZE when possible. 34415 * mpz/powm.c: Likewise. 34416 34417 * mpn/generic/sqrt.c: Move alloca calls into where the memory is 34418 needed. Simplify. 34419 34420 * gmp.h: (_PROTO): New macro. 34421 Add many function declarations; use _PROTO macro in all declarations. 34422 34423 * mpf/*.c: Prepend mpn calls with __. 34424 34425Wed May 18 20:57:06 1994 Torbjorn Granlund (tege@adder.cygnus.com) 34426 34427 * mpf/*ui*.c: Make ui argument `long' for consistency with mpz 34428 functions. 34429 34430 * mpf/div_ui.c: Simplify. 34431 34432Tue May 17 01:05:14 1994 Torbjorn Granlund (tege@adder.cygnus.com) 34433 34434 * mpz/*.c: Prepend mpn calls with __. 34435 34436 * mpz/mul_ui.c: Use mpn_mul_1. 34437 34438Mon May 16 17:19:41 1994 Torbjorn Granlund (tege@adder.cygnus.com) 34439 34440 * mpn/i386/mul_1.S: Use C_GLOBAL_NAME. 34441 * mpn/i386/mul_1.S, mpn/i386/addmul_1.S, mpn/i386/submul_1.S: 34442 Nuke use of LAB. 34443 34444Sat May 14 14:21:02 1994 Torbjorn Granlund (tege@adder.cygnus.com) 34445 34446 * gmp-impl.h: Don't define abort here. 34447 34448 * mpz/pow_ui.c: Increase temporary allocation. 34449 * mpz/ui_pow_ui.c: Likewise. 34450 34451 * gmp.h (mpz_add_1, mpz_sub_1): Don't call memcpy. 34452 34453 * All Makefile.in: Delete spurious -I arguments. 34454 Update dependencies. 34455 34456 * mpz/popcount.c: New file. 34457 * mpz/hamdist.c: New file. 34458 34459 * All configure: Latest version from Cygnus. 34460 34461 * mpq/Makefile.in: New file. 34462 * mpq/configure.in: New file. 34463 * Makefile.in, configure.in: Enable compilation of mpq. 34464 34465 * mpq/set_z.c: Fix typos. 34466 * mpq/canonicalize.c: Fix typos. 34467 * mpq/cmp_ui.c: Fix typos. 34468 34469 * mpf/add_ui.c: Read U->D into UP always. Delete spurious MPN_COPY. 34470 * mpf/sub_ui.c: Likewise. 34471 34472 * gmp-impl.h: Don't redefine alloca. 34473 34474 * COPYING.LIB: Renamed from COPYING. 34475 34476Wed May 11 01:45:44 1994 Torbjorn Granlund (tege@adder.cygnus.com) 34477 34478 * mpz/powm_ui.c: When shifting E left by C+1, handle out-of-range 34479 shift counts. Fix typo when testing negative_result. 34480 * mpz/powm.c: Likewise. 34481 34482 * mpz/ui_pow_ui.c: New file. 34483 * mpz/Makefile.in: Update. 34484 34485 * mpz/pow_ui.c: Call __mpn_mul_n instead of __mpn_mul when possible. 34486 34487 * mpz/div.c, mpz/div_ui.c, mpz/gcd.c: Prefix external mpn calls. 34488 * mpz/gcd.c: Declare mpn_xmod. 34489 34490 * mpz/powm.c: Major changes to accommodate changed mpn semantics. 34491 * mpz/powm_ui.c: Update from mpz/powm.c. 34492 34493 * mpz/tests/tst-io.c: New file. 34494 * mpz/tests/tst-logic: New file. 34495 * mpz/tests/Makefile.in: Update. 34496 34497 * mpz/inp_str.c: Get base right when checking for first digit. 34498 * mpz/inp_str.c: Allocate more space for DEST when needed. 34499 34500 * mpz/com.c: Use mpn_add_1 and mpn_sub_1. 34501 * mpz/and.c, mpz/ior.c: Likewise. Simplify somewhat. 34502 34503 * mpz/add_ui.c: Use mpn_add_1 and mpn_sub_1. 34504 Rename parameters to be consistent with mpz/sub_ui. 34505 General simplifications. 34506 * mpz/sub_ui.x: Likewise. 34507 34508Tue Aug 10 19:41:16 1993 Torbjorn Granlund (tege@prudens.matematik.su.se) 34509 34510 * mpf: New directory. 34511 * mpf/*.c: Merge basic set of mpf functions. 34512 34513 * Many logs missing... 34514 34515Sun Apr 25 18:40:26 1993 Torbjorn Granlund (tege@pde.nada.kth.se) 34516 34517 * memory.c: Use #if instead of #ifdef for __STDC__ for consistency. 34518 * bsd/xtom.c: Likewise. 34519 34520 * mpz/div.c: Remove free_me and free_me_size and their usage. 34521 Use mpn_divmod for division; corresponding changes in return value 34522 convention. 34523 * mpz/powm.c: `carry_digit' => `carry_limb'. 34524 * bsd/sdiv.c: Clarify comment. 34525 34526Sun Apr 25 00:31:28 1993 Torbjorn Granlund (tege@pde.nada.kth.se) 34527 34528 * longlong.h (__udiv_qrnnd_c): Make all variables `unsigned long int'. 34529 34530Sat Apr 24 16:23:33 1993 Torbjorn Granlund (tege@pde.nada.kth.se) 34531 34532 * longlong.h (__udiv_qrnnd_c): Make all variables `unsigned long int'. 34533 34534 * gmp-impl.h: #define ABS. 34535 * (Many files): Use ABS instead of abs. 34536 34537 * mpn/generic/sqrt.c, mpz/clrbit.c, mpz/get_si.c, mpz/mod_2exp.c, 34538 mpz/pow_ui.c: Cast 1 to mp_limb before shifting. 34539 34540 * mpz/perfsqr.c: Use #if, not plain if for exclusion of code for 34541 non-32-bit machines. 34542 34543Tue Apr 20 13:13:58 1993 Torbjorn Granlund (tege@du.nada.kth.se) 34544 34545 * mpn/generic/sqrt.c: Handle overflow for intermediate quotients by 34546 rounding them down to fit. 34547 34548 * mpz/perfsqr.c (PP): Define in hexadecimal to avoid GCC warnings. 34549 34550 * mpz/inp_str.c (char_ok_for_base): New function. 34551 (mpz_inp_str): Use it. 34552 34553Sun Mar 28 21:54:06 1993 Torbjorn Granlund (tege@cyklop.nada.kth.se) 34554 34555 * mpz/inp_raw.c: Allocate x_index, not xsize limbs. 34556 34557Mon Mar 15 11:44:06 1993 Torbjorn Granlund (tege@pde.nada.kth.se) 34558 34559 * mpz/pprime.c: Declare param `const'. 34560 * gmp.h: Add declarations for mpz_com. 34561 34562Thu Feb 18 14:10:34 1993 Torbjorn Granlund (tege@pde.nada.kth.se) 34563 34564 * mpq/add.c, mpq/sub.c: Call mpz_clear for t. 34565 34566Fri Feb 12 20:27:34 1993 Torbjorn Granlund (tege@cyklop.nada.kth.se) 34567 34568 * mpz/inp_str.c: Recog minus sign as first character. 34569 34570Wed Feb 3 01:36:02 1993 Torbjorn Granlund (tege@cyklop.nada.kth.se) 34571 34572 * mpz/iset.c: Handle 0 size. 34573 34574Tue Feb 2 13:03:33 1993 Torbjorn Granlund (tege@cyklop.nada.kth.se) 34575 34576 * mpz/mod_ui.c: Initialize dividend_size before it's used. 34577 34578Mon Jan 4 09:11:15 1993 Torbjorn Granlund (tege@sics.se) 34579 34580 * bsd/itom.c: Declare param explicitly 'signed'. 34581 * bsd/sdiv.c: Likewise. 34582 34583 * mpq/cmp.c: Remove unused variable tmp_size. 34584 * mpz/powm_ui.c: Fix typo in esize==0 if stmt. 34585 * mpz/powm.c: Likewise. 34586 34587Sun Nov 29 01:16:11 1992 Torbjorn Granlund (tege@sics.se) 34588 34589 * mpn/generic/divmod_1.c (mpn_divmod_1): Handle 34590 divisor_limb == 1 << (BITS_PER_MP_LIMB - 1) 34591 specifically. 34592 34593 * Reorganize sources. New directories mpn, mpn/MACH, mpn/generic, 34594 mpz, mpq, bsd. Use full file name for change logs hereafter. 34595 34596Wed Oct 28 17:40:04 1992 Torbjorn Granlund (tege@jupiter.sics.se) 34597 34598 * longlong.h (__hppa umul_ppmm): Fix typos. 34599 (__hppa sub_ddmmss): Swap input arguments. 34600 34601 * mpz_perfsqr.c (mpz_perfect_square_p): Avoid , before } in 34602 initializator. 34603 34604Sun Oct 25 20:30:06 1992 Torbjorn Granlund (tege@jupiter.sics.se) 34605 34606 * mpz_pprime.c (mpz_probab_prime_p): Handle numbers <= 3 34607 specifically (used to consider all negative numbers prime). 34608 34609 * mpz_powm_ui: `carry_digit' => `carry_limb'. 34610 34611 * sdiv: Handle zero dividend specifically. Replace most code in 34612 this function with a call to mpn_divmod_1. 34613 34614Fri Sep 11 22:15:55 1992 Torbjorn Granlund (tege@tarrega.sics.se) 34615 34616 * mpq_clear: Don't free the MP_RAT! 34617 34618 * mpn_lshift, mpn_rshift, mpn_rshiftci: Remove `long' from 4:th arg. 34619 34620Thu Sep 3 01:47:07 1992 Torbjorn Granlund (tege@jupiter.sics.se) 34621 34622 * All files: Remove leading _ from mpn function names. 34623 34624Wed Sep 2 22:21:16 1992 Torbjorn Granlund (tege@jupiter.sics.se) 34625 34626 Fix from Jan-Hein Buhrman: 34627 * mpz_mdiv.c, mpz_mmod.c, mpz_mdm.c: Make them work as documented. 34628 34629 * mpz_mmod.c, mpz_mdm.c: Move decl of TEMP_DIVISOR to reflect its 34630 life. 34631 34632Sun Aug 30 18:37:15 1992 Torbjorn Granlund (tege@jupiter.sics.se) 34633 34634 * _mpz_get_str: Use mpz_sizeinbase for computing out_len. 34635 * _mpz_get_str: Don't remove leading zeros. Abort if there are some. 34636 34637Wed Mar 4 17:56:56 1992 Torbjorn Granlund (tege@zevs.sics.se) 34638 34639 * gmp.h: Change definition of MP_INT to make the & before params 34640 optional. Use typedef to define it. 34641 * mp.h: Use typedef to define MINT. 34642 34643Tue Feb 18 14:38:39 1992 Torbjorn Granlund (tege@zevs.sics.se) 34644 34645 longlong.h (hppa umul_ppmm): Add missing semicolon. Declare type 34646 of __w1 and __w0. 34647 34648Fri Feb 14 21:33:21 1992 Torbjorn Granlund (tege@zevs.sics.se) 34649 34650 * longlong.h: Make default count_leading_zeros work for machines > 34651 32 bits. Prepend `__' before local variables to avoid conflicts 34652 with users' variables. 34653 34654 * mpn_dm_1.c: Remove udiv_qrnnd_preinv ... 34655 * gmp-impl.h: ... and put it here. 34656 * mpn_mod_1: Use udiv_qrnnd_preinv if it is faster than udiv_qrnnd. 34657 34658Tue Feb 11 17:20:12 1992 Torbjorn Granlund (tege@zevs.sics.se) 34659 34660 * mpn_mul: Enhance base case by handling small multiplicands. 34661 * mpn_dm_1.c: Revert last change. 34662 34663Mon Feb 10 11:55:15 1992 Torbjorn Granlund (tege@zevs.sics.se) 34664 34665 * mpn_dm_1.c: Don't define udiv_qrnnd_preinv unless needed. 34666 34667Fri Feb 7 16:26:16 1992 Torbjorn Granlund (tege@zevs.sics.se) 34668 34669 * mpn_mul: Replace code for base case. 34670 34671Thu Feb 6 15:10:42 1992 Torbjorn Granlund (tege@zevs.sics.se) 34672 34673 * mpn_dm_1.c (_mpn_divmod_1): Add code for avoiding division by 34674 pre-inverting divisor. 34675 34676Sun Feb 2 11:10:25 1992 Torbjorn Granlund (tege@zevs.sics.se) 34677 34678 * longlong.h: Make __LLDEBUG__ work differently. 34679 (_IBMR2): Reinsert old code. 34680 34681Sat Feb 1 16:43:00 1992 Torbjorn Granlund (tege@zevs.sics.se) 34682 34683 * longlong.h (#ifdef _IBMR2): Replace udiv_qrnnd with new code 34684 using floating point operations. Don't define 34685 UDIV_NEEDS_NORMALIZATION any longer. 34686 34687Fri Jan 31 15:09:13 1992 Torbjorn Granlund (tege@zevs.sics.se) 34688 34689 * longlong.h: Define UMUL_TIME and UDIV_TIME for most machines. 34690 * longlong.h (#ifdef __hppa): Define umul_ppmm. 34691 34692Wed Jan 29 16:41:36 1992 Torbjorn Granlund (tege@zevs.sics.se) 34693 34694 * mpn_cmp: Only one length parameter, assume operand lengths are 34695 the same. Don't require normalization. 34696 * mpq_cmp, mpz_add, mpz_sub, mpz_gcd, mpn_mul, mpn_sqrt: Change for 34697 new mpn_cmp definition. 34698 34699Tue Jan 28 11:18:55 1992 Torbjorn Granlund (tege@zevs.sics.se) 34700 34701 * _mpz_get_str: Fix typo in comment. 34702 34703Mon Jan 27 09:44:16 1992 Torbjorn Granlund (tege@zevs.sics.se) 34704 34705 * Makefile.in: Add new files. 34706 34707 * mpn_dm_1.c: New file with function _mpn_divmod_1. 34708 * mpz_dm_ui.c (mpz_divmod_ui): Use _mpn_divmod_1. 34709 * mpz_div_ui: Likewise. 34710 34711 * mpn_mod_1.c: New file with function _mpn_mod_1. 34712 * mpz_mod_ui: Use _mpn_mod_1. 34713 34714Thu Jan 23 18:54:09 1992 Torbjorn Granlund (tege@zevs.sics.se) 34715 34716 Bug found by Paul Zimmermann (zimmermann@inria.inria.fr): 34717 * mpz_div_ui.c (mpz_div_ui), mpz_dm_ui.c (mpz_divmod_ui): 34718 Handle dividend == 0. 34719 34720Wed Jan 22 12:02:26 1992 Torbjorn Granlund (tege@zevs.sics.se) 34721 34722 * mpz_pprime.c: Use "" for #include. 34723 34724Sun Jan 19 13:36:55 1992 Torbjorn Granlund (tege@zevs.sics.se) 34725 34726 * mpn_rshiftci.c (header): Correct comment. 34727 34728Wed Jan 15 18:56:04 1992 Torbjorn Granlund (tege@zevs.sics.se) 34729 34730 * mpz_powm, mpz_powm_ui (if (bsize > msize)): Do alloca (bsize + 1) 34731 to make space for ignored quotient at the end. (The quotient might 34732 always be an extra limb.) 34733 34734Tue Jan 14 21:28:48 1992 Torbjorn Granlund (tege@zevs.sics.se) 34735 34736 * mpz_powm_ui: Fix comment. 34737 * mpz_powm: Likewise. 34738 34739Mon Jan 13 18:16:25 1992 Torbjorn Granlund (tege@zevs.sics.se) 34740 34741 * tests/Makefile.in: Prepend $(TEST_PREFIX) to Makefile target. 34742 34743Sun Jan 12 13:54:28 1992 Torbjorn Granlund (tege@zevs.sics.se) 34744 34745 Fixes from Kazumaro Aoki: 34746 * mpz_out_raw: Take abs of size to handle negative values. 34747 * mpz_inp_raw: Reallocate before reading ptr from X. 34748 * mpz_inp_raw: Store, don't read, size to x->size. 34749 34750Tue Jan 7 17:50:25 1992 Torbjorn Granlund (tege@zevs.sics.se) 34751 34752 * gmp.h, mp.h: Remove parameter names from prototypes. 34753 34754Sun Dec 15 00:09:36 1991 Torbjorn Granlund (tege@zevs.sics.se) 34755 34756 * tests/Makefile.in: Prepend "./" to file names when executing 34757 tests. 34758 34759 * Makefile.in: Fix many problems. 34760 34761Sat Dec 14 01:00:02 1991 Torbjorn Granlund (tege@zevs.sics.se) 34762 34763 * mpn_sqrt.c: New file with _mpn_sqrt. 34764 * mpz_sqrt, mpz_sqrtrem, mpz_perfect_square_p: Use _mpn_sqrt. 34765 * msqrt.c: Delete. Create from mpz_sqrtrem.c in Makefile.in. 34766 * mpz_do_sqrt.c: Delete. 34767 * Makefile.in: Update to reflect these changes. 34768 34769 * Makefile.in, configure, configure.subr: New files 34770 (from bothner@cygnus.com). 34771 * dist-Makefile: Delete. 34772 34773 * mpz_fac_ui: Fix comment. 34774 34775 * mpz_random2: Rewrite a bit to make it possible for the most 34776 significant limb to be == 1. 34777 34778 * mpz_pprime.c (mpz_probab_prime_p): Remove \t\n. 34779 34780Fri Dec 13 23:10:02 1991 Torbjorn Granlund (tege@zevs.sics.se) 34781 34782 * mpz_do_sqrt: Simplify special case for U == 0. 34783 * m*sqrt*.c, mpz_perfsqr.c (mpz_perfect_square_p): 34784 Rename _mpz_impl_sqrt to _mpz_do_sqrt. 34785 34786Fri Dec 13 12:52:28 1991 Torbjorn Granlund (tege@zevs.sics.se) 34787 34788 * gmp-impl.h (MPZ_TMP_INIT): Cast to the right type. 34789 34790Thu Dec 12 22:17:29 1991 Torbjorn Granlund (tege@zevs.sics.se) 34791 34792 * mpn_add, mpn_sub, mpn_mul, mpn_div: Change type of several 34793 variables to mp_size. 34794 34795Wed Dec 11 22:00:34 1991 Torbjorn Granlund (tege@zevs.sics.se) 34796 34797 * mpn_rshift.c: Fix header comments. 34798 34799Mon Dec 9 17:46:10 1991 Torbjorn Granlund (tege@zevs.sics.se) 34800 34801 Released 1.2. 34802 34803 * gmp-impl.h (MPZ_TMP_INIT): Cast alloca return value. 34804 34805 * dist-Makefile: Add missing dependency for cre-mparam. 34806 34807 * mpz_mdiv.c, mpz_mmod.c, mpz_mdm.c, mpz_mdiv_ui.c, 34808 mpz_mmod_ui.c, mpz_mdm_ui.c: Remove obsolete comment. 34809 34810 * dist-Makefile (clean): clean in tests subdir too. 34811 * tests/Makefile: Define default values for ROOT and SUB. 34812 34813 * longlong.h (__a29k__ udiv_qrnnd): Change "q" to "1" for operand 34814 2 constraint. 34815 34816Mon Nov 11 00:06:05 1991 Torbjorn Granlund (tege@zevs.sics.se) 34817 34818 * mpz_sizeinb.c (mpz_sizeinbase): Special code for size == 0. 34819 34820Sat Nov 9 23:47:38 1991 Torbjorn Granlund (tege@zevs.sics.se) 34821 34822 Released 1.1.94. 34823 34824 * dist-Makefile, Makefile, tests/Makefile: Merge tests into 34825 distribution. 34826 34827Fri Nov 8 22:57:19 1991 Torbjorn Granlund (tege@zevs.sics.se) 34828 34829 * gmp.h: Don't use keyword `signed' for non-ANSI compilers. 34830 34831Thu Nov 7 22:06:46 1991 Torbjorn Granlund (tege@zevs.sics.se) 34832 34833 * longlong.h: Cosmetic changes to keep it identical to gcc2 version 34834 of longlong.h. 34835 * longlong.h (__ibm032__): Fix operand order for add_ssaaaa and 34836 sub_ddmmss. 34837 34838Mon Nov 4 00:36:46 1991 Torbjorn Granlund (tege@zevs.sics.se) 34839 34840 * mpn_mul: Fix indentation. 34841 34842 * mpz_do_sqrt: Don't assume 32 bit limbs (had constant 34843 4294967296.0). 34844 * mpz_do_sqrt: Handle overflow in conversion from double returned 34845 by SQRT to mp_limb. 34846 34847 * gmp.h: Add missing function definitions. 34848 34849Sun Nov 3 18:25:25 1991 Torbjorn Granlund (tege@zevs.sics.se) 34850 34851 * mpz_pow_ui: Change type of `i' to int. 34852 34853 * ChangeLog: Add change log entry. 34854 * ChangeLog: Add change log entry. 34855 * ChangeLog: Add change log entry. 34856 * ChangeLog: Add change log entry. 34857 * ChangeLog: Add change log entry. 34858 * ChangeLog: Add change log entry. 34859 * ChangeLog: Add change log entry. 34860 * ChangeLog: Add change log entry. 34861Stack overflow. 34862 34863 * mpz_pow_ui.c: Fix typo in comment. 34864 34865 * dist-Makefile: Create rpow.c from mpz_powm_ui.c. 34866 * mpz_powm_ui.c: Add code for rpow. 34867 * rpow.c: Delete this file. The rpow function is now implemented 34868 in mpz_powm_ui.c. 34869 34870 * mpz_fac_ui.c: New file. 34871 * gmp.h, dist-Makefile: Add stuff for mpz_fac_ui. 34872 34873 Bug found by John Amanatides (amana@sasquatch.cs.yorku.ca): 34874 * mpz_powm_ui, mpz_powm: Call _mpn_mul in the right way, with 34875 the first argument not smaller than the second. 34876 34877Tue Oct 29 13:56:55 1991 Torbjorn Granlund (tege@zevs.sics.se) 34878 34879 * cre-conv-tab.c (main), cre-mparam.c (main): Fix typo in output 34880 header text. 34881 34882Mon Oct 28 00:35:29 1991 Torbjorn Granlund (tege@zevs.sics.se) 34883 34884 * mpz_random2: Handle size == 0. 34885 34886 * gmp-impl.h (struct __mp_bases): Rename chars_per_limb_exactly to 34887 chars_per_bit_exactly, and change its definition. 34888 * cre-conv-tab.c (main): Output field according to its new 34889 definition. 34890 * mpz_out_str, _mpz_get_str, mpz_sizeinb, mout: 34891 Use chars_per_bit_exactly. 34892 34893 * mpz_random2: Change the loop termination condition in order to 34894 get a large most significant limb with higher probability. 34895 34896 * gmp.h: Add declaration of new mpz_random2 and mpz_get_si. 34897 * mpz_get_si.c: New file. 34898 * dist-Makefile: Add mpz_random2 and mpz_get_si. 34899 34900 * mpz_sizeinb.c (mpz_sizeinbase): Special code for base being a 34901 power of 2, giving exact result. 34902 34903 * mpn_mul: Fix MPN_MUL_VERIFY in various ways. 34904 * mpn_mul: New macro KARATSUBA_THRESHOLD. 34905 * mpn_mul (karatsuba's algorithm): Don't write intermediate results 34906 to prodp, use temporary pp instead. (Intermediate results can be 34907 larger than the final result, possibly writing into hyperspace.) 34908 * mpn_mul: Make smarter choice between Karatsuba's algorithm and the 34909 shortcut algorithm. 34910 * mpn_mul: Fix typo, cy instead of xcy. Unify carry handling code. 34911 34912Sun Oct 27 19:57:32 1991 Torbjorn Granlund (tege@zevs.sics.se) 34913 34914 * mpn_mul: In non-classical case, choose Karatsuba's algorithm only 34915 when usize > 1.5 vsize. 34916 34917 * mpn_mul: Break between classical and Karatsuba's algorithm at 34918 KARATSUBA_THRESHOLD, if defined. Default to 8. 34919 34920 * mpn_div: Kludge to fix stray memory read. 34921 34922Sat Oct 26 20:06:14 1991 Torbjorn Granlund (tege@zevs.sics.se) 34923 34924 * mpz_gcdext: Handle a = b = 0. Remove memory leakage by calling 34925 mpz_clear for all temporary variables. 34926 34927 * mpz_gcd: Reduce w_bcnt in _mpn_lshift call to hold that 34928 function's argument constraints. Compute wsize correctly. 34929 34930 * mpz_gcd: Fix typo in comment. 34931 34932 * memory.c (_mp_default_allocate, _mp_default_reallocate): Call 34933 abort if allocation fails, don't just exit. 34934 34935Fri Oct 25 22:17:20 1991 Torbjorn Granlund (tege@zevs.sics.se) 34936 34937 * mpz_random2.c: New file. 34938 34939Thu Oct 17 18:06:42 1991 Torbjorn Granlund (tege@zevs.sics.se) 34940 34941 Bugs found by Pierre-Joseph Gailly (pjg@sunbim.be): 34942 * mpq_cmp: Take sign into account, don't just compare the 34943 magnitudes. 34944 * mpq_cmp: Call _mpn_mul in the right way, with the first argument 34945 not smaller than the second. 34946 34947Wed Oct 16 19:27:32 1991 Torbjorn Granlund (tege@zevs.sics.se) 34948 34949 * mpz_random: Ensure the result is normalized. 34950 34951Tue Oct 15 14:55:13 1991 Torbjorn Granlund (tege@zevs.sics.se) 34952 34953 * mpz_clrbit: Support non-ANSI compilers. 34954 34955Wed Oct 9 18:03:28 1991 Torbjorn Granlund (tege@zevs.sics.se) 34956 34957 * longlong.h (68k add_ssaaaa, sub_ddmmss): Generalize constraints. 34958 34959Tue Oct 8 17:42:59 1991 Torbjorn Granlund (tege@zevs.sics.se) 34960 34961 * mpz_mdm_ui: Add comments. 34962 34963 * mpz_mdiv: Use MPZ_TMP_INIT instead of mpz_init. 34964 * mpz_init_ui: Change spacing and header comment. 34965 34966Thu Oct 3 18:36:13 1991 Torbjorn Granlund (tege@zevs.sics.se) 34967 34968 * dist-Makefile: Prepend `./' before some filenames. 34969 34970Sun Sep 29 14:02:11 1991 Torbjorn Granlund (tege@zevs.sics.se) 34971 34972 Released 1.1 (public). 34973 34974 * mpz_com: New name of mpz_not. 34975 * dist-Makefile: Change mpz_not to mpz_com. 34976 34977Tue Sep 24 12:44:11 1991 Torbjorn Granlund (tege@zevs.sics.se) 34978 34979 * longlong.h: Fix header comment. 34980 34981Mon Sep 9 15:16:24 1991 Torbjorn Granlund (tege@zevs.sics.se) 34982 34983 Released 1.0.92. 34984 34985 * mpn_mul.c (_mpn_mul): Handle leading zero limbs in non-Karatsuba 34986 case. 34987 34988 * longlong.h (m68000 umul_ppmm): Clobber one register less by 34989 slightly rearranging the code. 34990 34991Sun Sep 1 18:53:25 1991 Torbjorn Granlund (tege@zevs.sics.se) 34992 34993 * dist-Makefile (stamp-stddefh): Fix typo. 34994 34995Sat Aug 31 20:41:31 1991 Torbjorn Granlund (tege@zevs.sics.se) 34996 34997 Released 1.0.91. 34998 34999 * mpz_mdiv.c, mpz_mmod.c, mpz_mdm.c, mpz_mdiv_ui.c, 35000 mpz_mmod_ui.c, mpz_mdm_ui.c: New files and functions. 35001 * gmp.h, gmp.texi: Define the new functions. 35002 35003Fri Aug 30 08:32:56 1991 Torbjorn Granlund (tege@zevs.sics.se) 35004 35005 * mpz_gcdext: Compute t argument from the other quantities at the 35006 end, of the function, not in the loop. New feature: Allow t to be 35007 NULL. 35008 35009 * mpz_add.c, mpz_sub.c, mpz_mul.c, mpz_powm.c, mpz_gcd.c: Don't 35010 include "mp.h". Use type name `MP_INT' always. 35011 35012 * dist-Makefile, mpz_cmp.c: Merge mcmp.c from mpz_cmp.c. 35013 35014Wed Aug 28 00:45:11 1991 Torbjorn Granlund (tege@zevs.sics.se) 35015 35016 * dist-Makefile (documentation): Go via tmp.texi to avoid the 35017 creation of gmp.dvi if any errors occur. Make tex read input 35018 from /dev/null. 35019 35020Fri Aug 23 15:58:52 1991 Torbjorn Granlund (tege@zevs.sics.se) 35021 35022 * longlong.h (68020, i386): Don't define machine-dependent 35023 __umulsidi3 (so the default definition is used). 35024 * longlong.h (all machines): Cast all operands, sources and 35025 destinations, to `unsigned long int'. 35026 * longlong.h: Add gmicro support. 35027 35028Thu Aug 22 00:28:29 1991 Torbjorn Granlund (tege@zevs.sics.se) 35029 35030 * longlong.h: Rename BITS_PER_LONG to LONG_TYPE_SIZE. 35031 * longlong.h (__ibm032__): Define count_leading_zeros and umul_ppmm. 35032 * longlong.h: Define UMUL_TIME and UDIV_TIME for some CPUs. 35033 * _mpz_get_str.c: Add code to do division by big_base using only 35034 umul_qrnnd, if that is faster. Use UMUL_TIME and UDIV_TIME to 35035 decide which variant to use. 35036 35037Wed Aug 21 15:45:23 1991 Torbjorn Granlund (tege@zevs.sics.se) 35038 35039 * longlong.h (__sparc__ umul_ppmm): Move two insn from end to the 35040 nops. (Saves two insn.) 35041 35042 * longlong.h (__sparc__ umul_ppmm): Rewrite in order to avoid 35043 branch, and to permit input/output register overlap. 35044 35045 * longlong.h (__29k__): Remove duplicated udiv_qrnnd definition. 35046 * longlong.h (__29k__ umul_ppmm): Split asm instructions into two 35047 asm statements (gives better code if either the upper or lower 35048 part of the product is unused. 35049 35050Tue Aug 20 17:57:59 1991 Torbjorn Granlund (tege@zevs.sics.se) 35051 35052 * _mpz_get_str.c (outside of functions): Remove 35053 num_to_ascii_lower_case and num_to_ascii_upper_case. Use string 35054 constants in the function instead. 35055 35056Mon Aug 19 00:37:42 1991 Torbjorn Granlund (tege@zevs.sics.se) 35057 35058 * cre-conv-tab.c (main): Output table in hex. Output 4 fields, not 35059 3, for components 0 and 1. 35060 35061 * gmp.h: Add declaration of mpq_neg. 35062 35063 Released 1.0beta.13. 35064 35065 * _mpz_set_str.c (mpz_set_str): Cast EOF and SPC to char before 35066 comparing to enum literals SPC and EOF. This makes the code work 35067 for compilers where `char' is unsigned. (Bug found by Brian 35068 Beuning). 35069 35070 Released 1.0beta.12. 35071 35072 * mpz_mod_ui: Remove references to quot. Remove quot_ptr, quot_size 35073 declarations and assignment code. 35074 35075Sun Aug 18 14:44:26 1991 Torbjorn Granlund (tege@zevs.sics.se) 35076 35077 * mpz_mod_ui: Handle dividend < 0. 35078 35079 Released 1.0beta.11. 35080 35081 * mpz_dm_ui, mpz_div_ui, mpz_mod_ui, sdiv: Make them share the same 35082 general structure, variable names, etc. 35083 35084 * sdiv: Un-normalize the remainder in n1 before it is negated. 35085 35086 * longlong.h: Mention UDIV_NEEDS_NORMALIZATION in description of 35087 udiv_qrnnd. 35088 35089 * mpz_dm_ui.c (mpz_divmod_ui), mpz_div_ui.c (mpz_div_ui): Increment 35090 the quotient size if the dividend size is incremented. (Bug found 35091 by Brian Beuning.) 35092 35093 * mpz_mod_ui: Shift back the remainder, if UDIV_NEEDS_NORMALIZATION. 35094 (Bug found by Brian Beuning.) 35095 35096 * mpz_mod_ui: Replace "digit" by "limb". 35097 35098 * mpz_perfsqr.c (mpz_perfect_square_p): Disable second test case 35099 for non-32-bit machines (PP is hardwired for such machines). 35100 * mpz_perfsqr.c (outside of functions): Define PP value with an L. 35101 35102 * mpn_mul.c (_mpn_mul): Add verification code that is activated if 35103 DEBUG is defined. Replace "digit" by "limb". 35104 * mpn_mul.c (_mpn_mul: Karatsuba's algorithm: 4.): Normalize temp 35105 after the addition. 35106 * mpn_mul.c (_mpn_mul: Karatsuba's algorithm: 1.): Compare u0_size 35107 and v0_size, and according to the result, swap arguments in 35108 recursive call. (Don't violate mpn_mul's own argument 35109 constraints.) 35110 35111Fri Aug 16 13:47:12 1991 Torbjorn Granlund (tege@zevs.sics.se) 35112 35113 Released 1.0beta.10. 35114 35115 * longlong.h (IBMR2): Add udiv_qrnnd. 35116 35117 * mpz_perfsqr: Remove unused variables. 35118 35119 * mpz_and (case for different signs): Initialize loop variable i! 35120 35121 * dist-Makefile: Update automatically generated dependencies. 35122 * dist-Makefile (madd.c, msub.c, pow.c, mult.c, gcd.c): Add mp.h, 35123 etc to dependency file lists. 35124 35125 * longlong.h (add_ssaaaa, sub_ddmmss [C default versions]): Make __x 35126 `unsigned long int'. 35127 * longlong.h: Add `int' after `unsigned' and `long' everywhere. 35128 35129Wed Aug 14 18:06:48 1991 Torbjorn Granlund (tege@zevs.sics.se) 35130 35131 * longlong.h: Add ARM, i860 support. 35132 35133 * mpn_lshift, mpn_rshift, mpn_rshiftci: Rename *_word with *_limb. 35134 35135Tue Aug 13 21:57:43 1991 Torbjorn Granlund (tege@zevs.sics.se) 35136 35137 * _mpz_get_str.c, _mpz_set_str.c, mpz_sizeinb.c (mpz_sizeinbase), 35138 mpz_out_str.c, mout.c: Remove declaration of __mp_bases. 35139 * gmp-impl.h: Put it here, and make it `const'. 35140 * cre-conv-tab.c (main): Make struct __mp_bases `const'. 35141 35142Mon Aug 12 17:11:46 1991 Torbjorn Granlund (tege@zevs.sics.se) 35143 35144 * cre-conv-tab.c (main): Use %lu in printf for long ints. 35145 35146 * dist-Makefile: Fix cre-* dependencies. 35147 35148 * cre-conv-tab.c (main): Output field big_base_inverted. 35149 35150 * gmp-impl.h (struct bases): New field big_base_inverted. 35151 * gmp-impl.h (struct bases): Change type of chars_per_limb_exactly 35152 to float (in order to keep the structure smaller). 35153 35154 * mp.h, gmp.h: Change names of macros for avoiding multiple 35155 includes. 35156 35157Fri Aug 9 18:01:36 1991 Torbjorn Granlund (tege@zevs.sics.se) 35158 35159 * _mpz_get_str: Only shift limb array if normalization_steps != 0 35160 (optimization). 35161 35162 * longlong.h (sparc umul_ppmm): Use __asm__, not asm. 35163 * longlong.h (IBMR2 umul_ppmm): Refer to __m0 and __m1, not to m0 35164 and m1 (overlap between output and input operands did not work). 35165 * longlong.h: Add VAX, ROMP and HP-PA support. 35166 * longlong.h: Sort the machine dependent code in alphabetical order 35167 on the CPU name. 35168 * longlong.h: Hack comments. 35169 35170Thu Aug 8 14:13:36 1991 Torbjorn Granlund (tege@zevs.sics.se) 35171 35172 Released 1.0beta.9. 35173 35174 * longlong.h: Define BITS_PER_LONG to 32 if it's not already 35175 defined. 35176 * Define __BITS4 to BITS_PER_LONG / 4. 35177 * Don't assume 32 bit word size in "count_leading_zeros" C macro. 35178 Use __BITS4 and BITS_PER_LONG instead. 35179 35180 * longlong.h: Don't #undef internal macros (reverse change of Aug 3). 35181 35182 * longlong.h (68k): Define add_ssaaaa sub_ddmmss, and umul_ppmm 35183 even for plain mc68000. 35184 35185 * mpq_div: Flip the sign of the numerator *and* denominator of the 35186 result if the intermediate denominator is negative. 35187 35188 * mpz_and.c, mpz_ior.c: Use MPN_COPY for all copying operations. 35189 35190 * mpz_and.c: Compute the result size more conservatively. 35191 * mpz_ior.c: Likewise. 35192 35193 * mpz_realloc: Never allocate zero space even if NEW_SIZE == 0. 35194 35195 * dist-Makefile: Remove madd.c, msub.c, pow.c, mult.c, gcd.c from 35196 BSDMP_SRCS. 35197 35198 * dist-Makefile: Create mult.c from mpz_mul.c. 35199 * mult.c: Delete this file. 35200 35201 * _mpz_set_str: Normalize the result (for bases 2, 4, 8... it was 35202 not done properly if the input string had many leading zeros). 35203 35204Sun Aug 4 16:54:14 1991 Torbjorn Granlund (tege@zevs.sics.se) 35205 35206 * dist-Makefile (gcd.c, pow.c, madd.c, msub.c): Make these targets 35207 work with VPATH and GNU MP. 35208 35209 * mpz_gcd: Don't call mpz_set; inline its functionality. 35210 35211 * mpq_mul, mpq_div: Fix several serious typos. 35212 35213 * mpz_dmincl, mpz_div: Don't normalize the quotient if it's already 35214 zero. 35215 35216 * mpq_neg.c: New file. 35217 35218 * dist-Makefile: Remove obsolete dependencies. 35219 35220 * mpz_sub: Fix typo. 35221 35222 Bugs found by Pierre-Joseph Gailly (pjg@sunbim.be): 35223 * mpq_mul, mpq_div: Initialize tmp[12] variables even when the gcd 35224 is just 1. 35225 * mpz_gcd: Handle gcd(0,v) and gcd(u,0) in special cases. 35226 35227Sat Aug 3 23:45:28 1991 Torbjorn Granlund (tege@zevs.sics.se) 35228 35229 * longlong.h: Clean up comments. 35230 * longlong.h: #undef internal macros. 35231 35232Fri Aug 2 18:29:11 1991 Torbjorn Granlund (tege@zevs.sics.se) 35233 35234 * mpq_set_si, mpq_set_ui: Canonicalize 0/x to 0/1. 35235 * mpq_set_si, mpq_set_ui: Cosmetic formatting changes. 35236 35237 * mpz_dmincl.c: Normalize the remainder before shifting it back. 35238 35239 * mpz_dm_ui.c (mpz_divmod_ui): Handle rem == dividend. 35240 35241 * mpn_div.c: Fix comment. 35242 35243 * mpz_add.c, mpz_sub.c: Use __MP_INT (not MP_INT) for intermediate 35244 type, in order to work for both GNU and Berkeley functions. 35245 35246 * dist-Makefile: Create gcd.c from mpz_gcd.c, pow.c from mpz_powm, 35247 madd.c from mpz_add.c, msub.c from mpz_sub.c. 35248 respectively. 35249 * pow.c, gcd.c, mpz_powmincl.c, madd.c, msub.c: Remove these. 35250 * mpz_powm.c, mpz_gcd.c, mpz_add.c, mpz_sub.c: #ifdef for GNU and 35251 Berkeley function name variants. 35252 * dist-Makefile: Add created files to "clean" target. 35253 35254Tue Jul 16 15:19:46 1991 Torbjorn Granlund (tege@zevs.sics.se) 35255 35256 * mpq_get_den: No need for absolute value of the size, the 35257 denominator is always positive. 35258 35259 * mpz_get_ui: If the operand is zero, return zero. Don't read the 35260 limb array! 35261 35262 * mpz_dmincl.c: Don't ignore the return value from _mpn_rshift, it 35263 is the size of the remainder. 35264 35265Mon Jul 15 11:08:05 1991 Torbjorn Granlund (tege@zevs.sics.se) 35266 35267 * Several files: Remove unused variables and functions. 35268 35269 * gmp-impl.h: Declare _mpz_impl_sqrt. 35270 35271 * mpz_dm_ui (mpz_divmod_ui), sdiv: Shift back the remainder if 35272 UDIV_NEEDS_NORMALIZATION. (Fix from Brian Beuning.) 35273 35274 * mpz_dm_ui.c, sdiv: Replace *digit with *limb. 35275 35276 * mpz_ior: Add missing else statement in -OP1 | -OP2 case. 35277 * mpz_ior: Add missing else statement in OP1 | -OP2 case. 35278 * mpz_ior: Swap also OP1 and OP2 pointers in -OP1 & OP2 case. 35279 * mpz_ior: Duplicate _mpz_realloc code. 35280 35281 * mpz_and: Add missing else statement in -OP1 & -OP2 case. 35282 * mpz_and: Rewrite OP1 & -OP2 case. 35283 * mpz_and: Swap also OP1 and OP2 pointers in -OP1 & OP2 case. 35284 35285 * mpz_gcdext: Loop in d1.size (not b->size). (Fix from Brian 35286 Beuning.) 35287 35288 * mpz_perfsqr: Fix argument order in _mpz_impl_sqrt call. (Fix from 35289 Brian Beuning.) 35290 35291Fri Jul 12 17:10:33 1991 Torbjorn Granlund (tege@zevs.sics.se) 35292 35293 * mpq_set.c, mpq_set_ui.c, mpq_set_si.c, mpq_inv.c, 35294 mpq_get_num.c, mpq_get_den.c, mpq_set_num.c, mpq_set_den.c: 35295 New files. 35296 35297 * mpz_dmincl.c: Remove second re-allocation of rem->d. It 35298 was never executed. 35299 35300 * dist-Makefile: Use `-r' instead of `-x' for test for ranlib (as 35301 some unixes' test doesn't have the -r option). 35302 35303 * *.*: Cast allocated pointers to the appropriate type (makes old C 35304 compilers happier). 35305 35306 * cre-conv-tab.c (main): Divide max_uli by 2 and multiply again 35307 after conversion to double. (Kludge for broken C compilers.) 35308 35309 * dist-Makefile (stamp-stddefh): New target. Test if "stddef.h" 35310 exists in the system and creates a minimal one if it does not 35311 exist. 35312 * cre-stddefh.c: New file. 35313 * dist-Makefile: Make libgmp.a and libmp.a depend on stamp-stddefh. 35314 * dist-Makefile (clean): Add some more. 35315 * gmp.h, mp.h: Unconditionally include "stddef.h". 35316 35317Thu Jul 11 10:08:21 1991 Torbjorn Granlund (tege@zevs.sics.se) 35318 35319 * min: Do ungetc of last read character. 35320 * min.c: include stdio.h. 35321 35322 * dist-Makefile: Go via tmp- files for cre* redirection. 35323 * dist-Makefile: Add tmp* to "clean" target. 35324 35325 * dist-Makefile: Use LOCAL_CC for cre*, to simplify cross 35326 compilation. 35327 35328 * gmp.h, mp.h: Don't define NULL here. 35329 * gmp-impl.h: Define it here. 35330 35331Wed Jul 10 14:13:33 1991 Torbjorn Granlund (tege@zevs.sics.se) 35332 35333 * mpz_mod_2exp: Don't copy too much, overwriting most significant 35334 limb. 35335 35336 * mpz_and, mpz_ior: Don't read op[12]_ptr from op[12] when 35337 reallocating res, if op[12]_ptr got their value from alloca. 35338 35339 * mpz_and, mpz_ior: Clear up comments. 35340 35341 * cre-mparam.c: Output parameters for `short int' and `int'. 35342 35343 * mpz_and, mpz_ior: Negate negative op[12]_size in several places. 35344 35345Tue Jul 9 18:40:30 1991 Torbjorn Granlund (tege@zevs.sics.se) 35346 35347 * gmp.h, mp.h: Test for _SIZE_T defined before typedef'ing size_t. 35348 (Fix for Sun lossage.) 35349 35350 * gmp.h: Add declaration of mpq_clear. 35351 35352 * dist-Makefile: Check if "ranlib" exists, before using it. 35353 * dist-Makefile: Add mpz_sqrtrem.c and mpz_size.c. 35354 * mpz_powm: Fix typo, "pow" instead of "mpz_powm". 35355 35356Fri Jul 5 19:08:09 1991 Torbjorn Granlund (tege@zevs.sics.se) 35357 35358 * move: Remove incorrect comment. 35359 35360 * mpz_free, mpq_free: Rename to *_clear. 35361 * dist-Makefile: Likewise. 35362 * mpq_add, mpq_sub, mpq_mul, mpq_div: Likewise. 35363 35364 * mpz_dmincl.c: Don't call "move", inline its functionality. 35365 35366Thu Jul 4 00:06:39 1991 Torbjorn Granlund (tege@zevs.sics.se) 35367 35368 * Makefile: Include dist-Makefile. Fix dist target to include 35369 dist-Makefile (with the name "Makefile" in the archive). 35370 35371 * dist-Makefile: New file made from Makefile. Add new mpz_... 35372 functions. 35373 35374 * mpz_powincl.c New file for mpz_powm (Berkeley MP pow) 35375 functionality. Avoids code duplication. 35376 * pow.c, mpz_powm.c: Include mpz_powincl.c 35377 35378 * mpz_dmincl.c: New file containing general division code. Avoids 35379 code duplication. 35380 * mpz_dm.c (mpz_divmod), mpz_mod.c (mpz_mod), mdiv.c (mdiv): Include 35381 mpz_dmincl.c. 35382 35383 * _mpz_get_str: Don't call memmove, unless HAS_MEMMOVE is defined. 35384 Instead, write the overlapping memory copying inline. 35385 35386 * mpz_dm_ui.c: New name for mpz_divmod_ui.c (SysV file name limit). 35387 35388 * longlong.h: Don't use #elif. 35389 * mpz_do_sqrt.c: Likewise. 35390 35391 * longlong.h: Use __asm__ instead of asm. 35392 * longlong.h (sparc udiv_qrnnd): Make it to one string over several 35393 lines. 35394 35395 * longlong.h: Preend __ll_ to B, highpart, and lowpart. 35396 35397 * longlong.h: Move array t in count_leading_zeros to the new file 35398 mp_clz_tab.c. Rename the array __clz_tab. 35399 * All files: #ifdef for traditional C compatibility. 35400 35401Wed Jul 3 11:42:14 1991 Torbjorn Granlund (tege@zevs.sics.se) 35402 35403 * mpz_and: Initialize res_ptr always (used to be initialized only 35404 when reallocating). 35405 35406 * longlong.h (umul_ppmm [C variant]): Make __ul...__vh 35407 `unsigned int', and cast the multiplications. This way 35408 compilers more easily can choose cheaper multiplication 35409 instructions. 35410 35411 * mpz_mod_2exp: Handle input argument < modulo argument. 35412 * mpz_many: Make sure mp_size is the type for sizes, not int. 35413 35414 * mpz_init, mpz_init_set*, mpq_init, mpq_add, mpq_sub, mpq_mul, 35415 mpq_div: Change mpz_init* interface. Structure pointer as first 35416 arg to initialization function, no longer *return* struct. 35417 35418Sun Jun 30 19:21:44 1991 Torbjorn Granlund (tege@zevs.sics.se) 35419 35420 * Rename mpz_impl_sqrt.c to mpz_do_sqrt.c to satisfy SysV 14 35421 character file name length limit. 35422 35423 * Most files: Rename MINT to MP_INT. Rename MRAT to MP_RAT. 35424 * mpz_sizeinb.c: New file with function mpz_sizeinbase. 35425 * mp_bases.c: New file, with array __mp_bases. 35426 * _mpz_get_str, _mpz_set_str: Remove struct bases, use extern 35427 __mp_bases instead. 35428 * mout, mpz_out_str: Use array __mp_bases instead of function 35429 _mpz_get_cvtlen. 35430 * mpz_get_cvtlen.c: Remove. 35431 * Makefile: Update. 35432 35433Sat Jun 29 21:57:28 1991 Torbjorn Granlund (tege@zevs.sics.se) 35434 35435 * longlong.h (__sparc8__ umul_ppmm): Insert 3 nop:s for wr delay. 35436 * longlong.h (___IBMR2__): Define umul_ppmm, add_ssaaaa, sub_ddmmss. 35437 * longlong.h (__sparc__): Don't call .umul; expand asm instead. 35438 Don't define __umulsidi3 (i.e. use default definition). 35439 35440Mon Jun 24 17:37:23 1991 Torbjorn Granlund (tege@amon.sics.se) 35441 35442 * _mpz_get_str.c (num_to_ascii_lower_case, num_to_ascii_upper_case): 35443 Swap 't' and 's'. 35444 35445Sat Jun 22 13:54:01 1991 Torbjorn Granlund (tege@zevs.sics.se) 35446 35447 * mpz_gcdext.c: New file. 35448 35449 * mpn_mul: Handle carry and unexpected operand sizes in last 35450 additions/subtractions. (Bug trigged when v1_size == 1.) 35451 35452 * mp*_alloc*: Rename functions to mp*_init* (files to mp*_iset*.c). 35453 * mpq_*: Call mpz_init*. 35454 35455 * mpz_pow_ui, rpow: Use _mpn_mul instead of mult. Restructure. 35456 35457Wed May 29 20:32:33 1991 Torbjorn Granlund (tege@zevs.sics.se) 35458 35459 * mpz_get_cvtlen: multiply by size. 35460 35461Sun May 26 15:01:15 1991 Torbjorn Granlund (tege@bella.nada.kth.se) 35462 35463 Alpha-release 0.95. 35464 35465 Fixes from Doug Lea (dl@g.oswego.edu): 35466 * mpz_mul_ui: Loop to MULT_SIZE (not PROD_SIZE). Adjust PROD_SIZE 35467 correctly. 35468 * mpz_div: Prepend _ to mpz_realloc. 35469 * mpz_set_xs, mpz_set_ds: Fix typos in function name. 35470 35471Sat May 25 22:51:16 1991 Torbjorn Granlund (tege@bella.nada.kth.se) 35472 35473 * mpz_divmod_ui: New function. 35474 35475 * sdiv: Make the sign of the remainder correct. 35476 35477Thu May 23 15:28:24 1991 Torbjorn Granlund (tege@zevs.sics.se) 35478 35479 * Alpha-release 0.94. 35480 35481 * mpz_mul_ui: Include longlong.h. 35482 35483 * mpz_perfsqr.c (mpz_perfect_square_p): Call _mpz_impl_sqrt instead 35484 of msqrt. 35485 35486 * mpz_impl_sqrt: Don't call "move", inline its functionality. 35487 35488 * mdiv: Use MPN_COPY instead of memcpy. 35489 * rpow, mpz_mul, mpz_mod_2exp: Likewise. 35490 * pow.c: Likewise, and fix bug in the size arg. 35491 35492 * xtom: Don't use mpz_alloc, inline needed code instead. Call 35493 _mpz_set_str instead of mpz_set_str. 35494 35495 * Makefile: Make two libraries, libmp.a and libgmp.a. 35496 35497Thu May 22 20:25:29 1991 Torbjorn Granlund (tege@zevs.sics.se) 35498 35499 * Add manual to distribution. 35500 * Fold in many missing routines described in the manual. 35501 * Update Makefile. 35502 35503Wed May 22 13:48:46 1991 Torbjorn Granlund (tege@zevs.sics.se) 35504 35505 * mpz_set_str: Make it handle 0x prefix OK. 35506 35507Sat May 18 18:31:02 1991 Torbjorn Granlund (tege@zevs.sics.se) 35508 35509 * memory.c (_mp_default_reallocate): Swap OLD_SIZE and NEW_SIZE 35510 arguments. 35511 * mpz_realloc (_mpz_realloc): Swap in call to _mp_reallocate_func. 35512 * min: Likewise. 35513 35514Thu May 16 20:43:05 1991 Torbjorn Granlund (tege@zevs.sics.se) 35515 35516 * memory.c: Make the default allocations functions global. 35517 * mp_set_fns (mp_set_memory_functions): Make a NULL pointer mean the 35518 default memory function. 35519 35520Wed May 8 20:02:42 1991 Torbjorn Granlund (tege@zevs.sics.se) 35521 35522 * mpz_div: Handle DEN the same as QUOT correctly by copying DEN->D 35523 even if no normalization is needed. 35524 * mpz_div: Rework reallocation scheme, to avoid excess copying. 35525 35526 * mpz_sub_ui.c, mpz_add_ui.c: New files. 35527 35528 * mpz_cmp.c, mpz_cmp_ui.c: New files. 35529 35530 * mpz_mul_2exp: Handle zero input MINT correctly. 35531 35532 * mpn_rshiftci: Don't handle shift counts > BITS_PER_MP_DIGIT. 35533 35534 * mpz_out_raw.c, mpz_inp_raw.c: New files for raw I/O. 35535 35536Tue May 7 15:44:58 1991 Torbjorn Granlund (tege@zevs.sics.se) 35537 35538 * mpn_rshift: Don't handle shift counts > BITS_PER_MP_DIGIT. 35539 * mpz_div_2exp: Don't call _mpn_rshift with cnt > BITS_PER_MP_DIGIT. 35540 * gcd, mpz_gcd: Likewise. 35541 35542 * gcd, mpz_gcd: Handle common 2 factors correctly. 35543 35544Mon May 6 20:22:59 1991 Torbjorn Granlund (tege@zevs.sics.se) 35545 35546 * gmp-impl.h (MPN_COPY): Inline a loop instead of calling memcpy. 35547 35548 * gmp-impl.h, mpz_get_str, rpow: Swap DST and SRC in TMPCOPY* macros. 35549 35550Sun May 5 15:16:23 1991 Torbjorn Granlund (tege@zevs.sics.se) 35551 35552 * mpz_div: Remove test for QUOT == 0. 35553 35554Sun Apr 28 20:21:04 1991 Torbjorn Granlund (tege@zevs.sics.se) 35555 35556 * pow: Don't make MOD normalization in place, as it's a bad idea to 35557 write on an input parameter. 35558 * pow: Reduce BASE if it's > MOD. 35559 * pow, mult, mpz_mul: Simplify realloc code. 35560 35561Sat Apr 27 21:03:11 1991 Torbjorn Granlund (tege@zevs.sics.se) 35562 35563 * Install multiplication using Karatsuba's algorithm as default. 35564 35565Fri Apr 26 01:03:57 1991 Torbjorn Granlund (tege@zevs.sics.se) 35566 35567 * msqrt: Store in ROOT even for U==0, to make msqrt(0) defined. 35568 35569 * mpz_div_2exp.c, mpz_mul_2exp.c: New files for shifting right and 35570 left, respectively. 35571 * gmp.h: Add definitions for mpz_div_2exp and mpz_mul_2exp. 35572 35573 * mlshift.c, mrshift.c: Remove. 35574 35575Wed Apr 24 21:39:22 1991 Torbjorn Granlund (tege@zevs.sics.se) 35576 35577 * mpn_mul: Check only for m2_size == 0 in function header. 35578 35579Mon Apr 22 01:31:57 1991 Torbjorn Granlund (tege@zevs.sics.se) 35580 35581 * karatsuba.c: New file for Karatsuba's multiplication algorithm. 35582 35583 * mpz_random, mpz_init, mpz_mod_2exp: New files and functions. 35584 35585 * mpn_cmp: Fix header comment. 35586 35587Sun Apr 21 00:10:44 1991 Torbjorn Granlund (tege@zevs.sics.se) 35588 35589 * pow: Switch off initial base reduction. 35590 35591Sat Apr 20 22:06:05 1991 Torbjorn Granlund (tege@echnaton.sics.se) 35592 35593 * mpz_get_str: Don't generate initial zeros for initial word. 35594 Used to write outside of allocated storage. 35595 35596Mon Apr 15 15:48:08 1991 Torbjorn Granlund (tege@zevs.sics.se) 35597 35598 * _mpz_realloc: Make it accept size in number of mp_digits. 35599 * Most functions: Use new _mpz_realloc definition. 35600 35601 * mpz_set_str: Remove calls _mp_free_func. 35602 35603 * Most functions: Rename mpn_* to _mpn_*. Rename mpz_realloc to 35604 _mpz_realloc. 35605 * mpn_lshift: Redefine _mpn_lshift to only handle small shifts. 35606 * mdiv, mpz_div, ...: Changes for new definition of _mpn_lshift. 35607 * msqrt, mp*_*shift*: Define cnt as unsigned (for speed). 35608 35609Sat Apr 6 14:05:16 1991 Torbjorn Granlund (tege@musta.nada.kth.se) 35610 35611 * mpn_mul: Multiply by the first digit in M2 in a special 35612 loop instead of zeroing the product area. 35613 35614 * mpz_abs.c: New file. 35615 35616 * sdiv: Implement as mpz_div_si for speed. 35617 35618 * mpn_add: Make it work for second source operand == 0. 35619 35620 * msub: Negate the correct operand, i.e. V before swapping, not 35621 the smaller of U and V! 35622 * madd, msub: Update abs_* when swapping operands, and not after 35623 (optimization). 35624 35625Fri Apr 5 00:19:36 1991 Torbjorn Granlund (tege@black.nada.kth.se) 35626 35627 * mpn_sub: Make it work for subtrahend == 0. 35628 35629 * madd, msub: Rewrite to minimize mpn_cmp calls. Ensure 35630 mpn_cmp is called with positive sizes (used to be called 35631 incorrectly with negative sizes sometimes). 35632 35633 * msqrt: Make it divide by zero if fed with a negative number. 35634 * Remove if statement at end of precision calculation that was 35635 never true. 35636 35637 * itom, mp.h: The argument is of type short, not int. 35638 35639 * mpz_realloc, gmp.h: Make mpz_realloc return the new digit pointer. 35640 35641 * mpz_get_str.c, mpz_set_str.c, mpz_new_str.c: Don't include mp.h. 35642 35643 * Add COPYING to distribution. 35644 35645 * mpz_div_ui.c, mpz_div_si.c, mpz_new_ui.c, mpz_new_si.c: New files. 35646 35647Fri Mar 15 00:26:29 1991 Torbjorn Granlund (tege@musta.nada.kth.se) 35648 35649 * Add Copyleft headers to all files. 35650 35651 * mpn_mul.c, mpn_div.c: Add header comments. 35652 * mult.c, mdiv.c: Update header comments. 35653 35654 * mpq_add.c, mpq_sub.c, mpq_div.c, mpq_new.c, mpq_new_ui.c, 35655 mpq_free.c: New files for rational arithmetics. 35656 35657 * mpn_lshift.c: Avoid writing the most significant word if it is 0. 35658 35659 * mdiv.c: Call mpn_lshift for the normalization. 35660 * mdiv.c: Remove #ifdefs. 35661 35662 * Makefile: Add ChangeLog to DISTFILES. 35663 35664 * mpn_div.c: Make the add_back code work (by removing abort()). 35665 * mpn_div.c: Make it return if the quotient is size as compared 35666 with the difference NSIZE - DSIZE. If the stored quotient is 35667 larger than that, return 1, otherwise 0. 35668 * gmp.h: Fix mpn_div declaration. 35669 * mdiv.c: Adopt call to mpn_div. 35670 * mpz_div.c: New file (developed from mdiv.c). 35671 35672 * README: Update routine names. 35673 35674Thu Mar 14 18:45:28 1991 Torbjorn Granlund (tege@musta.nada.kth.se) 35675 35676 * mpq_mul.c: New file for rational multiplication. 35677 35678 * gmp.h: Add definitions for rational arithmetics. 35679 35680 * mpn_div: Kludge the case where the high numerator digit > the 35681 high denominator digit. (This code is going to be optimized later.) 35682 35683 * New files: gmp.h for GNU specific functions, gmp-common.h for 35684 definitions common for mp.h and gmp.h. 35685 35686 * Ensure mp.h just defines what BSD mp.h defines. 35687 35688 * pow.c: Fix typo for bp allocation. 35689 35690 * Rename natural number functions to mpn_*, integer functions to 35691 mpz_*. 35692 35693Tue Mar 5 18:47:04 1991 Torbjorn Granlund (tege@musta.nada.kth.se) 35694 35695 * mdiv.c (_mp_divide, case 2): Change test for estimate of Q from 35696 "n0 >= r" to "n0 > r". 35697 35698 * msqrt: Tune the increasing precision scheme, to do fewer steps. 35699 35700Tue Mar 3 18:50:10 1991 Torbjorn Granlund (tege@musta.nada.kth.se) 35701 35702 * msqrt: Use the low level routines. Use low precision in the 35703 beginning, and increase the precision as the result converges. 35704 (This optimization gave a 6-fold speedup.) 35705