Try to stop git complaining about certain files changing.
This commit is contained in:
parent
fbf04dda95
commit
8caeabc661
14
.gitignore
vendored
14
.gitignore
vendored
@ -176,8 +176,22 @@ mpn/*.asm
|
||||
Makefile
|
||||
mpir.h
|
||||
config.h
|
||||
config.m4
|
||||
config.log
|
||||
config.status
|
||||
libtool
|
||||
stamp-h1
|
||||
yasm/.deps/
|
||||
yasm/configure.gnu
|
||||
yasm/configure.lineno
|
||||
yasm/libyasm-stdint.h
|
||||
yasm/po/Makefile.in
|
||||
yasm/po/POTFILES
|
||||
yasm/stamp-h1
|
||||
yasm_mac.inc
|
||||
gmp.h
|
||||
longlong.h
|
||||
gmp-mparam.h
|
||||
|
||||
/build.vc11/output_params.bat
|
||||
/build.vc11/mpir-tests/test-config.props
|
||||
|
280
doc/mpir.info
280
doc/mpir.info
@ -25,7 +25,7 @@ END-INFO-DIR-ENTRY
|
||||
|
||||
Indirect:
|
||||
mpir.info-1: 1026
|
||||
mpir.info-2: 299211
|
||||
mpir.info-2: 299690
|
||||
|
||||
Tag Table:
|
||||
(Indirect)
|
||||
@ -34,144 +34,144 @@ Node: Copying3245
|
||||
Node: Introduction to MPIR4965
|
||||
Node: Installing MPIR7135
|
||||
Node: Build Options8573
|
||||
Node: ABI and ISA24632
|
||||
Node: Notes for Package Builds31401
|
||||
Node: Notes for Particular Systems34839
|
||||
Node: Known Build Problems42271
|
||||
Node: Performance optimization43959
|
||||
Node: MPIR Basics45095
|
||||
Node: Headers and Libraries45746
|
||||
Node: Nomenclature and Types47201
|
||||
Node: MPIR on Windows x6449122
|
||||
Node: Function Classes51049
|
||||
Node: Variable Conventions52584
|
||||
Node: Parameter Conventions54113
|
||||
Node: Memory Management56165
|
||||
Node: Reentrancy57297
|
||||
Node: Useful Macros and Constants58734
|
||||
Node: Compatibility with older versions59925
|
||||
Node: Efficiency60962
|
||||
Node: Debugging68641
|
||||
Node: Profiling75041
|
||||
Node: Autoconf79075
|
||||
Node: Emacs80949
|
||||
Node: Reporting Bugs81558
|
||||
Node: Integer Functions84125
|
||||
Node: Initializing Integers84904
|
||||
Node: Assigning Integers86838
|
||||
Node: Simultaneous Integer Init & Assign88617
|
||||
Node: Converting Integers90445
|
||||
Node: Integer Arithmetic94061
|
||||
Node: Integer Division95527
|
||||
Node: Integer Exponentiation101432
|
||||
Node: Integer Roots102255
|
||||
Node: Number Theoretic Functions104042
|
||||
Node: Integer Comparisons112099
|
||||
Node: Integer Logic and Bit Fiddling113450
|
||||
Node: I/O of Integers116010
|
||||
Node: Integer Random Numbers118897
|
||||
Node: Integer Import and Export120661
|
||||
Node: Miscellaneous Integer Functions124648
|
||||
Node: Integer Special Functions126494
|
||||
Node: Rational Number Functions129665
|
||||
Node: Initializing Rationals130860
|
||||
Node: Rational Conversions133316
|
||||
Node: Rational Arithmetic135048
|
||||
Node: Comparing Rationals136353
|
||||
Node: Applying Integer Functions137670
|
||||
Node: I/O of Rationals139154
|
||||
Node: Floating-point Functions141017
|
||||
Node: Initializing Floats143908
|
||||
Node: Assigning Floats147996
|
||||
Node: Simultaneous Float Init & Assign150546
|
||||
Node: Converting Floats152058
|
||||
Node: Float Arithmetic155281
|
||||
Node: Float Comparison157145
|
||||
Node: I/O of Floats158473
|
||||
Node: Miscellaneous Float Functions161044
|
||||
Node: Low-level Functions163677
|
||||
Node: Random Number Functions189839
|
||||
Node: Random State Initialization190909
|
||||
Node: Random State Seeding192962
|
||||
Node: Random State Miscellaneous194332
|
||||
Node: Formatted Output194924
|
||||
Node: Formatted Output Strings195170
|
||||
Node: Formatted Output Functions200410
|
||||
Node: C++ Formatted Output204487
|
||||
Node: Formatted Input207174
|
||||
Node: Formatted Input Strings207411
|
||||
Node: Formatted Input Functions212073
|
||||
Node: C++ Formatted Input215046
|
||||
Node: C++ Class Interface216954
|
||||
Node: C++ Interface General217952
|
||||
Node: C++ Interface Integers221032
|
||||
Node: C++ Interface Rationals224418
|
||||
Node: C++ Interface Floats228064
|
||||
Node: C++ Interface Random Numbers233291
|
||||
Node: C++ Interface Limitations235399
|
||||
Node: Custom Allocation238245
|
||||
Node: Language Bindings242891
|
||||
Node: Algorithms246921
|
||||
Node: Multiplication Algorithms247626
|
||||
Node: Basecase Multiplication248838
|
||||
Node: Karatsuba Multiplication250750
|
||||
Node: Toom 3-Way Multiplication254380
|
||||
Node: Toom 4-Way Multiplication260796
|
||||
Node: FFT Multiplication262170
|
||||
Node: Other Multiplication267596
|
||||
Node: Unbalanced Multiplication270278
|
||||
Node: Division Algorithms271174
|
||||
Node: Single Limb Division271522
|
||||
Node: Basecase Division274442
|
||||
Node: Divide and Conquer Division275645
|
||||
Node: Exact Division277915
|
||||
Node: Exact Remainder281115
|
||||
Node: Small Quotient Division283408
|
||||
Node: Greatest Common Divisor Algorithms285007
|
||||
Node: Binary GCD285299
|
||||
Node: Lehmer's GCD287975
|
||||
Node: Subquadratic GCD290179
|
||||
Node: Extended GCD292633
|
||||
Node: Jacobi Symbol293192
|
||||
Node: Powering Algorithms294109
|
||||
Node: Normal Powering Algorithm294373
|
||||
Node: Modular Powering Algorithm294902
|
||||
Node: Root Extraction Algorithms295966
|
||||
Node: Square Root Algorithm296282
|
||||
Node: Nth Root Algorithm298425
|
||||
Node: Perfect Square Algorithm299211
|
||||
Node: Perfect Power Algorithm301298
|
||||
Node: Radix Conversion Algorithms301920
|
||||
Node: Binary to Radix302297
|
||||
Node: Radix to Binary306228
|
||||
Node: Other Algorithms308193
|
||||
Node: Prime Testing Algorithm308547
|
||||
Node: Factorial Algorithm309774
|
||||
Node: Binomial Coefficients Algorithm311211
|
||||
Node: Fibonacci Numbers Algorithm312106
|
||||
Node: Lucas Numbers Algorithm314582
|
||||
Node: Random Number Algorithms315304
|
||||
Node: Assembler Coding317428
|
||||
Node: Assembler Code Organisation318405
|
||||
Node: Assembler Basics319378
|
||||
Node: Assembler Carry Propagation320537
|
||||
Node: Assembler Cache Handling322375
|
||||
Node: Assembler Functional Units324543
|
||||
Node: Assembler Floating Point326164
|
||||
Node: Assembler SIMD Instructions329947
|
||||
Node: Assembler Software Pipelining330936
|
||||
Node: Assembler Loop Unrolling332004
|
||||
Node: Assembler Writing Guide334224
|
||||
Node: Internals336994
|
||||
Node: Integer Internals337508
|
||||
Node: Rational Internals339765
|
||||
Node: Float Internals341005
|
||||
Node: Raw Output Internals348333
|
||||
Node: C++ Interface Internals349528
|
||||
Node: Contributors352815
|
||||
Node: References361806
|
||||
Node: GNU Free Documentation License369549
|
||||
Node: Concept Index394715
|
||||
Node: Function Index437093
|
||||
Node: ABI and ISA25111
|
||||
Node: Notes for Package Builds31880
|
||||
Node: Notes for Particular Systems35318
|
||||
Node: Known Build Problems42750
|
||||
Node: Performance optimization44438
|
||||
Node: MPIR Basics45574
|
||||
Node: Headers and Libraries46225
|
||||
Node: Nomenclature and Types47680
|
||||
Node: MPIR on Windows x6449601
|
||||
Node: Function Classes51528
|
||||
Node: Variable Conventions53063
|
||||
Node: Parameter Conventions54592
|
||||
Node: Memory Management56644
|
||||
Node: Reentrancy57776
|
||||
Node: Useful Macros and Constants59213
|
||||
Node: Compatibility with older versions60404
|
||||
Node: Efficiency61441
|
||||
Node: Debugging69120
|
||||
Node: Profiling75520
|
||||
Node: Autoconf79554
|
||||
Node: Emacs81428
|
||||
Node: Reporting Bugs82037
|
||||
Node: Integer Functions84604
|
||||
Node: Initializing Integers85383
|
||||
Node: Assigning Integers87317
|
||||
Node: Simultaneous Integer Init & Assign89096
|
||||
Node: Converting Integers90924
|
||||
Node: Integer Arithmetic94540
|
||||
Node: Integer Division96006
|
||||
Node: Integer Exponentiation101911
|
||||
Node: Integer Roots102734
|
||||
Node: Number Theoretic Functions104521
|
||||
Node: Integer Comparisons112578
|
||||
Node: Integer Logic and Bit Fiddling113929
|
||||
Node: I/O of Integers116489
|
||||
Node: Integer Random Numbers119376
|
||||
Node: Integer Import and Export121140
|
||||
Node: Miscellaneous Integer Functions125127
|
||||
Node: Integer Special Functions126973
|
||||
Node: Rational Number Functions130144
|
||||
Node: Initializing Rationals131339
|
||||
Node: Rational Conversions133795
|
||||
Node: Rational Arithmetic135527
|
||||
Node: Comparing Rationals136832
|
||||
Node: Applying Integer Functions138149
|
||||
Node: I/O of Rationals139633
|
||||
Node: Floating-point Functions141496
|
||||
Node: Initializing Floats144387
|
||||
Node: Assigning Floats148475
|
||||
Node: Simultaneous Float Init & Assign151025
|
||||
Node: Converting Floats152537
|
||||
Node: Float Arithmetic155760
|
||||
Node: Float Comparison157624
|
||||
Node: I/O of Floats158952
|
||||
Node: Miscellaneous Float Functions161523
|
||||
Node: Low-level Functions164156
|
||||
Node: Random Number Functions190318
|
||||
Node: Random State Initialization191388
|
||||
Node: Random State Seeding193441
|
||||
Node: Random State Miscellaneous194811
|
||||
Node: Formatted Output195403
|
||||
Node: Formatted Output Strings195649
|
||||
Node: Formatted Output Functions200889
|
||||
Node: C++ Formatted Output204966
|
||||
Node: Formatted Input207653
|
||||
Node: Formatted Input Strings207890
|
||||
Node: Formatted Input Functions212552
|
||||
Node: C++ Formatted Input215525
|
||||
Node: C++ Class Interface217433
|
||||
Node: C++ Interface General218431
|
||||
Node: C++ Interface Integers221511
|
||||
Node: C++ Interface Rationals224897
|
||||
Node: C++ Interface Floats228543
|
||||
Node: C++ Interface Random Numbers233770
|
||||
Node: C++ Interface Limitations235878
|
||||
Node: Custom Allocation238724
|
||||
Node: Language Bindings243370
|
||||
Node: Algorithms247400
|
||||
Node: Multiplication Algorithms248105
|
||||
Node: Basecase Multiplication249317
|
||||
Node: Karatsuba Multiplication251229
|
||||
Node: Toom 3-Way Multiplication254859
|
||||
Node: Toom 4-Way Multiplication261275
|
||||
Node: FFT Multiplication262649
|
||||
Node: Other Multiplication268075
|
||||
Node: Unbalanced Multiplication270757
|
||||
Node: Division Algorithms271653
|
||||
Node: Single Limb Division272001
|
||||
Node: Basecase Division274921
|
||||
Node: Divide and Conquer Division276124
|
||||
Node: Exact Division278394
|
||||
Node: Exact Remainder281594
|
||||
Node: Small Quotient Division283887
|
||||
Node: Greatest Common Divisor Algorithms285486
|
||||
Node: Binary GCD285778
|
||||
Node: Lehmer's GCD288454
|
||||
Node: Subquadratic GCD290658
|
||||
Node: Extended GCD293112
|
||||
Node: Jacobi Symbol293671
|
||||
Node: Powering Algorithms294588
|
||||
Node: Normal Powering Algorithm294852
|
||||
Node: Modular Powering Algorithm295381
|
||||
Node: Root Extraction Algorithms296445
|
||||
Node: Square Root Algorithm296761
|
||||
Node: Nth Root Algorithm298904
|
||||
Node: Perfect Square Algorithm299690
|
||||
Node: Perfect Power Algorithm301777
|
||||
Node: Radix Conversion Algorithms302399
|
||||
Node: Binary to Radix302776
|
||||
Node: Radix to Binary306707
|
||||
Node: Other Algorithms308672
|
||||
Node: Prime Testing Algorithm309026
|
||||
Node: Factorial Algorithm310253
|
||||
Node: Binomial Coefficients Algorithm311690
|
||||
Node: Fibonacci Numbers Algorithm312585
|
||||
Node: Lucas Numbers Algorithm315061
|
||||
Node: Random Number Algorithms315783
|
||||
Node: Assembler Coding317907
|
||||
Node: Assembler Code Organisation318884
|
||||
Node: Assembler Basics319857
|
||||
Node: Assembler Carry Propagation321016
|
||||
Node: Assembler Cache Handling322854
|
||||
Node: Assembler Functional Units325022
|
||||
Node: Assembler Floating Point326643
|
||||
Node: Assembler SIMD Instructions330426
|
||||
Node: Assembler Software Pipelining331415
|
||||
Node: Assembler Loop Unrolling332483
|
||||
Node: Assembler Writing Guide334703
|
||||
Node: Internals337473
|
||||
Node: Integer Internals337987
|
||||
Node: Rational Internals340244
|
||||
Node: Float Internals341484
|
||||
Node: Raw Output Internals348812
|
||||
Node: C++ Interface Internals350007
|
||||
Node: Contributors353294
|
||||
Node: References362289
|
||||
Node: GNU Free Documentation License370036
|
||||
Node: Concept Index395206
|
||||
Node: Function Index437803
|
||||
|
||||
End Tag Table
|
||||
|
@ -396,6 +396,17 @@ Fat binary, `--enable-fat'
|
||||
See *note ABI and ISA::, for the available choices on relevant
|
||||
CPUs, and what applications need to do.
|
||||
|
||||
`--with-yasm', `--with-system-yasm'
|
||||
By default MPIR will compile its own version of Yasm if needed.
|
||||
Passing `--with-yasm' or `--with-system-yasm' let MPIR use a
|
||||
precompiled version of Yasm. With the former option a full path to
|
||||
Yasm's binary should be given, for example
|
||||
|
||||
./configure --with-yasm=/usr/local/bin/yasm
|
||||
|
||||
with the latter option MPIR will try to detect a system-wide
|
||||
installation of Yasm. Both options are mutually exclusive.
|
||||
|
||||
`CC', `CFLAGS'
|
||||
By default the C compiler used is chosen from among some likely
|
||||
candidates, with `gcc' normally preferred if it's present. The
|
||||
|
@ -1268,8 +1268,8 @@ complexity and all subexpressions are evaluated to the precision of `f'.
|
||||
|
||||
File: mpir.info, Node: Contributors, Next: References, Prev: Internals, Up: Top
|
||||
|
||||
Annexe A Contributors
|
||||
*********************
|
||||
Appendix A Contributors
|
||||
***********************
|
||||
|
||||
Torbjorn Granlund wrote the original GMP library and is still
|
||||
developing and maintaining it. Several other individuals and
|
||||
@ -1486,8 +1486,8 @@ supporting us in inumerably many other ways.
|
||||
|
||||
File: mpir.info, Node: References, Next: GNU Free Documentation License, Prev: Contributors, Up: Top
|
||||
|
||||
Annexe B References
|
||||
*******************
|
||||
Appendix B References
|
||||
*********************
|
||||
|
||||
B.1 Books
|
||||
=========
|
||||
@ -1661,8 +1661,8 @@ B.2 Papers
|
||||
|
||||
File: mpir.info, Node: GNU Free Documentation License, Next: Concept Index, Prev: References, Up: Top
|
||||
|
||||
Annexe C GNU Free Documentation License
|
||||
***************************************
|
||||
Appendix C GNU Free Documentation License
|
||||
*****************************************
|
||||
|
||||
Version 1.3, 3 November 2008
|
||||
|
||||
@ -2156,19 +2156,21 @@ Concept Index
|
||||
* #include: Headers and Libraries.
|
||||
(line 6)
|
||||
* --build: Build Options. (line 60)
|
||||
* --disable-fft: Build Options. (line 316)
|
||||
* --disable-fft: Build Options. (line 327)
|
||||
* --disable-shared: Build Options. (line 53)
|
||||
* --disable-static: Build Options. (line 53)
|
||||
* --enable-alloca: Build Options. (line 277)
|
||||
* --enable-assert: Build Options. (line 321)
|
||||
* --enable-cxx: Build Options. (line 229)
|
||||
* --enable-alloca: Build Options. (line 288)
|
||||
* --enable-assert: Build Options. (line 332)
|
||||
* --enable-cxx: Build Options. (line 240)
|
||||
* --enable-fat: Build Options. (line 162)
|
||||
* --enable-gmpcompat: Build Options. (line 45)
|
||||
* --enable-profiling <1>: Profiling. (line 6)
|
||||
* --enable-profiling: Build Options. (line 325)
|
||||
* --enable-profiling: Build Options. (line 336)
|
||||
* --exec-prefix: Build Options. (line 32)
|
||||
* --host: Build Options. (line 74)
|
||||
* --prefix: Build Options. (line 32)
|
||||
* --with-system-yasm: Build Options. (line 181)
|
||||
* --with-yasm: Build Options. (line 181)
|
||||
* -finstrument-functions: Profiling. (line 66)
|
||||
* 2exp functions: Efficiency. (line 43)
|
||||
* 80x86: Notes for Particular Systems.
|
||||
@ -2182,7 +2184,7 @@ Concept Index
|
||||
(line 7)
|
||||
* AIX: ABI and ISA. (line 96)
|
||||
* Algorithms: Algorithms. (line 6)
|
||||
* alloca: Build Options. (line 277)
|
||||
* alloca: Build Options. (line 288)
|
||||
* Allocation of memory: Custom Allocation. (line 6)
|
||||
* AMD64: ABI and ISA. (line 45)
|
||||
* Application Binary Interface: ABI and ISA. (line 6)
|
||||
@ -2209,7 +2211,7 @@ Concept Index
|
||||
* Assembler writing guide: Assembler Writing Guide.
|
||||
(line 6)
|
||||
* Assertion checking <1>: Debugging. (line 76)
|
||||
* Assertion checking: Build Options. (line 321)
|
||||
* Assertion checking: Build Options. (line 332)
|
||||
* Assignment functions <1>: Simultaneous Float Init & Assign.
|
||||
(line 6)
|
||||
* Assignment functions <2>: Assigning Floats. (line 6)
|
||||
@ -2244,18 +2246,18 @@ Concept Index
|
||||
* Build system: Build Options. (line 60)
|
||||
* Building MPIR: Installing MPIR. (line 6)
|
||||
* Bus error: Debugging. (line 7)
|
||||
* C compiler: Build Options. (line 181)
|
||||
* C++ compiler: Build Options. (line 253)
|
||||
* C compiler: Build Options. (line 192)
|
||||
* C++ compiler: Build Options. (line 264)
|
||||
* C++ interface: C++ Class Interface. (line 6)
|
||||
* C++ interface internals: C++ Interface Internals.
|
||||
(line 6)
|
||||
* C++ istream input: C++ Formatted Input. (line 6)
|
||||
* C++ ostream output: C++ Formatted Output.
|
||||
(line 6)
|
||||
* C++ support: Build Options. (line 229)
|
||||
* CC: Build Options. (line 181)
|
||||
* CC_FOR_BUILD: Build Options. (line 216)
|
||||
* CFLAGS: Build Options. (line 181)
|
||||
* C++ support: Build Options. (line 240)
|
||||
* CC: Build Options. (line 192)
|
||||
* CC_FOR_BUILD: Build Options. (line 227)
|
||||
* CFLAGS: Build Options. (line 192)
|
||||
* Checker: Debugging. (line 112)
|
||||
* checkergcc: Debugging. (line 119)
|
||||
* Code organisation: Assembler Code Organisation.
|
||||
@ -2281,14 +2283,14 @@ Concept Index
|
||||
(line 6)
|
||||
* Conversion functions: Converting Integers. (line 6)
|
||||
* Copying conditions: Copying. (line 6)
|
||||
* CPPFLAGS: Build Options. (line 207)
|
||||
* CPPFLAGS: Build Options. (line 218)
|
||||
* CPU types <1>: Build Options. (line 115)
|
||||
* CPU types: Introduction to MPIR.
|
||||
(line 24)
|
||||
* Cross compiling: Build Options. (line 74)
|
||||
* Custom allocation: Custom Allocation. (line 6)
|
||||
* CXX: Build Options. (line 253)
|
||||
* CXXFLAGS: Build Options. (line 253)
|
||||
* CXX: Build Options. (line 264)
|
||||
* CXXFLAGS: Build Options. (line 264)
|
||||
* Cygwin: Notes for Particular Systems.
|
||||
(line 34)
|
||||
* Darwin: Known Build Problems.
|
||||
@ -2305,18 +2307,18 @@ Concept Index
|
||||
* Division functions: Integer Division. (line 6)
|
||||
* DLLs: Notes for Particular Systems.
|
||||
(line 73)
|
||||
* DocBook: Build Options. (line 348)
|
||||
* Documentation formats: Build Options. (line 341)
|
||||
* DocBook: Build Options. (line 359)
|
||||
* Documentation formats: Build Options. (line 352)
|
||||
* Documentation license: GNU Free Documentation License.
|
||||
(line 6)
|
||||
* DVI: Build Options. (line 344)
|
||||
* DVI: Build Options. (line 355)
|
||||
* Efficiency: Efficiency. (line 6)
|
||||
* Emacs: Emacs. (line 6)
|
||||
* Exact division functions: Integer Division. (line 92)
|
||||
* Exact remainder: Exact Remainder. (line 6)
|
||||
* Exec prefix: Build Options. (line 32)
|
||||
* Execution profiling <1>: Profiling. (line 6)
|
||||
* Execution profiling: Build Options. (line 325)
|
||||
* Execution profiling: Build Options. (line 336)
|
||||
* Exponentiation functions <1>: Float Arithmetic. (line 34)
|
||||
* Exponentiation functions: Integer Exponentiation.
|
||||
(line 6)
|
||||
@ -2332,7 +2334,7 @@ Concept Index
|
||||
* Fast Fourier Transform: FFT Multiplication. (line 6)
|
||||
* Fat binary: Build Options. (line 162)
|
||||
* FFT multiplication <1>: FFT Multiplication. (line 6)
|
||||
* FFT multiplication: Build Options. (line 316)
|
||||
* FFT multiplication: Build Options. (line 327)
|
||||
* Fibonacci number algorithm: Fibonacci Numbers Algorithm.
|
||||
(line 6)
|
||||
* Fibonacci sequence functions: Number Theoretic Functions.
|
||||
@ -2546,7 +2548,7 @@ Concept Index
|
||||
(line 6)
|
||||
* mpirxx.h: C++ Interface General.
|
||||
(line 8)
|
||||
* MPN_PATH: Build Options. (line 329)
|
||||
* MPN_PATH: Build Options. (line 340)
|
||||
* MS Windows: Notes for Particular Systems.
|
||||
(line 34)
|
||||
* MS-DOS: Notes for Particular Systems.
|
||||
@ -2591,14 +2593,14 @@ Concept Index
|
||||
(line 6)
|
||||
* Past GMP/MPIR versions: Compatibility with older versions.
|
||||
(line 6)
|
||||
* PDF: Build Options. (line 344)
|
||||
* PDF: Build Options. (line 355)
|
||||
* Perfect power algorithm: Perfect Power Algorithm.
|
||||
(line 6)
|
||||
* Perfect power functions: Integer Roots. (line 30)
|
||||
* Perfect square algorithm: Perfect Square Algorithm.
|
||||
(line 6)
|
||||
* Perfect square functions: Integer Roots. (line 39)
|
||||
* Postscript: Build Options. (line 344)
|
||||
* Postscript: Build Options. (line 355)
|
||||
* Powering algorithms: Powering Algorithms. (line 6)
|
||||
* Powering functions <1>: Float Arithmetic. (line 34)
|
||||
* Powering functions: Integer Exponentiation.
|
||||
@ -2698,7 +2700,7 @@ Concept Index
|
||||
(line 145)
|
||||
* Stack backtrace: Debugging. (line 47)
|
||||
* Stack overflow <1>: Debugging. (line 7)
|
||||
* Stack overflow: Build Options. (line 277)
|
||||
* Stack overflow: Build Options. (line 288)
|
||||
* Static linking: Efficiency. (line 14)
|
||||
* stdarg.h: Headers and Libraries.
|
||||
(line 17)
|
||||
@ -2707,8 +2709,8 @@ Concept Index
|
||||
* Sun: ABI and ISA. (line 121)
|
||||
* Systems: Notes for Particular Systems.
|
||||
(line 6)
|
||||
* Temporary memory: Build Options. (line 277)
|
||||
* Texinfo: Build Options. (line 341)
|
||||
* Temporary memory: Build Options. (line 288)
|
||||
* Texinfo: Build Options. (line 352)
|
||||
* Text input/output: Efficiency. (line 153)
|
||||
* Thread safety: Reentrancy. (line 6)
|
||||
* Toom multiplication <1>: Other Multiplication.
|
||||
@ -2742,7 +2744,8 @@ Concept Index
|
||||
(line 139)
|
||||
* x87: Notes for Particular Systems.
|
||||
(line 25)
|
||||
* XML: Build Options. (line 348)
|
||||
* XML: Build Options. (line 359)
|
||||
* Yasm: Build Options. (line 181)
|
||||
|
||||
|
||||
File: mpir.info, Node: Function Index, Prev: Concept Index, Up: Top
|
||||
|
82
gmp-mparam.h
82
gmp-mparam.h
@ -1,82 +0,0 @@
|
||||
/* Generated by tuneup.c, 2012-10-23, gcc 4.1 */
|
||||
|
||||
#define MUL_KARATSUBA_THRESHOLD 14
|
||||
#define MUL_TOOM3_THRESHOLD 98
|
||||
#define MUL_TOOM4_THRESHOLD 154
|
||||
#define MUL_TOOM8H_THRESHOLD 270
|
||||
|
||||
#define SQR_BASECASE_THRESHOLD 0 /* always (native) */
|
||||
#define SQR_KARATSUBA_THRESHOLD 27
|
||||
#define SQR_TOOM3_THRESHOLD 90
|
||||
#define SQR_TOOM4_THRESHOLD 248
|
||||
#define SQR_TOOM8_THRESHOLD 351
|
||||
|
||||
#define POWM_THRESHOLD 110
|
||||
|
||||
#define HGCD_THRESHOLD 31
|
||||
#define GCD_DC_THRESHOLD 1502
|
||||
#define GCDEXT_DC_THRESHOLD 1105
|
||||
#define JACOBI_BASE_METHOD 1
|
||||
|
||||
#define DIVREM_1_NORM_THRESHOLD MP_SIZE_T_MAX /* never */
|
||||
#define DIVREM_1_UNNORM_THRESHOLD MP_SIZE_T_MAX /* never */
|
||||
#define MOD_1_NORM_THRESHOLD 0 /* always */
|
||||
#define MOD_1_UNNORM_THRESHOLD 0 /* always */
|
||||
#define USE_PREINV_DIVREM_1 1 /* native */
|
||||
#define USE_PREINV_MOD_1 1
|
||||
#define DIVEXACT_1_THRESHOLD 0 /* always */
|
||||
#define MODEXACT_1_ODD_THRESHOLD 0 /* always (native) */
|
||||
#define MOD_1_1_THRESHOLD 5
|
||||
#define MOD_1_2_THRESHOLD 8
|
||||
#define MOD_1_3_THRESHOLD 25
|
||||
#define DIVREM_HENSEL_QR_1_THRESHOLD 7
|
||||
#define RSH_DIVREM_HENSEL_QR_1_THRESHOLD 5
|
||||
#define DIVREM_EUCLID_HENSEL_THRESHOLD 105
|
||||
|
||||
#define ROOTREM_THRESHOLD 6
|
||||
|
||||
#define GET_STR_DC_THRESHOLD 13
|
||||
#define GET_STR_PRECOMPUTE_THRESHOLD 20
|
||||
#define SET_STR_DC_THRESHOLD 6082
|
||||
#define SET_STR_PRECOMPUTE_THRESHOLD 7122
|
||||
|
||||
#define MUL_FFT_FULL_THRESHOLD 2880
|
||||
|
||||
#define SQR_FFT_FULL_THRESHOLD 2880
|
||||
|
||||
#define MULLOW_BASECASE_THRESHOLD 7
|
||||
#define MULLOW_DC_THRESHOLD 11
|
||||
#define MULLOW_MUL_THRESHOLD 2416
|
||||
|
||||
#define MULHIGH_BASECASE_THRESHOLD 16
|
||||
#define MULHIGH_DC_THRESHOLD 16
|
||||
#define MULHIGH_MUL_THRESHOLD 2416
|
||||
|
||||
#define MULMOD_2EXPM1_THRESHOLD 14
|
||||
|
||||
#define FAC_UI_THRESHOLD 1430
|
||||
#define DC_DIV_QR_THRESHOLD 100
|
||||
#define DC_DIVAPPR_Q_N_THRESHOLD 71
|
||||
#define INV_DIV_QR_THRESHOLD 465
|
||||
#define INV_DIVAPPR_Q_N_THRESHOLD 71
|
||||
#define DC_DIV_Q_THRESHOLD 102
|
||||
#define INV_DIV_Q_THRESHOLD 3837
|
||||
#define DC_DIVAPPR_Q_THRESHOLD 73
|
||||
#define INV_DIVAPPR_Q_THRESHOLD 11836
|
||||
#define DC_BDIV_QR_THRESHOLD 100
|
||||
#define DC_BDIV_Q_THRESHOLD 11
|
||||
|
||||
/* fft_tuning -- autogenerated by tune-fft */
|
||||
|
||||
#define FFT_TAB \
|
||||
{ { 4, 3 }, { 4, 3 }, { 3, 2 }, { 2, 1 }, { 1, 0 } }
|
||||
|
||||
#define MULMOD_TAB \
|
||||
{ 4, 4, 3, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1 }
|
||||
|
||||
#define FFT_N_NUM 19
|
||||
|
||||
#define FFT_MULMOD_2EXPP1_CUTOFF 128
|
||||
|
||||
|
||||
/* Tuneup completed successfully, took 158 seconds */
|
633
longlong.h
633
longlong.h
@ -1,633 +0,0 @@
|
||||
/* longlong.h -- definitions for mixed size 32/64 bit arithmetic.
|
||||
|
||||
Copyright 1991, 1992, 1993, 1994, 1996, 1997, 1999, 2000, 2001, 2002, 2003,
|
||||
2004, 2005 Free Software Foundation, Inc.
|
||||
|
||||
This file is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
This file is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this file; see the file COPYING.LIB. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
/* You have to define the following before including this file:
|
||||
|
||||
UWtype -- An unsigned type, default type for operations (typically a "word")
|
||||
UHWtype -- An unsigned type, at least half the size of UWtype.
|
||||
UDWtype -- An unsigned type, at least twice as large a UWtype
|
||||
W_TYPE_SIZE -- size in bits of UWtype
|
||||
|
||||
SItype, USItype -- Signed and unsigned 32 bit types.
|
||||
DItype, UDItype -- Signed and unsigned 64 bit types.
|
||||
|
||||
On a 32 bit machine UWtype should typically be USItype;
|
||||
on a 64 bit machine, UWtype should typically be UDItype.
|
||||
*/
|
||||
|
||||
#define __BITS4 (W_TYPE_SIZE / 4)
|
||||
#define __ll_B ((UWtype) 1 << (W_TYPE_SIZE / 2))
|
||||
#define __ll_lowpart(t) ((UWtype) (t) & (__ll_B - 1))
|
||||
#define __ll_highpart(t) ((UWtype) (t) >> (W_TYPE_SIZE / 2))
|
||||
|
||||
/* This is used to make sure no undesirable sharing between different libraries
|
||||
that use this file takes place. */
|
||||
#ifndef __MPN
|
||||
#define __MPN(x) __##x
|
||||
#endif
|
||||
|
||||
#ifndef _PROTO
|
||||
#if (__STDC__-0) || defined (__cplusplus) || defined( _MSC_VER )
|
||||
#define _PROTO(x) x
|
||||
#else
|
||||
#define _PROTO(x) ()
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Define auxiliary asm macros.
|
||||
|
||||
1) umul_ppmm(high_prod, low_prod, multipler, multiplicand) multiplies two
|
||||
UWtype integers MULTIPLER and MULTIPLICAND, and generates a two UWtype
|
||||
word product in HIGH_PROD and LOW_PROD.
|
||||
|
||||
3) udiv_qrnnd(quotient, remainder, high_numerator, low_numerator,
|
||||
denominator) divides a UDWtype, composed by the UWtype integers
|
||||
HIGH_NUMERATOR and LOW_NUMERATOR, by DENOMINATOR and places the quotient
|
||||
in QUOTIENT and the remainder in REMAINDER. HIGH_NUMERATOR must be less
|
||||
than DENOMINATOR for correct operation. If, in addition, the most
|
||||
significant bit of DENOMINATOR must be 1, then the pre-processor symbol
|
||||
UDIV_NEEDS_NORMALIZATION is defined to 1.
|
||||
|
||||
4) sdiv_qrnnd(quotient, remainder, high_numerator, low_numerator,
|
||||
denominator). Like udiv_qrnnd but the numbers are signed. The quotient
|
||||
is rounded towards 0.
|
||||
|
||||
5) count_leading_zeros(count, x) counts the number of zero-bits from the
|
||||
msb to the first non-zero bit in the UWtype X. This is the number of
|
||||
steps X needs to be shifted left to set the msb. Undefined for X == 0,
|
||||
unless the symbol COUNT_LEADING_ZEROS_0 is defined to some value.
|
||||
|
||||
6) count_trailing_zeros(count, x) like count_leading_zeros, but counts
|
||||
from the least significant end.
|
||||
|
||||
7) add_ssaaaa(high_sum, low_sum, high_addend_1, low_addend_1,
|
||||
high_addend_2, low_addend_2) adds two UWtype integers, composed by
|
||||
HIGH_ADDEND_1 and LOW_ADDEND_1, and HIGH_ADDEND_2 and LOW_ADDEND_2
|
||||
respectively. The result is placed in HIGH_SUM and LOW_SUM. Overflow
|
||||
(i.e. carry out) is not stored anywhere, and is lost.
|
||||
|
||||
8) sub_ddmmss(high_difference, low_difference, high_minuend, low_minuend,
|
||||
high_subtrahend, low_subtrahend) subtracts two two-word UWtype integers,
|
||||
composed by HIGH_MINUEND_1 and LOW_MINUEND_1, and HIGH_SUBTRAHEND_2 and
|
||||
LOW_SUBTRAHEND_2 respectively. The result is placed in HIGH_DIFFERENCE
|
||||
and LOW_DIFFERENCE. Overflow (i.e. carry out) is not stored anywhere,
|
||||
and is lost.
|
||||
|
||||
If any of these macros are left undefined for a particular CPU,
|
||||
C macros are used.
|
||||
|
||||
|
||||
Notes:
|
||||
|
||||
For add_ssaaaa the two high and two low addends can both commute, but
|
||||
unfortunately gcc only supports one "%" commutative in each asm block.
|
||||
This has always been so but is only documented in recent versions
|
||||
(eg. pre-release 3.3). Having two or more "%"s can cause an internal
|
||||
compiler error in certain rare circumstances.
|
||||
|
||||
Apparently it was only the last "%" that was ever actually respected, so
|
||||
the code has been updated to leave just that. Clearly there's a free
|
||||
choice whether high or low should get it, if there's a reason to favour
|
||||
one over the other. Also obviously when the constraints on the two
|
||||
operands are identical there's no benefit to the reloader in any "%" at
|
||||
all.
|
||||
|
||||
*/
|
||||
|
||||
/* The CPUs come in alphabetical order below.
|
||||
|
||||
Please add support for more CPUs here, or improve the current support
|
||||
for the CPUs below! */
|
||||
|
||||
|
||||
/* count_leading_zeros_gcc_clz is count_leading_zeros implemented with gcc
|
||||
3.4 __builtin_clzl or __builtin_clzll, according to our limb size.
|
||||
Similarly count_trailing_zeros_gcc_ctz using __builtin_ctzl or
|
||||
__builtin_ctzll.
|
||||
|
||||
These builtins are only used when we check what code comes out, on some
|
||||
chips they're merely libgcc calls, where we will instead want an inline
|
||||
in that case (either asm or generic C).
|
||||
|
||||
These builtins are better than an asm block of the same insn, since an
|
||||
asm block doesn't give gcc any information about scheduling or resource
|
||||
usage. We keep an asm block for use on prior versions of gcc though.
|
||||
|
||||
For reference, __builtin_ffs existed in gcc prior to __builtin_clz, but
|
||||
it's not used (for count_leading_zeros) because it generally gives extra
|
||||
code to ensure the result is 0 when the input is 0, which we don't need
|
||||
or want. */
|
||||
|
||||
#ifdef _LONG_LONG_LIMB
|
||||
#define count_leading_zeros_gcc_clz(count,x) \
|
||||
do { \
|
||||
ASSERT ((x) != 0); \
|
||||
(count) = __builtin_clzll (x); \
|
||||
} while (0)
|
||||
#else
|
||||
#define count_leading_zeros_gcc_clz(count,x) \
|
||||
do { \
|
||||
ASSERT ((x) != 0); \
|
||||
(count) = __builtin_clzl (x); \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
#ifdef _LONG_LONG_LIMB
|
||||
#define count_trailing_zeros_gcc_ctz(count,x) \
|
||||
do { \
|
||||
ASSERT ((x) != 0); \
|
||||
(count) = __builtin_ctzll (x); \
|
||||
} while (0)
|
||||
#else
|
||||
#define count_trailing_zeros_gcc_ctz(count,x) \
|
||||
do { \
|
||||
ASSERT ((x) != 0); \
|
||||
(count) = __builtin_ctzl (x); \
|
||||
} while (0)
|
||||
#endif
|
||||
/* longlong.h -- definitions for mixed size 32/64 bit arithmetic.
|
||||
|
||||
Copyright 1991, 1992, 1993, 1994, 1996, 1997, 1999, 2000, 2001, 2002, 2003,
|
||||
2004, 2005 Free Software Foundation, Inc.
|
||||
|
||||
Copyright 2013 William Hart
|
||||
|
||||
This file is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
This file is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this file; see the file COPYING.LIB. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
#if defined(__ICL)
|
||||
|
||||
#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("addq %5,%q1\n\tadcq %3,%q0" \
|
||||
: "=r" (sh), "=&r" (sl) \
|
||||
: "0" ((UDItype)(ah)), "rme" ((UDItype)(bh)), \
|
||||
"%1" ((UDItype)(al)), "rme" ((UDItype)(bl)))
|
||||
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("subq %5,%q1\n\tsbbq %3,%q0" \
|
||||
: "=r" (sh), "=&r" (sl) \
|
||||
: "0" ((UDItype)(ah)), "rme" ((UDItype)(bh)), \
|
||||
"1" ((UDItype)(al)), "rme" ((UDItype)(bl)))
|
||||
#define umul_ppmm(w1, w0, u, v) \
|
||||
__asm__ ("mulq %3" \
|
||||
: "=a" (w0), "=d" (w1) \
|
||||
: "%0" ((UDItype)(u)), "rm" ((UDItype)(v)))
|
||||
#define udiv_qrnnd(q, r, n1, n0, dx) /* d renamed to dx avoiding "=d" */\
|
||||
__asm__ ("divq %4" /* stringification in K&R C */ \
|
||||
: "=a" (q), "=d" (r) \
|
||||
: "0" ((UDItype)(n0)), "1" ((UDItype)(n1)), "rm" ((UDItype)(dx)))
|
||||
#define add_333(sh, sm, sl, ah, am, al, bh, bm, bl) \
|
||||
__asm__ ("addq %8,%q2\n\tadcq %6,%q1\n\tadcq %4,%q0" \
|
||||
: "=r" (sh), "=r" (sm), "=&r" (sl) \
|
||||
: "0" ((UDItype)(ah)), "rme" ((UDItype)(bh)), \
|
||||
"1" ((UDItype)(am)), "rme" ((UDItype)(bm)), \
|
||||
"2" ((UDItype)(al)), "rme" ((UDItype)(bl)))
|
||||
#define sub_333(sh, sm, sl, ah, am, al, bh, bm, bl) \
|
||||
__asm__ ("subq %8,%q2\n\tsbbq %6,%q1\n\tsbbq %4,%q0" \
|
||||
: "=r" (sh), "=r" (sm), "=&r" (sl) \
|
||||
: "0" ((UDItype)(ah)), "rme" ((UDItype)(bh)), \
|
||||
"1" ((UDItype)(am)), "rme" ((UDItype)(bm)), \
|
||||
"2" ((UDItype)(al)), "rme" ((UDItype)(bl)))
|
||||
|
||||
/* bsrq destination must be a 64-bit register, hence UDItype for __cbtmp. */
|
||||
#define count_leading_zeros(count, x) \
|
||||
do { \
|
||||
UDItype __cbtmp; \
|
||||
ASSERT ((x) != 0); \
|
||||
__asm__ ("bsrq %1,%0" : "=r" (__cbtmp) : "rm" ((UDItype)(x))); \
|
||||
(count) = __cbtmp ^ 63; \
|
||||
} while (0)
|
||||
/* bsfq destination must be a 64-bit register, "%q0" forces this in case
|
||||
count is only an int. */
|
||||
#define count_trailing_zeros(count, x) \
|
||||
do { \
|
||||
ASSERT ((x) != 0); \
|
||||
__asm__ ("bsfq %1,%q0" : "=r" (count) : "rm" ((UDItype)(x))); \
|
||||
} while (0)
|
||||
|
||||
#endif
|
||||
|
||||
#if !defined(BSWAP_LIMB) && defined (__GNUC__)
|
||||
#define BSWAP_LIMB(dst, src) \
|
||||
do { \
|
||||
__asm__ ("bswap %q0" : "=r" (dst) : "0" (src)); \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
#if defined( _MSC_VER )
|
||||
#include <intrin.h>
|
||||
|
||||
#if !defined( COUNT_LEADING_ZEROS_NEED_CLZ_TAB )
|
||||
# define COUNT_LEADING_ZEROS_NEED_CLZ_TAB
|
||||
#endif
|
||||
|
||||
#if defined( _WIN64 )
|
||||
|
||||
#if !defined(count_leading_zeros)
|
||||
# pragma intrinsic(_BitScanReverse64)
|
||||
# define count_leading_zeros(c,x) \
|
||||
do { unsigned long _z; \
|
||||
ASSERT ((x) != 0); \
|
||||
_BitScanReverse64(&_z, (x)); \
|
||||
c = 63 - _z; \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
#if !defined(count_trailing_zeros)
|
||||
# pragma intrinsic(_BitScanForward64)
|
||||
# define count_trailing_zeros(c,x) \
|
||||
do { unsigned long _z; \
|
||||
ASSERT ((x) != 0); \
|
||||
_BitScanForward64(&_z, (x)); \
|
||||
c = _z; \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
#if !defined(umul_ppmm)
|
||||
# pragma intrinsic(_umul128)
|
||||
# define umul_ppmm(xh, xl, m0, m1) \
|
||||
do { \
|
||||
xl = _umul128( (m0), (m1), &xh); \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
#if !defined( BSWAP_LIMB )
|
||||
# pragma intrinsic(_byteswap_uint64)
|
||||
# define BSWAP_LIMB
|
||||
# define BSWAP_LIMB(dst, src) dst = _byteswap_uint64(src)
|
||||
#endif
|
||||
|
||||
#endif /* _WIN64 */
|
||||
|
||||
#if 0 /* trial re-definition of C versions */
|
||||
#define add_333(sh, sm, sl, ah, am, al, bh, bm, bl) \
|
||||
do { \
|
||||
UWtype _cy; \
|
||||
(sl) = (al) + (bl); \
|
||||
_cy = (sl) < (bl) ? 1 : 0; \
|
||||
(sm) = (am) + (bm) + _cy; \
|
||||
_cy = (sm) < (bm) ? 1 : (sm) > (bm) ? 0 : _cy; \
|
||||
(sh) = (ah) + (bh) + _cy; \
|
||||
} while (0)
|
||||
|
||||
#define sub_333(sh, sm, sl, ah, am, al, bh, bm, bl) \
|
||||
do { \
|
||||
UWtype _bw; \
|
||||
(sl) = (al) - (bl); \
|
||||
_bw = (sl) > (al) ? 1 : 0; \
|
||||
(sm) = (am) - (bm) - _bw; \
|
||||
_bw = (sm) > (am) ? 1 : (sm) < (am) ? 0 : _bw; \
|
||||
(sh) = (ah) - (bh) - _bw; \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
#endif /* _MSC_VER */
|
||||
/* longlong.h -- definitions for mixed size 32/64 bit arithmetic.
|
||||
|
||||
Copyright 1991, 1992, 1993, 1994, 1996, 1997, 1999, 2000, 2001, 2002, 2003,
|
||||
2004, 2005 Free Software Foundation, Inc.
|
||||
|
||||
Copyright 2013 William Hart
|
||||
|
||||
This file is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or (at your
|
||||
option) any later version.
|
||||
|
||||
This file is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||
License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with this file; see the file COPYING.LIB. If not, write to
|
||||
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
MA 02110-1301, USA. */
|
||||
|
||||
/* You have to define the following before including this file:
|
||||
|
||||
UWtype -- An unsigned type, default type for operations (typically a "word")
|
||||
UHWtype -- An unsigned type, at least half the size of UWtype.
|
||||
UDWtype -- An unsigned type, at least twice as large a UWtype
|
||||
W_TYPE_SIZE -- size in bits of UWtype
|
||||
|
||||
SItype, USItype -- Signed and unsigned 32 bit types.
|
||||
DItype, UDItype -- Signed and unsigned 64 bit types.
|
||||
|
||||
On a 32 bit machine UWtype should typically be USItype;
|
||||
on a 64 bit machine, UWtype should typically be UDItype.
|
||||
*/
|
||||
|
||||
/* Use mpn_umul_ppmm or mpn_udiv_qrnnd functions, if they exist. The "_r"
|
||||
forms have "reversed" arguments, meaning the pointer is last, which
|
||||
sometimes allows better parameter passing, in particular on 64-bit
|
||||
hppa. */
|
||||
|
||||
#define mpn_umul_ppmm __MPN(umul_ppmm)
|
||||
extern UWtype mpn_umul_ppmm _PROTO ((UWtype *, UWtype, UWtype));
|
||||
|
||||
#if ! defined (umul_ppmm) && HAVE_NATIVE_mpn_umul_ppmm \
|
||||
&& ! defined (LONGLONG_STANDALONE)
|
||||
#define umul_ppmm(wh, wl, u, v) \
|
||||
do { \
|
||||
UWtype __umul_ppmm__p0; \
|
||||
(wh) = mpn_umul_ppmm (&__umul_ppmm__p0, (UWtype) (u), (UWtype) (v)); \
|
||||
(wl) = __umul_ppmm__p0; \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
#define mpn_umul_ppmm_r __MPN(umul_ppmm_r)
|
||||
extern UWtype mpn_umul_ppmm_r _PROTO ((UWtype, UWtype, UWtype *));
|
||||
|
||||
#if ! defined (umul_ppmm) && HAVE_NATIVE_mpn_umul_ppmm_r \
|
||||
&& ! defined (LONGLONG_STANDALONE)
|
||||
#define umul_ppmm(wh, wl, u, v) \
|
||||
do { \
|
||||
UWtype __umul_ppmm__p0; \
|
||||
(wh) = mpn_umul_ppmm_r ((UWtype) (u), (UWtype) (v), &__umul_ppmm__p0); \
|
||||
(wl) = __umul_ppmm__p0; \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
#define mpn_udiv_qrnnd __MPN(udiv_qrnnd)
|
||||
extern UWtype mpn_udiv_qrnnd _PROTO ((UWtype *, UWtype, UWtype, UWtype));
|
||||
|
||||
#if ! defined (udiv_qrnnd) && HAVE_NATIVE_mpn_udiv_qrnnd \
|
||||
&& ! defined (LONGLONG_STANDALONE)
|
||||
#define udiv_qrnnd(q, r, n1, n0, d) \
|
||||
do { \
|
||||
UWtype __udiv_qrnnd__r; \
|
||||
(q) = mpn_udiv_qrnnd (&__udiv_qrnnd__r, \
|
||||
(UWtype) (n1), (UWtype) (n0), (UWtype) d); \
|
||||
(r) = __udiv_qrnnd__r; \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
#define mpn_udiv_qrnnd_r __MPN(udiv_qrnnd_r)
|
||||
extern UWtype mpn_udiv_qrnnd_r _PROTO ((UWtype, UWtype, UWtype, UWtype *));
|
||||
|
||||
#if ! defined (udiv_qrnnd) && HAVE_NATIVE_mpn_udiv_qrnnd_r \
|
||||
&& ! defined (LONGLONG_STANDALONE)
|
||||
#define udiv_qrnnd(q, r, n1, n0, d) \
|
||||
do { \
|
||||
UWtype __udiv_qrnnd__r; \
|
||||
(q) = mpn_udiv_qrnnd_r ((UWtype) (n1), (UWtype) (n0), (UWtype) d, \
|
||||
&__udiv_qrnnd__r); \
|
||||
(r) = __udiv_qrnnd__r; \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
|
||||
/* If this machine has no inline assembler, use C macros. */
|
||||
|
||||
#if !defined (add_ssaaaa)
|
||||
#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
|
||||
do { \
|
||||
UWtype __x; \
|
||||
__x = (al) + (bl); \
|
||||
(sh) = (ah) + (bh) + (__x < (al)); \
|
||||
(sl) = __x; \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
#if !defined (sub_ddmmss)
|
||||
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
|
||||
do { \
|
||||
UWtype __x; \
|
||||
__x = (al) - (bl); \
|
||||
(sh) = (ah) - (bh) - ((al) < (bl)); \
|
||||
(sl) = __x; \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
#if !defined (add_333)
|
||||
#define add_333(sh, sm, sl, ah, am, al, bh, bm, bl) \
|
||||
do { \
|
||||
UWtype __cy1, __cy2; \
|
||||
__cy1 = ((al) + (bl) < (al)); \
|
||||
(sl) = (al) + (bl); \
|
||||
__cy2 = ((am) + (bm) < (am)); \
|
||||
(sm) = (am) + (bm); \
|
||||
__cy2 += ((sm) + __cy1 < (sm)); \
|
||||
(sm) = (sm) + __cy1; \
|
||||
(sh) = (ah) + (bh) + __cy2; \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
#if !defined(sub_333)
|
||||
#define sub_333(sh, sm, sl, ah, am, al, bh, bm, bl) \
|
||||
do { \
|
||||
UWtype __cy1, __cy2; \
|
||||
__cy1 = ((al) < (bl)); \
|
||||
(sl) = (al) - (bl); \
|
||||
__cy2 = ((am) < (bm)); \
|
||||
(sm) = (am) - (bm); \
|
||||
__cy2 += ((sm) < __cy1); \
|
||||
(sm) = (sm) - __cy1; \
|
||||
(sh) = (ah) - (bh) - __cy2; \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
/* If we lack umul_ppmm but have smul_ppmm, define umul_ppmm in terms of
|
||||
smul_ppmm. */
|
||||
#if !defined (umul_ppmm) && defined (smul_ppmm)
|
||||
#define umul_ppmm(w1, w0, u, v) \
|
||||
do { \
|
||||
UWtype __w1; \
|
||||
UWtype __xm0 = (u), __xm1 = (v); \
|
||||
smul_ppmm (__w1, w0, __xm0, __xm1); \
|
||||
(w1) = __w1 + (-(__xm0 >> (W_TYPE_SIZE - 1)) & __xm1) \
|
||||
+ (-(__xm1 >> (W_TYPE_SIZE - 1)) & __xm0); \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
/* If we still don't have umul_ppmm, define it using plain C.
|
||||
|
||||
For reference, when this code is used for squaring (ie. u and v identical
|
||||
expressions), gcc recognises __x1 and __x2 are the same and generates 3
|
||||
multiplies, not 4. The subsequent additions could be optimized a bit,
|
||||
but the only place GMP currently uses such a square is mpn_sqr_basecase,
|
||||
and chips obliged to use this generic C umul will have plenty of worse
|
||||
performance problems than a couple of extra instructions on the diagonal
|
||||
of sqr_basecase. */
|
||||
|
||||
#if !defined (umul_ppmm)
|
||||
#define umul_ppmm(w1, w0, u, v) \
|
||||
do { \
|
||||
UWtype __x0, __x1, __x2, __x3; \
|
||||
UHWtype __ul, __vl, __uh, __vh; \
|
||||
UWtype __u = (u), __v = (v); \
|
||||
\
|
||||
__ul = __ll_lowpart (__u); \
|
||||
__uh = __ll_highpart (__u); \
|
||||
__vl = __ll_lowpart (__v); \
|
||||
__vh = __ll_highpart (__v); \
|
||||
\
|
||||
__x0 = (UWtype) __ul * __vl; \
|
||||
__x1 = (UWtype) __ul * __vh; \
|
||||
__x2 = (UWtype) __uh * __vl; \
|
||||
__x3 = (UWtype) __uh * __vh; \
|
||||
\
|
||||
__x1 += __ll_highpart (__x0);/* this can't give carry */ \
|
||||
__x1 += __x2; /* but this indeed can */ \
|
||||
if (__x1 < __x2) /* did we get it? */ \
|
||||
__x3 += __ll_B; /* yes, add it in the proper pos. */ \
|
||||
\
|
||||
(w1) = __x3 + __ll_highpart (__x1); \
|
||||
(w0) = (__x1 << W_TYPE_SIZE/2) + __ll_lowpart (__x0); \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
/* If we don't have smul_ppmm, define it using umul_ppmm (which surely will
|
||||
exist in one form or another. */
|
||||
#if !defined (smul_ppmm)
|
||||
#define smul_ppmm(w1, w0, u, v) \
|
||||
do { \
|
||||
UWtype __w1; \
|
||||
UWtype __xm0 = (u), __xm1 = (v); \
|
||||
umul_ppmm (__w1, w0, __xm0, __xm1); \
|
||||
(w1) = __w1 - (-(__xm0 >> (W_TYPE_SIZE - 1)) & __xm1) \
|
||||
- (-(__xm1 >> (W_TYPE_SIZE - 1)) & __xm0); \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
/* Define this unconditionally, so it can be used for debugging. */
|
||||
#define __udiv_qrnnd_c(q, r, n1, n0, d) \
|
||||
do { \
|
||||
UWtype __d1, __d0, __q1, __q0, __r1, __r0, __m; \
|
||||
\
|
||||
ASSERT ((d) != 0); \
|
||||
ASSERT ((n1) < (d)); \
|
||||
\
|
||||
__d1 = __ll_highpart (d); \
|
||||
__d0 = __ll_lowpart (d); \
|
||||
\
|
||||
__q1 = (n1) / __d1; \
|
||||
__r1 = (n1) - __q1 * __d1; \
|
||||
__m = __q1 * __d0; \
|
||||
__r1 = __r1 * __ll_B | __ll_highpart (n0); \
|
||||
if (__r1 < __m) \
|
||||
{ \
|
||||
__q1--, __r1 += (d); \
|
||||
if (__r1 >= (d)) /* i.e. we didn't get carry when adding to __r1 */\
|
||||
if (__r1 < __m) \
|
||||
__q1--, __r1 += (d); \
|
||||
} \
|
||||
__r1 -= __m; \
|
||||
\
|
||||
__q0 = __r1 / __d1; \
|
||||
__r0 = __r1 - __q0 * __d1; \
|
||||
__m = __q0 * __d0; \
|
||||
__r0 = __r0 * __ll_B | __ll_lowpart (n0); \
|
||||
if (__r0 < __m) \
|
||||
{ \
|
||||
__q0--, __r0 += (d); \
|
||||
if (__r0 >= (d)) \
|
||||
if (__r0 < __m) \
|
||||
__q0--, __r0 += (d); \
|
||||
} \
|
||||
__r0 -= __m; \
|
||||
\
|
||||
(q) = __q1 * __ll_B | __q0; \
|
||||
(r) = __r0; \
|
||||
} while (0)
|
||||
|
||||
/* If the processor has no udiv_qrnnd but sdiv_qrnnd, go through
|
||||
__udiv_w_sdiv (defined in libgcc or elsewhere). */
|
||||
#if !defined (udiv_qrnnd) && defined (sdiv_qrnnd)
|
||||
#define udiv_qrnnd(q, r, nh, nl, d) \
|
||||
do { \
|
||||
UWtype __r; \
|
||||
(q) = __MPN(udiv_w_sdiv) (&__r, nh, nl, d); \
|
||||
(r) = __r; \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
/* If udiv_qrnnd was not defined for this processor, use __udiv_qrnnd_c. */
|
||||
#if !defined (udiv_qrnnd)
|
||||
#define UDIV_NEEDS_NORMALIZATION 1
|
||||
#define udiv_qrnnd __udiv_qrnnd_c
|
||||
#endif
|
||||
|
||||
#if !defined (count_leading_zeros)
|
||||
#define count_leading_zeros(count, x) \
|
||||
do { \
|
||||
UWtype __xr = (x); \
|
||||
UWtype __a; \
|
||||
\
|
||||
if (W_TYPE_SIZE == 32) \
|
||||
{ \
|
||||
__a = __xr < ((UWtype) 1 << 2*__BITS4) \
|
||||
? (__xr < ((UWtype) 1 << __BITS4) ? 1 : __BITS4 + 1) \
|
||||
: (__xr < ((UWtype) 1 << 3*__BITS4) ? 2*__BITS4 + 1 \
|
||||
: 3*__BITS4 + 1); \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
for (__a = W_TYPE_SIZE - 8; __a > 0; __a -= 8) \
|
||||
if (((__xr >> __a) & 0xff) != 0) \
|
||||
break; \
|
||||
++__a; \
|
||||
} \
|
||||
\
|
||||
(count) = W_TYPE_SIZE + 1 - __a - __clz_tab[__xr >> __a]; \
|
||||
} while (0)
|
||||
/* This version gives a well-defined value for zero. */
|
||||
#define COUNT_LEADING_ZEROS_0 (W_TYPE_SIZE - 1)
|
||||
#define COUNT_LEADING_ZEROS_NEED_CLZ_TAB
|
||||
#endif
|
||||
|
||||
#ifdef COUNT_LEADING_ZEROS_NEED_CLZ_TAB
|
||||
extern const unsigned char __GMP_DECLSPEC __clz_tab[128];
|
||||
#endif
|
||||
|
||||
#if !defined (count_trailing_zeros)
|
||||
/* Define count_trailing_zeros using count_leading_zeros. The latter might be
|
||||
defined in asm, but if it is not, the C version above is good enough. */
|
||||
#define count_trailing_zeros(count, x) \
|
||||
do { \
|
||||
UWtype __ctz_x = (x); \
|
||||
UWtype __ctz_c; \
|
||||
ASSERT (__ctz_x != 0); \
|
||||
count_leading_zeros (__ctz_c, __ctz_x & -__ctz_x); \
|
||||
(count) = W_TYPE_SIZE - 1 - __ctz_c; \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
#ifndef UDIV_NEEDS_NORMALIZATION
|
||||
#define UDIV_NEEDS_NORMALIZATION 0
|
||||
#endif
|
||||
|
||||
/* Whether udiv_qrnnd is actually implemented with udiv_qrnnd_preinv, and
|
||||
that hence the latter should always be used. */
|
||||
#ifndef UDIV_PREINV_ALWAYS
|
||||
#define UDIV_PREINV_ALWAYS 0
|
||||
#endif
|
1407
yasm/config/config.guess
vendored
1407
yasm/config/config.guess
vendored
File diff suppressed because it is too large
Load Diff
1504
yasm/config/config.sub
vendored
1504
yasm/config/config.sub
vendored
File diff suppressed because it is too large
Load Diff
@ -1,10 +1,10 @@
|
||||
s/"\([^"]*\)"/“\1”/g
|
||||
s/`\([^`']*\)'/‘\1’/g
|
||||
s/ '\([^`']*\)' / ‘\1’ /g
|
||||
s/ '\([^`']*\)'$/ ‘\1’/g
|
||||
s/^'\([^`']*\)' /‘\1’ /g
|
||||
s/“”/""/g
|
||||
s/“/“[1m/g
|
||||
s/”/[0m”/g
|
||||
s/‘/‘[1m/g
|
||||
s/’/[0m’/g
|
||||
s/"\([^"]*\)"/“\1”/g
|
||||
s/`\([^`']*\)'/‘\1’/g
|
||||
s/ '\([^`']*\)' / ‘\1’ /g
|
||||
s/ '\([^`']*\)'$/ ‘\1’/g
|
||||
s/^'\([^`']*\)' /‘\1’ /g
|
||||
s/“”/""/g
|
||||
s/“/“[1m/g
|
||||
s/”/[0m”/g
|
||||
s/‘/‘[1m/g
|
||||
s/’/[0m’/g
|
||||
|
@ -1,6 +1,6 @@
|
||||
s/"\([^"]*\)"/“\1”/g
|
||||
s/`\([^`']*\)'/‘\1’/g
|
||||
s/ '\([^`']*\)' / ‘\1’ /g
|
||||
s/ '\([^`']*\)'$/ ‘\1’/g
|
||||
s/^'\([^`']*\)' /‘\1’ /g
|
||||
s/“”/""/g
|
||||
s/"\([^"]*\)"/“\1”/g
|
||||
s/`\([^`']*\)'/‘\1’/g
|
||||
s/ '\([^`']*\)' / ‘\1’ /g
|
||||
s/ '\([^`']*\)'$/ ‘\1’/g
|
||||
s/^'\([^`']*\)' /‘\1’ /g
|
||||
s/“”/""/g
|
||||
|
Loading…
Reference in New Issue
Block a user