summaryrefslogtreecommitdiffstats
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/lib/libgmp/config/mt-linux1
-rw-r--r--gnu/lib/libgmp/config/mt-m881101
-rw-r--r--gnu/lib/libgmp/config/mt-sprc8-gcc1
-rw-r--r--gnu/lib/libgmp/config/mt-supspc-gcc1
-rw-r--r--gnu/lib/libgmp/demos/factorize.c233
-rw-r--r--gnu/lib/libgmp/doc/Makefile7
-rw-r--r--gnu/lib/libgmp/mpbsd/Makefile.in84
-rw-r--r--gnu/lib/libgmp/mpbsd/configure.in20
-rw-r--r--gnu/lib/libgmp/mpbsd/itom.c54
-rw-r--r--gnu/lib/libgmp/mpbsd/mdiv.c39
-rw-r--r--gnu/lib/libgmp/mpbsd/mfree.c36
-rw-r--r--gnu/lib/libgmp/mpbsd/min.c89
-rw-r--r--gnu/lib/libgmp/mpbsd/mout.c96
-rw-r--r--gnu/lib/libgmp/mpbsd/move.c46
-rw-r--r--gnu/lib/libgmp/mpbsd/mtox.c81
-rw-r--r--gnu/lib/libgmp/mpbsd/realloc.c44
-rw-r--r--gnu/lib/libgmp/mpbsd/sdiv.c77
-rw-r--r--gnu/lib/libgmp/mpbsd/xtom.c110
-rw-r--r--gnu/lib/libgmp/mpf/Makefile.in115
-rw-r--r--gnu/lib/libgmp/mpf/abs.c56
-rw-r--r--gnu/lib/libgmp/mpf/add.c180
-rw-r--r--gnu/lib/libgmp/mpf/add_ui.c151
-rw-r--r--gnu/lib/libgmp/mpf/clear.c35
-rw-r--r--gnu/lib/libgmp/mpf/cmp.c114
-rw-r--r--gnu/lib/libgmp/mpf/cmp_si.c98
-rw-r--r--gnu/lib/libgmp/mpf/cmp_ui.c80
-rw-r--r--gnu/lib/libgmp/mpf/configure.in12
-rw-r--r--gnu/lib/libgmp/mpf/div.c144
-rw-r--r--gnu/lib/libgmp/mpf/div_2exp.c79
-rw-r--r--gnu/lib/libgmp/mpf/div_ui.c91
-rw-r--r--gnu/lib/libgmp/mpf/dump.c43
-rw-r--r--gnu/lib/libgmp/mpf/eq.c121
-rw-r--r--gnu/lib/libgmp/mpf/get_d.c54
-rw-r--r--gnu/lib/libgmp/mpf/get_prc.c34
-rw-r--r--gnu/lib/libgmp/mpf/get_str.c500
-rw-r--r--gnu/lib/libgmp/mpf/init.c38
-rw-r--r--gnu/lib/libgmp/mpf/init2.c41
-rw-r--r--gnu/lib/libgmp/mpf/inp_str.c89
-rw-r--r--gnu/lib/libgmp/mpf/iset.c59
-rw-r--r--gnu/lib/libgmp/mpf/iset_d.c39
-rw-r--r--gnu/lib/libgmp/mpf/iset_si.c55
-rw-r--r--gnu/lib/libgmp/mpf/iset_str.c40
-rw-r--r--gnu/lib/libgmp/mpf/iset_ui.c40
-rw-r--r--gnu/lib/libgmp/mpf/mul.c94
-rw-r--r--gnu/lib/libgmp/mpf/mul_2exp.c89
-rw-r--r--gnu/lib/libgmp/mpf/mul_ui.c74
-rw-r--r--gnu/lib/libgmp/mpf/neg.c59
-rw-r--r--gnu/lib/libgmp/mpf/out_str.c89
-rw-r--r--gnu/lib/libgmp/mpf/random2.c65
-rw-r--r--gnu/lib/libgmp/mpf/reldiff.c52
-rw-r--r--gnu/lib/libgmp/mpf/set.c53
-rw-r--r--gnu/lib/libgmp/mpf/set_d.c47
-rw-r--r--gnu/lib/libgmp/mpf/set_dfl_prec.c40
-rw-r--r--gnu/lib/libgmp/mpf/set_prc.c57
-rw-r--r--gnu/lib/libgmp/mpf/set_prc_raw.c39
-rw-r--r--gnu/lib/libgmp/mpf/set_q.c170
-rw-r--r--gnu/lib/libgmp/mpf/set_si.c51
-rw-r--r--gnu/lib/libgmp/mpf/set_str.c302
-rw-r--r--gnu/lib/libgmp/mpf/set_ui.c45
-rw-r--r--gnu/lib/libgmp/mpf/set_z.c54
-rw-r--r--gnu/lib/libgmp/mpf/size.c35
-rw-r--r--gnu/lib/libgmp/mpf/sqrt.c75
-rw-r--r--gnu/lib/libgmp/mpf/sqrt_ui.c61
-rw-r--r--gnu/lib/libgmp/mpf/sub.c402
-rw-r--r--gnu/lib/libgmp/mpf/sub_ui.c49
-rw-r--r--gnu/lib/libgmp/mpf/tests/Makefile.in75
-rw-r--r--gnu/lib/libgmp/mpf/tests/configure.in11
-rw-r--r--gnu/lib/libgmp/mpf/tests/ref.c203
-rw-r--r--gnu/lib/libgmp/mpf/tests/reuse.c186
-rw-r--r--gnu/lib/libgmp/mpf/tests/t-add.c117
-rw-r--r--gnu/lib/libgmp/mpf/tests/t-conv.c120
-rw-r--r--gnu/lib/libgmp/mpf/tests/t-dm2exp.c101
-rw-r--r--gnu/lib/libgmp/mpf/tests/t-muldiv.c161
-rw-r--r--gnu/lib/libgmp/mpf/tests/t-sqrt.c103
-rw-r--r--gnu/lib/libgmp/mpf/tests/t-sub.c122
-rw-r--r--gnu/lib/libgmp/mpf/ui_div.c131
-rw-r--r--gnu/lib/libgmp/mpf/ui_sub.c334
-rw-r--r--gnu/lib/libgmp/mpn/Makefile.in92
-rw-r--r--gnu/lib/libgmp/mpn/README15
-rw-r--r--gnu/lib/libgmp/mpn/bsd.h5
-rw-r--r--gnu/lib/libgmp/mpn/config/t-oldgas1
-rw-r--r--gnu/lib/libgmp/mpn/config/t-ppc-aix1
-rw-r--r--gnu/lib/libgmp/mpn/config/t-pwr-aix1
-rw-r--r--gnu/lib/libgmp/mpn/configure.in178
-rw-r--r--gnu/lib/libgmp/mpn/generic/add_n.c62
-rw-r--r--gnu/lib/libgmp/mpn/generic/addmul_1.c65
-rw-r--r--gnu/lib/libgmp/mpn/generic/bdivmod.c129
-rw-r--r--gnu/lib/libgmp/mpn/generic/cmp.c56
-rw-r--r--gnu/lib/libgmp/mpn/generic/divmod_1.c208
-rw-r--r--gnu/lib/libgmp/mpn/generic/divrem.c245
-rw-r--r--gnu/lib/libgmp/mpn/generic/divrem_1.c58
-rw-r--r--gnu/lib/libgmp/mpn/generic/dump.c20
-rw-r--r--gnu/lib/libgmp/mpn/generic/gcd.c402
-rw-r--r--gnu/lib/libgmp/mpn/generic/gcd_1.c73
-rw-r--r--gnu/lib/libgmp/mpn/generic/gcdext.c441
-rw-r--r--gnu/lib/libgmp/mpn/generic/get_str.c211
-rw-r--r--gnu/lib/libgmp/mpn/generic/gmp-mparam.h27
-rw-r--r--gnu/lib/libgmp/mpn/generic/hamdist.c88
-rw-r--r--gnu/lib/libgmp/mpn/generic/inlines.c3
-rw-r--r--gnu/lib/libgmp/mpn/generic/lshift.c87
-rw-r--r--gnu/lib/libgmp/mpn/generic/mod_1.c197
-rw-r--r--gnu/lib/libgmp/mpn/generic/mul.c152
-rw-r--r--gnu/lib/libgmp/mpn/generic/mul_1.c59
-rw-r--r--gnu/lib/libgmp/mpn/generic/mul_n.c401
-rw-r--r--gnu/lib/libgmp/mpn/generic/perfsqr.c138
-rw-r--r--gnu/lib/libgmp/mpn/generic/popcount.c87
-rw-r--r--gnu/lib/libgmp/mpn/generic/pre_mod_1.c69
-rw-r--r--gnu/lib/libgmp/mpn/generic/random2.c93
-rw-r--r--gnu/lib/libgmp/mpn/generic/rshift.c88
-rw-r--r--gnu/lib/libgmp/mpn/generic/scan0.c62
-rw-r--r--gnu/lib/libgmp/mpn/generic/scan1.c62
-rw-r--r--gnu/lib/libgmp/mpn/generic/set_str.c154
-rw-r--r--gnu/lib/libgmp/mpn/generic/sqrtrem.c498
-rw-r--r--gnu/lib/libgmp/mpn/generic/sub_n.c62
-rw-r--r--gnu/lib/libgmp/mpn/generic/submul_1.c65
-rw-r--r--gnu/lib/libgmp/mpn/generic/udiv_w_sdiv.c125
-rw-r--r--gnu/lib/libgmp/mpn/mp_bases.c549
-rw-r--r--gnu/lib/libgmp/mpn/tests/add_n.c211
-rw-r--r--gnu/lib/libgmp/mpn/tests/addmul_1.c223
-rw-r--r--gnu/lib/libgmp/mpn/tests/divmod_1.c120
-rw-r--r--gnu/lib/libgmp/mpn/tests/divrem.c129
-rw-r--r--gnu/lib/libgmp/mpn/tests/lshift.c226
-rw-r--r--gnu/lib/libgmp/mpn/tests/mul_1.c212
-rw-r--r--gnu/lib/libgmp/mpn/tests/rshift.c227
-rw-r--r--gnu/lib/libgmp/mpn/tests/sub_n.c211
-rw-r--r--gnu/lib/libgmp/mpn/tests/submul_1.c218
-rw-r--r--gnu/lib/libgmp/mpn/tests/tst-addsub.c164
-rw-r--r--gnu/lib/libgmp/mpn/x86/add_n.S106
-rw-r--r--gnu/lib/libgmp/mpn/x86/addmul_1.S76
-rw-r--r--gnu/lib/libgmp/mpn/x86/lshift.S85
-rw-r--r--gnu/lib/libgmp/mpn/x86/mul_1.S75
-rw-r--r--gnu/lib/libgmp/mpn/x86/pentium/README26
-rw-r--r--gnu/lib/libgmp/mpn/x86/pentium/add_n.S130
-rw-r--r--gnu/lib/libgmp/mpn/x86/pentium/addmul_1.S83
-rw-r--r--gnu/lib/libgmp/mpn/x86/pentium/lshift.S217
-rw-r--r--gnu/lib/libgmp/mpn/x86/pentium/mul_1.S79
-rw-r--r--gnu/lib/libgmp/mpn/x86/pentium/rshift.S217
-rw-r--r--gnu/lib/libgmp/mpn/x86/pentium/sub_n.S130
-rw-r--r--gnu/lib/libgmp/mpn/x86/pentium/submul_1.S83
-rw-r--r--gnu/lib/libgmp/mpn/x86/rshift.S87
-rw-r--r--gnu/lib/libgmp/mpn/x86/sub_n.S106
-rw-r--r--gnu/lib/libgmp/mpn/x86/submul_1.S76
-rw-r--r--gnu/lib/libgmp/mpn/x86/syntax.h62
-rw-r--r--gnu/lib/libgmp/mpq/Makefile.in81
-rw-r--r--gnu/lib/libgmp/mpq/add.c85
-rw-r--r--gnu/lib/libgmp/mpq/canonicalize.c53
-rw-r--r--gnu/lib/libgmp/mpq/clear.c37
-rw-r--r--gnu/lib/libgmp/mpq/cmp.c120
-rw-r--r--gnu/lib/libgmp/mpq/cmp_ui.c84
-rw-r--r--gnu/lib/libgmp/mpq/configure.in12
-rw-r--r--gnu/lib/libgmp/mpq/div.c93
-rw-r--r--gnu/lib/libgmp/mpq/equal.c43
-rw-r--r--gnu/lib/libgmp/mpq/get_d.c151
-rw-r--r--gnu/lib/libgmp/mpq/get_den.c41
-rw-r--r--gnu/lib/libgmp/mpq/get_num.c42
-rw-r--r--gnu/lib/libgmp/mpq/init.c40
-rw-r--r--gnu/lib/libgmp/mpq/inv.c75
-rw-r--r--gnu/lib/libgmp/mpq/mul.c79
-rw-r--r--gnu/lib/libgmp/mpq/neg.c36
-rw-r--r--gnu/lib/libgmp/mpq/set.c49
-rw-r--r--gnu/lib/libgmp/mpq/set_den.c42
-rw-r--r--gnu/lib/libgmp/mpq/set_num.c42
-rw-r--r--gnu/lib/libgmp/mpq/set_si.c54
-rw-r--r--gnu/lib/libgmp/mpq/set_ui.c50
-rw-r--r--gnu/lib/libgmp/mpq/set_z.c46
-rw-r--r--gnu/lib/libgmp/mpq/sub.c85
-rw-r--r--gnu/lib/libgmp/mpq/tests/Makefile.in48
-rw-r--r--gnu/lib/libgmp/mpq/tests/configure.in11
-rw-r--r--gnu/lib/libgmp/mpq/tests/t-cmp.c109
-rw-r--r--gnu/lib/libgmp/mpq/tests/t-cmp_ui.c102
-rw-r--r--gnu/lib/libgmp/mpq/tests/t-get_d.c88
-rw-r--r--gnu/lib/libgmp/mpz/Makefile.in180
-rw-r--r--gnu/lib/libgmp/mpz/abs.c51
-rw-r--r--gnu/lib/libgmp/mpz/add.c120
-rw-r--r--gnu/lib/libgmp/mpz/add_ui.c84
-rw-r--r--gnu/lib/libgmp/mpz/and.c278
-rw-r--r--gnu/lib/libgmp/mpz/array_init.c48
-rw-r--r--gnu/lib/libgmp/mpz/cdiv_q.c51
-rw-r--r--gnu/lib/libgmp/mpz/cdiv_q_ui.c64
-rw-r--r--gnu/lib/libgmp/mpz/cdiv_qr.c62
-rw-r--r--gnu/lib/libgmp/mpz/cdiv_qr_ui.c68
-rw-r--r--gnu/lib/libgmp/mpz/cdiv_r.c59
-rw-r--r--gnu/lib/libgmp/mpz/cdiv_r_ui.c54
-rw-r--r--gnu/lib/libgmp/mpz/cdiv_ui.c50
-rw-r--r--gnu/lib/libgmp/mpz/clear.c35
-rw-r--r--gnu/lib/libgmp/mpz/clrbit.c114
-rw-r--r--gnu/lib/libgmp/mpz/cmp.c75
-rw-r--r--gnu/lib/libgmp/mpz/cmp_si.c66
-rw-r--r--gnu/lib/libgmp/mpz/cmp_ui.c56
-rw-r--r--gnu/lib/libgmp/mpz/com.c93
-rw-r--r--gnu/lib/libgmp/mpz/configure.in12
-rw-r--r--gnu/lib/libgmp/mpz/divexact.c112
-rw-r--r--gnu/lib/libgmp/mpz/dmincl.c201
-rw-r--r--gnu/lib/libgmp/mpz/fac_ui.c157
-rw-r--r--gnu/lib/libgmp/mpz/fdiv_q.c51
-rw-r--r--gnu/lib/libgmp/mpz/fdiv_q_2exp.c94
-rw-r--r--gnu/lib/libgmp/mpz/fdiv_q_ui.c62
-rw-r--r--gnu/lib/libgmp/mpz/fdiv_qr.c62
-rw-r--r--gnu/lib/libgmp/mpz/fdiv_qr_ui.c66
-rw-r--r--gnu/lib/libgmp/mpz/fdiv_r.c58
-rw-r--r--gnu/lib/libgmp/mpz/fdiv_r_2exp.c88
-rw-r--r--gnu/lib/libgmp/mpz/fdiv_r_ui.c52
-rw-r--r--gnu/lib/libgmp/mpz/fdiv_ui.c48
-rw-r--r--gnu/lib/libgmp/mpz/gcd.c178
-rw-r--r--gnu/lib/libgmp/mpz/gcd_ui.c64
-rw-r--r--gnu/lib/libgmp/mpz/gcdext.c88
-rw-r--r--gnu/lib/libgmp/mpz/get_d.c54
-rw-r--r--gnu/lib/libgmp/mpz/get_si.c43
-rw-r--r--gnu/lib/libgmp/mpz/get_str.c118
-rw-r--r--gnu/lib/libgmp/mpz/get_ui.c37
-rw-r--r--gnu/lib/libgmp/mpz/getlimbn.c38
-rw-r--r--gnu/lib/libgmp/mpz/hamdist.c62
-rw-r--r--gnu/lib/libgmp/mpz/init.c36
-rw-r--r--gnu/lib/libgmp/mpz/inp_raw.c101
-rw-r--r--gnu/lib/libgmp/mpz/inp_str.c138
-rw-r--r--gnu/lib/libgmp/mpz/invert.c43
-rw-r--r--gnu/lib/libgmp/mpz/ior.c243
-rw-r--r--gnu/lib/libgmp/mpz/iset.c49
-rw-r--r--gnu/lib/libgmp/mpz/iset_d.c39
-rw-r--r--gnu/lib/libgmp/mpz/iset_si.c49
-rw-r--r--gnu/lib/libgmp/mpz/iset_str.c44
-rw-r--r--gnu/lib/libgmp/mpz/iset_ui.c39
-rw-r--r--gnu/lib/libgmp/mpz/jacobi.c53
-rw-r--r--gnu/lib/libgmp/mpz/legendre.c184
-rw-r--r--gnu/lib/libgmp/mpz/mod.c63
-rw-r--r--gnu/lib/libgmp/mpz/mul.c127
-rw-r--r--gnu/lib/libgmp/mpz/mul_2exp.c76
-rw-r--r--gnu/lib/libgmp/mpz/mul_ui.c64
-rw-r--r--gnu/lib/libgmp/mpz/neg.c53
-rw-r--r--gnu/lib/libgmp/mpz/out_raw.c89
-rw-r--r--gnu/lib/libgmp/mpz/out_str.c108
-rw-r--r--gnu/lib/libgmp/mpz/perfsqr.c41
-rw-r--r--gnu/lib/libgmp/mpz/popcount.c42
-rw-r--r--gnu/lib/libgmp/mpz/pow_ui.c129
-rw-r--r--gnu/lib/libgmp/mpz/powm.c276
-rw-r--r--gnu/lib/libgmp/mpz/powm_ui.c234
-rw-r--r--gnu/lib/libgmp/mpz/pprime_p.c115
-rw-r--r--gnu/lib/libgmp/mpz/random.c56
-rw-r--r--gnu/lib/libgmp/mpz/random2.c48
-rw-r--r--gnu/lib/libgmp/mpz/realloc.c52
-rw-r--r--gnu/lib/libgmp/mpz/scan0.c35
-rw-r--r--gnu/lib/libgmp/mpz/scan1.c35
-rw-r--r--gnu/lib/libgmp/mpz/set.c48
-rw-r--r--gnu/lib/libgmp/mpz/set_d.c93
-rw-r--r--gnu/lib/libgmp/mpz/set_f.c64
-rw-r--r--gnu/lib/libgmp/mpz/set_q.c36
-rw-r--r--gnu/lib/libgmp/mpz/set_si.c48
-rw-r--r--gnu/lib/libgmp/mpz/set_str.c132
-rw-r--r--gnu/lib/libgmp/mpz/set_ui.c43
-rw-r--r--gnu/lib/libgmp/mpz/setbit.c113
-rw-r--r--gnu/lib/libgmp/mpz/size.c35
-rw-r--r--gnu/lib/libgmp/mpz/sizeinbase.c60
-rw-r--r--gnu/lib/libgmp/mpz/sqrt.c85
-rw-r--r--gnu/lib/libgmp/mpz/sqrtrem.c107
-rw-r--r--gnu/lib/libgmp/mpz/sub.c120
-rw-r--r--gnu/lib/libgmp/mpz/sub_ui.c84
-rw-r--r--gnu/lib/libgmp/mpz/tdiv_q.c133
-rw-r--r--gnu/lib/libgmp/mpz/tdiv_q_2exp.c68
-rw-r--r--gnu/lib/libgmp/mpz/tdiv_q_ui.c63
-rw-r--r--gnu/lib/libgmp/mpz/tdiv_qr.c39
-rw-r--r--gnu/lib/libgmp/mpz/tdiv_qr_ui.c78
-rw-r--r--gnu/lib/libgmp/mpz/tdiv_r.c37
-rw-r--r--gnu/lib/libgmp/mpz/tdiv_r_2exp.c79
-rw-r--r--gnu/lib/libgmp/mpz/tdiv_r_ui.c64
-rw-r--r--gnu/lib/libgmp/mpz/tests/Makefile.in126
-rw-r--r--gnu/lib/libgmp/mpz/tests/configure.in11
-rw-r--r--gnu/lib/libgmp/mpz/tests/convert.c80
-rw-r--r--gnu/lib/libgmp/mpz/tests/dive.c87
-rw-r--r--gnu/lib/libgmp/mpz/tests/io-binary.c76
-rw-r--r--gnu/lib/libgmp/mpz/tests/io.c86
-rw-r--r--gnu/lib/libgmp/mpz/tests/logic.c103
-rw-r--r--gnu/lib/libgmp/mpz/tests/reuse.c135
-rw-r--r--gnu/lib/libgmp/mpz/tests/t-fdiv.c118
-rw-r--r--gnu/lib/libgmp/mpz/tests/t-fdiv_ui.c117
-rw-r--r--gnu/lib/libgmp/mpz/tests/t-gcd.c132
-rw-r--r--gnu/lib/libgmp/mpz/tests/t-gcd2.c137
-rw-r--r--gnu/lib/libgmp/mpz/tests/t-mul.c261
-rw-r--r--gnu/lib/libgmp/mpz/tests/t-powm.c125
-rw-r--r--gnu/lib/libgmp/mpz/tests/t-powm_ui.c120
-rw-r--r--gnu/lib/libgmp/mpz/tests/t-sqrtrem.c98
-rw-r--r--gnu/lib/libgmp/mpz/tests/t-tdiv.c118
-rw-r--r--gnu/lib/libgmp/mpz/tests/t-tdiv_ui.c117
-rw-r--r--gnu/lib/libgmp/mpz/ui_pow_ui.c111
-rw-r--r--gnu/lib/libgmp/tests/Makefile66
-rw-r--r--gnu/lib/libgmp/tests/Makefile.GNU64
-rw-r--r--gnu/lib/libgmp/tests/tst-convert.c80
-rw-r--r--gnu/lib/libgmp/tests/tst-dm.c117
-rw-r--r--gnu/lib/libgmp/tests/tst-dm_ui.c116
-rw-r--r--gnu/lib/libgmp/tests/tst-gcd.c131
-rw-r--r--gnu/lib/libgmp/tests/tst-mdm.c117
-rw-r--r--gnu/lib/libgmp/tests/tst-mdm_ui.c116
-rw-r--r--gnu/lib/libgmp/tests/tst-mul.c261
-rw-r--r--gnu/lib/libgmp/tests/tst-pow_ui.c120
-rw-r--r--gnu/lib/libgmp/tests/tst-sqrtrem.c97
-rw-r--r--gnu/lib/libgmp/tests/urandom.h17
295 files changed, 0 insertions, 28803 deletions
diff --git a/gnu/lib/libgmp/config/mt-linux b/gnu/lib/libgmp/config/mt-linux
deleted file mode 100644
index 476d8b5..0000000
--- a/gnu/lib/libgmp/config/mt-linux
+++ /dev/null
@@ -1 +0,0 @@
-AR_FLAGS = qc
diff --git a/gnu/lib/libgmp/config/mt-m88110 b/gnu/lib/libgmp/config/mt-m88110
deleted file mode 100644
index 071f8fa..0000000
--- a/gnu/lib/libgmp/config/mt-m88110
+++ /dev/null
@@ -1 +0,0 @@
-XCFLAGS = -m88110
diff --git a/gnu/lib/libgmp/config/mt-sprc8-gcc b/gnu/lib/libgmp/config/mt-sprc8-gcc
deleted file mode 100644
index bc706a9..0000000
--- a/gnu/lib/libgmp/config/mt-sprc8-gcc
+++ /dev/null
@@ -1 +0,0 @@
-XCFLAGS = -mv8
diff --git a/gnu/lib/libgmp/config/mt-supspc-gcc b/gnu/lib/libgmp/config/mt-supspc-gcc
deleted file mode 100644
index 92a0924..0000000
--- a/gnu/lib/libgmp/config/mt-supspc-gcc
+++ /dev/null
@@ -1 +0,0 @@
-XCFLAGS = -mv8 -DSUPERSPARC
diff --git a/gnu/lib/libgmp/demos/factorize.c b/gnu/lib/libgmp/demos/factorize.c
deleted file mode 100644
index 4a965d3..0000000
--- a/gnu/lib/libgmp/demos/factorize.c
+++ /dev/null
@@ -1,233 +0,0 @@
-/* Factoring with Pollard's rho method.
-
- Copyright (C) 1995 Free Software Foundation, Inc.
-
-This program is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License as published by the
-Free Software Foundation; either version 2, or (at your option) any
-later version.
-
-This program 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
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License along
-with this program; see the file COPYING. If not, write to the Free Software
-Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-
-int flag_mersenne = 0;
-
-static unsigned add[] = {4, 2, 4, 2, 4, 6, 2, 6};
-
-factor_using_division (t, limit)
- mpz_t t;
- unsigned int limit;
-{
- mpz_t q, r;
- unsigned long int f;
- int i, ai;
- unsigned *addv = add;
-
- mpz_init (q);
- mpz_init (r);
-
- if (mpz_probab_prime_p (t, 50))
- goto ready;
-
- for (;;)
- {
- mpz_tdiv_qr_ui (q, r, t, 2);
- if (mpz_cmp_ui (r, 0) != 0)
- break;
- mpz_set (t, q);
- printf ("2 ");
- fflush (stdout);
- if (mpz_probab_prime_p (t, 50))
- goto ready;
- }
-
- for (;;)
- {
- mpz_tdiv_qr_ui (q, r, t, 3);
- if (mpz_cmp_ui (r, 0) != 0)
- break;
- mpz_set (t, q);
- printf ("3 ");
- fflush (stdout);
- if (mpz_probab_prime_p (t, 50))
- goto ready;
- }
-
- for (;;)
- {
- mpz_tdiv_qr_ui (q, r, t, 5);
- if (mpz_cmp_ui (r, 0) != 0)
- break;
- mpz_set (t, q);
- printf ("5 ");
- fflush (stdout);
- if (mpz_probab_prime_p (t, 50))
- goto ready;
- }
-
- f = 7;
- ai = 0;
- for (;;)
- {
- mpz_tdiv_qr_ui (q, r, t, f);
- if (mpz_cmp_ui (r, 0) != 0)
- {
- f += addv[ai];
- if (f > limit)
- goto ret;
- ai = (ai + 1) & 7;
- }
- else
- {
- mpz_set (t, q);
- printf ("%lu ", f);
- fflush (stdout);
- if (mpz_probab_prime_p (t, 50))
- goto ready;
- }
- }
-
- ready:
- mpz_out_str (stdout, 10, t);
- fflush (stdout);
- mpz_set_ui (t, 1);
- fputc (' ', stdout);
- ret:
- mpz_clear (q);
- mpz_clear (r);
-}
-
-void
-factor_using_pollard_rho (m, a_int, x0, p)
- mpz_t m;
- long a_int;
- long x0;
- unsigned long p;
-{
- mpz_t x, y, q;
- mpz_t a;
- mpz_t d;
- mpz_t tmp;
- mpz_t n;
- int i = 1;
- int j = 1;
-
- mpz_init_set (n, m);
-
- mpz_init (d);
- mpz_init_set_ui (q, 1);
- mpz_init (tmp);
-
- mpz_init_set_si (a, a_int);
- mpz_init_set_si (x, x0);
- mpz_init_set_si (y, x0);
-
- while (mpz_cmp_ui (n, 1) != 0)
- {
- if (flag_mersenne)
- {
- mpz_powm_ui (x, x, p, n); mpz_add (x, x, a);
- mpz_powm_ui (y, y, p, n); mpz_add (y, y, a);
- mpz_powm_ui (y, y, p, n); mpz_add (y, y, a);
- }
- else
- {
- mpz_mul (x, x, x); mpz_add (x, x, a); mpz_mod (x, x, n);
- mpz_mul (y, y, y); mpz_add (y, y, a); mpz_mod (y, y, n);
- mpz_mul (y, y, y); mpz_add (y, y, a); mpz_mod (y, y, n);
- }
-
- if (mpz_cmp (x, y) > 0)
- mpz_sub (tmp, x, y);
- else
- mpz_sub (tmp, y, x);
- mpz_mul (q, q, tmp);
- mpz_mod (q, q, n);
-
- if (++i % j == 0)
- {
- j += 1;
- mpz_gcd (d, q, n);
- if (mpz_cmp_ui (d, 1) != 0)
- {
- if (!mpz_probab_prime_p (d, 50))
- factor_using_pollard_rho (d, (random () & 31) - 16,
- (random () & 31), p);
- else
- {
- mpz_out_str (stdout, 10, d);
- fflush (stdout);
- fputc (' ', stdout);
- }
- mpz_div (n, n, d);
- if (mpz_probab_prime_p (n, 50))
- {
- mpz_out_str (stdout, 10, n);
- fflush (stdout);
- fputc (' ', stdout);
- break;
- }
- }
- }
- }
-
- mpz_clear (n);
- mpz_clear (d);
- mpz_clear (q);
- mpz_clear (tmp);
- mpz_clear (a);
- mpz_clear (x);
- mpz_clear (y);
-}
-
-factor (t, a, x0, p)
- mpz_t t;
- long a;
- long x0;
- unsigned long p;
-{
- factor_using_division (t, 1000000);
- factor_using_pollard_rho (t, a, x0, p);
-}
-
-main (argc, argv)
- int argc;
- char *argv[];
-{
- mpz_t t;
- long x0, a;
- unsigned long p;
- int i;
-
- for (i = 1; i < argc; i++)
- {
- if (!strncmp (argv[i], "-Mp", 3))
- {
- p = atoi (argv[i] + 3);
- mpz_init_set_ui (t, 1);
- mpz_mul_2exp (t, t, p);
- mpz_sub_ui (t, t, 1);
- flag_mersenne = 1;
- }
- else
- {
- p = 0;
- mpz_init_set_str (t, argv[i], 0);
- }
-
- a = -1;
- x0 = 3;
-
- factor (t, a, x0, p);
- puts ("");
- }
-}
diff --git a/gnu/lib/libgmp/doc/Makefile b/gnu/lib/libgmp/doc/Makefile
deleted file mode 100644
index 3d1f0fe..0000000
--- a/gnu/lib/libgmp/doc/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-# $Id$
-
-INFO= gmp
-
-.PATH: ${.CURDIR}/..
-
-.include <bsd.info.mk>
diff --git a/gnu/lib/libgmp/mpbsd/Makefile.in b/gnu/lib/libgmp/mpbsd/Makefile.in
deleted file mode 100644
index a517c1a..0000000
--- a/gnu/lib/libgmp/mpbsd/Makefile.in
+++ /dev/null
@@ -1,84 +0,0 @@
-# Makefile for GNU MP/mpbsd functions
-# Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-# This file is part of the GNU MP Library.
-
-# The GNU MP Library is free software; you can redistribute it and/or modify
-# it under the terms of the GNU Library General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or (at your
-# option) any later version.
-
-# The GNU MP Library 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 Library General Public
-# License for more details.
-
-# You should have received a copy of the GNU Library General Public License
-# along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-# MA 02111-1307, USA.
-
-srcdir = .
-
-CC = gcc
-
-# If you cross compile on a machine with the same sizes of the integral
-# types ("int", "long int", "short int", and "char") define this as the
-# local compiler. Otherwise, you need to look for the uses of LOCAL_CC below,
-# and handle those cases manually.
-LOCAL_CC = $(CC)
-CFLAGS = -g -O
-AR = ar
-SHELL = /bin/sh
-
-#### host and target specific makefile fragments come in here.
-###
-
-MPBSD_LINKS = add.c cmp.c gcd.c mul.c pow_ui.c powm.c sqrtrem.c sub.c
-MPBSD_SRCS = itom.c mdiv.c mfree.c min.c mout.c move.c mtox.c sdiv.c xtom.c \
- realloc.c $(MPBSD_LINKS)
-
-MPBSD_OBJS = itom.o mdiv.o mfree.o min.o mout.o move.o mtox.o sdiv.o xtom.o \
- realloc.o add.o cmp.o gcd.o mul.o pow_ui.o powm.o sqrtrem.o sub.o
-
-INCLUDES = -I. -I.. -I$(srcdir)/../mpz -I../mpn -I$(srcdir)/..
-
-libmpbsd.a: Makefile.in $(MPBSD_OBJS)
- rm -f $@
- $(AR) cr $@ $(MPBSD_OBJS)
-
-.c.o:
- $(CC) -c $(INCLUDES) -DBERKELEY_MP $(CFLAGS) $(XCFLAGS) $<
-
-check:
- true
-
-clean mostlyclean:
- rm -f *.o libmpbsd.a
-distclean maintainer-clean: clean
- rm -f Makefile config.status $(MPBSD_LINKS)
-
-Makefile: $(srcdir)/Makefile.in
- $(SHELL) ./config.status
-
-H = $(srcdir)/../gmp.h $(srcdir)/../gmp-impl.h ../mpn/gmp-mparam.h
-L = $(srcdir)/../longlong.h
-
-itom.o: $(srcdir)/itom.c ../mp.h $(H)
-mdiv.o: $(srcdir)/mdiv.c ../mp.h $(H) $(L) $(srcdir)/../mpz/dmincl.c
-mfree.o: $(srcdir)/mfree.c ../mp.h $(H)
-min.o: $(srcdir)/min.c ../mp.h $(H)
-mout.o: $(srcdir)/mout.c ../mp.h $(H)
-move.o: $(srcdir)/move.c ../mp.h $(H)
-mtox.o: $(srcdir)/mtox.c ../mp.h $(H)
-sdiv.o: $(srcdir)/sdiv.c ../mp.h $(H) $(L)
-xtom.o: $(srcdir)/xtom.c ../mp.h $(H)
-add.o: $(srcdir)/../mpz/add.c $(H)
-cmp.o: $(srcdir)/../mpz/cmp.c $(H)
-gcd.o: $(srcdir)/../mpz/gcd.c $(H) $(L)
-mul.o: $(srcdir)/../mpz/mul.c $(H)
-pow_ui.o: $(srcdir)/../mpz/pow_ui.c $(H) $(L)
-powm.o: $(srcdir)/../mpz/powm.c $(H) $(L)
-realloc.o: $(srcdir)/realloc.c $(H)
-sqrtrem.o: $(srcdir)/../mpz/sqrtrem.c $(H)
-sub.o: $(srcdir)/../mpz/sub.c $(H)
diff --git a/gnu/lib/libgmp/mpbsd/configure.in b/gnu/lib/libgmp/mpbsd/configure.in
deleted file mode 100644
index ec22075..0000000
--- a/gnu/lib/libgmp/mpbsd/configure.in
+++ /dev/null
@@ -1,20 +0,0 @@
-# This file is a shell script fragment that supplies the information
-# necessary for a configure script to process the program in
-# this directory. For more information, look at ../configure.
-
-configdirs=
-srctrigger=itom.c
-srcname="GNU Multi-Precision library/mpbsd"
-
-# per-host:
-
-# per-target:
-
-mpzfiles="add.c cmp.c gcd.c mul.c pow_ui.c powm.c sqrtrem.c sub.c"
-
-for fn in $mpzfiles
- do
- rm -f $fn
- files="$files ../mpz/$fn"
- links="$links $fn"
- done
diff --git a/gnu/lib/libgmp/mpbsd/itom.c b/gnu/lib/libgmp/mpbsd/itom.c
deleted file mode 100644
index 719a4dc..0000000
--- a/gnu/lib/libgmp/mpbsd/itom.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* itom -- BSD compatible allocate and initiate a MINT.
-
-Copyright (C) 1991, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "mp.h"
-#include "gmp.h"
-#include "gmp-impl.h"
-
-MINT *
-#if __STDC__
-itom (signed short int n)
-#else
-itom (n)
- short int n;
-#endif
-{
- MINT *x;
- mp_ptr xp;
-
- x = (MINT *) (*_mp_allocate_func) (sizeof (MINT));
- x->_mp_alloc = 1;
- x->_mp_d = xp = (mp_ptr) (*_mp_allocate_func) (BYTES_PER_MP_LIMB);
- if (n > 0)
- {
- x->_mp_size = 1;
- xp[0] = n;
- }
- else if (n < 0)
- {
- x->_mp_size = -1;
- xp[0] = -n;
- }
- else
- x->_mp_size = 0;
-
- return x;
-}
diff --git a/gnu/lib/libgmp/mpbsd/mdiv.c b/gnu/lib/libgmp/mpbsd/mdiv.c
deleted file mode 100644
index 103c2c3..0000000
--- a/gnu/lib/libgmp/mpbsd/mdiv.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* mdiv -- BSD compatible divide producing both remainder and quotient.
-
-Copyright (C) 1991, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "mp.h"
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-void
-#if __STDC__
-mdiv (const MINT *num, const MINT *den, MINT *quot, MINT *rem)
-#else
-mdiv (num, den, quot, rem)
- const MINT *num;
- const MINT *den;
- MINT *quot;
- MINT *rem;
-#endif
-
-#define COMPUTE_QUOTIENT
-#include "dmincl.c"
diff --git a/gnu/lib/libgmp/mpbsd/mfree.c b/gnu/lib/libgmp/mpbsd/mfree.c
deleted file mode 100644
index ef931e3..0000000
--- a/gnu/lib/libgmp/mpbsd/mfree.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* mfree -- BSD compatible mfree.
-
-Copyright (C) 1991, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "mp.h"
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mfree (MINT *m)
-#else
-mfree (m)
- MINT *m;
-#endif
-{
- (*_mp_free_func) (m->_mp_d, m->_mp_alloc * BYTES_PER_MP_LIMB);
- (*_mp_free_func) (m, sizeof (MINT));
-}
diff --git a/gnu/lib/libgmp/mpbsd/min.c b/gnu/lib/libgmp/mpbsd/min.c
deleted file mode 100644
index 6edb171..0000000
--- a/gnu/lib/libgmp/mpbsd/min.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/* min(MINT) -- Do decimal input from standard input and store result in
- MINT.
-
-Copyright (C) 1991, 1994 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include <ctype.h>
-#include "mp.h"
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-min (MINT *dest)
-#else
-min (dest)
- MINT *dest;
-#endif
-{
- char *str;
- size_t alloc_size, str_size;
- int c;
- int negative;
- mp_size_t dest_size;
-
- alloc_size = 100;
- str = (char *) (*_mp_allocate_func) (alloc_size);
- str_size = 0;
-
- /* Skip whitespace. */
- do
- c = getc (stdin);
- while (isspace (c));
-
- negative = 0;
- if (c == '-')
- {
- negative = 1;
- c = getc (stdin);
- }
-
- if (digit_value_in_base (c, 10) < 0)
- return; /* error if no digits */
-
- for (;;)
- {
- int dig;
- if (str_size >= alloc_size)
- {
- size_t old_alloc_size = alloc_size;
- alloc_size = alloc_size * 3 / 2;
- str = (char *) (*_mp_reallocate_func) (str, old_alloc_size, alloc_size);
- }
- dig = digit_value_in_base (c, 10);
- if (dig < 0)
- break;
- str[str_size++] = dig;
- c = getc (stdin);
- }
-
- ungetc (c, stdin);
-
- dest_size = str_size / __mp_bases[10].chars_per_limb + 1;
- if (dest->_mp_alloc < dest_size)
- _mp_realloc (dest, dest_size);
-
- dest_size = mpn_set_str (dest->_mp_d, (unsigned char *) str, str_size, 10);
- dest->_mp_size = negative ? -dest_size : dest_size;
-
- (*_mp_free_func) (str, alloc_size);
- return;
-}
diff --git a/gnu/lib/libgmp/mpbsd/mout.c b/gnu/lib/libgmp/mpbsd/mout.c
deleted file mode 100644
index a6b62be..0000000
--- a/gnu/lib/libgmp/mpbsd/mout.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/* mout(MINT) -- Do decimal output of MINT to standard output.
-
-Copyright (C) 1991, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "mp.h"
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mout (const MINT *x)
-#else
-mout (x)
- const MINT *x;
-#endif
-{
- mp_ptr xp;
- mp_size_t x_size = x->_mp_size;
- unsigned char *str;
- size_t str_size;
- char *num_to_text;
- int i;
- TMP_DECL (marker);
-
- if (x_size == 0)
- {
- fputc ('0', stdout);
- return;
- }
- if (x_size < 0)
- {
- fputc ('-', stdout);
- x_size = -x_size;
- }
-
- TMP_MARK (marker);
- str_size = ((size_t) (x_size * BITS_PER_MP_LIMB
- * __mp_bases[10].chars_per_bit_exactly)) + 3;
- str = (unsigned char *) TMP_ALLOC (str_size);
-
- /* Move the number to convert into temporary space, since mpn_get_str
- clobbers its argument + needs one extra high limb.... */
- xp = (mp_ptr) TMP_ALLOC ((x_size + 1) * BYTES_PER_MP_LIMB);
- MPN_COPY (xp, x->_mp_d, x_size);
-
- str_size = mpn_get_str (str, 10, xp, x_size);
-
- /* mpn_get_str might make some leading zeros. Skip them. */
- while (*str == 0)
- {
- str_size--;
- str++;
- }
-
- /* Translate to printable chars. */
- for (i = 0; i < str_size; i++)
- str[i] = "0123456789"[str[i]];
- str[str_size] = 0;
-
- str_size = strlen (str);
- if (str_size % 10 != 0)
- {
- fwrite (str, 1, str_size % 10, stdout);
- str += str_size % 10;
- str_size -= str_size % 10;
- if (str_size != 0)
- fputc (' ', stdout);
- }
- for (i = 0; i < str_size; i += 10)
- {
- fwrite (str, 1, 10, stdout);
- str += 10;
- if (i + 10 < str_size)
- fputc (' ', stdout);
- }
- fputc ('\n', stdout);
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpbsd/move.c b/gnu/lib/libgmp/mpbsd/move.c
deleted file mode 100644
index 8256cc7..0000000
--- a/gnu/lib/libgmp/mpbsd/move.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/* move -- BSD compatible assignment.
-
-Copyright (C) 1991, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "mp.h"
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-move (const MINT *u, MINT *w)
-#else
-move (u, w)
- const MINT *u;
- MINT *w;
-#endif
-{
- mp_size_t usize;
- mp_size_t abs_usize;
-
- usize = u->_mp_size;
- abs_usize = ABS (usize);
-
- if (w->_mp_alloc < abs_usize)
- _mp_realloc (w, abs_usize);
-
- w->_mp_size = usize;
- MPN_COPY (w->_mp_d, u->_mp_d, abs_usize);
-}
diff --git a/gnu/lib/libgmp/mpbsd/mtox.c b/gnu/lib/libgmp/mpbsd/mtox.c
deleted file mode 100644
index 8baec2a..0000000
--- a/gnu/lib/libgmp/mpbsd/mtox.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/* mtox -- Convert OPERAND to hexadecimal and return a malloc'ed string
- with the result of the conversion.
-
-Copyright (C) 1991, 1994 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "mp.h"
-#include "gmp.h"
-#include "gmp-impl.h"
-
-char *
-#if __STDC__
-mtox (const MINT *x)
-#else
-mtox (x)
- const MINT *x;
-#endif
-{
- mp_ptr xp;
- mp_size_t xsize = x->_mp_size;
- mp_size_t xsign;
- unsigned char *str, *s;
- size_t str_size, i;
- int zeros;
- char *num_to_text;
- TMP_DECL (marker);
-
- if (xsize == 0)
- {
- str = (unsigned char *) (*_mp_allocate_func) (2);
- str[0] = '0';
- str[1] = 0;
- return str;
- }
- xsign = xsize;
- if (xsize < 0)
- xsize = -xsize;
-
- TMP_MARK (marker);
- str_size = ((size_t) (xsize * BITS_PER_MP_LIMB
- * __mp_bases[16].chars_per_bit_exactly)) + 3;
- str = (unsigned char *) (*_mp_allocate_func) (str_size);
- s = str;
-
- if (xsign < 0)
- *s++ = '-';
-
- /* Move the number to convert into temporary space, since mpn_get_str
- clobbers its argument + needs one extra high limb.... */
- xp = (mp_ptr) TMP_ALLOC ((xsize + 1) * BYTES_PER_MP_LIMB);
- MPN_COPY (xp, x->_mp_d, xsize);
-
- str_size = mpn_get_str (s, 16, xp, xsize);
-
- /* mpn_get_str might make some leading zeros. Skip them. */
- for (zeros = 0; s[zeros] == 0; zeros++)
- str_size--;
-
- /* Translate to printable chars and move string down. */
- for (i = 0; i < str_size; i++)
- s[i] = "0123456789abcdef"[s[zeros + i]];
- s[str_size] = 0;
-
- return str;
-}
diff --git a/gnu/lib/libgmp/mpbsd/realloc.c b/gnu/lib/libgmp/mpbsd/realloc.c
deleted file mode 100644
index 64bee76..0000000
--- a/gnu/lib/libgmp/mpbsd/realloc.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* _mp_realloc -- make the MINT* have NEW_SIZE digits allocated.
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "mp.h"
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void *
-#if __STDC__
-_mp_realloc (MINT *m, mp_size_t new_size)
-#else
-_mp_realloc (m, new_size)
- MINT *m;
- mp_size_t new_size;
-#endif
-{
- /* Never allocate zero space. */
- if (new_size == 0)
- new_size = 1;
-
- m->_mp_d = (mp_ptr) (*_mp_reallocate_func) (m->_mp_d,
- m->_mp_alloc * BYTES_PER_MP_LIMB,
- new_size * BYTES_PER_MP_LIMB);
- m->_mp_alloc = new_size;
- return (void *) m->_mp_d;
-}
diff --git a/gnu/lib/libgmp/mpbsd/sdiv.c b/gnu/lib/libgmp/mpbsd/sdiv.c
deleted file mode 100644
index 6982e20..0000000
--- a/gnu/lib/libgmp/mpbsd/sdiv.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/* sdiv -- Divide a MINT by a short integer. Produce a MINT quotient
- and a short remainder.
-
-Copyright (C) 1991, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "mp.h"
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-void
-#if __STDC__
-sdiv (const MINT *dividend, signed short int divisor_short, MINT *quot, short *rem_ptr)
-#else
-sdiv (dividend, divisor_short, quot, rem_ptr)
- const MINT *dividend;
- short int divisor_short;
- MINT *quot;
- short *rem_ptr;
-#endif
-{
- mp_size_t sign_dividend;
- signed long int sign_divisor;
- mp_size_t dividend_size, quot_size;
- mp_ptr dividend_ptr, quot_ptr;
- mp_limb_t divisor_limb;
- mp_limb_t remainder_limb;
-
- sign_dividend = dividend->_mp_size;
- dividend_size = ABS (dividend->_mp_size);
-
- if (dividend_size == 0)
- {
- quot->_mp_size = 0;
- *rem_ptr = 0;
- return;
- }
-
- sign_divisor = divisor_short;
- divisor_limb = ABS (divisor_short);
-
- /* No need for temporary allocation and copying even if QUOT == DIVIDEND
- as the divisor is just one limb, and thus no intermediate remainders
- need to be stored. */
-
- if (quot->_mp_alloc < dividend_size)
- _mp_realloc (quot, dividend_size);
-
- quot_ptr = quot->_mp_d;
- dividend_ptr = dividend->_mp_d;
-
- remainder_limb = mpn_divmod_1 (quot_ptr,
- dividend_ptr, dividend_size, divisor_limb);
-
- *rem_ptr = sign_dividend >= 0 ? remainder_limb : -remainder_limb;
- /* The quotient is DIVIDEND_SIZE limbs, but the most significant
- might be zero. Set QUOT_SIZE properly. */
- quot_size = dividend_size - (quot_ptr[dividend_size - 1] == 0);
- quot->_mp_size = (sign_divisor ^ sign_dividend) >= 0 ? quot_size : -quot_size;
-}
diff --git a/gnu/lib/libgmp/mpbsd/xtom.c b/gnu/lib/libgmp/mpbsd/xtom.c
deleted file mode 100644
index 5a529e8..0000000
--- a/gnu/lib/libgmp/mpbsd/xtom.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/* xtom -- convert a hexadecimal string to a MINT, and return a pointer to
- the MINT.
-
-Copyright (C) 1991, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "mp.h"
-#include "gmp.h"
-#include "gmp-impl.h"
-
-static int
-digit_value_in_base (c, base)
- int c;
- int base;
-{
- int digit;
-
- if (isdigit (c))
- digit = c - '0';
- else if (islower (c))
- digit = c - 'a' + 10;
- else if (isupper (c))
- digit = c - 'A' + 10;
- else
- return -1;
-
- if (digit < base)
- return digit;
- return -1;
-}
-
-MINT *
-#if __STDC__
-xtom (const char *str)
-#else
-xtom (str)
- const char *str;
-#endif
-{
- size_t str_size;
- char *s, *begs;
- size_t i;
- mp_size_t xsize;
- int c;
- int negative;
- MINT *x = (MINT *) (*_mp_allocate_func) (sizeof (MINT));
- TMP_DECL (marker);
-
- /* Skip whitespace. */
- do
- c = *str++;
- while (isspace (c));
-
- negative = 0;
- if (c == '-')
- {
- negative = 1;
- c = *str++;
- }
-
- if (digit_value_in_base (c, 16) < 0)
- return 0; /* error if no digits */
-
- TMP_MARK (marker);
- str_size = strlen (str - 1);
- s = begs = (char *) TMP_ALLOC (str_size + 1);
-
- for (i = 0; i < str_size; i++)
- {
- if (!isspace (c))
- {
- int dig = digit_value_in_base (c, 16);
- if (dig < 0)
- {
- TMP_FREE (marker);
- return 0;
- }
- *s++ = dig;
- }
- c = *str++;
- }
-
- str_size = s - begs;
-
- xsize = str_size / __mp_bases[16].chars_per_limb + 1;
- x->_mp_alloc = xsize;
- x->_mp_d = (mp_ptr) (*_mp_allocate_func) (xsize * BYTES_PER_MP_LIMB);
-
- xsize = mpn_set_str (x->_mp_d, (unsigned char *) begs, str_size, 16);
- x->_mp_size = negative ? -xsize : xsize;
-
- TMP_FREE (marker);
- return x;
-}
diff --git a/gnu/lib/libgmp/mpf/Makefile.in b/gnu/lib/libgmp/mpf/Makefile.in
deleted file mode 100644
index 598fa72..0000000
--- a/gnu/lib/libgmp/mpf/Makefile.in
+++ /dev/null
@@ -1,115 +0,0 @@
-# Makefile for GNU MP/mpf functions
-# Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-# This file is part of the GNU MP Library.
-
-# The GNU MP Library is free software; you can redistribute it and/or modify
-# it under the terms of the GNU Library General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or (at your
-# option) any later version.
-
-# The GNU MP Library 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 Library General Public
-# License for more details.
-
-# You should have received a copy of the GNU Library General Public License
-# along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-# MA 02111-1307, USA.
-
-srcdir = .
-
-CC = gcc
-
-CFLAGS = -g -O
-AR = ar
-AR_FLAGS = rc
-SHELL = /bin/sh
-
-#### host and target specific makefile fragments come in here.
-###
-
-MPF_SRCS = init.c init2.c set.c set_ui.c set_si.c set_str.c set_d.c set_z.c \
- iset.c iset_ui.c iset_si.c iset_str.c iset_d.c clear.c get_str.c \
- dump.c size.c eq.c reldiff.c sqrt.c random2.c inp_str.c out_str.c \
- add.c add_ui.c sub.c sub_ui.c ui_sub.c mul.c mul_ui.c div.c div_ui.c \
- cmp.c cmp_ui.c cmp_si.c mul_2exp.c div_2exp.c abs.c neg.c set_q.c get_d.c \
- set_dfl_prec.c set_prc.c set_prc_raw.c get_prc.c ui_div.c sqrt_ui.c
-MPF_OBJS = init.o init2.o set.o set_ui.o set_si.o set_str.o set_d.o set_z.o \
- iset.o iset_ui.o iset_si.o iset_str.o iset_d.o clear.o get_str.o \
- dump.o size.o eq.o reldiff.o sqrt.o random2.o inp_str.o out_str.o \
- add.o add_ui.o sub.o sub_ui.o ui_sub.o mul.o mul_ui.o div.o div_ui.o \
- cmp.o cmp_ui.o cmp_si.o mul_2exp.o div_2exp.o abs.o neg.o set_q.o get_d.o \
- set_dfl_prec.o set_prc.o set_prc_raw.o get_prc.o ui_div.o sqrt_ui.o
-
-LATER_OBJS = inp_raw.o out_raw.o random.o pow_ui.o fac_ui.o
-
-INCLUDES = -I. -I.. -I../mpn -I$(srcdir)/..
-
-libmpf.a: Makefile $(MPF_OBJS)
- rm -f $@
- $(AR) $(AR_FLAGS) $@ $(MPF_OBJS)
-
-.c.o:
- $(CC) -c $(INCLUDES) $(CFLAGS) $(XCFLAGS) $<
-
-clean mostlyclean:
- rm -f *.o libmpf.a
- -cd tests; $(MAKE) $@
-distclean maintainer-clean: clean
- rm -f Makefile config.status
- -cd tests; $(MAKE) $@
-
-Makefile: $(srcdir)/Makefile.in
- $(SHELL) ./config.status
-
-H = $(srcdir)/../gmp.h $(srcdir)/../gmp-impl.h ../mpn/gmp-mparam.h
-
-abs.o: $(srcdir)/abs.c $(H)
-add.o: $(srcdir)/add.c $(H)
-add_ui.o: $(srcdir)/add_ui.c $(H)
-clear.o: $(srcdir)/clear.c $(H)
-cmp.o: $(srcdir)/cmp.c $(H)
-cmp_si.o: $(srcdir)/cmp_si.c $(H)
-cmp_ui.o: $(srcdir)/cmp_ui.c $(H)
-eq.o: $(srcdir)/eq.c $(H)
-div.o: $(srcdir)/div.c $(H) $(srcdir)/../longlong.h
-div_2exp.o: $(srcdir)/div_2exp.c $(H)
-div_ui.o: $(srcdir)/div_ui.c $(H) $(srcdir)/../longlong.h
-dump.o: $(srcdir)/dump.c $(H)
-get_d.o: $(srcdir)/get_d.c $(H)
-get_prc.o: $(srcdir)/get_prc.c $(H)
-get_str.o: $(srcdir)/get_str.c $(H) $(srcdir)/../longlong.h
-init.o: $(srcdir)/init.c $(H)
-init2.o: $(srcdir)/init2.c $(H)
-inp_str.o: $(srcdir)/inp_str.c $(H)
-iset.o: $(srcdir)/iset.c $(H)
-iset_d.o: $(srcdir)/iset_d.c $(H)
-iset_si.o: $(srcdir)/iset_si.c $(H)
-iset_str.o: $(srcdir)/iset_str.c $(H)
-iset_ui.o: $(srcdir)/iset_ui.c $(H)
-mul.o: $(srcdir)/mul.c $(H)
-mul_2exp.o: $(srcdir)/mul_2exp.c $(H)
-mul_ui.o: $(srcdir)/mul_ui.c $(H)
-neg.o: $(srcdir)/neg.c $(H)
-out_str.o: $(srcdir)/out_str.c $(H)
-random2.o: $(srcdir)/random2.c $(H)
-reldiff.o: $(srcdir)/reldiff.c $(H)
-set.o: $(srcdir)/set.c $(H)
-set_d.o: $(srcdir)/set_d.c $(H)
-set_dfl_prec.o: $(srcdir)/set_dfl_prec.c $(H)
-set_prc.o: $(srcdir)/set_prc.c $(H)
-set_prc_raw.o: $(srcdir)/set_prc_raw.c $(H)
-set_q.o: $(srcdir)/set_q.c $(H)
-set_si.o: $(srcdir)/set_si.c $(H)
-set_str.o: $(srcdir)/set_str.c $(H) $(srcdir)/../longlong.h
-set_ui.o: $(srcdir)/set_ui.c $(H)
-set_z.o: $(srcdir)/set_z.c $(H)
-size.o: $(srcdir)/size.c $(H)
-sqrt.o: $(srcdir)/sqrt.c $(H)
-sqrt_ui.o: $(srcdir)/sqrt_ui.c $(H)
-sub.o: $(srcdir)/sub.c $(H)
-sub_ui.o: $(srcdir)/sub_ui.c $(H)
-ui_div.o: $(srcdir)/ui_div.c $(H) $(srcdir)/../longlong.h
-ui_sub.o: $(srcdir)/ui_sub.c $(H)
diff --git a/gnu/lib/libgmp/mpf/abs.c b/gnu/lib/libgmp/mpf/abs.c
deleted file mode 100644
index 029007a..0000000
--- a/gnu/lib/libgmp/mpf/abs.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* mpf_abs -- Compute the absolute value of a float.
-
-Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_abs (mpf_ptr r, mpf_srcptr u)
-#else
-mpf_abs (r, u)
- mpf_ptr r;
- mpf_srcptr u;
-#endif
-{
- mp_size_t size;
-
- size = ABS (u->_mp_size);
- if (r != u)
- {
- mp_size_t prec;
- mp_ptr rp, up;
-
- prec = r->_mp_prec + 1; /* lie not to lose precision in assignment */
- rp = r->_mp_d;
- up = u->_mp_d;
-
- if (size > prec)
- {
- up += size - prec;
- size = prec;
- }
-
- MPN_COPY (rp, up, size);
- r->_mp_exp = u->_mp_exp;
- }
- r->_mp_size = size;
-}
diff --git a/gnu/lib/libgmp/mpf/add.c b/gnu/lib/libgmp/mpf/add.c
deleted file mode 100644
index 2db876f..0000000
--- a/gnu/lib/libgmp/mpf/add.c
+++ /dev/null
@@ -1,180 +0,0 @@
-/* mpf_add -- Add two floats.
-
-Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_add (mpf_ptr r, mpf_srcptr u, mpf_srcptr v)
-#else
-mpf_add (r, u, v)
- mpf_ptr r;
- mpf_srcptr u;
- mpf_srcptr v;
-#endif
-{
- mp_srcptr up, vp;
- mp_ptr rp, tp;
- mp_size_t usize, vsize, rsize;
- mp_size_t prec;
- mp_exp_t uexp;
- mp_size_t ediff;
- mp_limb_t cy;
- int negate;
- TMP_DECL (marker);
-
- usize = u->_mp_size;
- vsize = v->_mp_size;
-
- /* Handle special cases that don't work in generic code below. */
- if (usize == 0)
- {
- mpf_set (r, v);
- return;
- }
- if (vsize == 0)
- {
- mpf_set (r, u);
- return;
- }
-
- /* If signs of U and V are different, perform subtraction. */
- if ((usize ^ vsize) < 0)
- {
- __mpf_struct v_negated;
- v_negated._mp_size = -vsize;
- v_negated._mp_exp = v->_mp_exp;
- v_negated._mp_d = v->_mp_d;
- mpf_sub (r, u, &v_negated);
- return;
- }
-
- TMP_MARK (marker);
-
- /* Signs are now known to be the same. */
- negate = usize < 0;
-
- /* Make U be the operand with the largest exponent. */
- if (u->_mp_exp < v->_mp_exp)
- {
- mpf_srcptr t;
- t = u; u = v; v = t;
- usize = u->_mp_size;
- vsize = v->_mp_size;
- }
-
- usize = ABS (usize);
- vsize = ABS (vsize);
- up = u->_mp_d;
- vp = v->_mp_d;
- rp = r->_mp_d;
- prec = r->_mp_prec;
- uexp = u->_mp_exp;
- ediff = u->_mp_exp - v->_mp_exp;
-
- /* If U extends beyond PREC, ignore the part that does. */
- if (usize > prec)
- {
- up += usize - prec;
- usize = prec;
- }
-
- /* If V extends beyond PREC, ignore the part that does.
- Note that this may make vsize negative. */
- if (vsize + ediff > prec)
- {
- vp += vsize + ediff - prec;
- vsize = prec - ediff;
- }
-
-#if 0
- /* Locate the least significant non-zero limb in (the needed parts
- of) U and V, to simplify the code below. */
- while (up[0] == 0)
- up++, usize--;
- while (vp[0] == 0)
- vp++, vsize--;
-#endif
-
- /* Allocate temp space for the result. Allocate
- just vsize + ediff later??? */
- tp = (mp_ptr) TMP_ALLOC (prec * BYTES_PER_MP_LIMB);
-
- if (ediff >= prec)
- {
- /* V completely cancelled. */
- if (tp != up)
- MPN_COPY (rp, up, usize);
- rsize = usize;
- }
- else
- {
- /* uuuu | uuuu | uuuu | uuuu | uuuu */
- /* vvvvvvv | vv | vvvvv | v | vv */
-
- if (usize > ediff)
- {
- /* U and V partially overlaps. */
- if (vsize + ediff <= usize)
- {
- /* uuuu */
- /* v */
- mp_size_t size;
- size = usize - ediff - vsize;
- MPN_COPY (tp, up, size);
- cy = mpn_add (tp + size, up + size, usize - size, vp, vsize);
- rsize = usize;
- }
- else
- {
- /* uuuu */
- /* vvvvv */
- mp_size_t size;
- size = vsize + ediff - usize;
- MPN_COPY (tp, vp, size);
- cy = mpn_add (tp + size, up, usize, vp + size, usize - ediff);
- rsize = vsize + ediff;
- }
- }
- else
- {
- /* uuuu */
- /* vv */
- mp_size_t size;
- size = vsize + ediff - usize;
- MPN_COPY (tp, vp, vsize);
- MPN_ZERO (tp + vsize, ediff - usize);
- MPN_COPY (tp + size, up, usize);
- cy = 0;
- rsize = size + usize;
- }
-
- MPN_COPY (rp, tp, rsize);
- rp[rsize] = cy;
- rsize += cy;
- uexp += cy;
- }
-
- r->_mp_size = negate ? -rsize : rsize;
- r->_mp_exp = uexp;
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpf/add_ui.c b/gnu/lib/libgmp/mpf/add_ui.c
deleted file mode 100644
index f181df4..0000000
--- a/gnu/lib/libgmp/mpf/add_ui.c
+++ /dev/null
@@ -1,151 +0,0 @@
-/* mpf_add_ui -- Add a float and an unsigned integer.
-
-Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_add_ui (mpf_ptr sum, mpf_srcptr u, unsigned long int v)
-#else
-mpf_add_ui (sum, u, v)
- mpf_ptr sum;
- mpf_srcptr u;
- unsigned long int v;
-#endif
-{
- mp_srcptr up = u->_mp_d;
- mp_ptr sump = sum->_mp_d;
- mp_size_t usize, sumsize;
- mp_size_t prec = sum->_mp_prec;
- mp_exp_t uexp = u->_mp_exp;
-
- usize = u->_mp_size;
- if (usize <= 0)
- {
- if (usize == 0)
- {
- mpf_set_ui (sum, v);
- return;
- }
- else
- {
- __mpf_struct u_negated;
- u_negated._mp_size = -usize;
- u_negated._mp_exp = u->_mp_exp;
- u_negated._mp_d = u->_mp_d;
- mpf_sub_ui (sum, &u_negated, v);
- sum->_mp_size = -(sum->_mp_size);
- return;
- }
- }
-
- if (v == 0)
- {
- sum_is_u:
- if (u != sum)
- {
- sumsize = MIN (usize, prec + 1);
- MPN_COPY (sum->_mp_d, up + usize - sumsize, sumsize);
- sum->_mp_size = sumsize;
- sum->_mp_exp = u->_mp_exp;
- }
- return;
- }
-
- if (uexp > 0)
- {
- /* U >= 1. */
- if (uexp > prec)
- {
- /* U >> V, V is not part of final result. */
- goto sum_is_u;
- }
- else
- {
- /* U's "limb point" is somewhere between the first limb
- and the PREC:th limb.
- Both U and V are part of the final result. */
- if (uexp > usize)
- {
- /* uuuuuu0000. */
- /* + v. */
- /* We begin with moving U to the top of SUM, to handle
- samevar(U,SUM). */
- MPN_COPY_DECR (sump + uexp - usize, up, usize);
- sump[0] = v;
- MPN_ZERO (sump + 1, uexp - usize - 1);
-#if 0 /* What is this??? */
- if (sum == u)
- MPN_COPY (sum->_mp_d, sump, uexp);
-#endif
- sum->_mp_size = uexp;
- sum->_mp_exp = uexp;
- }
- else
- {
- /* uuuuuu.uuuu */
- /* + v. */
- mp_limb_t cy_limb;
- if (usize > prec)
- {
- /* Ignore excess limbs in U. */
- up += usize - prec;
- usize -= usize - prec; /* Eq. usize = prec */
- }
- if (sump != up)
- MPN_COPY (sump, up, usize - uexp);
- cy_limb = mpn_add_1 (sump + usize - uexp, up + usize - uexp,
- uexp, (mp_limb_t) v);
- sump[usize] = cy_limb;
- sum->_mp_size = usize + cy_limb;
- sum->_mp_exp = uexp + cy_limb;
- }
- }
- }
- else
- {
- /* U < 1, so V > U for sure. */
- /* v. */
- /* .0000uuuu */
- if ((-uexp) >= prec)
- {
- sump[0] = v;
- sum->_mp_size = 1;
- sum->_mp_exp = 1;
- }
- else
- {
- if (usize + (-uexp) + 1 > prec)
- {
- /* Ignore excess limbs in U. */
- up += usize + (-uexp) + 1 - prec;
- usize -= usize + (-uexp) + 1 - prec;
- }
- if (sump != up)
- MPN_COPY (sump, up, usize);
- MPN_ZERO (sump + usize, -uexp);
- sump[usize + (-uexp)] = v;
- sum->_mp_size = usize + (-uexp) + 1;
- sum->_mp_exp = 1;
- }
- }
-}
diff --git a/gnu/lib/libgmp/mpf/clear.c b/gnu/lib/libgmp/mpf/clear.c
deleted file mode 100644
index beaf4ee..0000000
--- a/gnu/lib/libgmp/mpf/clear.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* mpf_clear -- de-allocate the space occupied by the dynamic digit space of
- an integer.
-
-Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_clear (mpf_ptr m)
-#else
-mpf_clear (m)
- mpf_ptr m;
-#endif
-{
- (*_mp_free_func) (m->_mp_d, (m->_mp_prec + 1) * BYTES_PER_MP_LIMB);
-}
diff --git a/gnu/lib/libgmp/mpf/cmp.c b/gnu/lib/libgmp/mpf/cmp.c
deleted file mode 100644
index d440e11..0000000
--- a/gnu/lib/libgmp/mpf/cmp.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/* mpf_cmp -- Compare two floats.
-
-Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-int
-#if __STDC__
-mpf_cmp (mpf_srcptr u, mpf_srcptr v)
-#else
-mpf_cmp (u, v)
- mpf_srcptr u;
- mpf_srcptr v;
-#endif
-{
- mp_srcptr up, vp;
- mp_size_t usize, vsize;
- mp_exp_t uexp, vexp;
- int cmp;
- int usign;
-
- uexp = u->_mp_exp;
- vexp = v->_mp_exp;
-
- usize = u->_mp_size;
- vsize = v->_mp_size;
-
- /* 1. Are the signs different? */
- if ((usize ^ vsize) >= 0)
- {
- /* U and V are both non-negative or both negative. */
- if (usize == 0)
- /* vsize >= 0 */
- return -(vsize != 0);
- if (vsize == 0)
- /* usize >= 0 */
- return usize != 0;
- /* Fall out. */
- }
- else
- {
- /* Either U or V is negative, but not both. */
- return usize >= 0 ? 1 : -1;
- }
-
- /* U and V have the same sign and are both non-zero. */
-
- usign = usize >= 0 ? 1 : -1;
-
- /* 2. Are the exponents different? */
- if (uexp > vexp)
- return usign;
- if (uexp < vexp)
- return -usign;
-
- usize = ABS (usize);
- vsize = ABS (vsize);
-
- up = u->_mp_d;
- vp = v->_mp_d;
-
-#define STRICT_MPF_NORMALIZATION 0
-#if ! STRICT_MPF_NORMALIZATION
- /* Ignore zeroes at the low end of U and V. */
- while (up[0] == 0)
- {
- up++;
- usize--;
- }
- while (vp[0] == 0)
- {
- vp++;
- vsize--;
- }
-#endif
-
- if (usize > vsize)
- {
- cmp = mpn_cmp (up + usize - vsize, vp, vsize);
- if (cmp == 0)
- return usign;
- }
- else if (vsize > usize)
- {
- cmp = mpn_cmp (up, vp + vsize - usize, usize);
- if (cmp == 0)
- return -usign;
- }
- else
- {
- cmp = mpn_cmp (up, vp, usize);
- if (cmp == 0)
- return 0;
- }
- return cmp > 0 ? usign : -usign;
-}
diff --git a/gnu/lib/libgmp/mpf/cmp_si.c b/gnu/lib/libgmp/mpf/cmp_si.c
deleted file mode 100644
index 01f9708..0000000
--- a/gnu/lib/libgmp/mpf/cmp_si.c
+++ /dev/null
@@ -1,98 +0,0 @@
-/* mpf_cmp_si -- Compare a float with a signed integer.
-
-Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-int
-#if __STDC__
-mpf_cmp_si (mpf_srcptr u, long int vslimb)
-#else
-mpf_cmp_si (u, vslimb)
- mpf_srcptr u;
- long int vslimb;
-#endif
-{
- mp_srcptr up;
- mp_size_t usize;
- mp_exp_t uexp;
- int usign;
-
- uexp = u->_mp_exp;
- usize = u->_mp_size;
-
- /* 1. Are the signs different? */
- if ((usize < 0) == (vslimb < 0)) /* don't use xor, type size may differ */
- {
- /* U and V are both non-negative or both negative. */
- if (usize == 0)
- /* vslimb >= 0 */
- return -(vslimb != 0);
- if (vslimb == 0)
- /* usize >= 0 */
- return usize != 0;
- /* Fall out. */
- }
- else
- {
- /* Either U or V is negative, but not both. */
- return usize >= 0 ? 1 : -1;
- }
-
- /* U and V have the same sign and are both non-zero. */
-
- usign = usize >= 0 ? 1 : -1;
-
- /* 2. Are the exponents different (V's exponent == 1)? */
- if (uexp > 1)
- return usign;
- if (uexp < 1)
- return -usign;
-
- usize = ABS (usize);
- vslimb = ABS (vslimb);
-
- up = u->_mp_d;
-
-#define STRICT_MPF_NORMALIZATION 0
-#if ! STRICT_MPF_NORMALIZATION
- /* Ignore zeroes at the low end of U and V. */
- while (*up == 0)
- {
- up++;
- usize--;
- }
-#endif
-
- /* 3. Now, if the number of limbs are different, we have a difference
- since we have made sure the trailing limbs are not zero. */
- if (usize > 1)
- return usign;
-
- /* 4. Compare the mantissas. */
- if (*up > vslimb)
- return usign;
- else if (*up < vslimb)
- return -usign;
-
- /* Wow, we got zero even if we tried hard to avoid it. */
- return 0;
-}
diff --git a/gnu/lib/libgmp/mpf/cmp_ui.c b/gnu/lib/libgmp/mpf/cmp_ui.c
deleted file mode 100644
index 3a4911b..0000000
--- a/gnu/lib/libgmp/mpf/cmp_ui.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/* mpf_cmp_ui -- Compare a float with an unsigned integer.
-
-Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-int
-#if __STDC__
-mpf_cmp_ui (mpf_srcptr u, unsigned long int vlimb)
-#else
-mpf_cmp_ui (u, vlimb)
- mpf_srcptr u;
- unsigned long int vlimb;
-#endif
-{
- mp_srcptr up;
- mp_size_t usize;
- mp_exp_t uexp;
-
- uexp = u->_mp_exp;
- usize = u->_mp_size;
-
- /* 1. Is U negative? */
- if (usize < 0)
- return -1;
- /* We rely on usize being non-negative in the code that follows. */
-
- if (vlimb == 0)
- return usize != 0;
-
- /* 2. Are the exponents different (V's exponent == 1)? */
- if (uexp > 1)
- return 1;
- if (uexp < 1)
- return -1;
-
- up = u->_mp_d;
-
-#define STRICT_MPF_NORMALIZATION 0
-#if ! STRICT_MPF_NORMALIZATION
- /* Ignore zeroes at the low end of U. */
- while (*up == 0)
- {
- up++;
- usize--;
- }
-#endif
-
- /* 3. Now, if the number of limbs are different, we have a difference
- since we have made sure the trailing limbs are not zero. */
- if (usize > 1)
- return 1;
-
- /* 4. Compare the mantissas. */
- if (*up > vlimb)
- return 1;
- else if (*up < vlimb)
- return -1;
-
- /* Wow, we got zero even if we tried hard to avoid it. */
- return 0;
-}
diff --git a/gnu/lib/libgmp/mpf/configure.in b/gnu/lib/libgmp/mpf/configure.in
deleted file mode 100644
index b6ecf8b..0000000
--- a/gnu/lib/libgmp/mpf/configure.in
+++ /dev/null
@@ -1,12 +0,0 @@
-# This file is a shell script fragment that supplies the information
-# necessary for a configure script to process the program in
-# this directory. For more information, look at ../configure.
-
-configdirs=tests
-srctrigger=add_ui.c
-srcname="GNU Multi-Precision library/mpf"
-
-# per-host:
-
-# per-target:
-
diff --git a/gnu/lib/libgmp/mpf/div.c b/gnu/lib/libgmp/mpf/div.c
deleted file mode 100644
index 9ba6922..0000000
--- a/gnu/lib/libgmp/mpf/div.c
+++ /dev/null
@@ -1,144 +0,0 @@
-/* mpf_div -- Divide two floats.
-
-Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-void
-#if __STDC__
-mpf_div (mpf_ptr r, mpf_srcptr u, mpf_srcptr v)
-#else
-mpf_div (r, u, v)
- mpf_ptr r;
- mpf_srcptr u;
- mpf_srcptr v;
-#endif
-{
- mp_srcptr up, vp;
- mp_ptr rp, tp, rtp;
- mp_size_t usize, vsize;
- mp_size_t rsize, tsize;
- mp_size_t sign_quotient;
- mp_size_t prec;
- unsigned normalization_steps;
- mp_limb_t q_limb;
- mp_exp_t rexp;
- TMP_DECL (marker);
-
- usize = u->_mp_size;
- vsize = v->_mp_size;
- sign_quotient = usize ^ vsize;
- usize = ABS (usize);
- vsize = ABS (vsize);
- prec = r->_mp_prec;
-
- if (vsize == 0)
- vsize = 1 / vsize; /* divide by zero as directed */
- if (usize == 0)
- {
- r->_mp_size = 0;
- r->_mp_exp = 0;
- return;
- }
-
- TMP_MARK (marker);
- rexp = u->_mp_exp - v->_mp_exp;
-
- rp = r->_mp_d;
- up = u->_mp_d;
- vp = v->_mp_d;
-
- if (vsize > prec)
- {
- vp += vsize - prec;
- vsize = prec;
- }
-
- tsize = vsize + prec;
- tp = (mp_ptr) TMP_ALLOC ((tsize + 1) * BYTES_PER_MP_LIMB);
-
- if (usize > tsize)
- {
- up += usize - tsize;
- usize = tsize;
- rtp = tp;
- }
- else
- {
- MPN_ZERO (tp, tsize - usize);
- rtp = tp + (tsize - usize);
- }
-
- count_leading_zeros (normalization_steps, vp[vsize - 1]);
-
- /* Normalize the divisor and the dividend. */
- if (normalization_steps != 0)
- {
- mp_ptr tmp;
- mp_limb_t nlimb;
-
- /* Shift up the divisor setting the most significant bit of
- the most significant limb. Use temporary storage not to clobber
- the original contents of the divisor. */
- tmp = (mp_ptr) TMP_ALLOC (vsize * BYTES_PER_MP_LIMB);
- mpn_lshift (tmp, vp, vsize, normalization_steps);
- vp = tmp;
-
- /* Shift up the dividend, possibly introducing a new most
- significant word. Move the shifted dividend in the remainder
- at the same time. */
- nlimb = mpn_lshift (rtp, up, usize, normalization_steps);
- if (nlimb != 0)
- {
- rtp[usize] = nlimb;
- tsize++;
- rexp++;
- }
- }
- else
- {
- /* The divisor is already normalized, as required.
- Copy it to temporary space if it overlaps with the quotient. */
- if (vp - rp <= tsize - vsize)
- {
- mp_ptr tmp = (mp_ptr) TMP_ALLOC (vsize * BYTES_PER_MP_LIMB);
- MPN_COPY (tmp, vp, vsize);
- vp = (mp_srcptr) tmp;
- }
-
- /* Move the dividend to the remainder. */
- MPN_COPY (rtp, up, usize);
- }
-
- q_limb = mpn_divmod (rp, tp, tsize, vp, vsize);
- rsize = tsize - vsize;
- if (q_limb)
- {
- rp[rsize] = q_limb;
- rsize++;
- rexp++;
- }
-
- r->_mp_size = sign_quotient >= 0 ? rsize : -rsize;
- r->_mp_exp = rexp;
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpf/div_2exp.c b/gnu/lib/libgmp/mpf/div_2exp.c
deleted file mode 100644
index d729625..0000000
--- a/gnu/lib/libgmp/mpf/div_2exp.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/* mpf_div_2exp -- Divide a float by 2^n.
-
-Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_div_2exp (mpf_ptr r, mpf_srcptr u, unsigned long int exp)
-#else
-mpf_div_2exp (r, u, exp)
- mpf_ptr r;
- mpf_srcptr u;
- unsigned long int exp;
-#endif
-{
- mp_srcptr up;
- mp_ptr rp = r->_mp_d;
- mp_size_t usize;
- mp_size_t abs_usize;
- mp_size_t prec = r->_mp_prec;
- mp_exp_t uexp = u->_mp_exp;
-
- usize = u->_mp_size;
-
- if (usize == 0)
- {
- r->_mp_size = 0;
- r->_mp_exp = 0;
- return;
- }
-
- abs_usize = ABS (usize);
- up = u->_mp_d;
-
- if (abs_usize > prec)
- {
- up += abs_usize - prec;
- abs_usize = prec;
- }
-
- if (exp % BITS_PER_MP_LIMB == 0)
- {
- if (rp != up)
- MPN_COPY (rp, up, abs_usize);
- r->_mp_exp = uexp - exp / BITS_PER_MP_LIMB;
- }
- else
- {
- /* Use mpn_lshift since mpn_rshift operates upwards, and we therefore
- would clobber part of U before using that part, when R == U. */
- mp_limb_t cy_limb;
- cy_limb = mpn_lshift (rp, up, abs_usize, -exp % BITS_PER_MP_LIMB);
- rp[abs_usize] = cy_limb;
- cy_limb = cy_limb != 0;
-
- abs_usize += cy_limb;
- r->_mp_exp = uexp - exp / BITS_PER_MP_LIMB - 1 + cy_limb;
- }
- r->_mp_size = usize >= 0 ? abs_usize : -abs_usize;
-}
diff --git a/gnu/lib/libgmp/mpf/div_ui.c b/gnu/lib/libgmp/mpf/div_ui.c
deleted file mode 100644
index 050a6f0..0000000
--- a/gnu/lib/libgmp/mpf/div_ui.c
+++ /dev/null
@@ -1,91 +0,0 @@
-/* mpf_div_ui -- Divide a float with an unsigned integer.
-
-Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-void
-#if __STDC__
-mpf_div_ui (mpf_ptr r, mpf_srcptr u, unsigned long int v)
-#else
-mpf_div_ui (r, u, v)
- mpf_ptr r;
- mpf_srcptr u;
- unsigned long int v;
-#endif
-{
- mp_srcptr up;
- mp_ptr rp, tp, rtp;
- mp_size_t usize;
- mp_size_t rsize, tsize;
- mp_size_t sign_quotient;
- mp_size_t prec;
- mp_limb_t q_limb;
- mp_exp_t rexp;
- TMP_DECL (marker);
-
- usize = u->_mp_size;
- sign_quotient = usize;
- usize = ABS (usize);
- prec = r->_mp_prec;
-
- if (v == 0)
- v = 1 / v; /* divide by zero as directed */
- if (usize == 0)
- {
- r->_mp_size = 0;
- r->_mp_exp = 0;
- return;
- }
-
- TMP_MARK (marker);
-
- rp = r->_mp_d;
- up = u->_mp_d;
-
- tsize = 1 + prec;
- tp = (mp_ptr) TMP_ALLOC ((tsize + 1) * BYTES_PER_MP_LIMB);
-
- if (usize > tsize)
- {
- up += usize - tsize;
- usize = tsize;
- rtp = tp;
- }
- else
- {
- MPN_ZERO (tp, tsize - usize);
- rtp = tp + (tsize - usize);
- }
-
- /* Move the dividend to the remainder. */
- MPN_COPY (rtp, up, usize);
-
- mpn_divmod_1 (rp, tp, tsize, (mp_limb_t) v);
- q_limb = rp[tsize - 1];
-
- rsize = tsize - (q_limb == 0);
- rexp = u->_mp_exp - (q_limb == 0);
- r->_mp_size = sign_quotient >= 0 ? rsize : -rsize;
- r->_mp_exp = rexp;
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpf/dump.c b/gnu/lib/libgmp/mpf/dump.c
deleted file mode 100644
index 46d5c05..0000000
--- a/gnu/lib/libgmp/mpf/dump.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* mpf_dump -- Dump a float to stdout.
-
-Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_dump (mpf_srcptr u)
-#else
-mpf_dump (u)
- mpf_srcptr u;
-#endif
-{
- mp_exp_t exp;
- char *str;
-
- str = mpf_get_str (0, &exp, 10, 0, u);
- if (str[0] == '-')
- printf ("-0.%se%ld\n", str + 1, exp);
- else
- printf ("0.%se%ld\n", str, exp);
- (*_mp_free_func) (str, 0);/* ??? broken alloc interface, pass what size ??? */
-}
diff --git a/gnu/lib/libgmp/mpf/eq.c b/gnu/lib/libgmp/mpf/eq.c
deleted file mode 100644
index e6630ad..0000000
--- a/gnu/lib/libgmp/mpf/eq.c
+++ /dev/null
@@ -1,121 +0,0 @@
-/* mpf_eq -- Compare two floats up to a specified bit #.
-
-Copyright (C) 1993, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-int
-#if __STDC__
-mpf_eq (mpf_srcptr u, mpf_srcptr v, unsigned long int n_bits)
-#else
-mpf_eq (u, v, n_bits)
- mpf_srcptr u;
- mpf_srcptr v;
- unsigned long int n_bits;
-#endif
-{
- mp_srcptr up, vp;
- mp_size_t usize, vsize, size, i;
- mp_exp_t uexp, vexp;
- int usign;
-
- uexp = u->_mp_exp;
- vexp = v->_mp_exp;
-
- usize = u->_mp_size;
- vsize = v->_mp_size;
-
- /* 1. Are the signs different? */
- if ((usize ^ vsize) >= 0)
- {
- /* U and V are both non-negative or both negative. */
- if (usize == 0)
- return vsize == 0;
- if (vsize == 0)
- return 0;
-
- /* Fall out. */
- }
- else
- {
- /* Either U or V is negative, but not both. */
- return 0;
- }
-
- /* U and V have the same sign and are both non-zero. */
-
- usign = usize >= 0 ? 1 : -1;
-
- /* 2. Are the exponents different? */
- if (uexp > vexp)
- return 0; /* ??? handle (uexp = vexp + 1) */
- if (vexp > uexp)
- return 0; /* ??? handle (vexp = uexp + 1) */
-
- usize = ABS (usize);
- vsize = ABS (vsize);
-
- up = u->_mp_d;
- vp = v->_mp_d;
-
- /* Ignore zeroes at the low end of U and V. */
- while (up[0] == 0)
- {
- up++;
- usize--;
- }
- while (vp[0] == 0)
- {
- vp++;
- vsize--;
- }
-
- if (usize > vsize)
- {
- if (vsize * BITS_PER_MP_LIMB < n_bits)
- return 0; /* surely too different */
- size = vsize;
- }
- else if (vsize > usize)
- {
- if (usize * BITS_PER_MP_LIMB < n_bits)
- return 0; /* surely too different */
- size = usize;
- }
- else
- {
- size = usize;
- }
-
- if (size > (n_bits + BITS_PER_MP_LIMB - 1) / BITS_PER_MP_LIMB)
- size = (n_bits + BITS_PER_MP_LIMB - 1) / BITS_PER_MP_LIMB;
-
- up += usize - size;
- vp += vsize - size;
-
- for (i = size - 1; i >= 0; i--)
- {
- if (up[i] != vp[i])
- return 0;
- }
-
- return 1;
-}
diff --git a/gnu/lib/libgmp/mpf/get_d.c b/gnu/lib/libgmp/mpf/get_d.c
deleted file mode 100644
index a10b366..0000000
--- a/gnu/lib/libgmp/mpf/get_d.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* double mpf_get_d (mpf_t src) -- Return the double approximation to SRC.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-double
-#if __STDC__
-mpf_get_d (mpf_srcptr src)
-#else
-mpf_get_d (src)
- mpf_srcptr src;
-#endif
-{
- double res;
- mp_size_t size, i, n_limbs_to_use;
- int negative;
- mp_ptr qp;
-
- size = SIZ(src);
- if (size == 0)
- return 0.0;
-
- negative = size < 0;
- size = ABS (size);
- qp = PTR(src);
-
- res = qp[size - 1];
- n_limbs_to_use = MIN (LIMBS_PER_DOUBLE, size);
- for (i = 2; i <= n_limbs_to_use; i++)
- res = res * MP_BASE_AS_DOUBLE + qp[size - i];
-
- res = __gmp_scale2 (res, (EXP(src) - n_limbs_to_use) * BITS_PER_MP_LIMB);
-
- return negative ? -res : res;
-}
diff --git a/gnu/lib/libgmp/mpf/get_prc.c b/gnu/lib/libgmp/mpf/get_prc.c
deleted file mode 100644
index 7f7e41f..0000000
--- a/gnu/lib/libgmp/mpf/get_prc.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/* mpf_get_prec(x) -- Return the precision in bits of x.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-unsigned long int
-#if __STDC__
-mpf_get_prec (mpf_srcptr x)
-#else
-mpf_get_prec (x)
- mpf_srcptr x;
-#endif
-{
- return (unsigned long int) x->_mp_prec * BITS_PER_MP_LIMB - BITS_PER_MP_LIMB;
-}
diff --git a/gnu/lib/libgmp/mpf/get_str.c b/gnu/lib/libgmp/mpf/get_str.c
deleted file mode 100644
index bfee18d..0000000
--- a/gnu/lib/libgmp/mpf/get_str.c
+++ /dev/null
@@ -1,500 +0,0 @@
-/* mpf_get_str (digit_ptr, exp, base, n_digits, a) -- Convert the floating
- point number A to a base BASE number and store N_DIGITS raw digits at
- DIGIT_PTR, and the base BASE exponent in the word pointed to by EXP. For
- example, the number 3.1416 would be returned as "31416" in DIGIT_PTR and
- 1 in EXP.
-
-Copyright (C) 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-/*
- New algorithm for converting fractions (951019):
- 0. Call the fraction to convert F.
- 1. Compute [exp * log(2^BITS_PER_MP_LIMB)/log(B)], i.e.,
- [exp * BITS_PER_MP_LIMB * __mp_bases[B].chars_per_bit_exactly]. Exp is
- the number of limbs between the limb point and the most significant
- non-zero limb. Call this result n.
- 2. Compute B^n.
- 3. F*B^n will now be just below 1, which can be converted easily. (Just
- multiply by B repeatedly, and see the digits fall out as integers.)
- We should interrupt the conversion process of F*B^n as soon as the number
- of digits requested have been generated.
-
- New algorithm for converting integers (951019):
- 0. Call the integer to convert I.
- 1. Compute [exp * log(2^BITS_PER_MP_LIMB)/log(B)], i.e.,
- [exp BITS_PER_MP_LIMB * __mp_bases[B].chars_per_bit_exactly]. Exp is
- the number of limbs between the limb point and the least significant
- non-zero limb. Call this result n.
- 2. Compute B^n.
- 3. I/B^n can be converted easily. (Just divide by B repeatedly. In GMP,
- this is best done by calling mpn_get_str.)
- Note that converting I/B^n could yield more digits than requested. For
- efficiency, the variable n above should be set larger in such cases, to
- kill all undesired digits in the division in step 3.
-*/
-
-char *
-#if __STDC__
-mpf_get_str (char *digit_ptr, mp_exp_t *exp, int base, size_t n_digits, mpf_srcptr u)
-#else
-mpf_get_str (digit_ptr, exp, base, n_digits, u)
- char *digit_ptr;
- mp_exp_t *exp;
- int base;
- size_t n_digits;
- mpf_srcptr u;
-#endif
-{
- mp_size_t usize;
- mp_exp_t uexp;
- unsigned char *str;
- size_t str_size;
- char *num_to_text;
- long i; /* should be size_t */
- mp_ptr rp;
- mp_limb_t big_base;
- size_t digits_computed_so_far;
- int dig_per_u;
- mp_srcptr up;
- unsigned char *tstr;
- mp_exp_t exp_in_base;
- TMP_DECL (marker);
-
- TMP_MARK (marker);
- usize = u->_mp_size;
- uexp = u->_mp_exp;
-
- if (base >= 0)
- {
- if (base == 0)
- base = 10;
- num_to_text = "0123456789abcdefghijklmnopqrstuvwxyz";
- }
- else
- {
- base = -base;
- num_to_text = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
- }
-
- /* Don't compute more digits than U can accurately represent.
- Also, if 0 digits were requested, give *exactly* as many digits
- as can be accurately represented. */
- {
- size_t max_digits = (((u->_mp_prec - 1) * BITS_PER_MP_LIMB)
- * __mp_bases[base].chars_per_bit_exactly);
- if (n_digits == 0 || n_digits > max_digits)
- n_digits = max_digits;
- }
-
- if (digit_ptr == 0)
- {
- /* We didn't get a string from the user. Allocate one (and return
- a pointer to it) with space for `-' and terminating null. */
- digit_ptr = (char *) (*_mp_allocate_func) (n_digits + 2);
- }
-
- if (usize == 0)
- {
- *exp = 0;
- *digit_ptr = 0;
- return digit_ptr;
- }
-
- str = (unsigned char *) digit_ptr;
-
- /* Allocate temporary digit space. We can't put digits directly in the user
- area, since we almost always generate more digits than requested. */
- tstr = (unsigned char *) TMP_ALLOC (n_digits + 3 * BITS_PER_MP_LIMB);
-
- if (usize < 0)
- {
- *digit_ptr = '-';
- str++;
- usize = -usize;
- }
-
- digits_computed_so_far = 0;
-
- if (uexp > usize)
- {
- /* The number has just an integral part. */
- mp_size_t rsize;
- mp_size_t exp_in_limbs;
- mp_size_t msize;
- mp_ptr tp, xp, mp;
- int cnt;
- mp_limb_t cy;
- mp_size_t start_str;
- mp_size_t n_limbs;
-
- n_limbs = 2 + ((mp_size_t) (n_digits / __mp_bases[base].chars_per_bit_exactly)
- / BITS_PER_MP_LIMB);
-
- /* Compute n such that [u/B^n] contains (somewhat) more than n_digits
- digits. (We compute less than that only if that is an exact number,
- i.e., exp is small enough.) */
-
- exp_in_limbs = uexp;
-
- if (n_limbs >= exp_in_limbs)
- {
- /* The number is so small that we convert the entire number. */
- exp_in_base = 0;
- rp = (mp_ptr) TMP_ALLOC (exp_in_limbs * BYTES_PER_MP_LIMB);
- MPN_ZERO (rp, exp_in_limbs - usize);
- MPN_COPY (rp + (exp_in_limbs - usize), u->_mp_d, usize);
- rsize = exp_in_limbs;
- }
- else
- {
- exp_in_limbs -= n_limbs;
- exp_in_base = (((exp_in_limbs * BITS_PER_MP_LIMB - 1))
- * __mp_bases[base].chars_per_bit_exactly);
-
- rsize = exp_in_limbs + 1;
- rp = (mp_ptr) TMP_ALLOC (rsize * BYTES_PER_MP_LIMB);
- tp = (mp_ptr) TMP_ALLOC (rsize * BYTES_PER_MP_LIMB);
-
- rp[0] = base;
- rsize = 1;
-
- count_leading_zeros (cnt, exp_in_base);
- for (i = BITS_PER_MP_LIMB - cnt - 2; i >= 0; i--)
- {
- mpn_mul_n (tp, rp, rp, rsize);
- rsize = 2 * rsize;
- rsize -= tp[rsize - 1] == 0;
- xp = tp; tp = rp; rp = xp;
-
- if (((exp_in_base >> i) & 1) != 0)
- {
- cy = mpn_mul_1 (rp, rp, rsize, (mp_limb_t) base);
- rp[rsize] = cy;
- rsize += cy != 0;
- }
- }
-
- mp = u->_mp_d;
- msize = usize;
-
- {
- mp_ptr qp;
- mp_limb_t qflag;
- mp_size_t xtra;
- if (msize < rsize)
- {
- mp_ptr tmp = (mp_ptr) TMP_ALLOC ((rsize+1)* BYTES_PER_MP_LIMB);
- MPN_ZERO (tmp, rsize - msize);
- MPN_COPY (tmp + rsize - msize, mp, msize);
- mp = tmp;
- msize = rsize;
- }
- else
- {
- mp_ptr tmp = (mp_ptr) TMP_ALLOC ((msize+1)* BYTES_PER_MP_LIMB);
- MPN_COPY (tmp, mp, msize);
- mp = tmp;
- }
- count_leading_zeros (cnt, rp[rsize - 1]);
- cy = 0;
- if (cnt != 0)
- {
- mpn_lshift (rp, rp, rsize, cnt);
- cy = mpn_lshift (mp, mp, msize, cnt);
- if (cy)
- mp[msize++] = cy;
- }
-
- {
- mp_size_t qsize = n_limbs + (cy != 0);
- qp = (mp_ptr) TMP_ALLOC ((qsize + 1) * BYTES_PER_MP_LIMB);
- xtra = qsize - (msize - rsize);
- qflag = mpn_divrem (qp, xtra, mp, msize, rp, rsize);
- qp[qsize] = qflag;
- rsize = qsize + qflag;
- rp = qp;
- }
- }
- }
-
- str_size = mpn_get_str (tstr, base, rp, rsize);
-
- if (str_size > n_digits + 3 * BITS_PER_MP_LIMB)
- abort ();
-
- start_str = 0;
- while (tstr[start_str] == 0)
- start_str++;
-
- for (i = start_str; i < str_size; i++)
- {
- tstr[digits_computed_so_far++] = tstr[i];
- if (digits_computed_so_far > n_digits)
- break;
- }
- exp_in_base = exp_in_base + str_size - start_str;
- goto finish_up;
- }
-
- exp_in_base = 0;
-
- if (uexp > 0)
- {
- /* The number has an integral part, convert that first.
- If there is a fractional part too, it will be handled later. */
- mp_size_t start_str;
-
- rp = (mp_ptr) TMP_ALLOC (uexp * BYTES_PER_MP_LIMB);
- up = u->_mp_d + usize - uexp;
- MPN_COPY (rp, up, uexp);
-
- str_size = mpn_get_str (tstr, base, rp, uexp);
-
- start_str = 0;
- while (tstr[start_str] == 0)
- start_str++;
-
- for (i = start_str; i < str_size; i++)
- {
- tstr[digits_computed_so_far++] = tstr[i];
- if (digits_computed_so_far > n_digits)
- {
- exp_in_base = str_size - start_str;
- goto finish_up;
- }
- }
-
- exp_in_base = str_size - start_str;
- /* Modify somewhat and fall out to convert fraction... */
- usize -= uexp;
- uexp = 0;
- }
-
- if (usize <= 0)
- goto finish_up;
-
- /* Convert the fraction. */
- {
- mp_size_t rsize, msize;
- mp_ptr rp, tp, xp, mp;
- int cnt;
- mp_limb_t cy;
- mp_exp_t nexp;
-
- big_base = __mp_bases[base].big_base;
- dig_per_u = __mp_bases[base].chars_per_limb;
-
- /* Hack for correctly (although not efficiently) converting to bases that
- are powers of 2. If we deem it important, we could handle powers of 2
- by shifting and masking (just like mpn_get_str). */
- if (big_base < 10) /* logarithm of base when power of two */
- {
- int logbase = big_base;
- if (dig_per_u * logbase == BITS_PER_MP_LIMB)
- dig_per_u--;
- big_base = (mp_limb_t) 1 << (dig_per_u * logbase);
- /* fall out to general code... */
- }
-
-#if 0
- if (0 && uexp == 0)
- {
- rp = (mp_ptr) TMP_ALLOC (usize * BYTES_PER_MP_LIMB);
- up = u->_mp_d;
- MPN_COPY (rp, up, usize);
- rsize = usize;
- nexp = 0;
- }
- else
- {}
-#endif
- uexp = -uexp;
- if (u->_mp_d[usize - 1] == 0)
- cnt = 0;
- else
- count_leading_zeros (cnt, u->_mp_d[usize - 1]);
-
- nexp = ((uexp * BITS_PER_MP_LIMB) + cnt)
- * __mp_bases[base].chars_per_bit_exactly;
-
- if (nexp == 0)
- {
- rp = (mp_ptr) TMP_ALLOC (usize * BYTES_PER_MP_LIMB);
- up = u->_mp_d;
- MPN_COPY (rp, up, usize);
- rsize = usize;
- }
- else
- {
- rsize = uexp + 2;
- rp = (mp_ptr) TMP_ALLOC (rsize * BYTES_PER_MP_LIMB);
- tp = (mp_ptr) TMP_ALLOC (rsize * BYTES_PER_MP_LIMB);
-
- rp[0] = base;
- rsize = 1;
-
- count_leading_zeros (cnt, nexp);
- for (i = BITS_PER_MP_LIMB - cnt - 2; i >= 0; i--)
- {
- mpn_mul_n (tp, rp, rp, rsize);
- rsize = 2 * rsize;
- rsize -= tp[rsize - 1] == 0;
- xp = tp; tp = rp; rp = xp;
-
- if (((nexp >> i) & 1) != 0)
- {
- cy = mpn_mul_1 (rp, rp, rsize, (mp_limb_t) base);
- rp[rsize] = cy;
- rsize += cy != 0;
- }
- }
-
- /* Did our multiplier (base^nexp) cancel with uexp? */
-#if 0
- if (uexp != rsize)
- {
- do
- {
- cy = mpn_mul_1 (rp, rp, rsize, big_base);
- nexp += dig_per_u;
- }
- while (cy == 0);
- rp[rsize++] = cy;
- }
-#endif
- mp = u->_mp_d;
- msize = usize;
-
- tp = (mp_ptr) TMP_ALLOC ((rsize + msize) * BYTES_PER_MP_LIMB);
- if (rsize > msize)
- cy = mpn_mul (tp, rp, rsize, mp, msize);
- else
- cy = mpn_mul (tp, mp, msize, rp, rsize);
- rsize += msize;
- rsize -= cy == 0;
- rp = tp;
-
- /* If we already output digits (for an integral part) pad
- leading zeros. */
- if (digits_computed_so_far != 0)
- for (i = 0; i < nexp; i++)
- tstr[digits_computed_so_far++] = 0;
- }
-
- while (digits_computed_so_far <= n_digits)
- {
- /* For speed: skip trailing zeroes. */
- if (rp[0] == 0)
- {
- rp++;
- rsize--;
- if (rsize == 0)
- {
- n_digits = digits_computed_so_far;
- break;
- }
- }
-
- cy = mpn_mul_1 (rp, rp, rsize, big_base);
- if (digits_computed_so_far == 0 && cy == 0)
- {
- abort ();
- nexp += dig_per_u;
- continue;
- }
- /* Convert N1 from BIG_BASE to a string of digits in BASE
- using single precision operations. */
- {
- unsigned char *s = tstr + digits_computed_so_far + dig_per_u;
- for (i = dig_per_u - 1; i >= 0; i--)
- {
- *--s = cy % base;
- cy /= base;
- }
- }
- digits_computed_so_far += dig_per_u;
- }
- if (exp_in_base == 0)
- exp_in_base = -nexp;
- }
-
- finish_up:
-
- /* We can have at most one leading 0. Remove it. */
- if (tstr[0] == 0)
- {
- tstr++;
- digits_computed_so_far--;
- exp_in_base--;
- }
-
- /* We should normally have computed too many digits. Round the result
- at the point indicated by n_digits. */
- if (digits_computed_so_far > n_digits)
- {
- /* Round the result. */
- if (tstr[n_digits] * 2 >= base)
- {
- digits_computed_so_far = n_digits;
- for (i = n_digits - 1; i >= 0; i--)
- {
- unsigned int x;
- x = ++(tstr[i]);
- if (x < base)
- goto rounded_ok;
- digits_computed_so_far--;
- }
- tstr[0] = 1;
- digits_computed_so_far = 1;
- exp_in_base++;
- rounded_ok:;
- }
- }
-
- /* We might have fewer digits than requested as a result of rounding above,
- (i.e. 0.999999 => 1.0) or because we have a number that simply doesn't
- need many digits in this base (i.e., 0.125 in base 10). */
- if (n_digits > digits_computed_so_far)
- n_digits = digits_computed_so_far;
-
- /* Remove trailing 0. There can be many zeros. */
- while (n_digits != 0 && tstr[n_digits - 1] == 0)
- n_digits--;
-
- /* Translate to ascii and null-terminate. */
- for (i = 0; i < n_digits; i++)
- *str++ = num_to_text[tstr[i]];
- *str = 0;
- *exp = exp_in_base;
- TMP_FREE (marker);
- return digit_ptr;
-}
-
-#if COPY_THIS_TO_OTHER_PLACES
- /* Use this expression in lots of places in the library instead of the
- count_leading_zeros+expression that is used currently. This expression
- is much more accurate and will save odles of memory. */
- rsize = ((mp_size_t) (exp_in_base / __mp_bases[base].chars_per_bit_exactly)
- + BITS_PER_MP_LIMB) / BITS_PER_MP_LIMB;
-#endif
diff --git a/gnu/lib/libgmp/mpf/init.c b/gnu/lib/libgmp/mpf/init.c
deleted file mode 100644
index 5370121..0000000
--- a/gnu/lib/libgmp/mpf/init.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* mpf_init() -- Make a new multiple precision number with value 0.
-
-Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_init (mpf_ptr r)
-#else
-mpf_init (r)
- mpf_ptr r;
-#endif
-{
- mp_size_t prec = __gmp_default_fp_limb_precision;
- r->_mp_d = (mp_ptr) (*_mp_allocate_func) ((prec + 1) * BYTES_PER_MP_LIMB);
- r->_mp_prec = prec;
- r->_mp_size = 0;
- r->_mp_exp = 0;
-}
diff --git a/gnu/lib/libgmp/mpf/init2.c b/gnu/lib/libgmp/mpf/init2.c
deleted file mode 100644
index a3e5752..0000000
--- a/gnu/lib/libgmp/mpf/init2.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* mpf_init2() -- Make a new multiple precision number with value 0.
-
-Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_init2 (mpf_ptr r, unsigned long int prec_in_bits)
-#else
-mpf_init2 (r, prec_in_bits)
- mpf_ptr r;
- unsigned long int prec_in_bits;
-#endif
-{
- mp_size_t prec;
-
- prec = (MAX (53, prec_in_bits) + 2 * BITS_PER_MP_LIMB - 1)/BITS_PER_MP_LIMB;
- r->_mp_d = (mp_ptr) (*_mp_allocate_func) ((prec + 1) * BYTES_PER_MP_LIMB);
- r->_mp_prec = prec;
- r->_mp_size = 0;
- r->_mp_exp = 0;
-}
diff --git a/gnu/lib/libgmp/mpf/inp_str.c b/gnu/lib/libgmp/mpf/inp_str.c
deleted file mode 100644
index 1d3cd4c..0000000
--- a/gnu/lib/libgmp/mpf/inp_str.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/* mpf_inp_str(dest_float, stream, base) -- Input a number in base
- BASE from stdio stream STREAM and store the result in DEST_FLOAT.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include <ctype.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-
-size_t
-#if __STDC__
-mpf_inp_str (mpf_ptr rop, FILE *stream, int base)
-#else
-mpf_inp_str (rop, stream, base)
- mpf_ptr rop;
- FILE *stream;
- int base;
-#endif
-{
- char *str;
- size_t alloc_size, str_size;
- int c;
- size_t retval;
- size_t nread;
-
- if (stream == 0)
- stream = stdin;
-
- alloc_size = 100;
- str = (char *) (*_mp_allocate_func) (alloc_size);
- str_size = 0;
- nread = 0;
-
- /* Skip whitespace. */
- do
- {
- c = getc (stream);
- nread++;
- }
- while (isspace (c));
-
- for (;;)
- {
- if (str_size >= alloc_size)
- {
- size_t old_alloc_size = alloc_size;
- alloc_size = alloc_size * 3 / 2;
- str = (char *) (*_mp_reallocate_func) (str, old_alloc_size, alloc_size);
- }
- if (c == EOF || isspace (c))
- break;
- str[str_size++] = c;
- c = getc (stream);
- }
- ungetc (c, stream);
-
- if (str_size >= alloc_size)
- {
- size_t old_alloc_size = alloc_size;
- alloc_size = alloc_size * 3 / 2;
- str = (char *) (*_mp_reallocate_func) (str, old_alloc_size, alloc_size);
- }
- str[str_size] = 0;
-
- retval = mpf_set_str (rop, str, base);
- if (retval == -1)
- return 0; /* error */
-
- (*_mp_free_func) (str, alloc_size);
- return str_size + nread;
-}
diff --git a/gnu/lib/libgmp/mpf/iset.c b/gnu/lib/libgmp/mpf/iset.c
deleted file mode 100644
index c2362e1..0000000
--- a/gnu/lib/libgmp/mpf/iset.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/* mpf_init_set -- Initialize a float and assign it from another float.
-
-Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_init_set (mpf_ptr r, mpf_srcptr s)
-#else
-mpf_init_set (r, s)
- mpf_ptr r;
- mpf_srcptr s;
-#endif
-{
- mp_ptr rp, sp;
- mp_size_t ssize, size;
- mp_size_t prec;
-
- prec = __gmp_default_fp_limb_precision;
- r->_mp_d = (mp_ptr) (*_mp_allocate_func) ((prec + 1) * BYTES_PER_MP_LIMB);
- r->_mp_prec = prec;
-
- prec++; /* lie not to lose precision in assignment */
- ssize = s->_mp_size;
- size = ABS (ssize);
-
- rp = r->_mp_d;
- sp = s->_mp_d;
-
- if (size > prec)
- {
- sp += size - prec;
- size = prec;
- }
-
- MPN_COPY (rp, sp, size);
-
- r->_mp_exp = s->_mp_exp;
- r->_mp_size = ssize >= 0 ? size : -size;
-}
diff --git a/gnu/lib/libgmp/mpf/iset_d.c b/gnu/lib/libgmp/mpf/iset_d.c
deleted file mode 100644
index d09e8b8..0000000
--- a/gnu/lib/libgmp/mpf/iset_d.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* mpf_init_set_d -- Initialize a float and assign it from a double.
-
-Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_init_set_d (mpf_ptr r, double val)
-#else
-mpf_init_set_d (r, val)
- mpf_ptr r;
- double val;
-#endif
-{
- mp_size_t prec = __gmp_default_fp_limb_precision;
- r->_mp_d = (mp_ptr) (*_mp_allocate_func) ((prec + 1) * BYTES_PER_MP_LIMB);
- r->_mp_prec = prec;
-
- mpf_set_d (r, val);
-}
diff --git a/gnu/lib/libgmp/mpf/iset_si.c b/gnu/lib/libgmp/mpf/iset_si.c
deleted file mode 100644
index e67eef4..0000000
--- a/gnu/lib/libgmp/mpf/iset_si.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/* mpf_init_set_si() -- Initialize a float and assign it from a signed int.
-
-Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_init_set_si (mpf_ptr r, long int val)
-#else
-mpf_init_set_si (r, val)
- mpf_ptr r;
- long int val;
-#endif
-{
- mp_size_t prec = __gmp_default_fp_limb_precision;
- r->_mp_d = (mp_ptr) (*_mp_allocate_func) ((prec + 1) * BYTES_PER_MP_LIMB);
- r->_mp_prec = prec;
-
- if (val > 0)
- {
- r->_mp_d[0] = val;
- r->_mp_size = 1;
- r->_mp_exp = 1;
- }
- else if (val < 0)
- {
- r->_mp_d[0] = -val;
- r->_mp_size = -1;
- r->_mp_exp = 1;
- }
- else
- {
- r->_mp_size = 0;
- r->_mp_exp = 0;
- }
-}
diff --git a/gnu/lib/libgmp/mpf/iset_str.c b/gnu/lib/libgmp/mpf/iset_str.c
deleted file mode 100644
index 40bfe7c..0000000
--- a/gnu/lib/libgmp/mpf/iset_str.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* mpf_init_set_str -- Initialize a float and assign it from a string.
-
-Copyright (C) 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-int
-#if __STDC__
-mpf_init_set_str (mpf_ptr r, const char *s, int base)
-#else
-mpf_init_set_str (r, s, base)
- mpf_ptr r;
- const char *s;
- int base;
-#endif
-{
- mp_size_t prec = __gmp_default_fp_limb_precision;
- r->_mp_d = (mp_ptr) (*_mp_allocate_func) ((prec + 1) * BYTES_PER_MP_LIMB);
- r->_mp_prec = prec;
-
- return mpf_set_str (r, s, base);
-}
diff --git a/gnu/lib/libgmp/mpf/iset_ui.c b/gnu/lib/libgmp/mpf/iset_ui.c
deleted file mode 100644
index c6c24af..0000000
--- a/gnu/lib/libgmp/mpf/iset_ui.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* mpf_init_set_ui() -- Initialize a float and assign it from an unsigned int.
-
-Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_init_set_ui (mpf_ptr r, unsigned long int val)
-#else
-mpf_init_set_ui (r, val)
- mpf_ptr r;
- unsigned long int val;
-#endif
-{
- mp_size_t prec = __gmp_default_fp_limb_precision;
- r->_mp_d = (mp_ptr) (*_mp_allocate_func) ((prec + 1) * BYTES_PER_MP_LIMB);
- r->_mp_prec = prec;
- r->_mp_d[0] = val;
- r->_mp_size = val != 0;
- r->_mp_exp = val != 0;
-}
diff --git a/gnu/lib/libgmp/mpf/mul.c b/gnu/lib/libgmp/mpf/mul.c
deleted file mode 100644
index 8f1a2a9..0000000
--- a/gnu/lib/libgmp/mpf/mul.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/* mpf_mul -- Multiply two floats.
-
-Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_mul (mpf_ptr r, mpf_srcptr u, mpf_srcptr v)
-#else
-mpf_mul (r, u, v)
- mpf_ptr r;
- mpf_srcptr u;
- mpf_srcptr v;
-#endif
-{
- mp_srcptr up, vp;
- mp_size_t usize, vsize;
- mp_size_t sign_product;
- mp_size_t prec = r->_mp_prec;
- TMP_DECL (marker);
-
- TMP_MARK (marker);
- usize = u->_mp_size;
- vsize = v->_mp_size;
- sign_product = usize ^ vsize;
-
- usize = ABS (usize);
- vsize = ABS (vsize);
-
- up = u->_mp_d;
- vp = v->_mp_d;
- if (usize > prec)
- {
- up += usize - prec;
- usize = prec;
- }
- if (vsize > prec)
- {
- vp += vsize - prec;
- vsize = prec;
- }
-
- if (usize == 0 || vsize == 0)
- {
- r->_mp_size = 0;
- r->_mp_exp = 0; /* ??? */
- }
- else
- {
- mp_size_t rsize;
- mp_limb_t cy_limb;
- mp_ptr rp, tp;
- mp_size_t adj;
-
- rsize = usize + vsize;
- tp = (mp_ptr) TMP_ALLOC (rsize * BYTES_PER_MP_LIMB);
- cy_limb = (usize >= vsize
- ? mpn_mul (tp, up, usize, vp, vsize)
- : mpn_mul (tp, vp, vsize, up, usize));
-
- adj = cy_limb == 0;
- rsize -= adj;
- prec++;
- if (rsize > prec)
- {
- tp += rsize - prec;
- rsize = prec;
- }
- rp = r->_mp_d;
- MPN_COPY (rp, tp, rsize);
- r->_mp_exp = u->_mp_exp + v->_mp_exp - adj;
- r->_mp_size = sign_product >= 0 ? rsize : -rsize;
- }
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpf/mul_2exp.c b/gnu/lib/libgmp/mpf/mul_2exp.c
deleted file mode 100644
index 0ed35a0..0000000
--- a/gnu/lib/libgmp/mpf/mul_2exp.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/* mpf_mul_2exp -- Multiply a float by 2^n.
-
-Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_mul_2exp (mpf_ptr r, mpf_srcptr u, unsigned long int exp)
-#else
-mpf_mul_2exp (r, u, exp)
- mpf_ptr r;
- mpf_srcptr u;
- unsigned long int exp;
-#endif
-{
- mp_srcptr up;
- mp_ptr rp = r->_mp_d;
- mp_size_t usize;
- mp_size_t abs_usize;
- mp_size_t prec = r->_mp_prec;
- mp_exp_t uexp = u->_mp_exp;
-
- usize = u->_mp_size;
-
- if (usize == 0)
- {
- r->_mp_size = 0;
- r->_mp_exp = 0;
- return;
- }
-
- abs_usize = ABS (usize);
- up = u->_mp_d;
-
- if (abs_usize > prec)
- {
- up += abs_usize - prec;
- abs_usize = prec;
- }
-
- if (exp % BITS_PER_MP_LIMB == 0)
- {
- if (rp != up)
- MPN_COPY (rp, up, abs_usize);
- r->_mp_size = usize >= 0 ? abs_usize : -abs_usize;
- r->_mp_exp = uexp + exp / BITS_PER_MP_LIMB;
- }
- else
- {
- mp_limb_t cy_limb;
- if (r != u)
- {
- cy_limb = mpn_lshift (rp, up, abs_usize, exp % BITS_PER_MP_LIMB);
- rp[abs_usize] = cy_limb;
- cy_limb = cy_limb != 0;
- }
- else
- {
- /* Use mpn_rshift since mpn_lshift operates downwards, and we
- therefore would clobber part of U before using that part. */
- cy_limb = mpn_rshift (rp + 1, up, abs_usize, -exp % BITS_PER_MP_LIMB);
- rp[0] = cy_limb;
- cy_limb = rp[abs_usize] != 0;
- }
-
- abs_usize += cy_limb;
- r->_mp_size = usize >= 0 ? abs_usize : -abs_usize;
- r->_mp_exp = uexp + exp / BITS_PER_MP_LIMB + cy_limb;
- }
-}
diff --git a/gnu/lib/libgmp/mpf/mul_ui.c b/gnu/lib/libgmp/mpf/mul_ui.c
deleted file mode 100644
index fc87cb5..0000000
--- a/gnu/lib/libgmp/mpf/mul_ui.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/* mpf_mul_ui -- Multiply a float and an unsigned integer.
-
-Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_mul_ui (mpf_ptr r, mpf_srcptr u, unsigned long int v)
-#else
-mpf_mul_ui (r, u, v)
- mpf_ptr r;
- mpf_srcptr u;
- unsigned long int v;
-#endif
-{
- mp_srcptr up;
- mp_size_t usize;
- mp_size_t size;
- mp_size_t prec = r->_mp_prec;
- mp_limb_t cy_limb;
- mp_ptr rp;
-
- usize = u->_mp_size;
- size = ABS (usize);
-
- rp = r->_mp_d;
- up = u->_mp_d;
- if (size > prec)
- {
- up += size - prec;
- size = prec;
- }
-
-#if 0
- /* Since we can do it at almost no cost, remove zero limbs at low end of
- result. */
- if (up[0] == 0)
- up++, size--;
-#endif
-
- if (size == 0 || v == 0)
- {
- r->_mp_size = 0;
- r->_mp_exp = 0; /* ??? */
- }
- else
- {
- cy_limb = mpn_mul_1 (rp, up, size, (mp_limb_t) v);
- rp[size] = cy_limb;
- cy_limb = cy_limb != 0;
- r->_mp_exp = u->_mp_exp + cy_limb;
- size += cy_limb;
- r->_mp_size = usize >= 0 ? size : -size;
- }
-}
diff --git a/gnu/lib/libgmp/mpf/neg.c b/gnu/lib/libgmp/mpf/neg.c
deleted file mode 100644
index a4139fb..0000000
--- a/gnu/lib/libgmp/mpf/neg.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/* mpf_neg -- Negate a float.
-
-Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_neg (mpf_ptr r, mpf_srcptr u)
-#else
-mpf_neg (r, u)
- mpf_ptr r;
- mpf_srcptr u;
-#endif
-{
- mp_size_t size;
-
- size = -u->_mp_size;
- if (r != u)
- {
- mp_size_t prec;
- mp_size_t asize;
- mp_ptr rp, up;
-
- prec = r->_mp_prec + 1; /* lie not to lose precision in assignment */
- asize = ABS (size);
- rp = r->_mp_d;
- up = u->_mp_d;
-
- if (asize > prec)
- {
- up += asize - prec;
- asize = prec;
- }
-
- MPN_COPY (rp, up, asize);
- r->_mp_exp = u->_mp_exp;
- size = size >= 0 ? asize : -asize;
- }
- r->_mp_size = size;
-}
diff --git a/gnu/lib/libgmp/mpf/out_str.c b/gnu/lib/libgmp/mpf/out_str.c
deleted file mode 100644
index 2a7a954..0000000
--- a/gnu/lib/libgmp/mpf/out_str.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/* mpf_out_str (stream, base, n_digits, op) -- Print N_DIGITS digits from
- the float OP to STREAM in base BASE. Return the number of characters
- written, or 0 if an error occurred.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-
-size_t
-#if __STDC__
-mpf_out_str (FILE *stream, int base, size_t n_digits, mpf_srcptr op)
-#else
-mpf_out_str (stream, base, n_digits, op)
- FILE *stream;
- int base;
- size_t n_digits;
- mpf_srcptr op;
-#endif
-{
- char *str;
- mp_exp_t exp;
- size_t written;
- TMP_DECL (marker);
-
- TMP_MARK (marker);
-
- if (base == 0)
- base = 10;
- if (n_digits == 0)
- n_digits = (((op->_mp_prec - 1) * BITS_PER_MP_LIMB)
- * __mp_bases[base].chars_per_bit_exactly);
-
- if (stream == 0)
- stream = stdout;
-
- str = (char *) TMP_ALLOC (n_digits + 2); /* extra for minus sign and \0 */
-
- mpf_get_str (str, &exp, base, n_digits, op);
- n_digits = strlen (str);
-
- written = 0;
-
- /* Write sign */
- if (str[0] == '-')
- {
- str++;
- fputc ('-', stream);
- written = 1;
- }
-
- fwrite ("0.", 1, 2, stream);
- written += 2;
-
- /* Write mantissa */
- {
- size_t fwret;
- fwret = fwrite (str, 1, n_digits, stream);
- written += fwret;
- }
-
- /* Write exponent */
- {
- int fpret;
- fpret = fprintf (stream, (base <= 10 ? "e%ld" : "@%ld"), exp);
- written += fpret;
- }
-
- TMP_FREE (marker);
- return ferror (stream) ? 0 : written;
-}
diff --git a/gnu/lib/libgmp/mpf/random2.c b/gnu/lib/libgmp/mpf/random2.c
deleted file mode 100644
index 8e67b11..0000000
--- a/gnu/lib/libgmp/mpf/random2.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/* mpf_random2 -- Generate a positive random mpf_t of specified size, with
- long runs of consecutive ones and zeros in the binary representation.
- Intended for testing of other MP routines.
-
-Copyright (C) 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-#if defined (__hpux) || defined (alpha__) || defined (__svr4__) || defined (__SVR4)
-/* HPUX lacks random(). DEC OSF/1 1.2 random() returns a double. */
-long mrand48 ();
-static inline long
-random ()
-{
- return mrand48 ();
-}
-#else
-long random ();
-#endif
-
-void
-#if __STDC__
-mpf_random2 (mpf_ptr x, mp_size_t size, mp_exp_t exp)
-#else
-mpf_random2 (x, size, exp)
- mpf_ptr x;
- mp_size_t size;
- mp_exp_t exp;
-#endif
-{
- mp_size_t asize;
- mp_size_t prec = x->_mp_prec;
-
- asize = ABS (size);
- if (asize != 0)
- {
- if (asize > prec + 1)
- asize = prec + 1;
-
- mpn_random2 (x->_mp_d, asize);
- }
-
- if (exp != 0)
- exp = random () % (2 * exp) - exp;
- x->_mp_exp = asize == 0 ? 0 : exp;
- x->_mp_size = size < 0 ? -asize : asize;
-}
diff --git a/gnu/lib/libgmp/mpf/reldiff.c b/gnu/lib/libgmp/mpf/reldiff.c
deleted file mode 100644
index c846466..0000000
--- a/gnu/lib/libgmp/mpf/reldiff.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/* mpf_reldiff -- Generate the relative difference of two floats.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_reldiff (mpf_t rdiff, mpf_srcptr x, mpf_srcptr y)
-#else
-mpf_reldiff (rdiff, x, y)
- mpf_t rdiff;
- mpf_srcptr x;
- mpf_srcptr y;
-#endif
-{
- if (mpf_cmp_ui (x, 0) == 0)
- {
- mpf_set_ui (rdiff, (unsigned long int) (mpf_sgn (y) != 0));
- }
- else
- {
- mpf_t d;
- mp_limb_t tmp_limb[2];
-
- d->_mp_prec = 1;
- d->_mp_d = tmp_limb;
-
- mpf_sub (d, x, y);
- mpf_abs (d, d);
- mpf_div (rdiff, d, x);
- }
-}
-
diff --git a/gnu/lib/libgmp/mpf/set.c b/gnu/lib/libgmp/mpf/set.c
deleted file mode 100644
index 5778b85..0000000
--- a/gnu/lib/libgmp/mpf/set.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* mpf_set -- Assign a float from another float.
-
-Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_set (mpf_ptr r, mpf_srcptr u)
-#else
-mpf_set (r, u)
- mpf_ptr r;
- mpf_srcptr u;
-#endif
-{
- mp_ptr rp, up;
- mp_size_t size, asize;
- mp_size_t prec;
-
- prec = r->_mp_prec + 1; /* lie not to lose precision in assignment */
- size = u->_mp_size;
- asize = ABS (size);
- rp = r->_mp_d;
- up = u->_mp_d;
-
- if (asize > prec)
- {
- up += asize - prec;
- asize = prec;
- }
-
- MPN_COPY (rp, up, asize);
- r->_mp_exp = u->_mp_exp;
- r->_mp_size = size >= 0 ? asize : -asize;
-}
diff --git a/gnu/lib/libgmp/mpf/set_d.c b/gnu/lib/libgmp/mpf/set_d.c
deleted file mode 100644
index 43eb157..0000000
--- a/gnu/lib/libgmp/mpf/set_d.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* mpf_set_d -- Assign a float from a IEEE double.
-
-Copyright (C) 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_set_d (mpf_ptr r, double d)
-#else
-mpf_set_d (r, d)
- mpf_ptr r;
- double d;
-#endif
-{
- int negative;
-
- if (d == 0)
- {
- SIZ(r) = 0;
- EXP(r) = 0;
- return;
- }
- negative = d < 0;
- d = ABS (d);
-
- EXP(r) = __gmp_extract_double (PTR(r), d);
- SIZ(r) = negative ? -LIMBS_PER_DOUBLE : LIMBS_PER_DOUBLE;
-}
diff --git a/gnu/lib/libgmp/mpf/set_dfl_prec.c b/gnu/lib/libgmp/mpf/set_dfl_prec.c
deleted file mode 100644
index 55069e4..0000000
--- a/gnu/lib/libgmp/mpf/set_dfl_prec.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* mpf_set_default_prec --
-
-Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-mp_size_t __gmp_default_fp_limb_precision
- = (53 + 2 * BITS_PER_MP_LIMB - 1) / BITS_PER_MP_LIMB;
-
-void
-#if __STDC__
-mpf_set_default_prec (unsigned long int prec_in_bits)
-#else
-mpf_set_default_prec (prec_in_bits)
- unsigned long int prec_in_bits;
-#endif
-{
- mp_size_t prec;
-
- prec = (MAX (53, prec_in_bits) + 2 * BITS_PER_MP_LIMB - 1)/BITS_PER_MP_LIMB;
- __gmp_default_fp_limb_precision = prec;
-}
diff --git a/gnu/lib/libgmp/mpf/set_prc.c b/gnu/lib/libgmp/mpf/set_prc.c
deleted file mode 100644
index 10f2b06..0000000
--- a/gnu/lib/libgmp/mpf/set_prc.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* mpf_set_prec(x) -- Change the precision of x.
-
-Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_set_prec (mpf_ptr x, unsigned long int prec_in_bits)
-#else
-mpf_set_prec (x, prec_in_bits)
- mpf_ptr x;
- unsigned long int prec_in_bits;
-#endif
-{
- mp_size_t prec;
- mp_size_t size = ABS (x->_mp_size);
-
- prec = (MAX (53, prec_in_bits) + 2 * BITS_PER_MP_LIMB - 1)/BITS_PER_MP_LIMB;
-
- /* We want the most significant limbs, so move the limbs down if we are
- about to truncate the value. */
- if (size > prec + 1)
- {
- mp_size_t offset = size - (prec + 1);
- mp_ptr xp = x->_mp_d;
-
- MPN_COPY (xp, xp + offset, prec + 1);
- }
-
- x->_mp_d = (mp_ptr) (*_mp_reallocate_func)
- (x->_mp_d,
- (x->_mp_prec + 1) * BYTES_PER_MP_LIMB, (prec + 1) * BYTES_PER_MP_LIMB);
- x->_mp_prec = prec;
-
- /* If the precision decreased, truncate the number. */
- if (size > prec + 1)
- x->_mp_size = x->_mp_size >= 0 ? (prec + 1) : -(prec + 1);
-}
diff --git a/gnu/lib/libgmp/mpf/set_prc_raw.c b/gnu/lib/libgmp/mpf/set_prc_raw.c
deleted file mode 100644
index f55188a..0000000
--- a/gnu/lib/libgmp/mpf/set_prc_raw.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* mpf_set_prec_raw(x,bits) -- Change the precision of x without changing
- allocation. For proper operation, the original precision need to be reset
- sooner or later.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_set_prec_raw (mpf_ptr x, unsigned long int prec_in_bits)
-#else
-mpf_set_prec_raw (x, prec_in_bits)
- mpf_ptr x;
- unsigned long int prec_in_bits;
-#endif
-{
- mp_size_t prec;
- prec = (MAX (53, prec_in_bits) + 2 * BITS_PER_MP_LIMB - 1)/BITS_PER_MP_LIMB;
- x->_mp_prec = prec;
-}
diff --git a/gnu/lib/libgmp/mpf/set_q.c b/gnu/lib/libgmp/mpf/set_q.c
deleted file mode 100644
index 69d81e3..0000000
--- a/gnu/lib/libgmp/mpf/set_q.c
+++ /dev/null
@@ -1,170 +0,0 @@
-/* mpf_set_q (mpf_t rop, mpq_t op) -- Convert the rational op to the float rop.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-/* Algorithm:
- 1. Develop >= n bits of src.num / src.den, where n is the number of bits
- in a double. This (partial) division will use all bits from the
- denominator.
- 2. Use the remainder to determine how to round the result.
- 3. Assign the integral result to a temporary double.
- 4. Scale the temporary double, and return the result.
-
- An alternative algorithm, that would be faster:
- 0. Let n be somewhat larger than the number of significant bits in a double.
- 1. Extract the most significant n bits of the denominator, and an equal
- number of bits from the numerator.
- 2. Interpret the extracted numbers as integers, call them a and b
- respectively, and develop n bits of the fractions ((a + 1) / b) and
- (a / (b + 1)) using mpn_divrem.
- 3. If the computed values are identical UP TO THE POSITION WE CARE ABOUT,
- we are done. If they are different, repeat the algorithm from step 1,
- but first let n = n * 2.
- 4. If we end up using all bits from the numerator and denominator, fall
- back to the first algorithm above.
- 5. Just to make life harder, The computation of a + 1 and b + 1 above
- might give carry-out... Needs special handling. It might work to
- subtract 1 in both cases instead.
-*/
-
-void
-#if __STDC__
-mpf_set_q (mpf_t r, mpq_srcptr q)
-#else
-mpf_set_q (r, q)
- mpf_t r;
- mpq_srcptr q;
-#endif
-{
- mp_ptr np, dp;
- mp_ptr rp;
- mp_size_t nsize, dsize;
- mp_size_t qsize, rsize;
- mp_size_t sign_quotient;
- unsigned normalization_steps;
- mp_limb_t qlimb;
- mp_ptr qp;
- mp_size_t prec;
- mp_exp_t exp;
- TMP_DECL (marker);
-
- nsize = SIZ (&q->_mp_num);
- dsize = SIZ (&q->_mp_den);
-
- if (nsize == 0)
- {
- SIZ (r) = 0;
- EXP (r) = 0;
- return;
- }
-
- prec = PREC (r) + 1;
-
- TMP_MARK (marker);
-
- qp = PTR (r);
-
- sign_quotient = nsize ^ dsize;
- nsize = ABS (nsize);
- dsize = ABS (dsize);
- np = PTR (&q->_mp_num);
- dp = PTR (&q->_mp_den);
-
- exp = nsize - dsize;
-
- if (nsize > prec)
- {
- np += nsize - prec;
- nsize = prec;
- }
- if (dsize > prec)
- {
- dp += dsize - prec;
- dsize = prec;
- }
-
- rsize = MAX (nsize, dsize);
- rp = (mp_ptr) TMP_ALLOC ((rsize + 1) * BYTES_PER_MP_LIMB);
-
- count_leading_zeros (normalization_steps, dp[dsize - 1]);
-
- /* Normalize the denominator, i.e. make its most significant bit set by
- shifting it NORMALIZATION_STEPS bits to the left. Also shift the
- numerator the same number of steps (to keep the quotient the same!). */
- if (normalization_steps != 0)
- {
- mp_ptr tp;
- mp_limb_t nlimb;
-
- /* Shift up the denominator setting the most significant bit of
- the most significant limb. Use temporary storage not to clobber
- the original contents of the denominator. */
- tp = (mp_ptr) TMP_ALLOC (dsize * BYTES_PER_MP_LIMB);
- mpn_lshift (tp, dp, dsize, normalization_steps);
- dp = tp;
-
- if (rsize != nsize)
- {
- MPN_ZERO (rp, rsize - nsize);
- nlimb = mpn_lshift (rp + (rsize - nsize),
- np, nsize, normalization_steps);
- }
- else
- {
- nlimb = mpn_lshift (rp, np, nsize, normalization_steps);
- }
- if (nlimb != 0)
- {
- rp[rsize] = nlimb;
- rsize++;
- exp++;
- }
- }
- else
- {
- if (rsize != nsize)
- {
- MPN_ZERO (rp, rsize - nsize);
- MPN_COPY (rp + (rsize - nsize), np, nsize);
- }
- else
- {
- MPN_COPY (rp, np, rsize);
- }
- }
-
- qlimb = mpn_divrem (qp, prec - 1 - (rsize - dsize), rp, rsize, dp, dsize);
- qsize = prec - 1;
- if (qlimb)
- {
- qp[qsize] = qlimb;
- qsize++;
- exp++;
- }
-
- EXP (r) = exp;
- SIZ (r) = qsize;
-
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpf/set_si.c b/gnu/lib/libgmp/mpf/set_si.c
deleted file mode 100644
index f9b4b55..0000000
--- a/gnu/lib/libgmp/mpf/set_si.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* mpf_set_si() -- Assign a float from a signed int.
-
-Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_set_si (mpf_ptr x, long int val)
-#else
-mpf_set_si (x, val)
- mpf_ptr x;
- long int val;
-#endif
-{
- if (val > 0)
- {
- x->_mp_d[0] = val;
- x->_mp_size = 1;
- x->_mp_exp = 1;
- }
- else if (val < 0)
- {
- x->_mp_d[0] = -val;
- x->_mp_size = -1;
- x->_mp_exp = 1;
- }
- else
- {
- x->_mp_size = 0;
- x->_mp_exp = 0;
- }
-}
diff --git a/gnu/lib/libgmp/mpf/set_str.c b/gnu/lib/libgmp/mpf/set_str.c
deleted file mode 100644
index 2ab9fae..0000000
--- a/gnu/lib/libgmp/mpf/set_str.c
+++ /dev/null
@@ -1,302 +0,0 @@
-/* mpf_set_str (dest, string, base) -- Convert the string STRING
- in base BASE to a float in dest. If BASE is zero, the leading characters
- of STRING is used to figure out the base.
-
-Copyright (C) 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <string.h>
-#include <ctype.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-long int strtol _PROTO ((const char *, char **ptr, int));
-
-static int
-digit_value_in_base (c, base)
- int c;
- int base;
-{
- int digit;
-
- if (isdigit (c))
- digit = c - '0';
- else if (islower (c))
- digit = c - 'a' + 10;
- else if (isupper (c))
- digit = c - 'A' + 10;
- else
- return -1;
-
- if (digit < base)
- return digit;
- return -1;
-}
-
-int
-#if __STDC__
-mpf_set_str (mpf_ptr x, const char *str, int base)
-#else
-mpf_set_str (x, str, base)
- mpf_ptr x;
- char *str;
- int base;
-#endif
-{
- size_t str_size;
- char *s, *begs;
- size_t i;
- mp_size_t xsize;
- int c;
- int negative;
- char *dotpos = 0;
- int expflag;
- int decimal_exponent_flag;
- TMP_DECL (marker);
-
- TMP_MARK (marker);
-
- c = *str;
-
- /* Skip whitespace. */
- while (isspace (c))
- c = *++str;
-
- negative = 0;
- if (c == '-')
- {
- negative = 1;
- c = *++str;
- }
-
- decimal_exponent_flag = base < 0;
- base = ABS (base);
-
- if (digit_value_in_base (c, base == 0 ? 10 : base) < 0)
- return -1; /* error if no digits */
-
- /* If BASE is 0, try to find out the base by looking at the initial
- characters. */
- if (base == 0)
- {
- base = 10;
-#if 0
- if (c == '0')
- {
- base = 8;
- c = *++str;
- if (c == 'x' || c == 'X')
- base = 16;
- }
-#endif
- }
-
- expflag = 0;
- str_size = strlen (str);
- for (i = 0; i < str_size; i++)
- {
- c = str[i];
- if (c == '@' || (base <= 10 && (c == 'e' || c == 'E')))
- {
- expflag = 1;
- str_size = i;
- break;
- }
-
- }
-
- s = begs = (char *) TMP_ALLOC (str_size + 1);
-
- for (i = 0; i < str_size; i++)
- {
- c = *str;
- if (!isspace (c))
- {
- int dig;
-
- if (c == '.')
- {
- if (dotpos != 0)
- {
- TMP_FREE (marker);
- return -1;
- }
- dotpos = s;
- }
- else
- {
- dig = digit_value_in_base (c, base);
- if (dig < 0)
- {
- TMP_FREE (marker);
- return -1;
- }
- *s++ = dig;
- }
- }
- c = *++str;
- }
-
- str_size = s - begs;
-
- xsize = str_size / __mp_bases[base].chars_per_limb + 2;
- {
- long exp_in_base;
- mp_size_t rsize, msize;
- int cnt, i;
- mp_ptr mp, xp, tp, rp;
- mp_limb_t cy;
- mp_exp_t exp_in_limbs;
- mp_size_t prec = x->_mp_prec;
- int divflag;
- mp_size_t xxx = 0;
-
- mp = (mp_ptr) TMP_ALLOC (xsize * BYTES_PER_MP_LIMB);
- msize = mpn_set_str (mp, (unsigned char *) begs, str_size, base);
-
- if (msize == 0)
- {
- x->_mp_size = 0;
- x->_mp_exp = 0;
- TMP_FREE (marker);
- return 0;
- }
-
- if (expflag != 0)
- exp_in_base = strtol (str + 1, (char **) 0,
- decimal_exponent_flag ? 10 : base);
- else
- exp_in_base = 0;
- if (dotpos != 0)
- exp_in_base -= s - dotpos;
- divflag = exp_in_base < 0;
- exp_in_base = ABS (exp_in_base);
-
- if (exp_in_base == 0)
- {
- MPN_COPY (x->_mp_d, mp, msize);
- x->_mp_size = negative ? -msize : msize;
- x->_mp_exp = msize;
- TMP_FREE (marker);
- return 0;
- }
-
-#if 1
- rsize = (((mp_size_t) (exp_in_base / __mp_bases[base].chars_per_bit_exactly))
- / BITS_PER_MP_LIMB + 3);
-#else
- count_leading_zeros (cnt, (mp_limb_t) base);
- rsize = exp_in_base - cnt * exp_in_base / BITS_PER_MP_LIMB + 1;
-#endif
- rp = (mp_ptr) TMP_ALLOC (rsize * BYTES_PER_MP_LIMB);
- tp = (mp_ptr) TMP_ALLOC (rsize * BYTES_PER_MP_LIMB);
-
- rp[0] = base;
- rsize = 1;
-
- count_leading_zeros (cnt, exp_in_base);
-
- for (i = BITS_PER_MP_LIMB - cnt - 2; i >= 0; i--)
- {
- mpn_mul_n (tp, rp, rp, rsize);
- rsize = 2 * rsize;
- rsize -= tp[rsize - 1] == 0;
- xp = tp; tp = rp; rp = xp;
-
- if (((exp_in_base >> i) & 1) != 0)
- {
- cy = mpn_mul_1 (rp, rp, rsize, (mp_limb_t) base);
- rp[rsize] = cy;
- rsize += cy != 0;
- }
- }
-
- if (rsize > prec)
- {
- xxx += rsize - prec;
- rp += rsize - prec;
- rsize = prec;
- }
-#if 0
- if (msize > prec)
- {
- xxx -= msize - prec;
- mp += msize - prec;
- msize = prec;
- }
-#endif
- if (divflag)
- {
- mp_ptr qp;
- mp_limb_t qflag;
- mp_size_t xtra;
- if (msize <= rsize)
- {
- /* Allocate extra limb for current divrem sematics. */
- mp_ptr tmp = (mp_ptr) TMP_ALLOC ((rsize + 1) * BYTES_PER_MP_LIMB);
- MPN_ZERO (tmp, rsize - msize);
- MPN_COPY (tmp + rsize - msize, mp, msize);
- mp = tmp;
- xxx += rsize - msize;
- msize = rsize;
- }
- count_leading_zeros (cnt, rp[rsize - 1]);
- if (cnt != 0)
- {
- mpn_lshift (rp, rp, rsize, cnt);
- cy = mpn_lshift (mp, mp, msize, cnt);
- if (cy)
- mp[msize++] = cy;
- }
- qp = (mp_ptr) TMP_ALLOC ((prec + 1) * BYTES_PER_MP_LIMB);
- xtra = prec - (msize - rsize);
- qflag = mpn_divrem (qp, xtra, mp, msize, rp, rsize);
- qp[prec] = qflag;
- tp = qp;
- rsize = prec + qflag;
- exp_in_limbs = rsize - xtra - xxx;
- }
- else
- {
- tp = (mp_ptr) TMP_ALLOC ((rsize + msize) * BYTES_PER_MP_LIMB);
- if (rsize > msize)
- mpn_mul (tp, rp, rsize, mp, msize);
- else
- mpn_mul (tp, mp, msize, rp, rsize);
- rsize += msize;
- rsize -= tp[rsize - 1] == 0;
- exp_in_limbs = rsize + xxx;
-
- if (rsize > prec)
- {
- xxx = rsize - prec;
- tp += rsize - prec;
- rsize = prec;
- exp_in_limbs += 0;
- }
- }
-
- MPN_COPY (x->_mp_d, tp, rsize);
- x->_mp_size = negative ? -rsize : rsize;
- x->_mp_exp = exp_in_limbs;
- TMP_FREE (marker);
- return 0;
- }
-}
diff --git a/gnu/lib/libgmp/mpf/set_ui.c b/gnu/lib/libgmp/mpf/set_ui.c
deleted file mode 100644
index ead0498..0000000
--- a/gnu/lib/libgmp/mpf/set_ui.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/* mpf_set_ui() -- Assign a float from an unsigned int.
-
-Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_set_ui (mpf_ptr x, unsigned long int val)
-#else
-mpf_set_ui (x, val)
- mpf_ptr x;
- unsigned long int val;
-#endif
-{
- if (val != 0)
- {
- x->_mp_d[0] = val;
- x->_mp_size = 1;
- x->_mp_exp = 1;
- }
- else
- {
- x->_mp_size = 0;
- x->_mp_exp = 0;
- }
-}
diff --git a/gnu/lib/libgmp/mpf/set_z.c b/gnu/lib/libgmp/mpf/set_z.c
deleted file mode 100644
index 4fff86e..0000000
--- a/gnu/lib/libgmp/mpf/set_z.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* mpf_set_z -- Assign a float from an integer.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_set_z (mpf_ptr r, mpz_srcptr u)
-#else
-mpf_set_z (r, u)
- mpf_ptr r;
- mpz_srcptr u;
-#endif
-{
- mp_ptr rp, up;
- mp_size_t size, asize;
- mp_size_t prec;
-
- prec = PREC (r) + 1;
- size = SIZ (u);
- asize = ABS (size);
- rp = PTR (r);
- up = PTR (u);
-
- EXP (r) = asize;
-
- if (asize > prec)
- {
- up += asize - prec;
- asize = prec;
- }
-
- MPN_COPY (rp, up, asize);
- SIZ (r) = size >= 0 ? asize : -asize;
-}
diff --git a/gnu/lib/libgmp/mpf/size.c b/gnu/lib/libgmp/mpf/size.c
deleted file mode 100644
index 23a57ec..0000000
--- a/gnu/lib/libgmp/mpf/size.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* mpf_size(x) -- return the number of limbs currently used by the
- value of the float X.
-
-Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-size_t
-#if __STDC__
-mpf_size (mpf_srcptr x)
-#else
-mpf_size (x)
- mpf_srcptr x;
-#endif
-{
- return ABS (x->_mp_size);
-}
diff --git a/gnu/lib/libgmp/mpf/sqrt.c b/gnu/lib/libgmp/mpf/sqrt.c
deleted file mode 100644
index 6d115e4..0000000
--- a/gnu/lib/libgmp/mpf/sqrt.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* mpf_sqrt -- Compute the square root of a float.
-
-Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_sqrt (mpf_ptr r, mpf_srcptr u)
-#else
-mpf_sqrt (r, u)
- mpf_ptr r;
- mpf_srcptr u;
-#endif
-{
- mp_size_t usize;
- mp_ptr up, tp;
- mp_size_t prec;
- mp_exp_t tsize, rexp;
- TMP_DECL (marker);
-
- usize = u->_mp_size;
- if (usize <= 0)
- {
- usize = 1 - 1 / (usize == 0); /* Divide by zero for negative OP. */
- r->_mp_size = usize; /* cheat flow by using usize here */
- r->_mp_exp = 0;
- return;
- }
-
- TMP_MARK (marker);
-
- prec = r->_mp_prec;
- rexp = (u->_mp_exp + 1) >> 1; /* round towards -inf */
- tsize = 2 * prec + (u->_mp_exp & 1);
-
- up = u->_mp_d;
- tp = (mp_ptr) TMP_ALLOC (tsize * BYTES_PER_MP_LIMB);
-
- if (usize > tsize)
- {
- up += usize - tsize;
- usize = tsize;
- MPN_COPY (tp, up, tsize);
- }
- else
- {
- MPN_ZERO (tp, tsize - usize);
- MPN_COPY (tp + (tsize - usize), up, usize);
- }
-
- mpn_sqrtrem (r->_mp_d, NULL, tp, tsize);
-
- r->_mp_size = (tsize + 1) / 2;
- r->_mp_exp = rexp;
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpf/sqrt_ui.c b/gnu/lib/libgmp/mpf/sqrt_ui.c
deleted file mode 100644
index 421aa021..0000000
--- a/gnu/lib/libgmp/mpf/sqrt_ui.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/* mpf_sqrt_ui -- Compute the square root of an unsigned integer.
-
-Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_sqrt_ui (mpf_ptr r, unsigned long int u)
-#else
-mpf_sqrt_ui (r, u)
- mpf_ptr r;
- unsigned long int u;
-#endif
-{
- mp_size_t rsize;
- mp_ptr tp;
- mp_size_t prec;
- TMP_DECL (marker);
-
- if (u == 0)
- {
- r->_mp_size = 0;
- r->_mp_exp = 0;
- return;
- }
-
- TMP_MARK (marker);
-
- prec = r->_mp_prec;
- rsize = 2 * prec + 1;
-
- tp = (mp_ptr) TMP_ALLOC (rsize * BYTES_PER_MP_LIMB);
-
- MPN_ZERO (tp, rsize - 1);
- tp[rsize - 1] = u;
-
- mpn_sqrtrem (r->_mp_d, NULL, tp, rsize);
-
- r->_mp_size = prec + 1;
- r->_mp_exp = 1;
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpf/sub.c b/gnu/lib/libgmp/mpf/sub.c
deleted file mode 100644
index b871982..0000000
--- a/gnu/lib/libgmp/mpf/sub.c
+++ /dev/null
@@ -1,402 +0,0 @@
-/* mpf_sub -- Subtract two floats.
-
-Copyright (C) 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_sub (mpf_ptr r, mpf_srcptr u, mpf_srcptr v)
-#else
-mpf_sub (r, u, v)
- mpf_ptr r;
- mpf_srcptr u;
- mpf_srcptr v;
-#endif
-{
- mp_srcptr up, vp;
- mp_ptr rp, tp;
- mp_size_t usize, vsize, rsize;
- mp_size_t prec;
- mp_exp_t exp;
- mp_size_t ediff;
- int negate;
- TMP_DECL (marker);
-
- usize = u->_mp_size;
- vsize = v->_mp_size;
-
- /* Handle special cases that don't work in generic code below. */
- if (usize == 0)
- {
- mpf_neg (r, v);
- return;
- }
- if (vsize == 0)
- {
- mpf_set (r, u);
- return;
- }
-
- /* If signs of U and V are different, perform addition. */
- if ((usize ^ vsize) < 0)
- {
- __mpf_struct v_negated;
- v_negated._mp_size = -vsize;
- v_negated._mp_exp = v->_mp_exp;
- v_negated._mp_d = v->_mp_d;
- mpf_add (r, u, &v_negated);
- return;
- }
-
- TMP_MARK (marker);
-
- /* Signs are now known to be the same. */
- negate = usize < 0;
-
- /* Make U be the operand with the largest exponent. */
- if (u->_mp_exp < v->_mp_exp)
- {
- mpf_srcptr t;
- t = u; u = v; v = t;
- negate ^= 1;
- usize = u->_mp_size;
- vsize = v->_mp_size;
- }
-
- usize = ABS (usize);
- vsize = ABS (vsize);
- up = u->_mp_d;
- vp = v->_mp_d;
- rp = r->_mp_d;
- prec = r->_mp_prec + 1;
- exp = u->_mp_exp;
- ediff = u->_mp_exp - v->_mp_exp;
-
- /* If ediff is 0 or 1, we might have a situation where the operands are
- extremely close. We need to scan the operands from the most significant
- end ignore the initial parts that are equal. */
- if (ediff <= 1)
- {
- if (ediff == 0)
- {
- /* Skip leading limbs in U and V that are equal. */
- if (up[usize - 1] == vp[vsize - 1])
- {
- /* This loop normally exits immediately. Optimize for that. */
- do
- {
- usize--;
- vsize--;
- exp--;
-
- if (usize == 0)
- {
- rsize = vsize;
- tp = (mp_ptr) vp;
- negate ^= 1;
- goto normalize;
- }
- if (vsize == 0)
- {
- rsize = usize;
- tp = (mp_ptr) up;
- goto normalize;
- }
- }
- while (up[usize - 1] == vp[vsize - 1]);
- }
-
- if (up[usize - 1] < vp[vsize - 1])
- {
- /* For simplicity, swap U and V. Note that since the loop above
- wouldn't have exited unless up[usize - 1] and vp[vsize - 1]
- were non-equal, this if-statement catches all cases where U
- is smaller than V. */
- { mp_srcptr tp = up; up = vp; vp = tp; }
- { mp_size_t tsize = usize; usize = vsize; vsize = tsize; }
- negate ^= 1;
- /* negating ediff not necessary since it is 0. */
- }
-
- /* Check for
- x+1 00000000 ...
- x ffffffff ... */
- if (up[usize - 1] != vp[vsize - 1] + 1)
- goto general_case;
- usize--;
- vsize--;
- exp--;
- }
- else /* ediff == 1 */
- {
- /* Check for
- 1 00000000 ...
- 0 ffffffff ... */
-
- if (up[usize - 1] != 1 || vp[vsize - 1] != ~(mp_limb_t) 0
- || (usize >= 2 && up[usize - 2] != 0))
- goto general_case;
-
- usize--;
- exp--;
- }
-
- /* Skip sequences of 00000000/ffffffff */
- while (vsize != 0 && usize != 0 && up[usize - 1] == 0
- && vp[vsize - 1] == ~(mp_limb_t) 0)
- {
- usize--;
- vsize--;
- exp--;
- }
-
- if (usize == 0)
- {
- while (vsize != 0 && vp[vsize - 1] == ~(mp_limb_t) 0)
- {
- vsize--;
- exp--;
- }
- }
-
- if (usize > prec - 1)
- {
- up += usize - (prec - 1);
- usize = prec - 1;
- }
- if (vsize > prec - 1)
- {
- vp += vsize - (prec - 1);
- vsize = prec - 1;
- }
-
- tp = (mp_ptr) TMP_ALLOC (prec * BYTES_PER_MP_LIMB);
- {
- mp_limb_t cy_limb;
- if (vsize == 0)
- {
- mp_size_t size, i;
- size = usize;
- for (i = 0; i < size; i++)
- tp[i] = up[i];
- tp[size] = 1;
- rsize = size + 1;
- exp++;
- goto normalize;
- }
- if (usize == 0)
- {
- mp_size_t size, i;
- size = vsize;
- for (i = 0; i < size; i++)
- tp[i] = ~vp[i];
- cy_limb = 1 - mpn_add_1 (tp, tp, vsize, (mp_limb_t) 1);
- rsize = vsize;
- if (cy_limb == 0)
- {
- tp[rsize] = 1;
- rsize++;
- exp++;
- }
- goto normalize;
- }
- if (usize >= vsize)
- {
- /* uuuu */
- /* vv */
- mp_size_t size;
- size = usize - vsize;
- MPN_COPY (tp, up, size);
- cy_limb = mpn_sub_n (tp + size, up + size, vp, vsize);
- rsize = usize;
- }
- else /* (usize < vsize) */
- {
- /* uuuu */
- /* vvvvvvv */
- mp_size_t size, i;
- size = vsize - usize;
- for (i = 0; i < size; i++)
- tp[i] = ~vp[i];
- cy_limb = mpn_sub_n (tp + size, up, vp + size, usize);
- cy_limb+= mpn_sub_1 (tp + size, tp + size, usize, (mp_limb_t) 1);
- cy_limb-= mpn_add_1 (tp, tp, vsize, (mp_limb_t) 1);
- rsize = vsize;
- }
- if (cy_limb == 0)
- {
- tp[rsize] = 1;
- rsize++;
- exp++;
- }
- goto normalize;
- }
- }
-
-general_case:
- /* If U extends beyond PREC, ignore the part that does. */
- if (usize > prec)
- {
- up += usize - prec;
- usize = prec;
- }
-
- /* If V extends beyond PREC, ignore the part that does.
- Note that this may make vsize negative. */
- if (vsize + ediff > prec)
- {
- vp += vsize + ediff - prec;
- vsize = prec - ediff;
- }
-
- /* Allocate temp space for the result. Allocate
- just vsize + ediff later??? */
- tp = (mp_ptr) TMP_ALLOC (prec * BYTES_PER_MP_LIMB);
-
- if (ediff >= prec)
- {
- /* V completely cancelled. */
- if (tp != up)
- MPN_COPY (rp, up, usize);
- rsize = usize;
- }
- else
- {
- /* Locate the least significant non-zero limb in (the needed
- parts of) U and V, to simplify the code below. */
- for (;;)
- {
- if (vsize == 0)
- {
- MPN_COPY (rp, up, usize);
- rsize = usize;
- goto done;
- }
- if (vp[0] != 0)
- break;
- vp++, vsize--;
- }
- for (;;)
- {
- if (usize == 0)
- {
- MPN_COPY (rp, vp, vsize);
- rsize = vsize;
- negate ^= 1;
- goto done;
- }
- if (up[0] != 0)
- break;
- up++, usize--;
- }
-
- /* uuuu | uuuu | uuuu | uuuu | uuuu */
- /* vvvvvvv | vv | vvvvv | v | vv */
-
- if (usize > ediff)
- {
- /* U and V partially overlaps. */
- if (ediff == 0)
- {
- /* Have to compare the leading limbs of u and v
- to determine whether to compute u - v or v - u. */
- if (usize >= vsize)
- {
- /* uuuu */
- /* vv */
- mp_size_t size;
- size = usize - vsize;
- MPN_COPY (tp, up, size);
- mpn_sub_n (tp + size, up + size, vp, vsize);
- rsize = usize;
- }
- else /* (usize < vsize) */
- {
- /* uuuu */
- /* vvvvvvv */
- mp_size_t size, i;
- size = vsize - usize;
- tp[0] = -vp[0];
- for (i = 1; i < size; i++)
- tp[i] = ~vp[i];
- mpn_sub_n (tp + size, up, vp + size, usize);
- mpn_sub_1 (tp + size, tp + size, usize, (mp_limb_t) 1);
- rsize = vsize;
- }
- }
- else
- {
- if (vsize + ediff <= usize)
- {
- /* uuuu */
- /* v */
- mp_size_t size;
- size = usize - ediff - vsize;
- MPN_COPY (tp, up, size);
- mpn_sub (tp + size, up + size, usize - size, vp, vsize);
- rsize = usize;
- }
- else
- {
- /* uuuu */
- /* vvvvv */
- mp_size_t size, i;
- size = vsize + ediff - usize;
- tp[0] = -vp[0];
- for (i = 1; i < size; i++)
- tp[i] = ~vp[i];
- mpn_sub (tp + size, up, usize, vp + size, usize - ediff);
- mpn_sub_1 (tp + size, tp + size, usize, (mp_limb_t) 1);
- rsize = vsize + ediff;
- }
- }
- }
- else
- {
- /* uuuu */
- /* vv */
- mp_size_t size, i;
- size = vsize + ediff - usize;
- tp[0] = -vp[0];
- for (i = 1; i < vsize; i++)
- tp[i] = ~vp[i];
- for (i = vsize; i < size; i++)
- tp[i] = ~(mp_limb_t) 0;
- mpn_sub_1 (tp + size, up, usize, (mp_limb_t) 1);
- rsize = size + usize;
- }
-
- normalize:
- /* Full normalize. Optimize later. */
- while (rsize != 0 && tp[rsize - 1] == 0)
- {
- rsize--;
- exp--;
- }
- MPN_COPY (rp, tp, rsize);
- }
-
- done:
- r->_mp_size = negate ? -rsize : rsize;
- r->_mp_exp = exp;
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpf/sub_ui.c b/gnu/lib/libgmp/mpf/sub_ui.c
deleted file mode 100644
index 7806213..0000000
--- a/gnu/lib/libgmp/mpf/sub_ui.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* mpf_sub_ui -- Subtract an unsigned integer from a float.
-
-Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_sub_ui (mpf_ptr sum, mpf_srcptr u, unsigned long int v)
-#else
-mpf_sub_ui (sum, u, v)
- mpf_ptr sum;
- mpf_srcptr u;
- unsigned long int v;
-#endif
-{
- __mpf_struct vv;
- mp_limb_t vl;
-
- if (v == 0)
- {
- mpf_set (sum, u);
- return;
- }
-
- vl = v;
- vv._mp_size = 1;
- vv._mp_d = &vl;
- vv._mp_exp = 1;
- mpf_sub (sum, u, &vv);
-}
diff --git a/gnu/lib/libgmp/mpf/tests/Makefile.in b/gnu/lib/libgmp/mpf/tests/Makefile.in
deleted file mode 100644
index e108b9e..0000000
--- a/gnu/lib/libgmp/mpf/tests/Makefile.in
+++ /dev/null
@@ -1,75 +0,0 @@
-# Makefile for mpf/tests for GNU MP
-
-srcdir = .
-
-CC = gcc
-
-TEST_LIBS = ../../libgmp.a
-INCLUDES = -I../../mpn -I$(srcdir)/../..
-CFLAGS = -g -O
-
-.c.o:
- $(CC) -c $(INCLUDES) $(CFLAGS) $(XCFLAGS) $<
-
-TEST_SRCS = t-add.c t-sub.c t-conv.c t-sqrt.c t-muldiv.c t-dm2exp.c t-reuse.c ref.c
-TEST_OBJS = t-add.o t-sub.o t-conv.o t-sqrt.o t-muldiv.o t-dm2exp.c reuse.o
-TESTS = t-add t-sub t-conv t-sqrt t-muldiv t-dm2exp reuse
-
-check: Makefile st-add st-sub st-conv st-sqrt st-muldiv st-dm2exp st-reuse
- @echo "The tests passed."
-
-st-add: t-add
- ./t-add
- touch $@
-st-sub: t-sub
- ./t-sub
- touch $@
-st-conv: t-conv
- ./t-conv
- touch $@
-st-sqrt: t-sqrt
- ./t-sqrt
- touch $@
-st-muldiv: t-muldiv
- ./t-muldiv
- touch $@
-st-dm2exp: t-dm2exp
- ./t-dm2exp
- touch $@
-st-reuse: reuse
- ./reuse
- touch $@
-
-H = $(srcdir)/../../gmp.h $(srcdir)/../../gmp-impl.h \
- $(srcdir)/../../urandom.h ../../mpn/gmp-mparam.h
-
-t-add: t-add.o ref.o $(TEST_LIBS)
- $(CC) -o $@ $@.o ref.o $(TEST_LIBS) $(CFLAGS)
-t-sub: t-sub.o ref.o $(TEST_LIBS)
- $(CC) -o $@ $@.o ref.o $(TEST_LIBS) $(CFLAGS)
-t-conv: t-conv.o $(TEST_LIBS)
- $(CC) -o $@ $@.o $(TEST_LIBS) $(CFLAGS)
-t-sqrt: t-sqrt.o $(TEST_LIBS)
- $(CC) -o $@ $@.o $(TEST_LIBS) $(CFLAGS)
-t-muldiv: t-muldiv.o $(TEST_LIBS)
- $(CC) -o $@ $@.o $(TEST_LIBS) $(CFLAGS)
-t-dm2exp: t-dm2exp.o $(TEST_LIBS)
- $(CC) -o $@ $@.o $(TEST_LIBS) $(CFLAGS)
-reuse: reuse.o $(TEST_LIBS)
- $(CC) -o $@ $@.o $(TEST_LIBS) $(CFLAGS)
-
-t-add.o: $(srcdir)/t-add.c
-t-sub.o: $(srcdir)/t-sub.c
-t-conv.o: $(srcdir)/t-conv.c
-t-sqrt.o: $(srcdir)/t-sqrt.c
-t-muldiv.o: $(srcdir)/t-muldiv.c
-t-dm2exp.o: $(srcdir)/t-dm2exp.c
-reuse.o: $(srcdir)/reuse.c
-
-clean mostlyclean:
- rm -f *.o st-* $(TESTS)
-distclean maintainer-clean: clean
- rm -f Makefile config.status
-
-Makefile: $(srcdir)/Makefile.in
- $(SHELL) ./config.status
diff --git a/gnu/lib/libgmp/mpf/tests/configure.in b/gnu/lib/libgmp/mpf/tests/configure.in
deleted file mode 100644
index 319219c..0000000
--- a/gnu/lib/libgmp/mpf/tests/configure.in
+++ /dev/null
@@ -1,11 +0,0 @@
-# This file is a shell script that supplies the information necessary
-# to tailor a template configure script into the configure script
-# appropriate for this directory. For more information, check any
-# existing configure script.
-
-srctrigger=t-add.c
-srcname="gmp/mpf/tests"
-
-# per-host:
-
-# per-target:
diff --git a/gnu/lib/libgmp/mpf/tests/ref.c b/gnu/lib/libgmp/mpf/tests/ref.c
deleted file mode 100644
index b2c3e6c..0000000
--- a/gnu/lib/libgmp/mpf/tests/ref.c
+++ /dev/null
@@ -1,203 +0,0 @@
-/* Reference floating point routines.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-#if __STDC__
-void ref_mpf_add (mpf_t, const mpf_t, const mpf_t);
-void ref_mpf_sub (mpf_t, const mpf_t, const mpf_t);
-#else
-void ref_mpf_add ();
-void ref_mpf_sub ();
-#endif
-
-void
-#if __STDC__
-ref_mpf_add (mpf_t w, const mpf_t u, const mpf_t v)
-#else
-ref_mpf_add (w, u, v)
- mpf_t w;
- const mpf_t u;
- const mpf_t v;
-#endif
-{
- mp_size_t hi, lo, size;
- mp_ptr ut, vt, wt;
- int neg;
- mp_exp_t exp;
- mp_limb_t cy;
- TMP_DECL (mark);
-
- TMP_MARK (mark);
-
- if (SIZ (u) == 0)
- {
- size = ABSIZ (v);
- wt = (mp_ptr) TMP_ALLOC (size * BYTES_PER_MP_LIMB);
- MPN_COPY (wt, PTR (v), size);
- exp = EXP (v);
- neg = SIZ (v) < 0;
- goto done;
- }
- if (SIZ (v) == 0)
- {
- size = ABSIZ (u);
- wt = (mp_ptr) TMP_ALLOC (size * BYTES_PER_MP_LIMB);
- MPN_COPY (wt, PTR (u), size);
- exp = EXP (u);
- neg = SIZ (u) < 0;
- goto done;
- }
- if ((SIZ (u) ^ SIZ (v)) < 0)
- {
- mpf_t tmp;
- SIZ (tmp) = -SIZ (v);
- EXP (tmp) = EXP (v);
- PTR (tmp) = PTR (v);
- ref_mpf_sub (w, u, tmp);
- return;
- }
- neg = SIZ (u) < 0;
-
- /* Compute the significance of the hi and lo end of the result. */
- hi = MAX (EXP (u), EXP (v));
- lo = MIN (EXP (u) - ABSIZ (u), EXP (v) - ABSIZ (v));
- size = hi - lo;
- ut = (mp_ptr) TMP_ALLOC ((size + 1) * BYTES_PER_MP_LIMB);
- vt = (mp_ptr) TMP_ALLOC ((size + 1) * BYTES_PER_MP_LIMB);
- wt = (mp_ptr) TMP_ALLOC ((size + 1) * BYTES_PER_MP_LIMB);
- MPN_ZERO (ut, size);
- MPN_ZERO (vt, size);
- {int off;
- off = size + (EXP (u) - hi) - ABSIZ (u);
- MPN_COPY (ut + off, PTR (u), ABSIZ (u));
- off = size + (EXP (v) - hi) - ABSIZ (v);
- MPN_COPY (vt + off, PTR (v), ABSIZ (v));
- }
-
- cy = mpn_add_n (wt, ut, vt, size);
- wt[size] = cy;
- size += cy;
- exp = hi + cy;
-
-done:
- if (size > PREC (w))
- {
- wt += size - PREC (w);
- size = PREC (w);
- }
- MPN_COPY (PTR (w), wt, size);
- SIZ (w) = neg == 0 ? size : -size;
- EXP (w) = exp;
- TMP_FREE (mark);
-}
-
-void
-#if __STDC__
-ref_mpf_sub (mpf_t w, const mpf_t u, const mpf_t v)
-#else
-ref_mpf_sub (w, u, v)
- mpf_t w;
- const mpf_t u;
- const mpf_t v;
-#endif
-{
- mp_size_t hi, lo, size;
- mp_ptr ut, vt, wt;
- int neg;
- mp_exp_t exp;
- TMP_DECL (mark);
-
- TMP_MARK (mark);
-
- if (SIZ (u) == 0)
- {
- size = ABSIZ (v);
- wt = (mp_ptr) TMP_ALLOC (size * BYTES_PER_MP_LIMB);
- MPN_COPY (wt, PTR (v), size);
- exp = EXP (v);
- neg = SIZ (v) > 0;
- goto done;
- }
- if (SIZ (v) == 0)
- {
- size = ABSIZ (u);
- wt = (mp_ptr) TMP_ALLOC (size * BYTES_PER_MP_LIMB);
- MPN_COPY (wt, PTR (u), size);
- exp = EXP (u);
- neg = SIZ (u) < 0;
- goto done;
- }
- if ((SIZ (u) ^ SIZ (v)) < 0)
- {
- mpf_t tmp;
- SIZ (tmp) = -SIZ (v);
- EXP (tmp) = EXP (v);
- PTR (tmp) = PTR (v);
- ref_mpf_add (w, u, tmp);
- if (SIZ (u) < 0)
- mpf_neg (w, w);
- return;
- }
- neg = SIZ (u) < 0;
-
- /* Compute the significance of the hi and lo end of the result. */
- hi = MAX (EXP (u), EXP (v));
- lo = MIN (EXP (u) - ABSIZ (u), EXP (v) - ABSIZ (v));
- size = hi - lo;
- ut = (mp_ptr) TMP_ALLOC ((size + 1) * BYTES_PER_MP_LIMB);
- vt = (mp_ptr) TMP_ALLOC ((size + 1) * BYTES_PER_MP_LIMB);
- wt = (mp_ptr) TMP_ALLOC ((size + 1) * BYTES_PER_MP_LIMB);
- MPN_ZERO (ut, size);
- MPN_ZERO (vt, size);
- {int off;
- off = size + (EXP (u) - hi) - ABSIZ (u);
- MPN_COPY (ut + off, PTR (u), ABSIZ (u));
- off = size + (EXP (v) - hi) - ABSIZ (v);
- MPN_COPY (vt + off, PTR (v), ABSIZ (v));
- }
-
- if (mpn_cmp (ut, vt, size) >= 0)
- mpn_sub_n (wt, ut, vt, size);
- else
- {
- mpn_sub_n (wt, vt, ut, size);
- neg ^= 1;
- }
- exp = hi;
- while (size != 0 && wt[size - 1] == 0)
- {
- size--;
- exp--;
- }
-
-done:
- if (size > PREC (w))
- {
- wt += size - PREC (w);
- size = PREC (w);
- }
- MPN_COPY (PTR (w), wt, size);
- SIZ (w) = neg == 0 ? size : -size;
- EXP (w) = exp;
- TMP_FREE (mark);
-}
diff --git a/gnu/lib/libgmp/mpf/tests/reuse.c b/gnu/lib/libgmp/mpf/tests/reuse.c
deleted file mode 100644
index 6829cc4..0000000
--- a/gnu/lib/libgmp/mpf/tests/reuse.c
+++ /dev/null
@@ -1,186 +0,0 @@
-/* Test that routines allow reusing a source variable as destination. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-#ifndef SIZE
-#define SIZE 16
-#endif
-
-#ifndef EXPO
-#define EXPO 32
-#endif
-
-#if __STDC__
-typedef void (*dss_func) (mpf_ptr, mpf_srcptr, mpf_srcptr);
-#else
-typedef void (*dss_func) ();
-#endif
-
-dss_func dss_funcs[] =
-{
- mpf_div, mpf_add, mpf_mul, mpf_sub,
-};
-
-char *dss_func_names[] =
-{
- "mpf_div", "mpf_add", "mpf_mul", "mpf_sub",
-};
-
-#if __STDC__
-typedef void (*dsi_func) (mpf_ptr, mpf_srcptr, unsigned long int);
-#else
-typedef void (*dsi_func) ();
-#endif
-
-dsi_func dsi_funcs[] =
-{
- mpf_div_ui, mpf_add_ui, mpf_mul_ui, mpf_sub_ui,
-};
-
-char *dsi_func_names[] =
-{
- "mpf_div_ui", "mpf_add_ui", "mpf_mul_ui", "mpf_sub_ui",
-};
-
-#if __STDC__
-typedef void (*dis_func) (mpf_ptr, unsigned long int, mpf_srcptr);
-#else
-typedef void (*dis_func) ();
-#endif
-
-dis_func dis_funcs[] =
-{
- mpf_ui_div, mpf_ui_sub,
-};
-
-char *dis_func_names[] =
-{
- "mpf_ui_div", "mpf_ui_sub",
-};
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- int i;
- int pass, reps = 100000;
- mpf_t in1, in2, out1;
- unsigned long int in1i, in2i;
- mpf_t res1, res2, res3;
- mp_size_t bprec = 100;
-
- if (argc > 1)
- {
- reps = strtol (argv[1], 0, 0);
- if (argc > 2)
- bprec = strtol (argv[2], 0, 0);
- }
-
- mpf_set_default_prec (bprec);
-
- mpf_init (in1);
- mpf_init (in2);
- mpf_init (out1);
- mpf_init (res1);
- mpf_init (res2);
- mpf_init (res3);
-
- for (pass = 1; pass <= reps; pass++)
- {
- mpf_random2 (in1, urandom () % SIZE - SIZE/2, urandom () % EXPO);
- mpf_random2 (in2, urandom () % SIZE - SIZE/2, urandom () % EXPO);
-
- for (i = 0; i < sizeof (dss_funcs) / sizeof (dss_func); i++)
- {
- /* Don't divide by 0. */
- if (i == 0 && mpf_cmp_ui (in2, 0) == 0)
- continue;
-
- (dss_funcs[i]) (res1, in1, in2);
-
- mpf_set (out1, in1);
- (dss_funcs[i]) (out1, out1, in2);
- mpf_set (res2, out1);
-
- mpf_set (out1, in2);
- (dss_funcs[i]) (out1, in1, out1);
- mpf_set (res3, out1);
-
- if (mpf_cmp (res1, res2) != 0)
- dump_abort (dss_func_names[i], res1, res2);
- if (mpf_cmp (res1, res3) != 0)
- dump_abort (dss_func_names[i], res1, res3);
- }
-
- in2i = urandom ();
- for (i = 0; i < sizeof (dsi_funcs) / sizeof (dsi_func); i++)
- {
- /* Don't divide by 0. */
- if (i == 0 && in2i == 0)
- continue;
-
- (dsi_funcs[i]) (res1, in1, in2i);
-
- mpf_set (out1, in1);
- (dsi_funcs[i]) (out1, out1, in2i);
- mpf_set (res2, out1);
-
- if (mpf_cmp (res1, res2) != 0)
- dump_abort (dsi_func_names[i], res1, res2);
- }
-
- in1i = urandom ();
- for (i = 0; i < sizeof (dis_funcs) / sizeof (dis_func); i++)
- {
- /* Don't divide by 0. */
- if (i == 0 && mpf_cmp_ui (in2, 0) == 0)
- continue;
-
- (dis_funcs[i]) (res1, in1i, in2);
-
- mpf_set (out1, in2);
- (dis_funcs[i]) (out1, in1i, in2);
- mpf_set (res2, out1);
-
- if (mpf_cmp (res1, res2) != 0)
- dump_abort (dis_func_names[i], res1, res2);
- }
-
- }
-
- exit (0);
-}
-
-dump_abort (name, res1, res2)
- char *name;
- mpf_t res1, res2;
-{
- printf ("failure in %s:", name);
- oo (res1);
- oo (res2);
- abort ();
-}
-
-oo (x)
- mpf_t x;
-{
- mp_size_t i;
- printf (" exp = %ld\n", x->_mp_exp);
- printf ("size = %d\n", x->_mp_size);
- for (i = ABS (x->_mp_size) - 1; i >= 0; i--)
- printf ("%08lX ", x->_mp_d[i]);
- printf ("\n");
- mpf_dump (x);
-}
-
-#if 0
-void mpf_div_2exp _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-void mpf_mul_2exp _PROTO ((mpf_ptr, mpf_srcptr, unsigned long int));
-
-void mpf_abs _PROTO ((mpf_ptr, mpf_srcptr));
-void mpf_sqrt _PROTO ((mpf_ptr, mpf_srcptr));
-void mpf_neg _PROTO ((mpf_ptr, mpf_srcptr));
-#endif
diff --git a/gnu/lib/libgmp/mpf/tests/t-add.c b/gnu/lib/libgmp/mpf/tests/t-add.c
deleted file mode 100644
index 6f985bb..0000000
--- a/gnu/lib/libgmp/mpf/tests/t-add.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Test mpf_add.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-#ifndef SIZE
-#define SIZE 16
-#endif
-
-#if __STDC__
-void ref_mpf_add (mpf_t, const mpf_t, const mpf_t);
-void ref_mpf_sub (mpf_t, const mpf_t, const mpf_t);
-#else
-void ref_mpf_add ();
-void ref_mpf_sub ();
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mp_size_t size;
- mp_exp_t exp;
- int reps = 100000;
- int i;
- mpf_t u, v, w, wref;
- mp_size_t bprec = 100;
- mpf_t rerr, max_rerr, limit_rerr;
-
- if (argc > 1)
- {
- reps = strtol (argv[1], 0, 0);
- if (argc > 2)
- bprec = strtol (argv[2], 0, 0);
- }
-
- mpf_set_default_prec (bprec);
-
- mpf_init_set_ui (limit_rerr, 1);
- mpf_div_2exp (limit_rerr, limit_rerr, bprec);
-#if VERBOSE
- mpf_dump (limit_rerr);
-#endif
- mpf_init (rerr);
- mpf_init_set_ui (max_rerr, 0);
-
- mpf_init (u);
- mpf_init (v);
- mpf_init (w);
- mpf_init (wref);
- for (i = 0; i < reps; i++)
- {
- size = urandom () % (2 * SIZE) - SIZE;
- exp = urandom () % SIZE;
- mpf_random2 (u, size, exp);
-
- size = urandom () % (2 * SIZE) - SIZE;
- exp = urandom () % SIZE;
- mpf_random2 (v, size, exp);
-
- mpf_add (w, u, v);
- ref_mpf_add (wref, u, v);
-
- mpf_reldiff (rerr, w, wref);
- if (mpf_cmp (rerr, max_rerr) > 0)
- {
- mpf_set (max_rerr, rerr);
-#if VERBOSE
- mpf_dump (max_rerr);
-#endif
- if (mpf_cmp (rerr, limit_rerr) > 0)
- {
- printf ("ERROR after %d tests\n", i);
- printf (" u = "); mpf_dump (u);
- printf (" v = "); mpf_dump (v);
- printf ("wref = "); mpf_dump (wref);
- printf (" w = "); mpf_dump (w);
- abort ();
- }
- }
- }
-
- exit (0);
-}
-
-oo (x)
- mpf_t x;
-{
- mp_size_t i;
- printf (" exp = %ld\n", x->_mp_exp);
- printf ("size = %d\n", x->_mp_size);
- for (i = ABS (x->_mp_size) - 1; i >= 0; i--)
- printf ("%08lX ", x->_mp_d[i]);
- printf ("\n");
- mpf_dump (x);
-}
diff --git a/gnu/lib/libgmp/mpf/tests/t-conv.c b/gnu/lib/libgmp/mpf/tests/t-conv.c
deleted file mode 100644
index 00d461d..0000000
--- a/gnu/lib/libgmp/mpf/tests/t-conv.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/* Test mpf_get_str and mpf_set_str.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-#ifndef SIZE
-#define SIZE 10
-#endif
-
-#ifndef EXPO
-#define EXPO 20
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mpf_t x, y;
- int reps = 20000;
- int i;
- mp_size_t bprec = 100;
- mpf_t d, rerr, max_rerr, limit_rerr;
- char *str;
- long bexp;
- long size, exp;
- int base;
- char buf[SIZE * BITS_PER_MP_LIMB + 5];
-
- if (argc > 1)
- {
- reps = strtol (argv[1], 0, 0);
- if (argc > 2)
- bprec = strtol (argv[2], 0, 0);
- }
-
- mpf_set_default_prec (bprec);
-
- mpf_init_set_ui (limit_rerr, 1);
- mpf_div_2exp (limit_rerr, limit_rerr, bprec);
-#if VERBOSE
- mpf_dump (limit_rerr);
-#endif
- mpf_init (rerr);
- mpf_init_set_ui (max_rerr, 0);
-
- mpf_init (x);
- mpf_init (y);
- mpf_init (d);
-
- for (i = 0; i < reps; i++)
- {
- size = urandom () % (2 * SIZE) - SIZE;
- exp = urandom () % EXPO;
- mpf_random2 (x, size, exp);
-
- base = urandom () % 35 + 2;
-
- str = mpf_get_str (0, &bexp, base, 0, x);
-
- if (str[0] == '-')
- sprintf (buf, "-0.%s@%ld", str + 1, bexp);
- else
- sprintf (buf, "0.%s@%ld", str, bexp);
-
- mpf_set_str (y, buf, -base);
- free (str);
-
- mpf_reldiff (rerr, x, y);
- if (mpf_cmp (rerr, max_rerr) > 0)
- {
- mpf_set (max_rerr, rerr);
-#if VERBOSE
- mpf_dump (max_rerr);
-#endif
- if (mpf_cmp (rerr, limit_rerr) > 0)
- {
- printf ("ERROR after %d tests\n", i);
- printf ("base = %d\n", base);
- printf (" x = "); mpf_dump (x);
- printf (" y = "); mpf_dump (y);
- abort ();
- }
- }
- }
-
- exit (0);
-}
-
-oo (x)
- mpf_t x;
-{
- int i;
- printf (" exp = %ld\n", x->_mp_exp);
- printf ("size = %d\n", x->_mp_size);
- for (i = ABS (x->_mp_size) - 1; i >= 0; i--)
- printf ("%08lX ", x->_mp_d[i]);
- printf ("\n");
- mpf_dump (x);
-}
diff --git a/gnu/lib/libgmp/mpf/tests/t-dm2exp.c b/gnu/lib/libgmp/mpf/tests/t-dm2exp.c
deleted file mode 100644
index a8c4e8f..0000000
--- a/gnu/lib/libgmp/mpf/tests/t-dm2exp.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/* Test mpf_div, mpf_div_2exp, mpf_mul_2exp.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-#ifndef SIZE
-#define SIZE 16
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- int reps = 500000;
- int i;
- mpf_t u, v, w1, w2;
- mp_size_t bprec = 100;
- mpf_t rerr, limit_rerr;
-
- if (argc > 1)
- {
- reps = strtol (argv[1], 0, 0);
- if (argc > 2)
- bprec = strtol (argv[2], 0, 0);
- }
-
- mpf_set_default_prec (bprec);
-
- mpf_init (rerr);
- mpf_init (limit_rerr);
-
- mpf_init (u);
- mpf_init (v);
- mpf_init (w1);
- mpf_init (w2);
-
- for (i = 0; i < reps; i++)
- {
- mp_size_t res_prec;
- unsigned long int pow2;
-
- res_prec = urandom () % (bprec + 100);
- mpf_set_prec (w1, res_prec);
- mpf_set_prec (w2, res_prec);
-
- mpf_set_ui (limit_rerr, 1);
- mpf_div_2exp (limit_rerr, limit_rerr, res_prec);
-
- pow2 = urandom () % 0x10000;
- mpf_set_ui (v, 1);
- mpf_mul_2exp (v, v, pow2);
-
- mpf_div_2exp (w1, u, pow2);
- mpf_div (w2, u, v);
- mpf_reldiff (rerr, w1, w2);
- if (mpf_cmp (rerr, limit_rerr) > 0)
- {
- printf ("ERROR in mpf_div or mpf_div_2exp after %d tests\n", i);
- printf (" u = "); mpf_dump (u);
- printf (" v = "); mpf_dump (v);
- printf (" w1 = "); mpf_dump (w1);
- printf (" w2 = "); mpf_dump (w2);
- abort ();
- }
- }
-
- exit (0);
-}
-
-oo (x)
- mpf_t x;
-{
- mp_size_t i;
- printf (" exp = %ld\n", x->_mp_exp);
- printf ("size = %d\n", x->_mp_size);
- for (i = ABS (x->_mp_size) - 1; i >= 0; i--)
- printf ("%08lX ", x->_mp_d[i]);
- printf ("\n");
- mpf_dump (x);
-}
diff --git a/gnu/lib/libgmp/mpf/tests/t-muldiv.c b/gnu/lib/libgmp/mpf/tests/t-muldiv.c
deleted file mode 100644
index d1721e8..0000000
--- a/gnu/lib/libgmp/mpf/tests/t-muldiv.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/* Test mpf_mul, mpf_div, mpf_ui_div, and mpf_div_ui.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-#ifndef SIZE
-#define SIZE 16
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mp_size_t size;
- mp_exp_t exp;
- int reps = 100000;
- int i;
- mpf_t u, v, w, x;
- mp_size_t bprec = 100;
- mpf_t rerr, limit_rerr;
- mp_limb_t ulimb, vlimb;
- int single_flag;
-
- if (argc > 1)
- {
- reps = strtol (argv[1], 0, 0);
- if (argc > 2)
- bprec = strtol (argv[2], 0, 0);
- }
-
- mpf_set_default_prec (bprec);
-
- mpf_init (rerr);
- mpf_init (limit_rerr);
-
- mpf_init (u);
- mpf_init (v);
- mpf_init (w);
- mpf_init (x);
-
- for (i = 0; i < reps; i++)
- {
- mp_size_t res_prec;
-
- res_prec = urandom () % (bprec + 100);
- mpf_set_prec (w, res_prec);
- mpf_set_prec (x, res_prec);
-
- mpf_set_ui (limit_rerr, 1);
- mpf_div_2exp (limit_rerr, limit_rerr, res_prec);
-
- single_flag = 0;
-
- if ((urandom () & 1) != 0)
- {
- size = urandom () % (2 * SIZE) - SIZE;
- exp = urandom () % SIZE;
- mpf_random2 (u, size, exp);
- }
- else
- {
- ulimb = urandom ();
- mpf_set_ui (u, ulimb);
- single_flag = 1;
- }
-
- if ((urandom () & 1) != 0)
- {
- size = urandom () % (2 * SIZE) - SIZE;
- exp = urandom () % SIZE;
- mpf_random2 (v, size, exp);
- }
- else
- {
- vlimb = urandom ();
- mpf_set_ui (v, vlimb);
- single_flag = 2;
- }
-
- if (mpf_sgn (v) == 0)
- continue;
-
- mpf_div (w, u, v);
- mpf_mul (x, w, v);
- mpf_reldiff (rerr, u, x);
- if (mpf_cmp (rerr, limit_rerr) > 0)
- {
- printf ("ERROR in mpf_mul or mpf_div after %d tests\n", i);
- printf (" u = "); mpf_dump (u);
- printf (" v = "); mpf_dump (v);
- printf (" x = "); mpf_dump (x);
- printf (" w = "); mpf_dump (w);
- abort ();
- }
-
- if (single_flag == 2)
- {
- mpf_div_ui (x, u, vlimb);
- mpf_reldiff (rerr, w, x);
- if (mpf_cmp (rerr, limit_rerr) > 0)
- {
- printf ("ERROR in mpf_div or mpf_div_ui after %d tests\n", i);
- printf (" u = "); mpf_dump (u);
- printf (" v = "); mpf_dump (v);
- printf (" x = "); mpf_dump (x);
- printf (" w = "); mpf_dump (w);
- abort ();
- }
- }
-
- if (single_flag == 1)
- {
- mpf_ui_div (x, ulimb, v);
- mpf_reldiff (rerr, w, x);
- if (mpf_cmp (rerr, limit_rerr) > 0)
- {
- printf ("ERROR in mpf_div or mpf_ui_div after %d tests\n", i);
- printf (" u = "); mpf_dump (u);
- printf (" v = "); mpf_dump (v);
- printf (" x = "); mpf_dump (x);
- printf (" w = "); mpf_dump (w);
- abort ();
- }
- }
- }
-
- exit (0);
-}
-
-oo (x)
- mpf_t x;
-{
- mp_size_t i;
- printf (" exp = %ld\n", x->_mp_exp);
- printf ("size = %d\n", x->_mp_size);
- for (i = ABS (x->_mp_size) - 1; i >= 0; i--)
- printf ("%08lX ", x->_mp_d[i]);
- printf ("\n");
- mpf_dump (x);
-}
diff --git a/gnu/lib/libgmp/mpf/tests/t-sqrt.c b/gnu/lib/libgmp/mpf/tests/t-sqrt.c
deleted file mode 100644
index 5c72ab5..0000000
--- a/gnu/lib/libgmp/mpf/tests/t-sqrt.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/* Test mpf_sqrt, mpf_mul.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-#ifndef SIZE
-#define SIZE 16
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mp_size_t size;
- mp_exp_t exp;
- int reps = 100000;
- int i;
- mpf_t x, y, y2;
- mp_size_t bprec = 100;
- mpf_t rerr, max_rerr, limit_rerr;
-
- if (argc > 1)
- {
- reps = strtol (argv[1], 0, 0);
- if (argc > 2)
- bprec = strtol (argv[2], 0, 0);
- }
-
- mpf_set_default_prec (bprec);
-
- mpf_init_set_ui (limit_rerr, 1);
- mpf_div_2exp (limit_rerr, limit_rerr, bprec);
-#if VERBOSE
- mpf_dump (limit_rerr);
-#endif
- mpf_init (rerr);
- mpf_init_set_ui (max_rerr, 0);
-
- mpf_init (x);
- mpf_init (y);
- mpf_init (y2);
- for (i = 0; i < reps; i++)
- {
- size = urandom () % SIZE;
- exp = urandom () % SIZE;
- mpf_random2 (x, size, exp);
-
- mpf_sqrt (y, x);
- mpf_mul (y2, y, y);
-
- mpf_reldiff (rerr, x, y2);
- if (mpf_cmp (rerr, max_rerr) > 0)
- {
- mpf_set (max_rerr, rerr);
-#if VERBOSE
- mpf_dump (max_rerr);
-#endif
- if (mpf_cmp (rerr, limit_rerr) > 0)
- {
- printf ("ERROR after %d tests\n", i);
- printf (" x = "); mpf_dump (x);
- printf (" y = "); mpf_dump (y);
- printf (" y2 = "); mpf_dump (y2);
- abort ();
- }
- }
- }
-
- exit (0);
-}
-
-oo (x)
- mpf_t x;
-{
- mp_size_t i;
- printf (" exp = %ld\n", x->_mp_exp);
- printf ("size = %d\n", x->_mp_size);
- for (i = ABS (x->_mp_size) - 1; i >= 0; i--)
- printf ("%08lX ", x->_mp_d[i]);
- printf ("\n");
- mpf_dump (x);
-}
diff --git a/gnu/lib/libgmp/mpf/tests/t-sub.c b/gnu/lib/libgmp/mpf/tests/t-sub.c
deleted file mode 100644
index 6918866..0000000
--- a/gnu/lib/libgmp/mpf/tests/t-sub.c
+++ /dev/null
@@ -1,122 +0,0 @@
-/* Test mpf_sub.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-#ifndef SIZE
-#define SIZE 16
-#endif
-
-#if __STDC__
-void ref_mpf_add (mpf_t, const mpf_t, const mpf_t);
-void ref_mpf_sub (mpf_t, const mpf_t, const mpf_t);
-#else
-void ref_mpf_add ();
-void ref_mpf_sub ();
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mp_size_t size;
- mp_exp_t exp;
- int reps = 500000;
- int i;
- mpf_t u, v, w, wref;
- mp_size_t bprec = 100;
- mpf_t rerr, max_rerr, limit_rerr;
-
- if (argc > 1)
- {
- reps = strtol (argv[1], 0, 0);
- if (argc > 2)
- bprec = strtol (argv[2], 0, 0);
- }
-
- mpf_set_default_prec (bprec);
-
- mpf_init_set_ui (limit_rerr, 1);
- mpf_div_2exp (limit_rerr, limit_rerr, bprec);
-#if VERBOSE
- mpf_dump (limit_rerr);
-#endif
- mpf_init (rerr);
- mpf_init_set_ui (max_rerr, 0);
-
- mpf_init (u);
- mpf_init (v);
- mpf_init (w);
- mpf_init (wref);
- for (i = 0; i < reps; i++)
- {
- size = urandom () % (2 * SIZE) - SIZE;
- exp = urandom () % SIZE;
- mpf_random2 (u, size, exp);
-
- size = urandom () % (2 * SIZE) - SIZE;
- exp = urandom () % SIZE;
- mpf_random2 (v, size, exp);
-
- if ((urandom () & 1) != 0)
- mpf_add_ui (u, v, 1);
- else if ((urandom () & 1) != 0)
- mpf_sub_ui (u, v, 1);
-
- mpf_sub (w, u, v);
- ref_mpf_sub (wref, u, v);
-
- mpf_reldiff (rerr, w, wref);
- if (mpf_cmp (rerr, max_rerr) > 0)
- {
- mpf_set (max_rerr, rerr);
-#if VERBOSE
- mpf_dump (max_rerr);
-#endif
- if (mpf_cmp (rerr, limit_rerr) > 0)
- {
- printf ("ERROR after %d tests\n", i);
- printf (" u = "); mpf_dump (u);
- printf (" v = "); mpf_dump (v);
- printf ("wref = "); mpf_dump (wref);
- printf (" w = "); mpf_dump (w);
- abort ();
- }
- }
- }
-
- exit (0);
-}
-
-oo (x)
- mpf_t x;
-{
- mp_size_t i;
- printf (" exp = %ld\n", x->_mp_exp);
- printf ("size = %d\n", x->_mp_size);
- for (i = ABS (x->_mp_size) - 1; i >= 0; i--)
- printf ("%08lX ", x->_mp_d[i]);
- printf ("\n");
- mpf_dump (x);
-}
diff --git a/gnu/lib/libgmp/mpf/ui_div.c b/gnu/lib/libgmp/mpf/ui_div.c
deleted file mode 100644
index a49a952..0000000
--- a/gnu/lib/libgmp/mpf/ui_div.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/* mpf_ui_div -- Divide an unsigned integer with a float.
-
-Copyright (C) 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-void
-#if __STDC__
-mpf_ui_div (mpf_ptr r, unsigned long int u, mpf_srcptr v)
-#else
-mpf_ui_div (r, u, v)
- mpf_ptr r;
- unsigned long int u;
- mpf_srcptr v;
-#endif
-{
- mp_srcptr vp;
- mp_ptr rp, tp;
- mp_size_t vsize;
- mp_size_t rsize, tsize;
- mp_size_t sign_quotient;
- mp_size_t prec;
- unsigned normalization_steps;
- mp_limb_t q_limb;
- mp_exp_t rexp;
- TMP_DECL (marker);
-
- vsize = v->_mp_size;
- sign_quotient = vsize;
- vsize = ABS (vsize);
- prec = r->_mp_prec;
-
- if (vsize == 0)
- vsize = 1 / vsize; /* divide by zero as directed */
- if (u == 0)
- {
- r->_mp_size = 0;
- r->_mp_exp = 0;
- return;
- }
-
- TMP_MARK (marker);
- rexp = 1 - v->_mp_exp;
-
- rp = r->_mp_d;
- vp = v->_mp_d;
-
- if (vsize > prec)
- {
- vp += vsize - prec;
- vsize = prec;
- }
-
- tsize = vsize + prec;
- tp = (mp_ptr) TMP_ALLOC ((tsize + 1) * BYTES_PER_MP_LIMB);
- MPN_ZERO (tp, tsize);
-
- count_leading_zeros (normalization_steps, vp[vsize - 1]);
-
- /* Normalize the divisor and the dividend. */
- if (normalization_steps != 0)
- {
- mp_ptr tmp;
- mp_limb_t dividend_high, dividend_low;
-
- /* Shift up the divisor setting the most significant bit of
- the most significant limb. Use temporary storage not to clobber
- the original contents of the divisor. */
- tmp = (mp_ptr) TMP_ALLOC (vsize * BYTES_PER_MP_LIMB);
- mpn_lshift (tmp, vp, vsize, normalization_steps);
- vp = tmp;
-
- /* Shift up the dividend, possibly introducing a new most
- significant word. */
- dividend_high = (mp_limb_t) u >> (BITS_PER_MP_LIMB - normalization_steps);
- dividend_low = (mp_limb_t) u << normalization_steps;
-
- tp[tsize - 1] = dividend_low;
- if (dividend_high != 0)
- {
- tp[tsize] = dividend_high;
- tsize++;
- rexp++;
- }
- }
- else
- {
- /* The divisor is already normalized, as required.
- Copy it to temporary space if it overlaps with the quotient. */
- if (vp - rp <= tsize - vsize)
- {
- mp_ptr tmp = (mp_ptr) TMP_ALLOC (vsize * BYTES_PER_MP_LIMB);
- MPN_COPY (tmp, vp, vsize);
- vp = (mp_srcptr) tmp;
- }
-
- tp[tsize - 1] = u;
- }
-
- q_limb = mpn_divmod (rp, tp, tsize, vp, vsize);
- rsize = tsize - vsize;
- if (q_limb)
- {
- rp[rsize] = q_limb;
- rsize++;
- rexp++;
- }
-
- r->_mp_size = sign_quotient >= 0 ? rsize : -rsize;
- r->_mp_exp = rexp;
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpf/ui_sub.c b/gnu/lib/libgmp/mpf/ui_sub.c
deleted file mode 100644
index acb9210..0000000
--- a/gnu/lib/libgmp/mpf/ui_sub.c
+++ /dev/null
@@ -1,334 +0,0 @@
-/* mpf_ui_sub -- Subtract a float from an unsigned long int.
-
-Copyright (C) 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpf_ui_sub (mpf_ptr r, unsigned long int u, mpf_srcptr v)
-#else
-mpf_ui_sub (r, u, v)
- mpf_ptr r;
- unsigned long int u;
- mpf_srcptr v;
-#endif
-{
- mp_srcptr up, vp;
- mp_ptr rp, tp;
- mp_size_t usize, vsize, rsize;
- mp_size_t prec;
- mp_exp_t uexp;
- mp_size_t ediff;
- int negate;
- mp_limb_t ulimb;
- TMP_DECL (marker);
-
- vsize = v->_mp_size;
-
- /* Handle special cases that don't work in generic code below. */
- if (u == 0)
- {
- mpf_neg (r, v);
- return;
- }
- if (vsize == 0)
- {
- mpf_set_ui (r, u);
- return;
- }
-
- /* If signs of U and V are different, perform addition. */
- if (vsize < 0)
- {
- __mpf_struct v_negated;
- v_negated._mp_size = -vsize;
- v_negated._mp_exp = v->_mp_exp;
- v_negated._mp_d = v->_mp_d;
- mpf_add_ui (r, &v_negated, u);
- return;
- }
-
- TMP_MARK (marker);
-
- /* Signs are now known to be the same. */
-
- ulimb = u;
- /* Make U be the operand with the largest exponent. */
- if (1 < v->_mp_exp)
- {
- negate = 1;
- usize = ABS (vsize);
- vsize = 1;
- up = v->_mp_d;
- vp = &ulimb;
- rp = r->_mp_d;
- prec = r->_mp_prec + 1;
- uexp = v->_mp_exp;
- ediff = uexp - 1;
- }
- else
- {
- negate = 0;
- usize = 1;
- vsize = ABS (vsize);
- up = &ulimb;
- vp = v->_mp_d;
- rp = r->_mp_d;
- prec = r->_mp_prec;
- uexp = 1;
- ediff = 1 - v->_mp_exp;
- }
-
- /* Ignore leading limbs in U and V that are equal. Doing
- this helps increase the precision of the result. */
- if (ediff == 0)
- {
- /* This loop normally exits immediately. Optimize for that. */
- for (;;)
- {
- usize--;
- vsize--;
- if (up[usize] != vp[vsize])
- break;
- uexp--;
- if (usize == 0)
- goto Lu0;
- if (vsize == 0)
- goto Lv0;
- }
- usize++;
- vsize++;
- /* Note that either operand (but not both operands) might now have
- leading zero limbs. It matters only that U is unnormalized if
- vsize is now zero, and vice versa. And it is only in that case
- that we have to adjust uexp. */
- if (vsize == 0)
- Lv0:
- while (usize != 0 && up[usize - 1] == 0)
- usize--, uexp--;
- if (usize == 0)
- Lu0:
- while (vsize != 0 && vp[vsize - 1] == 0)
- vsize--, uexp--;
- }
-
- /* If U extends beyond PREC, ignore the part that does. */
- if (usize > prec)
- {
- up += usize - prec;
- usize = prec;
- }
-
- /* If V extends beyond PREC, ignore the part that does.
- Note that this may make vsize negative. */
- if (vsize + ediff > prec)
- {
- vp += vsize + ediff - prec;
- vsize = prec - ediff;
- }
-
- /* Allocate temp space for the result. Allocate
- just vsize + ediff later??? */
- tp = (mp_ptr) TMP_ALLOC (prec * BYTES_PER_MP_LIMB);
-
- if (ediff >= prec)
- {
- /* V completely cancelled. */
- if (tp != up)
- MPN_COPY (rp, up, usize);
- rsize = usize;
- }
- else
- {
- /* Locate the least significant non-zero limb in (the needed
- parts of) U and V, to simplify the code below. */
- for (;;)
- {
- if (vsize == 0)
- {
- MPN_COPY (rp, up, usize);
- rsize = usize;
- goto done;
- }
- if (vp[0] != 0)
- break;
- vp++, vsize--;
- }
- for (;;)
- {
- if (usize == 0)
- {
- MPN_COPY (rp, vp, vsize);
- rsize = vsize;
- negate ^= 1;
- goto done;
- }
- if (up[0] != 0)
- break;
- up++, usize--;
- }
-
- /* uuuu | uuuu | uuuu | uuuu | uuuu */
- /* vvvvvvv | vv | vvvvv | v | vv */
-
- if (usize > ediff)
- {
- /* U and V partially overlaps. */
- if (ediff == 0)
- {
- /* Have to compare the leading limbs of u and v
- to determine whether to compute u - v or v - u. */
- if (usize > vsize)
- {
- /* uuuu */
- /* vv */
- int cmp;
- cmp = mpn_cmp (up + usize - vsize, vp, vsize);
- if (cmp >= 0)
- {
- mp_size_t size;
- size = usize - vsize;
- MPN_COPY (tp, up, size);
- mpn_sub_n (tp + size, up + size, vp, vsize);
- rsize = usize;
- }
- else
- {
- /* vv */ /* Swap U and V. */
- /* uuuu */
- mp_size_t size, i;
- size = usize - vsize;
- tp[0] = -up[0];
- for (i = 1; i < size; i++)
- tp[i] = ~up[i];
- mpn_sub_n (tp + size, vp, up + size, vsize);
- mpn_sub_1 (tp + size, tp + size, vsize, (mp_limb_t) 1);
- negate ^= 1;
- rsize = usize;
- }
- }
- else if (usize < vsize)
- {
- /* uuuu */
- /* vvvvvvv */
- int cmp;
- cmp = mpn_cmp (up, vp + vsize - usize, usize);
- if (cmp > 0)
- {
- mp_size_t size, i;
- size = vsize - usize;
- tp[0] = -vp[0];
- for (i = 1; i < size; i++)
- tp[i] = ~vp[i];
- mpn_sub_n (tp + size, up, vp + size, usize);
- mpn_sub_1 (tp + size, tp + size, usize, (mp_limb_t) 1);
- rsize = vsize;
- }
- else
- {
- /* vvvvvvv */ /* Swap U and V. */
- /* uuuu */
- /* This is the only place we can get 0.0. */
- mp_size_t size;
- size = vsize - usize;
- MPN_COPY (tp, vp, size);
- mpn_sub_n (tp + size, vp + size, up, usize);
- negate ^= 1;
- rsize = vsize;
- }
- }
- else
- {
- /* uuuu */
- /* vvvv */
- int cmp;
- cmp = mpn_cmp (up, vp + vsize - usize, usize);
- if (cmp > 0)
- {
- mpn_sub_n (tp, up, vp, usize);
- rsize = usize;
- }
- else
- {
- mpn_sub_n (tp, vp, up, usize);
- negate ^= 1;
- rsize = usize;
- /* can give zero */
- }
- }
- }
- else
- {
- if (vsize + ediff <= usize)
- {
- /* uuuu */
- /* v */
- mp_size_t size;
- size = usize - ediff - vsize;
- MPN_COPY (tp, up, size);
- mpn_sub (tp + size, up + size, usize - size, vp, vsize);
- rsize = usize;
- }
- else
- {
- /* uuuu */
- /* vvvvv */
- mp_size_t size, i;
- size = vsize + ediff - usize;
- tp[0] = -vp[0];
- for (i = 1; i < size; i++)
- tp[i] = ~vp[i];
- mpn_sub (tp + size, up, usize, vp + size, usize - ediff);
- mpn_sub_1 (tp + size, tp + size, usize, (mp_limb_t) 1);
- rsize = vsize + ediff;
- }
- }
- }
- else
- {
- /* uuuu */
- /* vv */
- mp_size_t size, i;
- size = vsize + ediff - usize;
- tp[0] = -vp[0];
- for (i = 1; i < vsize; i++)
- tp[i] = ~vp[i];
- for (i = vsize; i < size; i++)
- tp[i] = ~(mp_limb_t) 0;
- mpn_sub_1 (tp + size, up, usize, (mp_limb_t) 1);
- rsize = size + usize;
- }
-
- /* Full normalize. Optimize later. */
- while (rsize != 0 && tp[rsize - 1] == 0)
- {
- rsize--;
- uexp--;
- }
- MPN_COPY (rp, tp, rsize);
- }
-
- done:
- r->_mp_size = negate ? -rsize : rsize;
- r->_mp_exp = uexp;
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpn/Makefile.in b/gnu/lib/libgmp/mpn/Makefile.in
deleted file mode 100644
index 132159b..0000000
--- a/gnu/lib/libgmp/mpn/Makefile.in
+++ /dev/null
@@ -1,92 +0,0 @@
-# Makefile for GNU MP/mpn functions
-# Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-# This file is part of the GNU MP Library.
-
-# The GNU MP Library is free software; you can redistribute it and/or modify
-# it under the terms of the GNU Library General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or (at your
-# option) any later version.
-
-# The GNU MP Library 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 Library General Public
-# License for more details.
-
-# You should have received a copy of the GNU Library General Public License
-# along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-# MA 02111-1307, USA.
-
-srcdir = .
-
-MPN_OBJECTS = This gets filled in by configure.in.
-MPN_LINKS = This gets filled in by configure.in.
-CC = gcc
-CPP = $(CC) -E
-CFLAGS = -g -O
-INCLUDES = -I. -I.. -I$(srcdir) -I$(srcdir)/..
-AR = ar
-AR_FLAGS = rc
-SFLAGS=
-
-#### host and target specific makefile fragments come in here.
-###
-
-libmpn.a: Makefile mp_bases.o $(MPN_OBJECTS)
- rm -f $@
- $(AR) $(AR_FLAGS) $@ mp_bases.o $(MPN_OBJECTS)
-
-.SUFFIXES: .c .s .S
-
-.c.o:
- $(CC) -c $(INCLUDES) $(CFLAGS) $(XCFLAGS) $<
-
-.s.o:
- $(CC) -c $(CFLAGS) $<
-
-.S.o:
- $(CPP) $(SFLAGS) $(INCLUDES) $(CFLAGS) $< | grep -v '^#' >tmp-$*.s
- $(CC) -c tmp-$*.s -o $@
- rm -f tmp-$*.s
-
-clean mostlyclean:
- rm -f *.o tmp-* libmpn.a
- #-cd tests; $(MAKE) $@
-distclean maintainer-clean: clean
- rm -f asm-syntax.h Makefile config.status $(MPN_LINKS)
- -cd tests; $(MAKE) $@
-
-Makefile: $(srcdir)/Makefile.in
- $(SHELL) ./config.status
-
-
-# Maybe configure could add dependencies here..?
-
-H = $(srcdir)/../gmp.h $(srcdir)/../gmp-impl.h gmp-mparam.h
-L = $(srcdir)/../longlong.h
-
-mp_bases.o: $(srcdir)/mp_bases.c $(H)
-bdivmod.o: bdivmod.c $(H) $(L)
-cmp.o: cmp.c $(H)
-divmod_1.o: divmod_1.c $(H) $(L)
-divrem.o: divrem.c $(H) $(L)
-divrem_1.o: divrem_1.c $(H) $(L)
-dump.o: dump.c $(H)
-gcd.o: gcd.c $(H) $(L)
-gcd_1.o: gcd_1.c $(H) $(L)
-gcdext.o: gcdext.c $(H) $(L)
-get_str.o: get_str.c $(H) $(L)
-hamdist.o: hamdist.c $(H)
-inlines.o: inlines.c $(srcdir)/../gmp.h
-mod_1.o: mod_1.c $(H) $(L)
-mul.o: mul.c $(H)
-mul_n.o: mul_n.c $(H)
-perfsqr.o: perfsqr.c $(H) $(L)
-popcount.o: popcount.c $(H)
-pre_mod_1.o: pre_mod_1.c $(H) $(L)
-random2.o: random2.c $(H)
-scan0.o: scan0.c $(H) $(L)
-scan1.o: scan1.c $(H) $(L)
-set_str.o: set_str.c $(H)
-sqrtrem.o: sqrtrem.c $(H) $(L)
diff --git a/gnu/lib/libgmp/mpn/README b/gnu/lib/libgmp/mpn/README
deleted file mode 100644
index 3da559e..0000000
--- a/gnu/lib/libgmp/mpn/README
+++ /dev/null
@@ -1,15 +0,0 @@
-This directory contains all code for the mpn layer of GMP.
-
-Most subdirectories contain machine-dependent code, written in assembly or
-C. The `generic' subdirectory contains default code, used when there is no
-machine-dependent replacement for a particular machine.
-
-There is one subdirectory for each architecture. Note that e.g., 32-bit
-sparc and 64-bit sparc cannot share any code, and are therefore considered
-completely different architecture.
-
-A particular machine will only use code from one such subdirectory, and the
-`generic' subdirectory. The architecture-specific subdirectory contains a
-hierachy of directories for various architecture variants and
-implementations; the top-most level contains code that runs correctly on all
-variants.
diff --git a/gnu/lib/libgmp/mpn/bsd.h b/gnu/lib/libgmp/mpn/bsd.h
deleted file mode 100644
index 8a0cbce..0000000
--- a/gnu/lib/libgmp/mpn/bsd.h
+++ /dev/null
@@ -1,5 +0,0 @@
-#if __STDC__
-#define C_SYMBOL_NAME(name) _##name
-#else
-#define C_SYMBOL_NAME(name) _/**/name
-#endif
diff --git a/gnu/lib/libgmp/mpn/config/t-oldgas b/gnu/lib/libgmp/mpn/config/t-oldgas
deleted file mode 100644
index ba02fa7..0000000
--- a/gnu/lib/libgmp/mpn/config/t-oldgas
+++ /dev/null
@@ -1 +0,0 @@
-SFLAGS=-DBROKEN_ALIGN
diff --git a/gnu/lib/libgmp/mpn/config/t-ppc-aix b/gnu/lib/libgmp/mpn/config/t-ppc-aix
deleted file mode 100644
index a31ce0d..0000000
--- a/gnu/lib/libgmp/mpn/config/t-ppc-aix
+++ /dev/null
@@ -1 +0,0 @@
-SFLAGS=-Wa,-mppc
diff --git a/gnu/lib/libgmp/mpn/config/t-pwr-aix b/gnu/lib/libgmp/mpn/config/t-pwr-aix
deleted file mode 100644
index 3e11d9f..0000000
--- a/gnu/lib/libgmp/mpn/config/t-pwr-aix
+++ /dev/null
@@ -1 +0,0 @@
-SFLAGS=-Wa,-mpwr
diff --git a/gnu/lib/libgmp/mpn/configure.in b/gnu/lib/libgmp/mpn/configure.in
deleted file mode 100644
index 90c2626..0000000
--- a/gnu/lib/libgmp/mpn/configure.in
+++ /dev/null
@@ -1,178 +0,0 @@
-# This file is a shell script fragment that supplies the information
-# necessary for a configure script to process the program in
-# this directory. For more information, look at ../configure.
-
-configdirs=
-srctrigger=powerpc32
-srcname="GNU Multi-Precision library/mpn"
-
-# per-host:
-
-# per-target:
-
-case "${target}" in
- sparc9*-*-* | sparc64*-*-* | ultrasparc*-*-*)
- #path="sparc64" ;; Don't use this until compilers are ready
- path="sparc32/v8 sparc" ;;
- sparc8*-*-* | microsparc*-*-*)
- path="sparc32/v8 sparc" ;;
- supersparc*-*-*)
- path="sparc32/v8/supersparc sparc32/v8 sparc"
- extra_functions="udiv" ;;
- sparc*-*-*) path="sparc32"
- if [ x$floating_point = xno ]
- then extra_functions="udiv_nfp"
- else extra_functions="udiv_fp"
- fi
- ;;
- hppa7000*-*-*) path="hppa/hppa1_1 hppa"; extra_functions="udiv_qrnnd" ;;
- hppa1.0*-*-*) path="hppa"; extra_functions="udiv_qrnnd" ;;
- hppa*-*-*) # assume pa7100
- path="hppa/hppa1_1/pa7100 hppa/hppa1_1 hppa"
- extra_functions="udiv_qrnnd" ;;
- cray2-cray-unicos* | [xy]mp-cray-unicos* | [ctj]90-cray-unicos*)
- path="cray" ;;
- alphaev5-*-*) path="alpha/ev5 alpha"; extra_functions="udiv_qrnnd" ;;
- alpha*-*-*) path="alpha"; extra_functions="udiv_qrnnd" ;;
- am29000*-*-*) path="am29000" ;;
- a29k*-*-*) path="am29000" ;;
-
-# Intel x86 configurations
- i[34]86*-*-linuxaout* | i[34]86*-*-linuxoldld* | \
- i[34]86*-*-*bsd*) # x86 running BSD or Linux with a.out
- echo '#define BSD_SYNTAX' >asm-syntax.h
- echo '#include "'$srcdir'/x86/syntax.h"' >>asm-syntax.h
- path="x86" ;;
- i[56]86*-*-linuxaout* | pentium-*-linuxaout* | pentiumpro-*-linuxaout* | \
- i[56]86*-*-linuxoldld* | pentium-*-linuxoldld* | pentiumpro-*-linuxoldld* | \
- i[56]86*-*-*bsd* | pentium-*-*bsd* | pentiumpro-*-*bsd*)
- echo '#define BSD_SYNTAX' >asm-syntax.h
- echo '#include "'$srcdir'/x86/syntax.h"' >>asm-syntax.h
- path="x86/pentium x86" ;;
- i[34]86*-*-*) # x86 with ELF/SysV format
- echo '#define ELF_SYNTAX' >asm-syntax.h
- echo '#include "'$srcdir'/x86/syntax.h"' >>asm-syntax.h
- path="x86" ;;
- i[56]86*-*-* | pentium-*-* | pentiumpro-*-*) # x86 with ELF/SysV format
- echo '#define ELF_SYNTAX' >asm-syntax.h
- echo '#include "'$srcdir'/x86/syntax.h"' >>asm-syntax.h
- path="x86/pentium x86" ;;
-
-# Motorola 68k configurations. Let m68k mean 68020-68040.
-# mc68000 or mc68060 configurations need to be specified explicitly
- m680[234]0*-*-linuxaout* | m68k*-*-linuxaout*)
- echo '#define MIT_SYNTAX' >asm-syntax.h
- echo '#include "'$srcdir'/m68k/syntax.h"' >>asm-syntax.h
- path="m68k/mc68020 m68k" ;;
- m68060*-*-linuxaout*)
- echo '#define MIT_SYNTAX' >asm-syntax.h
- echo '#include "'$srcdir'/m68k/syntax.h"' >>asm-syntax.h
- path="m68k" ;;
- m680[234]0*-*-linux* | m68k*-*-linux*)
- echo '#define ELF_SYNTAX' >asm-syntax.h
- echo '#include "'$srcdir'/m68k/syntax.h"' >>asm-syntax.h
- path="m68k/mc68020 m68k" ;;
- m68060*-*-linux*)
- echo '#define ELF_SYNTAX' >asm-syntax.h
- echo '#include "'$srcdir'/m68k/syntax.h"' >>asm-syntax.h
- path="m68k" ;;
- m68000*-*-* | m68060*-*-*)
- echo '#define MIT_SYNTAX' >asm-syntax.h
- echo '#include "'$srcdir'/m68k/syntax.h"' >>asm-syntax.h
- path="m68k/mc68000" ;;
- m680[234]0*-*-* | m68k*-*-*)
- echo '#define MIT_SYNTAX' >asm-syntax.h
- echo '#include "'$srcdir'/m68k/syntax.h"' >>asm-syntax.h
- path="m68k/mc68020 m68k" ;;
-
- i960*-*-*) path="i960" ;;
- m88k*-*-* | m88k*-*-*) path="m88k" ;;
- m88110*-*-*) path="m88k/mc88110 m88k" ;;
- ns32k*-*-*) path="n32k" ;;
- ppc601-*-*) path="power powerpc32" ;;
- ppc620-*-* | powerpc64*-*-*) path="powerpc64" ;;
- ppc60[234]*-*-* | powerpc*-*-*) path="powerpc32" ;;
- pyramid-*-*) path="pyr" ;;
- rs6000-*-* | power-*-* | power2-*-*)
- path="power"; extra_functions="udiv_w_sdiv" ;;
- sh-*-*) path="sh" ;;
- sh2-*-*) path="sh/sh2 sh" ;;
- mips[34]*-*-*) path="mips3" ;;
- mips*-*-irix6*) path="mips3" ;;
- mips*-*-*) path="mips2" ;;
- vax*-*-*) path="vax"; extra_functions="udiv_w_sdiv" ;;
- z8000x*-*-*) path="z8000x"; extra_functions="udiv_w_sdiv" ;;
- z8000*-*-*) path="z8000"; extra_functions="udiv_w_sdiv" ;;
- clipper*-*-*) path="clipper" ;;
- *-*-*) ;;
-esac
-
-case "${target}" in
- *-*-linuxaout* | *-*-linuxoldld*) config=bsd.h ;;
- *-sysv* | *-solaris* | *-*-linux*) config="sysv.h" ;;
- *) config="bsd.h" ;;
-esac
-
-case "${target}" in
- i[3456]86*-*-*bsd* | i[3456]86*-*-linuxaout* | i[3456]86*-*-linuxoldld* | \
- pentium-*-*bsd* | pentium-*-linuxaout* | pentium-*-linuxoldld* | \
- pentiumpro-*-*bsd* | pentiumpro-*-linuxaout* | pentiumpro-*-linuxoldld*)
- target_makefile_frag=config/t-oldgas ;;
- rs6000-*-aix[456789]* | rs6000-*-aix3.2.[456789])
- target_makefile_frag=config/t-pwr-aix ;;
- ppc601-*-aix[456789]* | ppc601-*-aix3.2.[456789] | \
- ppc60[234]*-*-aix[456789]* | ppc60[234]*-*-aix3.2.[456789] | \
- powerpc*-*-aix[456789]* | powerpc*-*-aix3.2.[456789])
- target_makefile_frag=config/t-ppc-aix ;;
-esac
-
-
-functions="${extra_functions} inlines add_n addmul_1 cmp divmod_1 \
- divrem divrem_1 dump lshift mod_1 mul mul_1 mul_n random2 rshift sqrtrem \
- sub_n submul_1 get_str set_str scan0 scan1 popcount hamdist gcd_1 \
- pre_mod_1 perfsqr bdivmod gcd gcdext"
-
-path="$path generic"
-mpn_objects=
-
-for fn in $functions ; do
- mpn_objects="$mpn_objects $fn.o"
- for dir in $path ; do
- rm -f $fn.[Ssc]
- if test -f $srcdir/$dir/$fn.S ; then
- files="$files $dir/$fn.S"
- links="$links $fn.S"
- break
- elif test -f $srcdir/$dir/$fn.s ; then
- files="$files $dir/$fn.s"
- links="$links $fn.s"
- break
- elif test -f $srcdir/$dir/$fn.c ; then
- files="$files $dir/$fn.c"
- links="$links $fn.c"
- break
- fi
- done
-done
-
-for dir in $path ; do
- rm -f gmp-mparam.h
- if test -f $srcdir/$dir/gmp-mparam.h ; then
- files="$files $dir/gmp-mparam.h"
- links="$links gmp-mparam.h"
- break
- fi
-done
-
-links="sysdep.h $links"
-files="$config $files"
-
-mpn_links=$links
-
-# post-target:
-
-sed <Makefile >Makefile.tmp \
- -e "s/MPN_LINKS = .*/MPN_LINKS =${mpn_links}/" \
- -e "s/MPN_OBJECTS = .*/MPN_OBJECTS =${mpn_objects}/"
-
-mv Makefile.tmp Makefile
diff --git a/gnu/lib/libgmp/mpn/generic/add_n.c b/gnu/lib/libgmp/mpn/generic/add_n.c
deleted file mode 100644
index 9d71df1..0000000
--- a/gnu/lib/libgmp/mpn/generic/add_n.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* mpn_add_n -- Add two limb vectors of equal, non-zero length.
-
-Copyright (C) 1992, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-mp_limb_t
-#if __STDC__
-mpn_add_n (mp_ptr res_ptr, mp_srcptr s1_ptr, mp_srcptr s2_ptr, mp_size_t size)
-#else
-mpn_add_n (res_ptr, s1_ptr, s2_ptr, size)
- register mp_ptr res_ptr;
- register mp_srcptr s1_ptr;
- register mp_srcptr s2_ptr;
- mp_size_t size;
-#endif
-{
- register mp_limb_t x, y, cy;
- register mp_size_t j;
-
- /* The loop counter and index J goes from -SIZE to -1. This way
- the loop becomes faster. */
- j = -size;
-
- /* Offset the base pointers to compensate for the negative indices. */
- s1_ptr -= j;
- s2_ptr -= j;
- res_ptr -= j;
-
- cy = 0;
- do
- {
- y = s2_ptr[j];
- x = s1_ptr[j];
- y += cy; /* add previous carry to one addend */
- cy = (y < cy); /* get out carry from that addition */
- y = x + y; /* add other addend */
- cy = (y < x) + cy; /* get out carry from that add, combine */
- res_ptr[j] = y;
- }
- while (++j != 0);
-
- return cy;
-}
diff --git a/gnu/lib/libgmp/mpn/generic/addmul_1.c b/gnu/lib/libgmp/mpn/generic/addmul_1.c
deleted file mode 100644
index 3a5e214..0000000
--- a/gnu/lib/libgmp/mpn/generic/addmul_1.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/* mpn_addmul_1 -- multiply the S1_SIZE long limb vector pointed to by S1_PTR
- by S2_LIMB, add the S1_SIZE least significant limbs of the product to the
- limb vector pointed to by RES_PTR. Return the most significant limb of
- the product, adjusted for carry-out from the addition.
-
-Copyright (C) 1992, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-mp_limb_t
-mpn_addmul_1 (res_ptr, s1_ptr, s1_size, s2_limb)
- register mp_ptr res_ptr;
- register mp_srcptr s1_ptr;
- mp_size_t s1_size;
- register mp_limb_t s2_limb;
-{
- register mp_limb_t cy_limb;
- register mp_size_t j;
- register mp_limb_t prod_high, prod_low;
- register mp_limb_t x;
-
- /* The loop counter and index J goes from -SIZE to -1. This way
- the loop becomes faster. */
- j = -s1_size;
-
- /* Offset the base pointers to compensate for the negative indices. */
- res_ptr -= j;
- s1_ptr -= j;
-
- cy_limb = 0;
- do
- {
- umul_ppmm (prod_high, prod_low, s1_ptr[j], s2_limb);
-
- prod_low += cy_limb;
- cy_limb = (prod_low < cy_limb) + prod_high;
-
- x = res_ptr[j];
- prod_low = x + prod_low;
- cy_limb += (prod_low < x);
- res_ptr[j] = prod_low;
- }
- while (++j != 0);
-
- return cy_limb;
-}
diff --git a/gnu/lib/libgmp/mpn/generic/bdivmod.c b/gnu/lib/libgmp/mpn/generic/bdivmod.c
deleted file mode 100644
index f095288..0000000
--- a/gnu/lib/libgmp/mpn/generic/bdivmod.c
+++ /dev/null
@@ -1,129 +0,0 @@
-/* mpn/bdivmod.c: mpn_bdivmod for computing U/V mod 2^d.
-
-Copyright (C) 1991, 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-/* q_high = mpn_bdivmod (qp, up, usize, vp, vsize, d).
-
- Puts the low d/BITS_PER_MP_LIMB limbs of Q = U / V mod 2^d at qp, and
- returns the high d%BITS_PER_MP_LIMB bits of Q as the result.
-
- Also, U - Q * V mod 2^(usize*BITS_PER_MP_LIMB) is placed at up. Since the
- low d/BITS_PER_MP_LIMB limbs of this difference are zero, the code allows
- the limb vectors at qp to overwrite the low limbs at up, provided qp <= up.
-
- Preconditions:
- 1. V is odd.
- 2. usize * BITS_PER_MP_LIMB >= d.
- 3. If Q and U overlap, qp <= up.
-
- Ken Weber (kweber@mat.ufrgs.br, kweber@mcs.kent.edu)
-
- Funding for this work has been partially provided by Conselho Nacional
- de Desenvolvimento Cienti'fico e Tecnolo'gico (CNPq) do Brazil, Grant
- 301314194-2, and was done while I was a visiting reseacher in the Instituto
- de Matema'tica at Universidade Federal do Rio Grande do Sul (UFRGS).
-
- References:
- T. Jebelean, An algorithm for exact division, Journal of Symbolic
- Computation, v. 15, 1993, pp. 169-180.
-
- K. Weber, The accelerated integer GCD algorithm, ACM Transactions on
- Mathematical Software, v. 21 (March), 1995, pp. 111-122. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-mp_limb_t
-#if __STDC__
-mpn_bdivmod (mp_ptr qp, mp_ptr up, mp_size_t usize,
- mp_srcptr vp, mp_size_t vsize, unsigned long int d)
-#else
-mpn_bdivmod (qp, up, usize, vp, vsize, d)
- mp_ptr qp;
- mp_ptr up;
- mp_size_t usize;
- mp_srcptr vp;
- mp_size_t vsize;
- unsigned long int d;
-#endif
-{
- /* Cache for v_inv is used to make mpn_accelgcd faster. */
- static mp_limb_t previous_low_vlimb = 0;
- static mp_limb_t v_inv; /* 1/V mod 2^BITS_PER_MP_LIMB. */
-
- if (vp[0] != previous_low_vlimb) /* Cache miss; compute v_inv. */
- {
- mp_limb_t v = previous_low_vlimb = vp[0];
- mp_limb_t make_zero = 1;
- mp_limb_t two_i = 1;
- v_inv = 0;
- do
- {
- while ((two_i & make_zero) == 0)
- two_i <<= 1, v <<= 1;
- v_inv += two_i;
- make_zero -= v;
- }
- while (make_zero);
- }
-
- /* Need faster computation for some common cases in mpn_accelgcd. */
- if (usize == 2 && vsize == 2 &&
- (d == BITS_PER_MP_LIMB || d == 2*BITS_PER_MP_LIMB))
- {
- mp_limb_t hi, lo;
- mp_limb_t q = up[0] * v_inv;
- umul_ppmm (hi, lo, q, vp[0]);
- up[0] = 0, up[1] -= hi + q*vp[1], qp[0] = q;
- if (d == 2*BITS_PER_MP_LIMB)
- q = up[1] * v_inv, up[1] = 0, qp[1] = q;
- return 0;
- }
-
- /* Main loop. */
- while (d >= BITS_PER_MP_LIMB)
- {
- mp_limb_t q = up[0] * v_inv;
- mp_limb_t b = mpn_submul_1 (up, vp, MIN (usize, vsize), q);
- if (usize > vsize)
- mpn_sub_1 (up + vsize, up + vsize, usize - vsize, b);
- d -= BITS_PER_MP_LIMB;
- up += 1, usize -= 1;
- *qp++ = q;
- }
-
- if (d)
- {
- mp_limb_t b;
- mp_limb_t q = (up[0] * v_inv) & (((mp_limb_t)1<<d) - 1);
- switch (q)
- {
- case 0: return 0;
- case 1: b = mpn_sub_n (up, up, vp, MIN (usize, vsize)); break;
- default: b = mpn_submul_1 (up, vp, MIN (usize, vsize), q); break;
- }
- if (usize > vsize)
- mpn_sub_1 (up + vsize, up + vsize, usize - vsize, b);
- return q;
- }
-
- return 0;
-}
diff --git a/gnu/lib/libgmp/mpn/generic/cmp.c b/gnu/lib/libgmp/mpn/generic/cmp.c
deleted file mode 100644
index 4e9c60d..0000000
--- a/gnu/lib/libgmp/mpn/generic/cmp.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* mpn_cmp -- Compare two low-level natural-number integers.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-/* Compare OP1_PTR/OP1_SIZE with OP2_PTR/OP2_SIZE.
- There are no restrictions on the relative sizes of
- the two arguments.
- Return 1 if OP1 > OP2, 0 if they are equal, and -1 if OP1 < OP2. */
-
-int
-#if __STDC__
-mpn_cmp (mp_srcptr op1_ptr, mp_srcptr op2_ptr, mp_size_t size)
-#else
-mpn_cmp (op1_ptr, op2_ptr, size)
- mp_srcptr op1_ptr;
- mp_srcptr op2_ptr;
- mp_size_t size;
-#endif
-{
- mp_size_t i;
- mp_limb_t op1_word, op2_word;
-
- for (i = size - 1; i >= 0; i--)
- {
- op1_word = op1_ptr[i];
- op2_word = op2_ptr[i];
- if (op1_word != op2_word)
- goto diff;
- }
- return 0;
- diff:
- /* This can *not* be simplified to
- op2_word - op2_word
- since that expression might give signed overflow. */
- return (op1_word > op2_word) ? 1 : -1;
-}
diff --git a/gnu/lib/libgmp/mpn/generic/divmod_1.c b/gnu/lib/libgmp/mpn/generic/divmod_1.c
deleted file mode 100644
index f93841f..0000000
--- a/gnu/lib/libgmp/mpn/generic/divmod_1.c
+++ /dev/null
@@ -1,208 +0,0 @@
-/* mpn_divmod_1(quot_ptr, dividend_ptr, dividend_size, divisor_limb) --
- Divide (DIVIDEND_PTR,,DIVIDEND_SIZE) by DIVISOR_LIMB.
- Write DIVIDEND_SIZE limbs of quotient at QUOT_PTR.
- Return the single-limb remainder.
- There are no constraints on the value of the divisor.
-
- QUOT_PTR and DIVIDEND_PTR might point to the same limb.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-#ifndef UMUL_TIME
-#define UMUL_TIME 1
-#endif
-
-#ifndef UDIV_TIME
-#define UDIV_TIME UMUL_TIME
-#endif
-
-/* FIXME: We should be using invert_limb (or invert_normalized_limb)
- here (not udiv_qrnnd). */
-
-mp_limb_t
-#if __STDC__
-mpn_divmod_1 (mp_ptr quot_ptr,
- mp_srcptr dividend_ptr, mp_size_t dividend_size,
- mp_limb_t divisor_limb)
-#else
-mpn_divmod_1 (quot_ptr, dividend_ptr, dividend_size, divisor_limb)
- mp_ptr quot_ptr;
- mp_srcptr dividend_ptr;
- mp_size_t dividend_size;
- mp_limb_t divisor_limb;
-#endif
-{
- mp_size_t i;
- mp_limb_t n1, n0, r;
- int dummy;
-
- /* ??? Should this be handled at all? Rely on callers? */
- if (dividend_size == 0)
- return 0;
-
- /* If multiplication is much faster than division, and the
- dividend is large, pre-invert the divisor, and use
- only multiplications in the inner loop. */
-
- /* This test should be read:
- Does it ever help to use udiv_qrnnd_preinv?
- && Does what we save compensate for the inversion overhead? */
- if (UDIV_TIME > (2 * UMUL_TIME + 6)
- && (UDIV_TIME - (2 * UMUL_TIME + 6)) * dividend_size > UDIV_TIME)
- {
- int normalization_steps;
-
- count_leading_zeros (normalization_steps, divisor_limb);
- if (normalization_steps != 0)
- {
- mp_limb_t divisor_limb_inverted;
-
- divisor_limb <<= normalization_steps;
-
- /* Compute (2**2N - 2**N * DIVISOR_LIMB) / DIVISOR_LIMB. The
- result is a (N+1)-bit approximation to 1/DIVISOR_LIMB, with the
- most significant bit (with weight 2**N) implicit. */
-
- /* Special case for DIVISOR_LIMB == 100...000. */
- if (divisor_limb << 1 == 0)
- divisor_limb_inverted = ~(mp_limb_t) 0;
- else
- udiv_qrnnd (divisor_limb_inverted, dummy,
- -divisor_limb, 0, divisor_limb);
-
- n1 = dividend_ptr[dividend_size - 1];
- r = n1 >> (BITS_PER_MP_LIMB - normalization_steps);
-
- /* Possible optimization:
- if (r == 0
- && divisor_limb > ((n1 << normalization_steps)
- | (dividend_ptr[dividend_size - 2] >> ...)))
- ...one division less... */
-
- for (i = dividend_size - 2; i >= 0; i--)
- {
- n0 = dividend_ptr[i];
- udiv_qrnnd_preinv (quot_ptr[i + 1], r, r,
- ((n1 << normalization_steps)
- | (n0 >> (BITS_PER_MP_LIMB - normalization_steps))),
- divisor_limb, divisor_limb_inverted);
- n1 = n0;
- }
- udiv_qrnnd_preinv (quot_ptr[0], r, r,
- n1 << normalization_steps,
- divisor_limb, divisor_limb_inverted);
- return r >> normalization_steps;
- }
- else
- {
- mp_limb_t divisor_limb_inverted;
-
- /* Compute (2**2N - 2**N * DIVISOR_LIMB) / DIVISOR_LIMB. The
- result is a (N+1)-bit approximation to 1/DIVISOR_LIMB, with the
- most significant bit (with weight 2**N) implicit. */
-
- /* Special case for DIVISOR_LIMB == 100...000. */
- if (divisor_limb << 1 == 0)
- divisor_limb_inverted = ~(mp_limb_t) 0;
- else
- udiv_qrnnd (divisor_limb_inverted, dummy,
- -divisor_limb, 0, divisor_limb);
-
- i = dividend_size - 1;
- r = dividend_ptr[i];
-
- if (r >= divisor_limb)
- r = 0;
- else
- {
- quot_ptr[i] = 0;
- i--;
- }
-
- for (; i >= 0; i--)
- {
- n0 = dividend_ptr[i];
- udiv_qrnnd_preinv (quot_ptr[i], r, r,
- n0, divisor_limb, divisor_limb_inverted);
- }
- return r;
- }
- }
- else
- {
- if (UDIV_NEEDS_NORMALIZATION)
- {
- int normalization_steps;
-
- count_leading_zeros (normalization_steps, divisor_limb);
- if (normalization_steps != 0)
- {
- divisor_limb <<= normalization_steps;
-
- n1 = dividend_ptr[dividend_size - 1];
- r = n1 >> (BITS_PER_MP_LIMB - normalization_steps);
-
- /* Possible optimization:
- if (r == 0
- && divisor_limb > ((n1 << normalization_steps)
- | (dividend_ptr[dividend_size - 2] >> ...)))
- ...one division less... */
-
- for (i = dividend_size - 2; i >= 0; i--)
- {
- n0 = dividend_ptr[i];
- udiv_qrnnd (quot_ptr[i + 1], r, r,
- ((n1 << normalization_steps)
- | (n0 >> (BITS_PER_MP_LIMB - normalization_steps))),
- divisor_limb);
- n1 = n0;
- }
- udiv_qrnnd (quot_ptr[0], r, r,
- n1 << normalization_steps,
- divisor_limb);
- return r >> normalization_steps;
- }
- }
- /* No normalization needed, either because udiv_qrnnd doesn't require
- it, or because DIVISOR_LIMB is already normalized. */
-
- i = dividend_size - 1;
- r = dividend_ptr[i];
-
- if (r >= divisor_limb)
- r = 0;
- else
- {
- quot_ptr[i] = 0;
- i--;
- }
-
- for (; i >= 0; i--)
- {
- n0 = dividend_ptr[i];
- udiv_qrnnd (quot_ptr[i], r, r, n0, divisor_limb);
- }
- return r;
- }
-}
diff --git a/gnu/lib/libgmp/mpn/generic/divrem.c b/gnu/lib/libgmp/mpn/generic/divrem.c
deleted file mode 100644
index 1fe865a..0000000
--- a/gnu/lib/libgmp/mpn/generic/divrem.c
+++ /dev/null
@@ -1,245 +0,0 @@
-/* mpn_divrem -- Divide natural numbers, producing both remainder and
- quotient.
-
-Copyright (C) 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-/* Divide num (NP/NSIZE) by den (DP/DSIZE) and write
- the NSIZE-DSIZE least significant quotient limbs at QP
- and the DSIZE long remainder at NP. If QEXTRA_LIMBS is
- non-zero, generate that many fraction bits and append them after the
- other quotient limbs.
- Return the most significant limb of the quotient, this is always 0 or 1.
-
- Preconditions:
- 0. NSIZE >= DSIZE.
- 1. The most significant bit of the divisor must be set.
- 2. QP must either not overlap with the input operands at all, or
- QP + DSIZE >= NP must hold true. (This means that it's
- possible to put the quotient in the high part of NUM, right after the
- remainder in NUM.
- 3. NSIZE >= DSIZE, even if QEXTRA_LIMBS is non-zero. */
-
-mp_limb_t
-#if __STDC__
-mpn_divrem (mp_ptr qp, mp_size_t qextra_limbs,
- mp_ptr np, mp_size_t nsize,
- mp_srcptr dp, mp_size_t dsize)
-#else
-mpn_divrem (qp, qextra_limbs, np, nsize, dp, dsize)
- mp_ptr qp;
- mp_size_t qextra_limbs;
- mp_ptr np;
- mp_size_t nsize;
- mp_srcptr dp;
- mp_size_t dsize;
-#endif
-{
- mp_limb_t most_significant_q_limb = 0;
-
- switch (dsize)
- {
- case 0:
- /* We are asked to divide by zero, so go ahead and do it! (To make
- the compiler not remove this statement, return the value.) */
- return 1 / dsize;
-
- case 1:
- {
- mp_size_t i;
- mp_limb_t n1;
- mp_limb_t d;
-
- d = dp[0];
- n1 = np[nsize - 1];
-
- if (n1 >= d)
- {
- n1 -= d;
- most_significant_q_limb = 1;
- }
-
- qp += qextra_limbs;
- for (i = nsize - 2; i >= 0; i--)
- udiv_qrnnd (qp[i], n1, n1, np[i], d);
- qp -= qextra_limbs;
-
- for (i = qextra_limbs - 1; i >= 0; i--)
- udiv_qrnnd (qp[i], n1, n1, 0, d);
-
- np[0] = n1;
- }
- break;
-
- case 2:
- {
- mp_size_t i;
- mp_limb_t n1, n0, n2;
- mp_limb_t d1, d0;
-
- np += nsize - 2;
- d1 = dp[1];
- d0 = dp[0];
- n1 = np[1];
- n0 = np[0];
-
- if (n1 >= d1 && (n1 > d1 || n0 >= d0))
- {
- sub_ddmmss (n1, n0, n1, n0, d1, d0);
- most_significant_q_limb = 1;
- }
-
- for (i = qextra_limbs + nsize - 2 - 1; i >= 0; i--)
- {
- mp_limb_t q;
- mp_limb_t r;
-
- if (i >= qextra_limbs)
- np--;
- else
- np[0] = 0;
-
- if (n1 == d1)
- {
- /* Q should be either 111..111 or 111..110. Need special
- treatment of this rare case as normal division would
- give overflow. */
- q = ~(mp_limb_t) 0;
-
- r = n0 + d1;
- if (r < d1) /* Carry in the addition? */
- {
- add_ssaaaa (n1, n0, r - d0, np[0], 0, d0);
- qp[i] = q;
- continue;
- }
- n1 = d0 - (d0 != 0);
- n0 = -d0;
- }
- else
- {
- udiv_qrnnd (q, r, n1, n0, d1);
- umul_ppmm (n1, n0, d0, q);
- }
-
- n2 = np[0];
- q_test:
- if (n1 > r || (n1 == r && n0 > n2))
- {
- /* The estimated Q was too large. */
- q--;
-
- sub_ddmmss (n1, n0, n1, n0, 0, d0);
- r += d1;
- if (r >= d1) /* If not carry, test Q again. */
- goto q_test;
- }
-
- qp[i] = q;
- sub_ddmmss (n1, n0, r, n2, n1, n0);
- }
- np[1] = n1;
- np[0] = n0;
- }
- break;
-
- default:
- {
- mp_size_t i;
- mp_limb_t dX, d1, n0;
-
- np += nsize - dsize;
- dX = dp[dsize - 1];
- d1 = dp[dsize - 2];
- n0 = np[dsize - 1];
-
- if (n0 >= dX)
- {
- if (n0 > dX || mpn_cmp (np, dp, dsize - 1) >= 0)
- {
- mpn_sub_n (np, np, dp, dsize);
- n0 = np[dsize - 1];
- most_significant_q_limb = 1;
- }
- }
-
- for (i = qextra_limbs + nsize - dsize - 1; i >= 0; i--)
- {
- mp_limb_t q;
- mp_limb_t n1, n2;
- mp_limb_t cy_limb;
-
- if (i >= qextra_limbs)
- {
- np--;
- n2 = np[dsize];
- }
- else
- {
- n2 = np[dsize - 1];
- MPN_COPY_DECR (np + 1, np, dsize);
- np[0] = 0;
- }
-
- if (n0 == dX)
- /* This might over-estimate q, but it's probably not worth
- the extra code here to find out. */
- q = ~(mp_limb_t) 0;
- else
- {
- mp_limb_t r;
-
- udiv_qrnnd (q, r, n0, np[dsize - 1], dX);
- umul_ppmm (n1, n0, d1, q);
-
- while (n1 > r || (n1 == r && n0 > np[dsize - 2]))
- {
- q--;
- r += dX;
- if (r < dX) /* I.e. "carry in previous addition?" */
- break;
- n1 -= n0 < d1;
- n0 -= d1;
- }
- }
-
- /* Possible optimization: We already have (q * n0) and (1 * n1)
- after the calculation of q. Taking advantage of that, we
- could make this loop make two iterations less. */
-
- cy_limb = mpn_submul_1 (np, dp, dsize, q);
-
- if (n2 != cy_limb)
- {
- mpn_add_n (np, np, dp, dsize);
- q--;
- }
-
- qp[i] = q;
- n0 = np[dsize - 1];
- }
- }
- }
-
- return most_significant_q_limb;
-}
diff --git a/gnu/lib/libgmp/mpn/generic/divrem_1.c b/gnu/lib/libgmp/mpn/generic/divrem_1.c
deleted file mode 100644
index d213267..0000000
--- a/gnu/lib/libgmp/mpn/generic/divrem_1.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/* mpn_divrem_1(quot_ptr, qsize, dividend_ptr, dividend_size, divisor_limb) --
- Divide (DIVIDEND_PTR,,DIVIDEND_SIZE) by DIVISOR_LIMB.
- Write DIVIDEND_SIZE limbs of quotient at QUOT_PTR.
- Return the single-limb remainder.
- There are no constraints on the value of the divisor.
-
- QUOT_PTR and DIVIDEND_PTR might point to the same limb.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-mp_limb_t
-#if __STDC__
-mpn_divrem_1 (mp_ptr qp, mp_size_t qsize,
- mp_srcptr dividend_ptr, mp_size_t dividend_size,
- mp_limb_t divisor_limb)
-#else
-mpn_divrem_1 (qp, qsize, dividend_ptr, dividend_size, divisor_limb)
- mp_ptr qp;
- mp_size_t qsize;
- mp_srcptr dividend_ptr;
- mp_size_t dividend_size;
- mp_limb_t divisor_limb;
-#endif
-{
- mp_limb_t rlimb;
- long i;
-
- /* Develop integer part of quotient. */
- rlimb = mpn_divmod_1 (qp + qsize, dividend_ptr, dividend_size, divisor_limb);
-
- if (qsize != 0)
- {
- for (i = qsize - 1; i >= 0; i--)
- udiv_qrnnd (qp[i], rlimb, rlimb, 0, divisor_limb);
- }
- return rlimb;
-}
diff --git a/gnu/lib/libgmp/mpn/generic/dump.c b/gnu/lib/libgmp/mpn/generic/dump.c
deleted file mode 100644
index a5831c4..0000000
--- a/gnu/lib/libgmp/mpn/generic/dump.c
+++ /dev/null
@@ -1,20 +0,0 @@
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-mpn_dump (ptr, size)
- mp_srcptr ptr;
- mp_size_t size;
-{
- if (size == 0)
- printf ("0\n");
- {
- while (size)
- {
- size--;
- printf ("%0*lX", (int) (2 * BYTES_PER_MP_LIMB), ptr[size]);
- }
- printf ("\n");
- }
-}
diff --git a/gnu/lib/libgmp/mpn/generic/gcd.c b/gnu/lib/libgmp/mpn/generic/gcd.c
deleted file mode 100644
index 8c2bbf0..0000000
--- a/gnu/lib/libgmp/mpn/generic/gcd.c
+++ /dev/null
@@ -1,402 +0,0 @@
-/* mpn/gcd.c: mpn_gcd for gcd of two odd integers.
-
-Copyright (C) 1991, 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-/* Integer greatest common divisor of two unsigned integers, using
- the accelerated algorithm (see reference below).
-
- mp_size_t mpn_gcd (vp, vsize, up, usize).
-
- Preconditions [U = (up, usize) and V = (vp, vsize)]:
-
- 1. V is odd.
- 2. numbits(U) >= numbits(V).
-
- Both U and V are destroyed by the operation. The result is left at vp,
- and its size is returned.
-
- Ken Weber (kweber@mat.ufrgs.br, kweber@mcs.kent.edu)
-
- Funding for this work has been partially provided by Conselho Nacional
- de Desenvolvimento Cienti'fico e Tecnolo'gico (CNPq) do Brazil, Grant
- 301314194-2, and was done while I was a visiting reseacher in the Instituto
- de Matema'tica at Universidade Federal do Rio Grande do Sul (UFRGS).
-
- Refer to
- K. Weber, The accelerated integer GCD algorithm, ACM Transactions on
- Mathematical Software, v. 21 (March), 1995, pp. 111-122. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-/* If MIN (usize, vsize) > ACCEL_THRESHOLD, then the accelerated algorithm is
- used, otherwise the binary algorithm is used. This may be adjusted for
- different architectures. */
-#ifndef ACCEL_THRESHOLD
-#define ACCEL_THRESHOLD 4
-#endif
-
-/* When U and V differ in size by more than BMOD_THRESHOLD, the accelerated
- algorithm reduces using the bmod operation. Otherwise, the k-ary reduction
- is used. 0 <= BMOD_THRESHOLD < BITS_PER_MP_LIMB. */
-enum
- {
- BMOD_THRESHOLD = BITS_PER_MP_LIMB/2
- };
-
-#define SIGN_BIT (~(~(mp_limb_t)0 >> 1))
-
-
-#define SWAP_LIMB(UL, VL) do{mp_limb_t __l=(UL);(UL)=(VL);(VL)=__l;}while(0)
-#define SWAP_PTR(UP, VP) do{mp_ptr __p=(UP);(UP)=(VP);(VP)=__p;}while(0)
-#define SWAP_SZ(US, VS) do{mp_size_t __s=(US);(US)=(VS);(VS)=__s;}while(0)
-#define SWAP_MPN(UP, US, VP, VS) do{SWAP_PTR(UP,VP);SWAP_SZ(US,VS);}while(0)
-
-/* Use binary algorithm to compute V <-- GCD (V, U) for usize, vsize == 2.
- Both U and V must be odd. */
-static __gmp_inline mp_size_t
-#if __STDC__
-gcd_2 (mp_ptr vp, mp_srcptr up)
-#else
-gcd_2 (vp, up)
- mp_ptr vp;
- mp_srcptr up;
-#endif
-{
- mp_limb_t u0, u1, v0, v1;
- mp_size_t vsize;
-
- u0 = up[0], u1 = up[1], v0 = vp[0], v1 = vp[1];
-
- while (u1 != v1 && u0 != v0)
- {
- unsigned long int r;
- if (u1 > v1)
- {
- u1 -= v1 + (u0 < v0), u0 -= v0;
- count_trailing_zeros (r, u0);
- u0 = u1 << (BITS_PER_MP_LIMB - r) | u0 >> r;
- u1 >>= r;
- }
- else /* u1 < v1. */
- {
- v1 -= u1 + (v0 < u0), v0 -= u0;
- count_trailing_zeros (r, v0);
- v0 = v1 << (BITS_PER_MP_LIMB - r) | v0 >> r;
- v1 >>= r;
- }
- }
-
- vp[0] = v0, vp[1] = v1, vsize = 1 + (v1 != 0);
-
- /* If U == V == GCD, done. Otherwise, compute GCD (V, |U - V|). */
- if (u1 == v1 && u0 == v0)
- return vsize;
-
- v0 = (u0 == v0) ? (u1 > v1) ? u1-v1 : v1-u1 : (u0 > v0) ? u0-v0 : v0-u0;
- vp[0] = mpn_gcd_1 (vp, vsize, v0);
-
- return 1;
-}
-
-/* The function find_a finds 0 < N < 2^BITS_PER_MP_LIMB such that there exists
- 0 < |D| < 2^BITS_PER_MP_LIMB, and N == D * C mod 2^(2*BITS_PER_MP_LIMB).
- In the reference article, D was computed along with N, but it is better to
- compute D separately as D <-- N / C mod 2^(BITS_PER_MP_LIMB + 1), treating
- the result as a twos' complement signed integer.
-
- Initialize N1 to C mod 2^(2*BITS_PER_MP_LIMB). According to the reference
- article, N2 should be initialized to 2^(2*BITS_PER_MP_LIMB), but we use
- 2^(2*BITS_PER_MP_LIMB) - N1 to start the calculations within double
- precision. If N2 > N1 initially, the first iteration of the while loop
- will swap them. In all other situations, N1 >= N2 is maintained. */
-
-static __gmp_inline mp_limb_t
-#if __STDC__
-find_a (mp_srcptr cp)
-#else
-find_a (cp)
- mp_srcptr cp;
-#endif
-{
- unsigned long int leading_zero_bits = 0;
-
- mp_limb_t n1_l = cp[0]; /* N1 == n1_h * 2^BITS_PER_MP_LIMB + n1_l. */
- mp_limb_t n1_h = cp[1];
-
- mp_limb_t n2_l = -n1_l; /* N2 == n2_h * 2^BITS_PER_MP_LIMB + n2_l. */
- mp_limb_t n2_h = ~n1_h;
-
- /* Main loop. */
- while (n2_h) /* While N2 >= 2^BITS_PER_MP_LIMB. */
- {
- /* N1 <-- N1 % N2. */
- if ((SIGN_BIT >> leading_zero_bits & n2_h) == 0)
- {
- unsigned long int i;
- count_leading_zeros (i, n2_h);
- i -= leading_zero_bits, leading_zero_bits += i;
- n2_h = n2_h<<i | n2_l>>(BITS_PER_MP_LIMB - i), n2_l <<= i;
- do
- {
- if (n1_h > n2_h || (n1_h == n2_h && n1_l >= n2_l))
- n1_h -= n2_h + (n1_l < n2_l), n1_l -= n2_l;
- n2_l = n2_l>>1 | n2_h<<(BITS_PER_MP_LIMB - 1), n2_h >>= 1;
- i -= 1;
- }
- while (i);
- }
- if (n1_h > n2_h || (n1_h == n2_h && n1_l >= n2_l))
- n1_h -= n2_h + (n1_l < n2_l), n1_l -= n2_l;
-
- SWAP_LIMB (n1_h, n2_h);
- SWAP_LIMB (n1_l, n2_l);
- }
-
- return n2_l;
-}
-
-mp_size_t
-#if __STDC__
-mpn_gcd (mp_ptr gp, mp_ptr vp, mp_size_t vsize, mp_ptr up, mp_size_t usize)
-#else
-mpn_gcd (gp, vp, vsize, up, usize)
- mp_ptr gp;
- mp_ptr vp;
- mp_size_t vsize;
- mp_ptr up;
- mp_size_t usize;
-#endif
-{
- mp_ptr orig_vp = vp;
- mp_size_t orig_vsize = vsize;
- int binary_gcd_ctr; /* Number of times binary gcd will execute. */
- TMP_DECL (marker);
-
- TMP_MARK (marker);
-
- /* Use accelerated algorithm if vsize is over ACCEL_THRESHOLD.
- Two EXTRA limbs for U and V are required for kary reduction. */
- if (vsize > ACCEL_THRESHOLD)
- {
- unsigned long int vbitsize, d;
- mp_ptr orig_up = up;
- mp_size_t orig_usize = usize;
- mp_ptr anchor_up = (mp_ptr) TMP_ALLOC ((usize + 2) * BYTES_PER_MP_LIMB);
-
- MPN_COPY (anchor_up, orig_up, usize);
- up = anchor_up;
-
- count_leading_zeros (d, up[usize-1]);
- d = usize * BITS_PER_MP_LIMB - d;
- count_leading_zeros (vbitsize, vp[vsize-1]);
- vbitsize = vsize * BITS_PER_MP_LIMB - vbitsize;
- d = d - vbitsize + 1;
-
- /* Use bmod reduction to quickly discover whether V divides U. */
- up[usize++] = 0; /* Insert leading zero. */
- mpn_bdivmod (up, up, usize, vp, vsize, d);
-
- /* Now skip U/V mod 2^d and any low zero limbs. */
- d /= BITS_PER_MP_LIMB, up += d, usize -= d;
- while (usize != 0 && up[0] == 0)
- up++, usize--;
-
- if (usize == 0) /* GCD == ORIG_V. */
- goto done;
-
- vp = (mp_ptr) TMP_ALLOC ((vsize + 2) * BYTES_PER_MP_LIMB);
- MPN_COPY (vp, orig_vp, vsize);
-
- do /* Main loop. */
- {
- if (up[usize-1] & SIGN_BIT) /* U < 0; take twos' compl. */
- {
- mp_size_t i;
- anchor_up[0] = -up[0];
- for (i = 1; i < usize; i++)
- anchor_up[i] = ~up[i];
- up = anchor_up;
- }
-
- MPN_NORMALIZE_NOT_ZERO (up, usize);
-
- if ((up[0] & 1) == 0) /* Result even; remove twos. */
- {
- unsigned long int r;
- count_trailing_zeros (r, up[0]);
- mpn_rshift (anchor_up, up, usize, r);
- usize -= (anchor_up[usize-1] == 0);
- }
- else if (anchor_up != up)
- MPN_COPY (anchor_up, up, usize);
-
- SWAP_MPN (anchor_up, usize, vp, vsize);
- up = anchor_up;
-
- if (vsize <= 2) /* Kary can't handle < 2 limbs and */
- break; /* isn't efficient for == 2 limbs. */
-
- d = vbitsize;
- count_leading_zeros (vbitsize, vp[vsize-1]);
- vbitsize = vsize * BITS_PER_MP_LIMB - vbitsize;
- d = d - vbitsize + 1;
-
- if (d > BMOD_THRESHOLD) /* Bmod reduction. */
- {
- up[usize++] = 0;
- mpn_bdivmod (up, up, usize, vp, vsize, d);
- d /= BITS_PER_MP_LIMB, up += d, usize -= d;
- }
- else /* Kary reduction. */
- {
- mp_limb_t bp[2], cp[2];
-
- /* C <-- V/U mod 2^(2*BITS_PER_MP_LIMB). */
- cp[0] = vp[0], cp[1] = vp[1];
- mpn_bdivmod (cp, cp, 2, up, 2, 2*BITS_PER_MP_LIMB);
-
- /* U <-- find_a (C) * U. */
- up[usize] = mpn_mul_1 (up, up, usize, find_a (cp));
- usize++;
-
- /* B <-- A/C == U/V mod 2^(BITS_PER_MP_LIMB + 1).
- bp[0] <-- U/V mod 2^BITS_PER_MP_LIMB and
- bp[1] <-- ( (U - bp[0] * V)/2^BITS_PER_MP_LIMB ) / V mod 2 */
- bp[0] = up[0], bp[1] = up[1];
- mpn_bdivmod (bp, bp, 2, vp, 2, BITS_PER_MP_LIMB);
- bp[1] &= 1; /* Since V is odd, division is unnecessary. */
-
- up[usize++] = 0;
- if (bp[1]) /* B < 0: U <-- U + (-B) * V. */
- {
- mp_limb_t c = mpn_addmul_1 (up, vp, vsize, -bp[0]);
- mpn_add_1 (up + vsize, up + vsize, usize - vsize, c);
- }
- else /* B >= 0: U <-- U - B * V. */
- {
- mp_limb_t b = mpn_submul_1 (up, vp, vsize, bp[0]);
- mpn_sub_1 (up + vsize, up + vsize, usize - vsize, b);
- }
-
- up += 2, usize -= 2; /* At least two low limbs are zero. */
- }
-
- /* Must remove low zero limbs before complementing. */
- while (usize != 0 && up[0] == 0)
- up++, usize--;
- }
- while (usize);
-
- /* Compute GCD (ORIG_V, GCD (ORIG_U, V)). Binary will execute twice. */
- up = orig_up, usize = orig_usize;
- binary_gcd_ctr = 2;
- }
- else
- binary_gcd_ctr = 1;
-
- /* Finish up with the binary algorithm. Executes once or twice. */
- for ( ; binary_gcd_ctr--; up = orig_vp, usize = orig_vsize)
- {
- if (usize > 2) /* First make U close to V in size. */
- {
- unsigned long int vbitsize, d;
- count_leading_zeros (d, up[usize-1]);
- d = usize * BITS_PER_MP_LIMB - d;
- count_leading_zeros (vbitsize, vp[vsize-1]);
- vbitsize = vsize * BITS_PER_MP_LIMB - vbitsize;
- d = d - vbitsize - 1;
- if (d != -(unsigned long int)1 && d > 2)
- {
- mpn_bdivmod (up, up, usize, vp, vsize, d); /* Result > 0. */
- d /= (unsigned long int)BITS_PER_MP_LIMB, up += d, usize -= d;
- }
- }
-
- /* Start binary GCD. */
- do
- {
- mp_size_t zeros;
-
- /* Make sure U is odd. */
- MPN_NORMALIZE (up, usize);
- while (up[0] == 0)
- up += 1, usize -= 1;
- if ((up[0] & 1) == 0)
- {
- unsigned long int r;
- count_trailing_zeros (r, up[0]);
- mpn_rshift (up, up, usize, r);
- usize -= (up[usize-1] == 0);
- }
-
- /* Keep usize >= vsize. */
- if (usize < vsize)
- SWAP_MPN (up, usize, vp, vsize);
-
- if (usize <= 2) /* Double precision. */
- {
- if (vsize == 1)
- vp[0] = mpn_gcd_1 (up, usize, vp[0]);
- else
- vsize = gcd_2 (vp, up);
- break; /* Binary GCD done. */
- }
-
- /* Count number of low zero limbs of U - V. */
- for (zeros = 0; up[zeros] == vp[zeros] && ++zeros != vsize; )
- continue;
-
- /* If U < V, swap U and V; in any case, subtract V from U. */
- if (zeros == vsize) /* Subtract done. */
- up += zeros, usize -= zeros;
- else if (usize == vsize)
- {
- mp_size_t size = vsize;
- do
- size--;
- while (up[size] == vp[size]);
- if (up[size] < vp[size]) /* usize == vsize. */
- SWAP_PTR (up, vp);
- up += zeros, usize = size + 1 - zeros;
- mpn_sub_n (up, up, vp + zeros, usize);
- }
- else
- {
- mp_size_t size = vsize - zeros;
- up += zeros, usize -= zeros;
- if (mpn_sub_n (up, up, vp + zeros, size))
- {
- while (up[size] == 0) /* Propagate borrow. */
- up[size++] = -(mp_limb_t)1;
- up[size] -= 1;
- }
- }
- }
- while (usize); /* End binary GCD. */
- }
-
-done:
- if (vp != gp)
- MPN_COPY (gp, vp, vsize);
- TMP_FREE (marker);
- return vsize;
-}
diff --git a/gnu/lib/libgmp/mpn/generic/gcd_1.c b/gnu/lib/libgmp/mpn/generic/gcd_1.c
deleted file mode 100644
index ebcdfb5..0000000
--- a/gnu/lib/libgmp/mpn/generic/gcd_1.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/* mpn_gcd_1 --
-
-Copyright (C) 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-/* Does not work for U == 0 or V == 0. It would be tough to make it work for
- V == 0 since gcd(x,0) = x, and U does not generally fit in an mp_limb_t. */
-
-mp_limb_t
-mpn_gcd_1 (up, size, vlimb)
- mp_srcptr up;
- mp_size_t size;
- mp_limb_t vlimb;
-{
- mp_limb_t ulimb;
- unsigned long int u_low_zero_bits, v_low_zero_bits;
-
- if (size > 1)
- {
- ulimb = mpn_mod_1 (up, size, vlimb);
- if (ulimb == 0)
- return vlimb;
- }
- else
- ulimb = up[0];
-
- /* Need to eliminate low zero bits. */
- count_trailing_zeros (u_low_zero_bits, ulimb);
- ulimb >>= u_low_zero_bits;
-
- count_trailing_zeros (v_low_zero_bits, vlimb);
- vlimb >>= v_low_zero_bits;
-
- while (ulimb != vlimb)
- {
- if (ulimb > vlimb)
- {
- ulimb -= vlimb;
- do
- ulimb >>= 1;
- while ((ulimb & 1) == 0);
- }
- else /* vlimb > ulimb. */
- {
- vlimb -= ulimb;
- do
- vlimb >>= 1;
- while ((vlimb & 1) == 0);
- }
- }
-
- return ulimb << MIN (u_low_zero_bits, v_low_zero_bits);
-}
diff --git a/gnu/lib/libgmp/mpn/generic/gcdext.c b/gnu/lib/libgmp/mpn/generic/gcdext.c
deleted file mode 100644
index 245e20a..0000000
--- a/gnu/lib/libgmp/mpn/generic/gcdext.c
+++ /dev/null
@@ -1,441 +0,0 @@
-/* mpn_gcdext -- Extended Greatest Common Divisor.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-#ifndef EXTEND
-#define EXTEND 1
-#endif
-
-#if STAT
-int arr[BITS_PER_MP_LIMB];
-#endif
-
-#define SGN(A) (((A) < 0) ? -1 : ((A) > 0))
-
-/* Idea 1: After we have performed a full division, don't shift operands back,
- but instead account for the extra factors-of-2 thus introduced.
- Idea 2: Simple generalization to use divide-and-conquer would give us an
- algorithm that runs faster than O(n^2).
- Idea 3: The input numbers need less space as the computation progresses,
- while the s0 and s1 variables need more space. To save space, we
- could make them share space, and have the latter variables grow
- into the former. */
-
-/* Precondition: U >= V. */
-
-mp_size_t
-#if EXTEND
-#if __STDC__
-mpn_gcdext (mp_ptr gp, mp_ptr s0p,
- mp_ptr up, mp_size_t size, mp_ptr vp, mp_size_t vsize)
-#else
-mpn_gcdext (gp, s0p, up, size, vp, vsize)
- mp_ptr gp;
- mp_ptr s0p;
- mp_ptr up;
- mp_size_t size;
- mp_ptr vp;
- mp_size_t vsize;
-#endif
-#else
-#if __STDC__
-mpn_gcd (mp_ptr gp,
- mp_ptr up, mp_size_t size, mp_ptr vp, mp_size_t vsize)
-#else
-mpn_gcd (gp, up, size, vp, vsize)
- mp_ptr gp;
- mp_ptr up;
- mp_size_t size;
- mp_ptr vp;
- mp_size_t vsize;
-#endif
-#endif
-{
- mp_limb_t uh, vh;
- mp_limb_signed_t A, B, C, D;
- int cnt;
- mp_ptr tp, wp;
-#if RECORD
- mp_limb_signed_t min = 0, max = 0;
-#endif
-#if EXTEND
- mp_ptr s1p;
- mp_ptr orig_s0p = s0p;
- mp_size_t ssize, orig_size = size;
- TMP_DECL (mark);
-
- TMP_MARK (mark);
-
- tp = (mp_ptr) TMP_ALLOC ((size + 1) * BYTES_PER_MP_LIMB);
- wp = (mp_ptr) TMP_ALLOC ((size + 1) * BYTES_PER_MP_LIMB);
- s1p = (mp_ptr) TMP_ALLOC (size * BYTES_PER_MP_LIMB);
-
- MPN_ZERO (s0p, size);
- MPN_ZERO (s1p, size);
-
- s0p[0] = 1;
- s1p[0] = 0;
- ssize = 1;
-#endif
-
- if (size > vsize)
- {
- /* Normalize V (and shift up U the same amount). */
- count_leading_zeros (cnt, vp[vsize - 1]);
- if (cnt != 0)
- {
- mp_limb_t cy;
- mpn_lshift (vp, vp, vsize, cnt);
- cy = mpn_lshift (up, up, size, cnt);
- up[size] = cy;
- size += cy != 0;
- }
-
- mpn_divmod (up + vsize, up, size, vp, vsize);
-#if EXTEND
- /* This is really what it boils down to in this case... */
- s0p[0] = 0;
- s1p[0] = 1;
-#endif
- size = vsize;
- if (cnt != 0)
- {
- mpn_rshift (up, up, size, cnt);
- mpn_rshift (vp, vp, size, cnt);
- }
- {
- mp_ptr xp;
- xp = up; up = vp; vp = xp;
- }
- }
-
- for (;;)
- {
- /* Figure out exact size of V. */
- vsize = size;
- MPN_NORMALIZE (vp, vsize);
- if (vsize <= 1)
- break;
-
- /* Make UH be the most significant limb of U, and make VH be
- corresponding bits from V. */
- uh = up[size - 1];
- vh = vp[size - 1];
- count_leading_zeros (cnt, uh);
- if (cnt != 0)
- {
- uh = (uh << cnt) | (up[size - 2] >> (BITS_PER_MP_LIMB - cnt));
- vh = (vh << cnt) | (vp[size - 2] >> (BITS_PER_MP_LIMB - cnt));
- }
-
-#if 0
- /* For now, only handle BITS_PER_MP_LIMB-1 bits. This makes
- room for sign bit. */
- uh >>= 1;
- vh >>= 1;
-#endif
- A = 1;
- B = 0;
- C = 0;
- D = 1;
-
- for (;;)
- {
- mp_limb_signed_t q, T;
- if (vh + C == 0 || vh + D == 0)
- break;
-
- q = (uh + A) / (vh + C);
- if (q != (uh + B) / (vh + D))
- break;
-
- T = A - q * C;
- A = C;
- C = T;
- T = B - q * D;
- B = D;
- D = T;
- T = uh - q * vh;
- uh = vh;
- vh = T;
- }
-
-#if RECORD
- min = MIN (A, min); min = MIN (B, min);
- min = MIN (C, min); min = MIN (D, min);
- max = MAX (A, max); max = MAX (B, max);
- max = MAX (C, max); max = MAX (D, max);
-#endif
-
- if (B == 0)
- {
- mp_limb_t qh;
- mp_size_t i;
-
- /* This is quite rare. I.e., optimize something else! */
-
- /* Normalize V (and shift up U the same amount). */
- count_leading_zeros (cnt, vp[vsize - 1]);
- if (cnt != 0)
- {
- mp_limb_t cy;
- mpn_lshift (vp, vp, vsize, cnt);
- cy = mpn_lshift (up, up, size, cnt);
- up[size] = cy;
- size += cy != 0;
- }
-
- qh = mpn_divmod (up + vsize, up, size, vp, vsize);
-#if EXTEND
- MPN_COPY (tp, s0p, ssize);
- for (i = 0; i < size - vsize; i++)
- {
- mp_limb_t cy;
- cy = mpn_addmul_1 (tp + i, s1p, ssize, up[vsize + i]);
- if (cy != 0)
- tp[ssize++] = cy;
- }
- if (qh != 0)
- {
- mp_limb_t cy;
- abort ();
- /* XXX since qh == 1, mpn_addmul_1 is overkill */
- cy = mpn_addmul_1 (tp + size - vsize, s1p, ssize, qh);
- if (cy != 0)
- tp[ssize++] = cy;
- }
-#if 0
- MPN_COPY (s0p, s1p, ssize); /* should be old ssize, kind of */
- MPN_COPY (s1p, tp, ssize);
-#else
- {
- mp_ptr xp;
- xp = s0p; s0p = s1p; s1p = xp;
- xp = s1p; s1p = tp; tp = xp;
- }
-#endif
-#endif
- size = vsize;
- if (cnt != 0)
- {
- mpn_rshift (up, up, size, cnt);
- mpn_rshift (vp, vp, size, cnt);
- }
-
- {
- mp_ptr xp;
- xp = up; up = vp; vp = xp;
- }
- MPN_NORMALIZE (up, size);
- }
- else
- {
- /* T = U*A + V*B
- W = U*C + V*D
- U = T
- V = W */
-
- if (SGN(A) == SGN(B)) /* should be different sign */
- abort ();
- if (SGN(C) == SGN(D)) /* should be different sign */
- abort ();
-#if STAT
- { mp_limb_t x;
- x = ABS (A) | ABS (B) | ABS (C) | ABS (D);
- count_leading_zeros (cnt, x);
- arr[BITS_PER_MP_LIMB - cnt]++; }
-#endif
- if (A == 0)
- {
- if (B != 1) abort ();
- MPN_COPY (tp, vp, size);
- }
- else
- {
- if (A < 0)
- {
- mpn_mul_1 (tp, vp, size, B);
- mpn_submul_1 (tp, up, size, -A);
- }
- else
- {
- mpn_mul_1 (tp, up, size, A);
- mpn_submul_1 (tp, vp, size, -B);
- }
- }
- if (C < 0)
- {
- mpn_mul_1 (wp, vp, size, D);
- mpn_submul_1 (wp, up, size, -C);
- }
- else
- {
- mpn_mul_1 (wp, up, size, C);
- mpn_submul_1 (wp, vp, size, -D);
- }
-
- {
- mp_ptr xp;
- xp = tp; tp = up; up = xp;
- xp = wp; wp = vp; vp = xp;
- }
-
-#if EXTEND
- { mp_limb_t cy;
- MPN_ZERO (tp, orig_size);
- if (A == 0)
- {
- if (B != 1) abort ();
- MPN_COPY (tp, s1p, ssize);
- }
- else
- {
- if (A < 0)
- {
- cy = mpn_mul_1 (tp, s1p, ssize, B);
- cy += mpn_addmul_1 (tp, s0p, ssize, -A);
- }
- else
- {
- cy = mpn_mul_1 (tp, s0p, ssize, A);
- cy += mpn_addmul_1 (tp, s1p, ssize, -B);
- }
- if (cy != 0)
- tp[ssize++] = cy;
- }
- MPN_ZERO (wp, orig_size);
- if (C < 0)
- {
- cy = mpn_mul_1 (wp, s1p, ssize, D);
- cy += mpn_addmul_1 (wp, s0p, ssize, -C);
- }
- else
- {
- cy = mpn_mul_1 (wp, s0p, ssize, C);
- cy += mpn_addmul_1 (wp, s1p, ssize, -D);
- }
- if (cy != 0)
- wp[ssize++] = cy;
- }
- {
- mp_ptr xp;
- xp = tp; tp = s0p; s0p = xp;
- xp = wp; wp = s1p; s1p = xp;
- }
-#endif
-#if 0 /* Is it a win to remove multiple zeros here? */
- MPN_NORMALIZE (up, size);
-#else
- if (up[size - 1] == 0)
- size--;
-#endif
- }
- }
-
-#if RECORD
- printf ("min: %ld\n", min);
- printf ("max: %ld\n", max);
-#endif
-
- if (vsize == 0)
- {
- if (gp != up)
- MPN_COPY (gp, up, size);
-#if EXTEND
- if (orig_s0p != s0p)
- MPN_COPY (orig_s0p, s0p, ssize);
-#endif
- TMP_FREE (mark);
- return size;
- }
- else
- {
- mp_limb_t vl, ul, t;
-#if EXTEND
- mp_limb_t cy;
- mp_size_t i;
-#endif
- vl = vp[0];
-#if EXTEND
- t = mpn_divmod_1 (wp, up, size, vl);
- MPN_COPY (tp, s0p, ssize);
- for (i = 0; i < size; i++)
- {
- cy = mpn_addmul_1 (tp + i, s1p, ssize, wp[i]);
- if (cy != 0)
- tp[ssize++] = cy;
- }
-#if 0
- MPN_COPY (s0p, s1p, ssize);
- MPN_COPY (s1p, tp, ssize);
-#else
- {
- mp_ptr xp;
- xp = s0p; s0p = s1p; s1p = xp;
- xp = s1p; s1p = tp; tp = xp;
- }
-#endif
-#else
- t = mpn_mod_1 (up, size, vl);
-#endif
- ul = vl;
- vl = t;
- while (vl != 0)
- {
- mp_limb_t t;
-#if EXTEND
- mp_limb_t q, cy;
- q = ul / vl;
- t = ul - q*vl;
-
- MPN_COPY (tp, s0p, ssize);
- cy = mpn_addmul_1 (tp, s1p, ssize, q);
- if (cy != 0)
- tp[ssize++] = cy;
-#if 0
- MPN_COPY (s0p, s1p, ssize);
- MPN_COPY (s1p, tp, ssize);
-#else
- {
- mp_ptr xp;
- xp = s0p; s0p = s1p; s1p = xp;
- xp = s1p; s1p = tp; tp = xp;
- }
-#endif
-
-#else
- t = ul % vl;
-#endif
- ul = vl;
- vl = t;
- }
- gp[0] = ul;
-#if EXTEND
- if (orig_s0p != s0p)
- MPN_COPY (orig_s0p, s0p, ssize);
-#endif
- TMP_FREE (mark);
- return 1;
- }
-}
diff --git a/gnu/lib/libgmp/mpn/generic/get_str.c b/gnu/lib/libgmp/mpn/generic/get_str.c
deleted file mode 100644
index 0e7fc60..0000000
--- a/gnu/lib/libgmp/mpn/generic/get_str.c
+++ /dev/null
@@ -1,211 +0,0 @@
-/* mpn_get_str -- Convert a MSIZE long limb vector pointed to by MPTR
- to a printable string in STR in base BASE.
-
-Copyright (C) 1991, 1992, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-/* Convert the limb vector pointed to by MPTR and MSIZE long to a
- char array, using base BASE for the result array. Store the
- result in the character array STR. STR must point to an array with
- space for the largest possible number represented by a MSIZE long
- limb vector + 1 extra character.
-
- The result is NOT in Ascii, to convert it to printable format, add
- '0' or 'A' depending on the base and range.
-
- Return the number of digits in the result string.
- This may include some leading zeros.
-
- The limb vector pointed to by MPTR is clobbered. */
-
-size_t
-mpn_get_str (str, base, mptr, msize)
- unsigned char *str;
- int base;
- mp_ptr mptr;
- mp_size_t msize;
-{
- mp_limb_t big_base;
-#if UDIV_NEEDS_NORMALIZATION || UDIV_TIME > 2 * UMUL_TIME
- int normalization_steps;
-#endif
-#if UDIV_TIME > 2 * UMUL_TIME
- mp_limb_t big_base_inverted;
-#endif
- unsigned int dig_per_u;
- mp_size_t out_len;
- register unsigned char *s;
-
- big_base = __mp_bases[base].big_base;
-
- s = str;
-
- /* Special case zero, as the code below doesn't handle it. */
- if (msize == 0)
- {
- s[0] = 0;
- return 1;
- }
-
- if ((base & (base - 1)) == 0)
- {
- /* The base is a power of 2. Make conversion from most
- significant side. */
- mp_limb_t n1, n0;
- register int bits_per_digit = big_base;
- register int x;
- register int bit_pos;
- register int i;
-
- n1 = mptr[msize - 1];
- count_leading_zeros (x, n1);
-
- /* BIT_POS should be R when input ends in least sign. nibble,
- R + bits_per_digit * n when input ends in n:th least significant
- nibble. */
-
- {
- int bits;
-
- bits = BITS_PER_MP_LIMB * msize - x;
- x = bits % bits_per_digit;
- if (x != 0)
- bits += bits_per_digit - x;
- bit_pos = bits - (msize - 1) * BITS_PER_MP_LIMB;
- }
-
- /* Fast loop for bit output. */
- i = msize - 1;
- for (;;)
- {
- bit_pos -= bits_per_digit;
- while (bit_pos >= 0)
- {
- *s++ = (n1 >> bit_pos) & ((1 << bits_per_digit) - 1);
- bit_pos -= bits_per_digit;
- }
- i--;
- if (i < 0)
- break;
- n0 = (n1 << -bit_pos) & ((1 << bits_per_digit) - 1);
- n1 = mptr[i];
- bit_pos += BITS_PER_MP_LIMB;
- *s++ = n0 | (n1 >> bit_pos);
- }
-
- *s = 0;
-
- return s - str;
- }
- else
- {
- /* General case. The base is not a power of 2. Make conversion
- from least significant end. */
-
- /* If udiv_qrnnd only handles divisors with the most significant bit
- set, prepare BIG_BASE for being a divisor by shifting it to the
- left exactly enough to set the most significant bit. */
-#if UDIV_NEEDS_NORMALIZATION || UDIV_TIME > 2 * UMUL_TIME
- count_leading_zeros (normalization_steps, big_base);
- big_base <<= normalization_steps;
-#if UDIV_TIME > 2 * UMUL_TIME
- /* Get the fixed-point approximation to 1/(BIG_BASE << NORMALIZATION_STEPS). */
- big_base_inverted = __mp_bases[base].big_base_inverted;
-#endif
-#endif
-
- dig_per_u = __mp_bases[base].chars_per_limb;
- out_len = ((size_t) msize * BITS_PER_MP_LIMB
- * __mp_bases[base].chars_per_bit_exactly) + 1;
- s += out_len;
-
- while (msize != 0)
- {
- int i;
- mp_limb_t n0, n1;
-
-#if UDIV_NEEDS_NORMALIZATION || UDIV_TIME > 2 * UMUL_TIME
- /* If we shifted BIG_BASE above, shift the dividend too, to get
- the right quotient. We need to do this every loop,
- since the intermediate quotients are OK, but the quotient from
- one turn in the loop is going to be the dividend in the
- next turn, and the dividend needs to be up-shifted. */
- if (normalization_steps != 0)
- {
- n0 = mpn_lshift (mptr, mptr, msize, normalization_steps);
-
- /* If the shifting gave a carry out limb, store it and
- increase the length. */
- if (n0 != 0)
- {
- mptr[msize] = n0;
- msize++;
- }
- }
-#endif
-
- /* Divide the number at TP with BIG_BASE to get a quotient and a
- remainder. The remainder is our new digit in base BIG_BASE. */
- i = msize - 1;
- n1 = mptr[i];
-
- if (n1 >= big_base)
- n1 = 0;
- else
- {
- msize--;
- i--;
- }
-
- for (; i >= 0; i--)
- {
- n0 = mptr[i];
-#if UDIV_TIME > 2 * UMUL_TIME
- udiv_qrnnd_preinv (mptr[i], n1, n1, n0, big_base, big_base_inverted);
-#else
- udiv_qrnnd (mptr[i], n1, n1, n0, big_base);
-#endif
- }
-
-#if UDIV_NEEDS_NORMALIZATION || UDIV_TIME > 2 * UMUL_TIME
- /* If we shifted above (at previous UDIV_NEEDS_NORMALIZATION tests)
- the remainder will be up-shifted here. Compensate. */
- n1 >>= normalization_steps;
-#endif
-
- /* Convert N1 from BIG_BASE to a string of digits in BASE
- using single precision operations. */
- for (i = dig_per_u - 1; i >= 0; i--)
- {
- *--s = n1 % base;
- n1 /= base;
- if (n1 == 0 && msize == 0)
- break;
- }
- }
-
- while (s != str)
- *--s = 0;
- return out_len;
- }
-}
diff --git a/gnu/lib/libgmp/mpn/generic/gmp-mparam.h b/gnu/lib/libgmp/mpn/generic/gmp-mparam.h
deleted file mode 100644
index 7c88557..0000000
--- a/gnu/lib/libgmp/mpn/generic/gmp-mparam.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* gmp-mparam.h -- Compiler/machine parameter header file.
-
-Copyright (C) 1991, 1993, 1994 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#define BITS_PER_MP_LIMB 32
-#define BYTES_PER_MP_LIMB 4
-#define BITS_PER_LONGINT 32
-#define BITS_PER_INT 32
-#define BITS_PER_SHORTINT 16
-#define BITS_PER_CHAR 8
diff --git a/gnu/lib/libgmp/mpn/generic/hamdist.c b/gnu/lib/libgmp/mpn/generic/hamdist.c
deleted file mode 100644
index 2190b63..0000000
--- a/gnu/lib/libgmp/mpn/generic/hamdist.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/* mpn_hamdist --
-
-Copyright (C) 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-#if defined __GNUC__
-#if defined __sparc_v9__ && BITS_PER_MP_LIMB == 64
-#define popc_limb(a) \
- ({ \
- DItype __res; \
- asm ("popc %1,%0" : "=r" (__res) : "rI" (a)); \
- __res; \
- })
-#endif
-#endif
-
-#ifndef popc_limb
-
-/* Cool population count of a mp_limb_t.
- You have to figure out how this works, I won't tell you! */
-
-static inline unsigned int
-popc_limb (x)
- mp_limb_t x;
-{
-#if BITS_PER_MP_LIMB == 64
- /* We have to go into some trouble to define these constants.
- (For mp_limb_t being `long long'.) */
- mp_limb_t cnst;
- cnst = 0x55555555L | ((mp_limb_t) 0x55555555L << BITS_PER_MP_LIMB/2);
- x = ((x & ~cnst) >> 1) + (x & cnst);
- cnst = 0x33333333L | ((mp_limb_t) 0x33333333L << BITS_PER_MP_LIMB/2);
- x = ((x & ~cnst) >> 2) + (x & cnst);
- cnst = 0x0f0f0f0fL | ((mp_limb_t) 0x0f0f0f0fL << BITS_PER_MP_LIMB/2);
- x = ((x >> 4) + x) & cnst;
- x = ((x >> 8) + x);
- x = ((x >> 16) + x);
- x = ((x >> 32) + x) & 0xff;
-#endif
-#if BITS_PER_MP_LIMB == 32
- x = ((x >> 1) & 0x55555555L) + (x & 0x55555555L);
- x = ((x >> 2) & 0x33333333L) + (x & 0x33333333L);
- x = ((x >> 4) + x) & 0x0f0f0f0fL;
- x = ((x >> 8) + x);
- x = ((x >> 16) + x) & 0xff;
-#endif
- return x;
-}
-#endif
-
-unsigned long int
-#if __STDC__
-mpn_hamdist (mp_srcptr up, mp_srcptr vp, mp_size_t size)
-#else
-mpn_hamdist (up, vp, size)
- register mp_srcptr up;
- register mp_srcptr vp;
- register mp_size_t size;
-#endif
-{
- unsigned long int hamdist;
- mp_size_t i;
-
- hamdist = 0;
- for (i = 0; i < size; i++)
- hamdist += popc_limb (up[i] ^ vp[i]);
-
- return hamdist;
-}
diff --git a/gnu/lib/libgmp/mpn/generic/inlines.c b/gnu/lib/libgmp/mpn/generic/inlines.c
deleted file mode 100644
index dca305e..0000000
--- a/gnu/lib/libgmp/mpn/generic/inlines.c
+++ /dev/null
@@ -1,3 +0,0 @@
-#define _FORCE_INLINES
-#define _EXTERN_INLINE /* empty */
-#include "gmp.h"
diff --git a/gnu/lib/libgmp/mpn/generic/lshift.c b/gnu/lib/libgmp/mpn/generic/lshift.c
deleted file mode 100644
index e244bc5..0000000
--- a/gnu/lib/libgmp/mpn/generic/lshift.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* mpn_lshift -- Shift left low level.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-/* Shift U (pointed to by UP and USIZE digits long) CNT bits to the left
- and store the USIZE least significant digits of the result at WP.
- Return the bits shifted out from the most significant digit.
-
- Argument constraints:
- 1. 0 < CNT < BITS_PER_MP_LIMB
- 2. If the result is to be written over the input, WP must be >= UP.
-*/
-
-mp_limb_t
-#if __STDC__
-mpn_lshift (register mp_ptr wp,
- register mp_srcptr up, mp_size_t usize,
- register unsigned int cnt)
-#else
-mpn_lshift (wp, up, usize, cnt)
- register mp_ptr wp;
- register mp_srcptr up;
- mp_size_t usize;
- register unsigned int cnt;
-#endif
-{
- register mp_limb_t high_limb, low_limb;
- register unsigned sh_1, sh_2;
- register mp_size_t i;
- mp_limb_t retval;
-
-#ifdef DEBUG
- if (usize == 0 || cnt == 0)
- abort ();
-#endif
-
- sh_1 = cnt;
-#if 0
- if (sh_1 == 0)
- {
- if (wp != up)
- {
- /* Copy from high end to low end, to allow specified input/output
- overlapping. */
- for (i = usize - 1; i >= 0; i--)
- wp[i] = up[i];
- }
- return 0;
- }
-#endif
-
- wp += 1;
- sh_2 = BITS_PER_MP_LIMB - sh_1;
- i = usize - 1;
- low_limb = up[i];
- retval = low_limb >> sh_2;
- high_limb = low_limb;
- while (--i >= 0)
- {
- low_limb = up[i];
- wp[i] = (high_limb << sh_1) | (low_limb >> sh_2);
- high_limb = low_limb;
- }
- wp[i] = high_limb << sh_1;
-
- return retval;
-}
diff --git a/gnu/lib/libgmp/mpn/generic/mod_1.c b/gnu/lib/libgmp/mpn/generic/mod_1.c
deleted file mode 100644
index 314d11b..0000000
--- a/gnu/lib/libgmp/mpn/generic/mod_1.c
+++ /dev/null
@@ -1,197 +0,0 @@
-/* mpn_mod_1(dividend_ptr, dividend_size, divisor_limb) --
- Divide (DIVIDEND_PTR,,DIVIDEND_SIZE) by DIVISOR_LIMB.
- Return the single-limb remainder.
- There are no constraints on the value of the divisor.
-
-Copyright (C) 1991, 1993, 1994, Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-#ifndef UMUL_TIME
-#define UMUL_TIME 1
-#endif
-
-#ifndef UDIV_TIME
-#define UDIV_TIME UMUL_TIME
-#endif
-
-/* FIXME: We should be using invert_limb (or invert_normalized_limb)
- here (not udiv_qrnnd). */
-
-mp_limb_t
-#if __STDC__
-mpn_mod_1 (mp_srcptr dividend_ptr, mp_size_t dividend_size,
- mp_limb_t divisor_limb)
-#else
-mpn_mod_1 (dividend_ptr, dividend_size, divisor_limb)
- mp_srcptr dividend_ptr;
- mp_size_t dividend_size;
- mp_limb_t divisor_limb;
-#endif
-{
- mp_size_t i;
- mp_limb_t n1, n0, r;
- int dummy;
-
- /* Botch: Should this be handled at all? Rely on callers? */
- if (dividend_size == 0)
- return 0;
-
- /* If multiplication is much faster than division, and the
- dividend is large, pre-invert the divisor, and use
- only multiplications in the inner loop. */
-
- /* This test should be read:
- Does it ever help to use udiv_qrnnd_preinv?
- && Does what we save compensate for the inversion overhead? */
- if (UDIV_TIME > (2 * UMUL_TIME + 6)
- && (UDIV_TIME - (2 * UMUL_TIME + 6)) * dividend_size > UDIV_TIME)
- {
- int normalization_steps;
-
- count_leading_zeros (normalization_steps, divisor_limb);
- if (normalization_steps != 0)
- {
- mp_limb_t divisor_limb_inverted;
-
- divisor_limb <<= normalization_steps;
-
- /* Compute (2**2N - 2**N * DIVISOR_LIMB) / DIVISOR_LIMB. The
- result is a (N+1)-bit approximation to 1/DIVISOR_LIMB, with the
- most significant bit (with weight 2**N) implicit. */
-
- /* Special case for DIVISOR_LIMB == 100...000. */
- if (divisor_limb << 1 == 0)
- divisor_limb_inverted = ~(mp_limb_t) 0;
- else
- udiv_qrnnd (divisor_limb_inverted, dummy,
- -divisor_limb, 0, divisor_limb);
-
- n1 = dividend_ptr[dividend_size - 1];
- r = n1 >> (BITS_PER_MP_LIMB - normalization_steps);
-
- /* Possible optimization:
- if (r == 0
- && divisor_limb > ((n1 << normalization_steps)
- | (dividend_ptr[dividend_size - 2] >> ...)))
- ...one division less... */
-
- for (i = dividend_size - 2; i >= 0; i--)
- {
- n0 = dividend_ptr[i];
- udiv_qrnnd_preinv (dummy, r, r,
- ((n1 << normalization_steps)
- | (n0 >> (BITS_PER_MP_LIMB - normalization_steps))),
- divisor_limb, divisor_limb_inverted);
- n1 = n0;
- }
- udiv_qrnnd_preinv (dummy, r, r,
- n1 << normalization_steps,
- divisor_limb, divisor_limb_inverted);
- return r >> normalization_steps;
- }
- else
- {
- mp_limb_t divisor_limb_inverted;
-
- /* Compute (2**2N - 2**N * DIVISOR_LIMB) / DIVISOR_LIMB. The
- result is a (N+1)-bit approximation to 1/DIVISOR_LIMB, with the
- most significant bit (with weight 2**N) implicit. */
-
- /* Special case for DIVISOR_LIMB == 100...000. */
- if (divisor_limb << 1 == 0)
- divisor_limb_inverted = ~(mp_limb_t) 0;
- else
- udiv_qrnnd (divisor_limb_inverted, dummy,
- -divisor_limb, 0, divisor_limb);
-
- i = dividend_size - 1;
- r = dividend_ptr[i];
-
- if (r >= divisor_limb)
- r = 0;
- else
- i--;
-
- for (; i >= 0; i--)
- {
- n0 = dividend_ptr[i];
- udiv_qrnnd_preinv (dummy, r, r,
- n0, divisor_limb, divisor_limb_inverted);
- }
- return r;
- }
- }
- else
- {
- if (UDIV_NEEDS_NORMALIZATION)
- {
- int normalization_steps;
-
- count_leading_zeros (normalization_steps, divisor_limb);
- if (normalization_steps != 0)
- {
- divisor_limb <<= normalization_steps;
-
- n1 = dividend_ptr[dividend_size - 1];
- r = n1 >> (BITS_PER_MP_LIMB - normalization_steps);
-
- /* Possible optimization:
- if (r == 0
- && divisor_limb > ((n1 << normalization_steps)
- | (dividend_ptr[dividend_size - 2] >> ...)))
- ...one division less... */
-
- for (i = dividend_size - 2; i >= 0; i--)
- {
- n0 = dividend_ptr[i];
- udiv_qrnnd (dummy, r, r,
- ((n1 << normalization_steps)
- | (n0 >> (BITS_PER_MP_LIMB - normalization_steps))),
- divisor_limb);
- n1 = n0;
- }
- udiv_qrnnd (dummy, r, r,
- n1 << normalization_steps,
- divisor_limb);
- return r >> normalization_steps;
- }
- }
- /* No normalization needed, either because udiv_qrnnd doesn't require
- it, or because DIVISOR_LIMB is already normalized. */
-
- i = dividend_size - 1;
- r = dividend_ptr[i];
-
- if (r >= divisor_limb)
- r = 0;
- else
- i--;
-
- for (; i >= 0; i--)
- {
- n0 = dividend_ptr[i];
- udiv_qrnnd (dummy, r, r, n0, divisor_limb);
- }
- return r;
- }
-}
diff --git a/gnu/lib/libgmp/mpn/generic/mul.c b/gnu/lib/libgmp/mpn/generic/mul.c
deleted file mode 100644
index dcf8cb4..0000000
--- a/gnu/lib/libgmp/mpn/generic/mul.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/* mpn_mul -- Multiply two natural numbers.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-/* Multiply the natural numbers u (pointed to by UP, with USIZE limbs)
- and v (pointed to by VP, with VSIZE limbs), and store the result at
- PRODP. USIZE + VSIZE limbs are always stored, but if the input
- operands are normalized. Return the most significant limb of the
- result.
-
- NOTE: The space pointed to by PRODP is overwritten before finished
- with U and V, so overlap is an error.
-
- Argument constraints:
- 1. USIZE >= VSIZE.
- 2. PRODP != UP and PRODP != VP, i.e. the destination
- must be distinct from the multiplier and the multiplicand. */
-
-/* If KARATSUBA_THRESHOLD is not already defined, define it to a
- value which is good on most machines. */
-#ifndef KARATSUBA_THRESHOLD
-#define KARATSUBA_THRESHOLD 32
-#endif
-
-mp_limb_t
-#if __STDC__
-mpn_mul (mp_ptr prodp,
- mp_srcptr up, mp_size_t usize,
- mp_srcptr vp, mp_size_t vsize)
-#else
-mpn_mul (prodp, up, usize, vp, vsize)
- mp_ptr prodp;
- mp_srcptr up;
- mp_size_t usize;
- mp_srcptr vp;
- mp_size_t vsize;
-#endif
-{
- mp_ptr prod_endp = prodp + usize + vsize - 1;
- mp_limb_t cy;
- mp_ptr tspace;
- TMP_DECL (marker);
-
- if (vsize < KARATSUBA_THRESHOLD)
- {
- /* Handle simple cases with traditional multiplication.
-
- This is the most critical code of the entire function. All
- multiplies rely on this, both small and huge. Small ones arrive
- here immediately. Huge ones arrive here as this is the base case
- for Karatsuba's recursive algorithm below. */
- mp_size_t i;
- mp_limb_t cy_limb;
- mp_limb_t v_limb;
-
- if (vsize == 0)
- return 0;
-
- /* Multiply by the first limb in V separately, as the result can be
- stored (not added) to PROD. We also avoid a loop for zeroing. */
- v_limb = vp[0];
- if (v_limb <= 1)
- {
- if (v_limb == 1)
- MPN_COPY (prodp, up, usize);
- else
- MPN_ZERO (prodp, usize);
- cy_limb = 0;
- }
- else
- cy_limb = mpn_mul_1 (prodp, up, usize, v_limb);
-
- prodp[usize] = cy_limb;
- prodp++;
-
- /* For each iteration in the outer loop, multiply one limb from
- U with one limb from V, and add it to PROD. */
- for (i = 1; i < vsize; i++)
- {
- v_limb = vp[i];
- if (v_limb <= 1)
- {
- cy_limb = 0;
- if (v_limb == 1)
- cy_limb = mpn_add_n (prodp, prodp, up, usize);
- }
- else
- cy_limb = mpn_addmul_1 (prodp, up, usize, v_limb);
-
- prodp[usize] = cy_limb;
- prodp++;
- }
- return cy_limb;
- }
-
- TMP_MARK (marker);
-
- tspace = (mp_ptr) TMP_ALLOC (2 * vsize * BYTES_PER_MP_LIMB);
- MPN_MUL_N_RECURSE (prodp, up, vp, vsize, tspace);
-
- prodp += vsize;
- up += vsize;
- usize -= vsize;
- if (usize >= vsize)
- {
- mp_ptr tp = (mp_ptr) TMP_ALLOC (2 * vsize * BYTES_PER_MP_LIMB);
- do
- {
- MPN_MUL_N_RECURSE (tp, up, vp, vsize, tspace);
- cy = mpn_add_n (prodp, prodp, tp, vsize);
- mpn_add_1 (prodp + vsize, tp + vsize, vsize, cy);
- prodp += vsize;
- up += vsize;
- usize -= vsize;
- }
- while (usize >= vsize);
- }
-
- /* True: usize < vsize. */
-
- /* Make life simple: Recurse. */
-
- if (usize != 0)
- {
- mpn_mul (tspace, vp, vsize, up, usize);
- cy = mpn_add_n (prodp, prodp, tspace, vsize);
- mpn_add_1 (prodp + vsize, tspace + vsize, usize, cy);
- }
-
- TMP_FREE (marker);
- return *prod_endp;
-}
diff --git a/gnu/lib/libgmp/mpn/generic/mul_1.c b/gnu/lib/libgmp/mpn/generic/mul_1.c
deleted file mode 100644
index 2de680a..0000000
--- a/gnu/lib/libgmp/mpn/generic/mul_1.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/* mpn_mul_1 -- Multiply a limb vector with a single limb and
- store the product in a second limb vector.
-
-Copyright (C) 1991, 1992, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-mp_limb_t
-mpn_mul_1 (res_ptr, s1_ptr, s1_size, s2_limb)
- register mp_ptr res_ptr;
- register mp_srcptr s1_ptr;
- mp_size_t s1_size;
- register mp_limb_t s2_limb;
-{
- register mp_limb_t cy_limb;
- register mp_size_t j;
- register mp_limb_t prod_high, prod_low;
-
- /* The loop counter and index J goes from -S1_SIZE to -1. This way
- the loop becomes faster. */
- j = -s1_size;
-
- /* Offset the base pointers to compensate for the negative indices. */
- s1_ptr -= j;
- res_ptr -= j;
-
- cy_limb = 0;
- do
- {
- umul_ppmm (prod_high, prod_low, s1_ptr[j], s2_limb);
-
- prod_low += cy_limb;
- cy_limb = (prod_low < cy_limb) + prod_high;
-
- res_ptr[j] = prod_low;
- }
- while (++j != 0);
-
- return cy_limb;
-}
diff --git a/gnu/lib/libgmp/mpn/generic/mul_n.c b/gnu/lib/libgmp/mpn/generic/mul_n.c
deleted file mode 100644
index b38e8ad..0000000
--- a/gnu/lib/libgmp/mpn/generic/mul_n.c
+++ /dev/null
@@ -1,401 +0,0 @@
-/* mpn_mul_n -- Multiply two natural numbers of length n.
-
-Copyright (C) 1991, 1992, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-/* Multiply the natural numbers u (pointed to by UP) and v (pointed to by VP),
- both with SIZE limbs, and store the result at PRODP. 2 * SIZE limbs are
- always stored. Return the most significant limb.
-
- Argument constraints:
- 1. PRODP != UP and PRODP != VP, i.e. the destination
- must be distinct from the multiplier and the multiplicand. */
-
-/* If KARATSUBA_THRESHOLD is not already defined, define it to a
- value which is good on most machines. */
-#ifndef KARATSUBA_THRESHOLD
-#define KARATSUBA_THRESHOLD 32
-#endif
-
-/* The code can't handle KARATSUBA_THRESHOLD smaller than 2. */
-#if KARATSUBA_THRESHOLD < 2
-#undef KARATSUBA_THRESHOLD
-#define KARATSUBA_THRESHOLD 2
-#endif
-
-/* Handle simple cases with traditional multiplication.
-
- This is the most critical code of multiplication. All multiplies rely
- on this, both small and huge. Small ones arrive here immediately. Huge
- ones arrive here as this is the base case for Karatsuba's recursive
- algorithm below. */
-
-void
-#if __STDC__
-impn_mul_n_basecase (mp_ptr prodp, mp_srcptr up, mp_srcptr vp, mp_size_t size)
-#else
-impn_mul_n_basecase (prodp, up, vp, size)
- mp_ptr prodp;
- mp_srcptr up;
- mp_srcptr vp;
- mp_size_t size;
-#endif
-{
- mp_size_t i;
- mp_limb_t cy_limb;
- mp_limb_t v_limb;
-
- /* Multiply by the first limb in V separately, as the result can be
- stored (not added) to PROD. We also avoid a loop for zeroing. */
- v_limb = vp[0];
- if (v_limb <= 1)
- {
- if (v_limb == 1)
- MPN_COPY (prodp, up, size);
- else
- MPN_ZERO (prodp, size);
- cy_limb = 0;
- }
- else
- cy_limb = mpn_mul_1 (prodp, up, size, v_limb);
-
- prodp[size] = cy_limb;
- prodp++;
-
- /* For each iteration in the outer loop, multiply one limb from
- U with one limb from V, and add it to PROD. */
- for (i = 1; i < size; i++)
- {
- v_limb = vp[i];
- if (v_limb <= 1)
- {
- cy_limb = 0;
- if (v_limb == 1)
- cy_limb = mpn_add_n (prodp, prodp, up, size);
- }
- else
- cy_limb = mpn_addmul_1 (prodp, up, size, v_limb);
-
- prodp[size] = cy_limb;
- prodp++;
- }
-}
-
-void
-#if __STDC__
-impn_mul_n (mp_ptr prodp,
- mp_srcptr up, mp_srcptr vp, mp_size_t size, mp_ptr tspace)
-#else
-impn_mul_n (prodp, up, vp, size, tspace)
- mp_ptr prodp;
- mp_srcptr up;
- mp_srcptr vp;
- mp_size_t size;
- mp_ptr tspace;
-#endif
-{
- if ((size & 1) != 0)
- {
- /* The size is odd, the code code below doesn't handle that.
- Multiply the least significant (size - 1) limbs with a recursive
- call, and handle the most significant limb of S1 and S2
- separately. */
- /* A slightly faster way to do this would be to make the Karatsuba
- code below behave as if the size were even, and let it check for
- odd size in the end. I.e., in essence move this code to the end.
- Doing so would save us a recursive call, and potentially make the
- stack grow a lot less. */
-
- mp_size_t esize = size - 1; /* even size */
- mp_limb_t cy_limb;
-
- MPN_MUL_N_RECURSE (prodp, up, vp, esize, tspace);
- cy_limb = mpn_addmul_1 (prodp + esize, up, esize, vp[esize]);
- prodp[esize + esize] = cy_limb;
- cy_limb = mpn_addmul_1 (prodp + esize, vp, size, up[esize]);
-
- prodp[esize + size] = cy_limb;
- }
- else
- {
- /* Anatolij Alekseevich Karatsuba's divide-and-conquer algorithm.
-
- Split U in two pieces, U1 and U0, such that
- U = U0 + U1*(B**n),
- and V in V1 and V0, such that
- V = V0 + V1*(B**n).
-
- UV is then computed recursively using the identity
-
- 2n n n n
- UV = (B + B )U V + B (U -U )(V -V ) + (B + 1)U V
- 1 1 1 0 0 1 0 0
-
- Where B = 2**BITS_PER_MP_LIMB. */
-
- mp_size_t hsize = size >> 1;
- mp_limb_t cy;
- int negflg;
-
- /*** Product H. ________________ ________________
- |_____U1 x V1____||____U0 x V0_____| */
- /* Put result in upper part of PROD and pass low part of TSPACE
- as new TSPACE. */
- MPN_MUL_N_RECURSE (prodp + size, up + hsize, vp + hsize, hsize, tspace);
-
- /*** Product M. ________________
- |_(U1-U0)(V0-V1)_| */
- if (mpn_cmp (up + hsize, up, hsize) >= 0)
- {
- mpn_sub_n (prodp, up + hsize, up, hsize);
- negflg = 0;
- }
- else
- {
- mpn_sub_n (prodp, up, up + hsize, hsize);
- negflg = 1;
- }
- if (mpn_cmp (vp + hsize, vp, hsize) >= 0)
- {
- mpn_sub_n (prodp + hsize, vp + hsize, vp, hsize);
- negflg ^= 1;
- }
- else
- {
- mpn_sub_n (prodp + hsize, vp, vp + hsize, hsize);
- /* No change of NEGFLG. */
- }
- /* Read temporary operands from low part of PROD.
- Put result in low part of TSPACE using upper part of TSPACE
- as new TSPACE. */
- MPN_MUL_N_RECURSE (tspace, prodp, prodp + hsize, hsize, tspace + size);
-
- /*** Add/copy product H. */
- MPN_COPY (prodp + hsize, prodp + size, hsize);
- cy = mpn_add_n (prodp + size, prodp + size, prodp + size + hsize, hsize);
-
- /*** Add product M (if NEGFLG M is a negative number). */
- if (negflg)
- cy -= mpn_sub_n (prodp + hsize, prodp + hsize, tspace, size);
- else
- cy += mpn_add_n (prodp + hsize, prodp + hsize, tspace, size);
-
- /*** Product L. ________________ ________________
- |________________||____U0 x V0_____| */
- /* Read temporary operands from low part of PROD.
- Put result in low part of TSPACE using upper part of TSPACE
- as new TSPACE. */
- MPN_MUL_N_RECURSE (tspace, up, vp, hsize, tspace + size);
-
- /*** Add/copy Product L (twice). */
-
- cy += mpn_add_n (prodp + hsize, prodp + hsize, tspace, size);
- if (cy)
- mpn_add_1 (prodp + hsize + size, prodp + hsize + size, hsize, cy);
-
- MPN_COPY (prodp, tspace, hsize);
- cy = mpn_add_n (prodp + hsize, prodp + hsize, tspace + hsize, hsize);
- if (cy)
- mpn_add_1 (prodp + size, prodp + size, size, 1);
- }
-}
-
-void
-#if __STDC__
-impn_sqr_n_basecase (mp_ptr prodp, mp_srcptr up, mp_size_t size)
-#else
-impn_sqr_n_basecase (prodp, up, size)
- mp_ptr prodp;
- mp_srcptr up;
- mp_size_t size;
-#endif
-{
- mp_size_t i;
- mp_limb_t cy_limb;
- mp_limb_t v_limb;
-
- /* Multiply by the first limb in V separately, as the result can be
- stored (not added) to PROD. We also avoid a loop for zeroing. */
- v_limb = up[0];
- if (v_limb <= 1)
- {
- if (v_limb == 1)
- MPN_COPY (prodp, up, size);
- else
- MPN_ZERO (prodp, size);
- cy_limb = 0;
- }
- else
- cy_limb = mpn_mul_1 (prodp, up, size, v_limb);
-
- prodp[size] = cy_limb;
- prodp++;
-
- /* For each iteration in the outer loop, multiply one limb from
- U with one limb from V, and add it to PROD. */
- for (i = 1; i < size; i++)
- {
- v_limb = up[i];
- if (v_limb <= 1)
- {
- cy_limb = 0;
- if (v_limb == 1)
- cy_limb = mpn_add_n (prodp, prodp, up, size);
- }
- else
- cy_limb = mpn_addmul_1 (prodp, up, size, v_limb);
-
- prodp[size] = cy_limb;
- prodp++;
- }
-}
-
-void
-#if __STDC__
-impn_sqr_n (mp_ptr prodp,
- mp_srcptr up, mp_size_t size, mp_ptr tspace)
-#else
-impn_sqr_n (prodp, up, size, tspace)
- mp_ptr prodp;
- mp_srcptr up;
- mp_size_t size;
- mp_ptr tspace;
-#endif
-{
- if ((size & 1) != 0)
- {
- /* The size is odd, the code code below doesn't handle that.
- Multiply the least significant (size - 1) limbs with a recursive
- call, and handle the most significant limb of S1 and S2
- separately. */
- /* A slightly faster way to do this would be to make the Karatsuba
- code below behave as if the size were even, and let it check for
- odd size in the end. I.e., in essence move this code to the end.
- Doing so would save us a recursive call, and potentially make the
- stack grow a lot less. */
-
- mp_size_t esize = size - 1; /* even size */
- mp_limb_t cy_limb;
-
- MPN_SQR_N_RECURSE (prodp, up, esize, tspace);
- cy_limb = mpn_addmul_1 (prodp + esize, up, esize, up[esize]);
- prodp[esize + esize] = cy_limb;
- cy_limb = mpn_addmul_1 (prodp + esize, up, size, up[esize]);
-
- prodp[esize + size] = cy_limb;
- }
- else
- {
- mp_size_t hsize = size >> 1;
- mp_limb_t cy;
-
- /*** Product H. ________________ ________________
- |_____U1 x U1____||____U0 x U0_____| */
- /* Put result in upper part of PROD and pass low part of TSPACE
- as new TSPACE. */
- MPN_SQR_N_RECURSE (prodp + size, up + hsize, hsize, tspace);
-
- /*** Product M. ________________
- |_(U1-U0)(U0-U1)_| */
- if (mpn_cmp (up + hsize, up, hsize) >= 0)
- {
- mpn_sub_n (prodp, up + hsize, up, hsize);
- }
- else
- {
- mpn_sub_n (prodp, up, up + hsize, hsize);
- }
-
- /* Read temporary operands from low part of PROD.
- Put result in low part of TSPACE using upper part of TSPACE
- as new TSPACE. */
- MPN_SQR_N_RECURSE (tspace, prodp, hsize, tspace + size);
-
- /*** Add/copy product H. */
- MPN_COPY (prodp + hsize, prodp + size, hsize);
- cy = mpn_add_n (prodp + size, prodp + size, prodp + size + hsize, hsize);
-
- /*** Add product M (if NEGFLG M is a negative number). */
- cy -= mpn_sub_n (prodp + hsize, prodp + hsize, tspace, size);
-
- /*** Product L. ________________ ________________
- |________________||____U0 x U0_____| */
- /* Read temporary operands from low part of PROD.
- Put result in low part of TSPACE using upper part of TSPACE
- as new TSPACE. */
- MPN_SQR_N_RECURSE (tspace, up, hsize, tspace + size);
-
- /*** Add/copy Product L (twice). */
-
- cy += mpn_add_n (prodp + hsize, prodp + hsize, tspace, size);
- if (cy)
- mpn_add_1 (prodp + hsize + size, prodp + hsize + size, hsize, cy);
-
- MPN_COPY (prodp, tspace, hsize);
- cy = mpn_add_n (prodp + hsize, prodp + hsize, tspace + hsize, hsize);
- if (cy)
- mpn_add_1 (prodp + size, prodp + size, size, 1);
- }
-}
-
-/* This should be made into an inline function in gmp.h. */
-inline void
-#if __STDC__
-mpn_mul_n (mp_ptr prodp, mp_srcptr up, mp_srcptr vp, mp_size_t size)
-#else
-mpn_mul_n (prodp, up, vp, size)
- mp_ptr prodp;
- mp_srcptr up;
- mp_srcptr vp;
- mp_size_t size;
-#endif
-{
- TMP_DECL (marker);
- TMP_MARK (marker);
- if (up == vp)
- {
- if (size < KARATSUBA_THRESHOLD)
- {
- impn_sqr_n_basecase (prodp, up, size);
- }
- else
- {
- mp_ptr tspace;
- tspace = (mp_ptr) TMP_ALLOC (2 * size * BYTES_PER_MP_LIMB);
- impn_sqr_n (prodp, up, size, tspace);
- }
- }
- else
- {
- if (size < KARATSUBA_THRESHOLD)
- {
- impn_mul_n_basecase (prodp, up, vp, size);
- }
- else
- {
- mp_ptr tspace;
- tspace = (mp_ptr) TMP_ALLOC (2 * size * BYTES_PER_MP_LIMB);
- impn_mul_n (prodp, up, vp, size, tspace);
- }
- }
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpn/generic/perfsqr.c b/gnu/lib/libgmp/mpn/generic/perfsqr.c
deleted file mode 100644
index 5a6e2af..0000000
--- a/gnu/lib/libgmp/mpn/generic/perfsqr.c
+++ /dev/null
@@ -1,138 +0,0 @@
-/* mpn_perfect_square_p(u,usize) -- Return non-zero if U is a perfect square,
- zero otherwise.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-#ifndef UMUL_TIME
-#define UMUL_TIME 1
-#endif
-
-#ifndef UDIV_TIME
-#define UDIV_TIME UMUL_TIME
-#endif
-
-#if BITS_PER_MP_LIMB == 32
-#define PP 0xC0CFD797L /* 3 x 5 x 7 x 11 x 13 x ... x 29 */
-#define PP_INVERTED 0x53E5645CL
-#endif
-
-#if BITS_PER_MP_LIMB == 64
-#define PP 0xE221F97C30E94E1DL /* 3 x 5 x 7 x 11 x 13 x ... x 53 */
-#define PP_INVERTED 0x21CFE6CFC938B36BL
-#endif
-
-/* sq_res_0x100[x mod 0x100] == 1 iff x mod 0x100 is a quadratic residue
- modulo 0x100. */
-static unsigned char const sq_res_0x100[0x100] =
-{
- 1,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,
- 0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,
- 1,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,
- 0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,
- 0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,
- 0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,
- 0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,
- 0,1,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,
-};
-
-int
-#if __STDC__
-mpn_perfect_square_p (mp_srcptr up, mp_size_t usize)
-#else
-mpn_perfect_square_p (up, usize)
- mp_srcptr up;
- mp_size_t usize;
-#endif
-{
- mp_limb_t rem;
- mp_ptr root_ptr;
- int res;
- TMP_DECL (marker);
-
- /* The first test excludes 55/64 (85.9%) of the perfect square candidates
- in O(1) time. */
- if ((sq_res_0x100[(unsigned int) up[0] % 0x100] & 1) == 0)
- return 0;
-
-#if defined (PP)
- /* The second test excludes 30652543/30808063 (99.5%) of the remaining
- perfect square candidates in O(n) time. */
-
- /* Firstly, compute REM = A mod PP. */
- if (UDIV_TIME > (2 * UMUL_TIME + 6))
- rem = mpn_preinv_mod_1 (up, usize, (mp_limb_t) PP, (mp_limb_t) PP_INVERTED);
- else
- rem = mpn_mod_1 (up, usize, (mp_limb_t) PP);
-
- /* Now decide if REM is a quadratic residue modulo the factors in PP. */
-
- /* If A is just a few limbs, computing the square root does not take long
- time, so things might run faster if we limit this loop according to the
- size of A. */
-
-#if BITS_PER_MP_LIMB == 64
- if (((0x12DD703303AED3L >> rem % 53) & 1) == 0)
- return 0;
- if (((0x4351B2753DFL >> rem % 47) & 1) == 0)
- return 0;
- if (((0x35883A3EE53L >> rem % 43) & 1) == 0)
- return 0;
- if (((0x1B382B50737L >> rem % 41) & 1) == 0)
- return 0;
- if (((0x165E211E9BL >> rem % 37) & 1) == 0)
- return 0;
- if (((0x121D47B7L >> rem % 31) & 1) == 0)
- return 0;
-#endif
- if (((0x13D122F3L >> rem % 29) & 1) == 0)
- return 0;
- if (((0x5335FL >> rem % 23) & 1) == 0)
- return 0;
- if (((0x30AF3L >> rem % 19) & 1) == 0)
- return 0;
- if (((0x1A317L >> rem % 17) & 1) == 0)
- return 0;
- if (((0x161BL >> rem % 13) & 1) == 0)
- return 0;
- if (((0x23BL >> rem % 11) & 1) == 0)
- return 0;
- if (((0x017L >> rem % 7) & 1) == 0)
- return 0;
- if (((0x13L >> rem % 5) & 1) == 0)
- return 0;
- if (((0x3L >> rem % 3) & 1) == 0)
- return 0;
-#endif
-
- TMP_MARK (marker);
-
- /* For the third and last test, we finally compute the square root,
- to make sure we've really got a perfect square. */
- root_ptr = (mp_ptr) TMP_ALLOC ((usize + 1) / 2 * BYTES_PER_MP_LIMB);
-
- /* Iff mpn_sqrtrem returns zero, the square is perfect. */
- res = ! mpn_sqrtrem (root_ptr, NULL, up, usize);
- TMP_FREE (marker);
- return res;
-}
diff --git a/gnu/lib/libgmp/mpn/generic/popcount.c b/gnu/lib/libgmp/mpn/generic/popcount.c
deleted file mode 100644
index c48573a..0000000
--- a/gnu/lib/libgmp/mpn/generic/popcount.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* popcount.c
-
-Copyright (C) 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-#if defined __GNUC__
-#if defined __sparc_v9__ && BITS_PER_MP_LIMB == 64
-#define popc_limb(a) \
- ({ \
- DItype __res; \
- asm ("popc %1,%0" : "=r" (__res) : "rI" (a)); \
- __res; \
- })
-#endif
-#endif
-
-#ifndef popc_limb
-
-/* Cool population count of a mp_limb_t.
- You have to figure out how this works, I won't tell you! */
-
-static inline unsigned int
-popc_limb (x)
- mp_limb_t x;
-{
-#if BITS_PER_MP_LIMB == 64
- /* We have to go into some trouble to define these constants.
- (For mp_limb_t being `long long'.) */
- mp_limb_t cnst;
- cnst = 0x55555555L | ((mp_limb_t) 0x55555555L << BITS_PER_MP_LIMB/2);
- x = ((x & ~cnst) >> 1) + (x & cnst);
- cnst = 0x33333333L | ((mp_limb_t) 0x33333333L << BITS_PER_MP_LIMB/2);
- x = ((x & ~cnst) >> 2) + (x & cnst);
- cnst = 0x0f0f0f0fL | ((mp_limb_t) 0x0f0f0f0fL << BITS_PER_MP_LIMB/2);
- x = ((x >> 4) + x) & cnst;
- x = ((x >> 8) + x);
- x = ((x >> 16) + x);
- x = ((x >> 32) + x) & 0xff;
-#endif
-#if BITS_PER_MP_LIMB == 32
- x = ((x >> 1) & 0x55555555L) + (x & 0x55555555L);
- x = ((x >> 2) & 0x33333333L) + (x & 0x33333333L);
- x = ((x >> 4) + x) & 0x0f0f0f0fL;
- x = ((x >> 8) + x);
- x = ((x >> 16) + x) & 0xff;
-#endif
- return x;
-}
-#endif
-
-unsigned long int
-#if __STDC__
-mpn_popcount (register mp_srcptr p, register mp_size_t size)
-#else
-mpn_popcount (p, size)
- register mp_srcptr p;
- register mp_size_t size;
-#endif
-{
- unsigned long int popcnt;
- mp_size_t i;
-
- popcnt = 0;
- for (i = 0; i < size; i++)
- popcnt += popc_limb (p[i]);
-
- return popcnt;
-}
diff --git a/gnu/lib/libgmp/mpn/generic/pre_mod_1.c b/gnu/lib/libgmp/mpn/generic/pre_mod_1.c
deleted file mode 100644
index 92d413b..0000000
--- a/gnu/lib/libgmp/mpn/generic/pre_mod_1.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/* mpn_preinv_mod_1 (dividend_ptr, dividend_size, divisor_limb,
- divisor_limb_inverted) --
- Divide (DIVIDEND_PTR,,DIVIDEND_SIZE) by the normalized DIVISOR_LIMB.
- DIVISOR_LIMB_INVERTED should be 2^(2*BITS_PER_MP_LIMB) / DIVISOR_LIMB +
- - 2^BITS_PER_MP_LIMB.
- Return the single-limb remainder.
-
-Copyright (C) 1991, 1993, 1994, Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-#ifndef UMUL_TIME
-#define UMUL_TIME 1
-#endif
-
-#ifndef UDIV_TIME
-#define UDIV_TIME UMUL_TIME
-#endif
-
-mp_limb_t
-#if __STDC__
-mpn_preinv_mod_1 (mp_srcptr dividend_ptr, mp_size_t dividend_size,
- mp_limb_t divisor_limb, mp_limb_t divisor_limb_inverted)
-#else
-mpn_preinv_mod_1 (dividend_ptr, dividend_size, divisor_limb, divisor_limb_inverted)
- mp_srcptr dividend_ptr;
- mp_size_t dividend_size;
- mp_limb_t divisor_limb;
- mp_limb_t divisor_limb_inverted;
-#endif
-{
- mp_size_t i;
- mp_limb_t n0, r;
- int dummy;
-
- i = dividend_size - 1;
- r = dividend_ptr[i];
-
- if (r >= divisor_limb)
- r = 0;
- else
- i--;
-
- for (; i >= 0; i--)
- {
- n0 = dividend_ptr[i];
- udiv_qrnnd_preinv (dummy, r, r, n0, divisor_limb, divisor_limb_inverted);
- }
- return r;
-}
diff --git a/gnu/lib/libgmp/mpn/generic/random2.c b/gnu/lib/libgmp/mpn/generic/random2.c
deleted file mode 100644
index 2954608..0000000
--- a/gnu/lib/libgmp/mpn/generic/random2.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/* mpn_random2 -- Generate random numbers with relatively long strings
- of ones and zeroes. Suitable for border testing.
-
-Copyright (C) 1992, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-#if defined (__hpux) || defined (alpha__) || defined (__svr4__) || defined (__SVR4)
-/* HPUX lacks random(). DEC OSF/1 1.2 random() returns a double. */
-long mrand48 ();
-static inline long
-random ()
-{
- return mrand48 ();
-}
-#else
-long random ();
-#endif
-
-/* It's a bit tricky to get this right, so please test the code well
- if you hack with it. Some early versions of the function produced
- random numbers with the leading limb == 0, and some versions never
- made the most significant bit set. */
-
-void
-mpn_random2 (res_ptr, size)
- mp_ptr res_ptr;
- mp_size_t size;
-{
- int n_bits;
- int bit_pos;
- mp_size_t limb_pos;
- unsigned int ran;
- mp_limb_t limb;
-
- limb = 0;
-
- /* Start off in a random bit position in the most significant limb. */
- bit_pos = random () & (BITS_PER_MP_LIMB - 1);
-
- /* Least significant bit of RAN chooses string of ones/string of zeroes.
- Make most significant limb be non-zero by setting bit 0 of RAN. */
- ran = random () | 1;
-
- for (limb_pos = size - 1; limb_pos >= 0; )
- {
- n_bits = (ran >> 1) % BITS_PER_MP_LIMB + 1;
- if ((ran & 1) != 0)
- {
- /* Generate a string of ones. */
- if (n_bits >= bit_pos)
- {
- res_ptr[limb_pos--] = limb | ((((mp_limb_t) 2) << bit_pos) - 1);
- bit_pos += BITS_PER_MP_LIMB;
- limb = (~(mp_limb_t) 0) << (bit_pos - n_bits);
- }
- else
- {
- limb |= ((((mp_limb_t) 1) << n_bits) - 1) << (bit_pos - n_bits + 1);
- }
- }
- else
- {
- /* Generate a string of zeroes. */
- if (n_bits >= bit_pos)
- {
- res_ptr[limb_pos--] = limb;
- limb = 0;
- bit_pos += BITS_PER_MP_LIMB;
- }
- }
- bit_pos -= n_bits;
- ran = random ();
- }
-}
diff --git a/gnu/lib/libgmp/mpn/generic/rshift.c b/gnu/lib/libgmp/mpn/generic/rshift.c
deleted file mode 100644
index 804f9be..0000000
--- a/gnu/lib/libgmp/mpn/generic/rshift.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/* mpn_rshift -- Shift right a low-level natural-number integer.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-/* Shift U (pointed to by UP and USIZE limbs long) CNT bits to the right
- and store the USIZE least significant limbs of the result at WP.
- The bits shifted out to the right are returned.
-
- Argument constraints:
- 1. 0 < CNT < BITS_PER_MP_LIMB
- 2. If the result is to be written over the input, WP must be <= UP.
-*/
-
-mp_limb_t
-#if __STDC__
-mpn_rshift (register mp_ptr wp,
- register mp_srcptr up, mp_size_t usize,
- register unsigned int cnt)
-#else
-mpn_rshift (wp, up, usize, cnt)
- register mp_ptr wp;
- register mp_srcptr up;
- mp_size_t usize;
- register unsigned int cnt;
-#endif
-{
- register mp_limb_t high_limb, low_limb;
- register unsigned sh_1, sh_2;
- register mp_size_t i;
- mp_limb_t retval;
-
-#ifdef DEBUG
- if (usize == 0 || cnt == 0)
- abort ();
-#endif
-
- sh_1 = cnt;
-
-#if 0
- if (sh_1 == 0)
- {
- if (wp != up)
- {
- /* Copy from low end to high end, to allow specified input/output
- overlapping. */
- for (i = 0; i < usize; i++)
- wp[i] = up[i];
- }
- return usize;
- }
-#endif
-
- wp -= 1;
- sh_2 = BITS_PER_MP_LIMB - sh_1;
- high_limb = up[0];
- retval = high_limb << sh_2;
- low_limb = high_limb;
-
- for (i = 1; i < usize; i++)
- {
- high_limb = up[i];
- wp[i] = (low_limb >> sh_1) | (high_limb << sh_2);
- low_limb = high_limb;
- }
- wp[i] = low_limb >> sh_1;
-
- return retval;
-}
diff --git a/gnu/lib/libgmp/mpn/generic/scan0.c b/gnu/lib/libgmp/mpn/generic/scan0.c
deleted file mode 100644
index d6f6580..0000000
--- a/gnu/lib/libgmp/mpn/generic/scan0.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* mpn_scan0 -- Scan from a given bit position for the next clear bit.
-
-Copyright (C) 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-/* Design issues:
- 1. What if starting_bit is not within U? Caller's problem?
- 2. Bit index should be 'unsigned'?
-
- Argument constraints:
- 1. U must sooner ot later have a limb with a clear bit.
- */
-
-unsigned long int
-#if __STDC__
-mpn_scan0 (register mp_srcptr up,
- register unsigned long int starting_bit)
-#else
-mpn_scan0 (up, starting_bit)
- register mp_srcptr up;
- register unsigned long int starting_bit;
-#endif
-{
- mp_size_t starting_word;
- mp_limb_t alimb;
- int cnt;
- mp_srcptr p;
-
- /* Start at the word implied by STARTING_BIT. */
- starting_word = starting_bit / BITS_PER_MP_LIMB;
- p = up + starting_word;
- alimb = ~*p++;
-
- /* Mask off any bits before STARTING_BIT in the first limb. */
- alimb &= - (mp_limb_t) 1 << (starting_bit % BITS_PER_MP_LIMB);
-
- while (alimb == 0)
- alimb = ~*p++;
-
- count_leading_zeros (cnt, alimb & -alimb);
- return (p - up) * BITS_PER_MP_LIMB - 1 - cnt;
-}
diff --git a/gnu/lib/libgmp/mpn/generic/scan1.c b/gnu/lib/libgmp/mpn/generic/scan1.c
deleted file mode 100644
index c95d090..0000000
--- a/gnu/lib/libgmp/mpn/generic/scan1.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* mpn_scan1 -- Scan from a given bit position for the next set bit.
-
-Copyright (C) 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-/* Design issues:
- 1. What if starting_bit is not within U? Caller's problem?
- 2. Bit index should be 'unsigned'?
-
- Argument constraints:
- 1. U must sooner ot later have a limb != 0.
- */
-
-unsigned long int
-#if __STDC__
-mpn_scan1 (register mp_srcptr up,
- register unsigned long int starting_bit)
-#else
-mpn_scan1 (up, starting_bit)
- register mp_srcptr up;
- register unsigned long int starting_bit;
-#endif
-{
- mp_size_t starting_word;
- mp_limb_t alimb;
- int cnt;
- mp_srcptr p;
-
- /* Start at the word implied by STARTING_BIT. */
- starting_word = starting_bit / BITS_PER_MP_LIMB;
- p = up + starting_word;
- alimb = *p++;
-
- /* Mask off any bits before STARTING_BIT in the first limb. */
- alimb &= - (mp_limb_t) 1 << (starting_bit % BITS_PER_MP_LIMB);
-
- while (alimb == 0)
- alimb = *p++;
-
- count_leading_zeros (cnt, alimb & -alimb);
- return (p - up) * BITS_PER_MP_LIMB - 1 - cnt;
-}
diff --git a/gnu/lib/libgmp/mpn/generic/set_str.c b/gnu/lib/libgmp/mpn/generic/set_str.c
deleted file mode 100644
index 424fad3..0000000
--- a/gnu/lib/libgmp/mpn/generic/set_str.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/* mpn_set_str (mp_ptr res_ptr, const char *str, size_t str_len, int base)
- -- Convert a STR_LEN long base BASE byte string pointed to by STR to a
- limb vector pointed to by RES_PTR. Return the number of limbs in
- RES_PTR.
-
-Copyright (C) 1991, 1992, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-mp_size_t
-mpn_set_str (xp, str, str_len, base)
- mp_ptr xp;
- const unsigned char *str;
- size_t str_len;
- int base;
-{
- mp_size_t size;
- mp_limb_t big_base;
- int indigits_per_limb;
- mp_limb_t res_digit;
-
- big_base = __mp_bases[base].big_base;
- indigits_per_limb = __mp_bases[base].chars_per_limb;
-
-/* size = str_len / indigits_per_limb + 1; */
-
- size = 0;
-
- if ((base & (base - 1)) == 0)
- {
- /* The base is a power of 2. Read the input string from
- least to most significant character/digit. */
-
- const unsigned char *s;
- int next_bitpos;
- int bits_per_indigit = big_base;
-
- res_digit = 0;
- next_bitpos = 0;
-
- for (s = str + str_len - 1; s >= str; s--)
- {
- int inp_digit = *s;
-
- res_digit |= (mp_limb_t) inp_digit << next_bitpos;
- next_bitpos += bits_per_indigit;
- if (next_bitpos >= BITS_PER_MP_LIMB)
- {
- xp[size++] = res_digit;
- next_bitpos -= BITS_PER_MP_LIMB;
- res_digit = inp_digit >> (bits_per_indigit - next_bitpos);
- }
- }
-
- if (res_digit != 0)
- xp[size++] = res_digit;
- }
- else
- {
- /* General case. The base is not a power of 2. */
-
- size_t i;
- int j;
- mp_limb_t cy_limb;
-
- for (i = indigits_per_limb; i < str_len; i += indigits_per_limb)
- {
- res_digit = *str++;
- if (base == 10)
- { /* This is a common case.
- Help the compiler to avoid multiplication. */
- for (j = 1; j < indigits_per_limb; j++)
- res_digit = res_digit * 10 + *str++;
- }
- else
- {
- for (j = 1; j < indigits_per_limb; j++)
- res_digit = res_digit * base + *str++;
- }
-
- if (size == 0)
- {
- if (res_digit != 0)
- {
- xp[0] = res_digit;
- size = 1;
- }
- }
- else
- {
- cy_limb = mpn_mul_1 (xp, xp, size, big_base);
- cy_limb += mpn_add_1 (xp, xp, size, res_digit);
- if (cy_limb != 0)
- xp[size++] = cy_limb;
- }
- }
-
- big_base = base;
- res_digit = *str++;
- if (base == 10)
- { /* This is a common case.
- Help the compiler to avoid multiplication. */
- for (j = 1; j < str_len - (i - indigits_per_limb); j++)
- {
- res_digit = res_digit * 10 + *str++;
- big_base *= 10;
- }
- }
- else
- {
- for (j = 1; j < str_len - (i - indigits_per_limb); j++)
- {
- res_digit = res_digit * base + *str++;
- big_base *= base;
- }
- }
-
- if (size == 0)
- {
- if (res_digit != 0)
- {
- xp[0] = res_digit;
- size = 1;
- }
- }
- else
- {
- cy_limb = mpn_mul_1 (xp, xp, size, big_base);
- cy_limb += mpn_add_1 (xp, xp, size, res_digit);
- if (cy_limb != 0)
- xp[size++] = cy_limb;
- }
- }
-
- return size;
-}
diff --git a/gnu/lib/libgmp/mpn/generic/sqrtrem.c b/gnu/lib/libgmp/mpn/generic/sqrtrem.c
deleted file mode 100644
index 539480d..0000000
--- a/gnu/lib/libgmp/mpn/generic/sqrtrem.c
+++ /dev/null
@@ -1,498 +0,0 @@
-/* mpn_sqrtrem (root_ptr, rem_ptr, op_ptr, op_size)
-
- Write the square root of {OP_PTR, OP_SIZE} at ROOT_PTR.
- Write the remainder at REM_PTR, if REM_PTR != NULL.
- Return the size of the remainder.
- (The size of the root is always half of the size of the operand.)
-
- OP_PTR and ROOT_PTR may not point to the same object.
- OP_PTR and REM_PTR may point to the same object.
-
- If REM_PTR is NULL, only the root is computed and the return value of
- the function is 0 if OP is a perfect square, and *any* non-zero number
- otherwise.
-
-Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-/* This code is just correct if "unsigned char" has at least 8 bits. It
- doesn't help to use CHAR_BIT from limits.h, as the real problem is
- the static arrays. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-/* Square root algorithm:
-
- 1. Shift OP (the input) to the left an even number of bits s.t. there
- are an even number of words and either (or both) of the most
- significant bits are set. This way, sqrt(OP) has exactly half as
- many words as OP, and has its most significant bit set.
-
- 2. Get a 9-bit approximation to sqrt(OP) using the pre-computed tables.
- This approximation is used for the first single-precision
- iterations of Newton's method, yielding a full-word approximation
- to sqrt(OP).
-
- 3. Perform multiple-precision Newton iteration until we have the
- exact result. Only about half of the input operand is used in
- this calculation, as the square root is perfectly determinable
- from just the higher half of a number. */
-
-/* Define this macro for IEEE P854 machines with a fast sqrt instruction. */
-#if defined __GNUC__ && ! defined __SOFT_FLOAT
-
-#if defined __sparc__
-#define SQRT(a) \
- ({ \
- double __sqrt_res; \
- asm ("fsqrtd %1,%0" : "=f" (__sqrt_res) : "f" (a)); \
- __sqrt_res; \
- })
-#endif
-
-#if defined __HAVE_68881__
-#define SQRT(a) \
- ({ \
- double __sqrt_res; \
- asm ("fsqrtx %1,%0" : "=f" (__sqrt_res) : "f" (a)); \
- __sqrt_res; \
- })
-#endif
-
-#if defined __hppa
-#define SQRT(a) \
- ({ \
- double __sqrt_res; \
- asm ("fsqrt,dbl %1,%0" : "=fx" (__sqrt_res) : "fx" (a)); \
- __sqrt_res; \
- })
-#endif
-
-#if defined _ARCH_PWR2
-#define SQRT(a) \
- ({ \
- double __sqrt_res; \
- asm ("fsqrt %0,%1" : "=f" (__sqrt_res) : "f" (a)); \
- __sqrt_res; \
- })
-#endif
-
-#endif
-
-#ifndef SQRT
-
-/* Tables for initial approximation of the square root. These are
- indexed with bits 1-8 of the operand for which the square root is
- calculated, where bit 0 is the most significant non-zero bit. I.e.
- the most significant one-bit is not used, since that per definition
- is one. Likewise, the tables don't return the highest bit of the
- result. That bit must be inserted by or:ing the returned value with
- 0x100. This way, we get a 9-bit approximation from 8-bit tables! */
-
-/* Table to be used for operands with an even total number of bits.
- (Exactly as in the decimal system there are similarities between the
- square root of numbers with the same initial digits and an even
- difference in the total number of digits. Consider the square root
- of 1, 10, 100, 1000, ...) */
-static unsigned char even_approx_tab[256] =
-{
- 0x6a, 0x6a, 0x6b, 0x6c, 0x6c, 0x6d, 0x6e, 0x6e,
- 0x6f, 0x70, 0x71, 0x71, 0x72, 0x73, 0x73, 0x74,
- 0x75, 0x75, 0x76, 0x77, 0x77, 0x78, 0x79, 0x79,
- 0x7a, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e, 0x7f,
- 0x80, 0x80, 0x81, 0x81, 0x82, 0x83, 0x83, 0x84,
- 0x85, 0x85, 0x86, 0x87, 0x87, 0x88, 0x89, 0x89,
- 0x8a, 0x8b, 0x8b, 0x8c, 0x8d, 0x8d, 0x8e, 0x8f,
- 0x8f, 0x90, 0x90, 0x91, 0x92, 0x92, 0x93, 0x94,
- 0x94, 0x95, 0x96, 0x96, 0x97, 0x97, 0x98, 0x99,
- 0x99, 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9d, 0x9e,
- 0x9e, 0x9f, 0xa0, 0xa0, 0xa1, 0xa1, 0xa2, 0xa3,
- 0xa3, 0xa4, 0xa4, 0xa5, 0xa6, 0xa6, 0xa7, 0xa7,
- 0xa8, 0xa9, 0xa9, 0xaa, 0xaa, 0xab, 0xac, 0xac,
- 0xad, 0xad, 0xae, 0xaf, 0xaf, 0xb0, 0xb0, 0xb1,
- 0xb2, 0xb2, 0xb3, 0xb3, 0xb4, 0xb5, 0xb5, 0xb6,
- 0xb6, 0xb7, 0xb7, 0xb8, 0xb9, 0xb9, 0xba, 0xba,
- 0xbb, 0xbb, 0xbc, 0xbd, 0xbd, 0xbe, 0xbe, 0xbf,
- 0xc0, 0xc0, 0xc1, 0xc1, 0xc2, 0xc2, 0xc3, 0xc3,
- 0xc4, 0xc5, 0xc5, 0xc6, 0xc6, 0xc7, 0xc7, 0xc8,
- 0xc9, 0xc9, 0xca, 0xca, 0xcb, 0xcb, 0xcc, 0xcc,
- 0xcd, 0xce, 0xce, 0xcf, 0xcf, 0xd0, 0xd0, 0xd1,
- 0xd1, 0xd2, 0xd3, 0xd3, 0xd4, 0xd4, 0xd5, 0xd5,
- 0xd6, 0xd6, 0xd7, 0xd7, 0xd8, 0xd9, 0xd9, 0xda,
- 0xda, 0xdb, 0xdb, 0xdc, 0xdc, 0xdd, 0xdd, 0xde,
- 0xde, 0xdf, 0xe0, 0xe0, 0xe1, 0xe1, 0xe2, 0xe2,
- 0xe3, 0xe3, 0xe4, 0xe4, 0xe5, 0xe5, 0xe6, 0xe6,
- 0xe7, 0xe7, 0xe8, 0xe8, 0xe9, 0xea, 0xea, 0xeb,
- 0xeb, 0xec, 0xec, 0xed, 0xed, 0xee, 0xee, 0xef,
- 0xef, 0xf0, 0xf0, 0xf1, 0xf1, 0xf2, 0xf2, 0xf3,
- 0xf3, 0xf4, 0xf4, 0xf5, 0xf5, 0xf6, 0xf6, 0xf7,
- 0xf7, 0xf8, 0xf8, 0xf9, 0xf9, 0xfa, 0xfa, 0xfb,
- 0xfb, 0xfc, 0xfc, 0xfd, 0xfd, 0xfe, 0xfe, 0xff,
-};
-
-/* Table to be used for operands with an odd total number of bits.
- (Further comments before previous table.) */
-static unsigned char odd_approx_tab[256] =
-{
- 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03,
- 0x03, 0x04, 0x04, 0x05, 0x05, 0x06, 0x06, 0x07,
- 0x07, 0x08, 0x08, 0x09, 0x09, 0x0a, 0x0a, 0x0b,
- 0x0b, 0x0c, 0x0c, 0x0d, 0x0d, 0x0e, 0x0e, 0x0f,
- 0x0f, 0x10, 0x10, 0x10, 0x11, 0x11, 0x12, 0x12,
- 0x13, 0x13, 0x14, 0x14, 0x15, 0x15, 0x16, 0x16,
- 0x16, 0x17, 0x17, 0x18, 0x18, 0x19, 0x19, 0x1a,
- 0x1a, 0x1b, 0x1b, 0x1b, 0x1c, 0x1c, 0x1d, 0x1d,
- 0x1e, 0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x20, 0x21,
- 0x21, 0x22, 0x22, 0x23, 0x23, 0x23, 0x24, 0x24,
- 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x27, 0x28,
- 0x28, 0x29, 0x29, 0x2a, 0x2a, 0x2a, 0x2b, 0x2b,
- 0x2c, 0x2c, 0x2d, 0x2d, 0x2d, 0x2e, 0x2e, 0x2f,
- 0x2f, 0x30, 0x30, 0x30, 0x31, 0x31, 0x32, 0x32,
- 0x32, 0x33, 0x33, 0x34, 0x34, 0x35, 0x35, 0x35,
- 0x36, 0x36, 0x37, 0x37, 0x37, 0x38, 0x38, 0x39,
- 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c,
- 0x3c, 0x3d, 0x3d, 0x3d, 0x3e, 0x3e, 0x3f, 0x3f,
- 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, 0x42, 0x42,
- 0x43, 0x43, 0x43, 0x44, 0x44, 0x45, 0x45, 0x45,
- 0x46, 0x46, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49,
- 0x49, 0x49, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c,
- 0x4c, 0x4c, 0x4d, 0x4d, 0x4e, 0x4e, 0x4e, 0x4f,
- 0x4f, 0x50, 0x50, 0x50, 0x51, 0x51, 0x51, 0x52,
- 0x52, 0x53, 0x53, 0x53, 0x54, 0x54, 0x54, 0x55,
- 0x55, 0x56, 0x56, 0x56, 0x57, 0x57, 0x57, 0x58,
- 0x58, 0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b,
- 0x5b, 0x5b, 0x5c, 0x5c, 0x5d, 0x5d, 0x5d, 0x5e,
- 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61,
- 0x61, 0x61, 0x62, 0x62, 0x62, 0x63, 0x63, 0x63,
- 0x64, 0x64, 0x65, 0x65, 0x65, 0x66, 0x66, 0x66,
- 0x67, 0x67, 0x67, 0x68, 0x68, 0x68, 0x69, 0x69,
-};
-#endif
-
-
-mp_size_t
-#if __STDC__
-mpn_sqrtrem (mp_ptr root_ptr, mp_ptr rem_ptr, mp_srcptr op_ptr, mp_size_t op_size)
-#else
-mpn_sqrtrem (root_ptr, rem_ptr, op_ptr, op_size)
- mp_ptr root_ptr;
- mp_ptr rem_ptr;
- mp_srcptr op_ptr;
- mp_size_t op_size;
-#endif
-{
- /* R (root result) */
- mp_ptr rp; /* Pointer to least significant word */
- mp_size_t rsize; /* The size in words */
-
- /* T (OP shifted to the left a.k.a. normalized) */
- mp_ptr tp; /* Pointer to least significant word */
- mp_size_t tsize; /* The size in words */
- mp_ptr t_end_ptr; /* Pointer right beyond most sign. word */
- mp_limb_t t_high0, t_high1; /* The two most significant words */
-
- /* TT (temporary for numerator/remainder) */
- mp_ptr ttp; /* Pointer to least significant word */
-
- /* X (temporary for quotient in main loop) */
- mp_ptr xp; /* Pointer to least significant word */
- mp_size_t xsize; /* The size in words */
-
- unsigned cnt;
- mp_limb_t initial_approx; /* Initially made approximation */
- mp_size_t tsizes[BITS_PER_MP_LIMB]; /* Successive calculation precisions */
- mp_size_t tmp;
- mp_size_t i;
-
- mp_limb_t cy_limb;
- TMP_DECL (marker);
-
- /* If OP is zero, both results are zero. */
- if (op_size == 0)
- return 0;
-
- count_leading_zeros (cnt, op_ptr[op_size - 1]);
- tsize = op_size;
- if ((tsize & 1) != 0)
- {
- cnt += BITS_PER_MP_LIMB;
- tsize++;
- }
-
- rsize = tsize / 2;
- rp = root_ptr;
-
- TMP_MARK (marker);
-
- /* Shift OP an even number of bits into T, such that either the most or
- the second most significant bit is set, and such that the number of
- words in T becomes even. This way, the number of words in R=sqrt(OP)
- is exactly half as many as in OP, and the most significant bit of R
- is set.
-
- Also, the initial approximation is simplified by this up-shifted OP.
-
- Finally, the Newtonian iteration which is the main part of this
- program performs division by R. The fast division routine expects
- the divisor to be "normalized" in exactly the sense of having the
- most significant bit set. */
-
- tp = (mp_ptr) TMP_ALLOC (tsize * BYTES_PER_MP_LIMB);
-
- if ((cnt & ~1) % BITS_PER_MP_LIMB != 0)
- t_high0 = mpn_lshift (tp + cnt / BITS_PER_MP_LIMB, op_ptr, op_size,
- (cnt & ~1) % BITS_PER_MP_LIMB);
- else
- MPN_COPY (tp + cnt / BITS_PER_MP_LIMB, op_ptr, op_size);
-
- if (cnt >= BITS_PER_MP_LIMB)
- tp[0] = 0;
-
- t_high0 = tp[tsize - 1];
- t_high1 = tp[tsize - 2]; /* Never stray. TSIZE is >= 2. */
-
-/* Is there a fast sqrt instruction defined for this machine? */
-#ifdef SQRT
- {
- initial_approx = SQRT (t_high0 * 2.0
- * ((mp_limb_t) 1 << (BITS_PER_MP_LIMB - 1))
- + t_high1);
- /* If t_high0,,t_high1 is big, the result in INITIAL_APPROX might have
- become incorrect due to overflow in the conversion from double to
- mp_limb_t above. It will typically be zero in that case, but might be
- a small number on some machines. The most significant bit of
- INITIAL_APPROX should be set, so that bit is a good overflow
- indication. */
- if ((mp_limb_signed_t) initial_approx >= 0)
- initial_approx = ~(mp_limb_t)0;
- }
-#else
- /* Get a 9 bit approximation from the tables. The tables expect to
- be indexed with the 8 high bits right below the highest bit.
- Also, the highest result bit is not returned by the tables, and
- must be or:ed into the result. The scheme gives 9 bits of start
- approximation with just 256-entry 8 bit tables. */
-
- if ((cnt & 1) == 0)
- {
- /* The most sign bit of t_high0 is set. */
- initial_approx = t_high0 >> (BITS_PER_MP_LIMB - 8 - 1);
- initial_approx &= 0xff;
- initial_approx = even_approx_tab[initial_approx];
- }
- else
- {
- /* The most significant bit of T_HIGH0 is unset,
- the second most significant is set. */
- initial_approx = t_high0 >> (BITS_PER_MP_LIMB - 8 - 2);
- initial_approx &= 0xff;
- initial_approx = odd_approx_tab[initial_approx];
- }
- initial_approx |= 0x100;
- initial_approx <<= BITS_PER_MP_LIMB - 8 - 1;
-
- /* Perform small precision Newtonian iterations to get a full word
- approximation. For small operands, these iteration will make the
- entire job. */
- if (t_high0 == ~(mp_limb_t)0)
- initial_approx = t_high0;
- else
- {
- mp_limb_t quot;
-
- if (t_high0 >= initial_approx)
- initial_approx = t_high0 + 1;
-
- /* First get about 18 bits with pure C arithmetics. */
- quot = t_high0 / (initial_approx >> BITS_PER_MP_LIMB/2) << BITS_PER_MP_LIMB/2;
- initial_approx = (initial_approx + quot) / 2;
- initial_approx |= (mp_limb_t) 1 << (BITS_PER_MP_LIMB - 1);
-
- /* Now get a full word by one (or for > 36 bit machines) several
- iterations. */
- for (i = 16; i < BITS_PER_MP_LIMB; i <<= 1)
- {
- mp_limb_t ignored_remainder;
-
- udiv_qrnnd (quot, ignored_remainder,
- t_high0, t_high1, initial_approx);
- initial_approx = (initial_approx + quot) / 2;
- initial_approx |= (mp_limb_t) 1 << (BITS_PER_MP_LIMB - 1);
- }
- }
-#endif
-
- rp[0] = initial_approx;
- rsize = 1;
-
-#ifdef DEBUG
- printf ("\n\nT = ");
- mpn_dump (tp, tsize);
-#endif
-
- if (tsize > 2)
- {
- /* Determine the successive precisions to use in the iteration. We
- minimize the precisions, beginning with the highest (i.e. last
- iteration) to the lowest (i.e. first iteration). */
-
- xp = (mp_ptr) TMP_ALLOC (tsize * BYTES_PER_MP_LIMB);
- ttp = (mp_ptr) TMP_ALLOC (tsize * BYTES_PER_MP_LIMB);
-
- t_end_ptr = tp + tsize;
-
- tmp = tsize / 2;
- for (i = 0;; i++)
- {
- tsize = (tmp + 1) / 2;
- if (tmp == tsize)
- break;
- tsizes[i] = tsize + tmp;
- tmp = tsize;
- }
-
- /* Main Newton iteration loop. For big arguments, most of the
- time is spent here. */
-
- /* It is possible to do a great optimization here. The successive
- divisors in the mpn_divmod call below has more and more leading
- words equal to its predecessor. Therefore the beginning of
- each division will repeat the same work as did the last
- division. If we could guarantee that the leading words of two
- consecutive divisors are the same (i.e. in this case, a later
- divisor has just more digits at the end) it would be a simple
- matter of just using the old remainder of the last division in
- a subsequent division, to take care of this optimization. This
- idea would surely make a difference even for small arguments. */
-
- /* Loop invariants:
-
- R <= shiftdown_to_same_size(floor(sqrt(OP))) < R + 1.
- X - 1 < shiftdown_to_same_size(floor(sqrt(OP))) <= X.
- R <= shiftdown_to_same_size(X). */
-
- while (--i >= 0)
- {
- mp_limb_t cy;
-#ifdef DEBUG
- mp_limb_t old_least_sign_r = rp[0];
- mp_size_t old_rsize = rsize;
-
- printf ("R = ");
- mpn_dump (rp, rsize);
-#endif
- tsize = tsizes[i];
-
- /* Need to copy the numerator into temporary space, as
- mpn_divmod overwrites its numerator argument with the
- remainder (which we currently ignore). */
- MPN_COPY (ttp, t_end_ptr - tsize, tsize);
- cy = mpn_divmod (xp, ttp, tsize, rp, rsize);
- xsize = tsize - rsize;
-
-#ifdef DEBUG
- printf ("X =%d ", cy);
- mpn_dump (xp, xsize);
-#endif
-
- /* Add X and R with the most significant limbs aligned,
- temporarily ignoring at least one limb at the low end of X. */
- tmp = xsize - rsize;
- cy += mpn_add_n (xp + tmp, rp, xp + tmp, rsize);
-
- /* If T begins with more than 2 x BITS_PER_MP_LIMB of ones, we get
- intermediate roots that'd need an extra bit. We don't want to
- handle that since it would make the subsequent divisor
- non-normalized, so round such roots down to be only ones in the
- current precision. */
- if (cy == 2)
- {
- mp_size_t j;
- for (j = xsize; j >= 0; j--)
- xp[j] = ~(mp_limb_t)0;
- }
-
- /* Divide X by 2 and put the result in R. This is the new
- approximation. Shift in the carry from the addition. */
- mpn_rshift (rp, xp, xsize, 1);
- rp[xsize - 1] |= ((mp_limb_t) 1 << (BITS_PER_MP_LIMB - 1));
- rsize = xsize;
-#ifdef DEBUG
- if (old_least_sign_r != rp[rsize - old_rsize])
- printf (">>>>>>>> %d: %0*lX, %0*lX <<<<<<<<\n",
- i, 2 * BYTES_PER_MP_LIMB, old_least_sign_r,
- 2 * BYTES_PER_MP_LIMB, rp[rsize - old_rsize]);
-#endif
- }
- }
-
-#ifdef DEBUG
- printf ("(final) R = ");
- mpn_dump (rp, rsize);
-#endif
-
- /* We computed the square root of OP * 2**(2*floor(cnt/2)).
- This has resulted in R being 2**floor(cnt/2) to large.
- Shift it down here to fix that. */
- if (cnt / 2 != 0)
- {
- mpn_rshift (rp, rp, rsize, cnt/2);
- rsize -= rp[rsize - 1] == 0;
- }
-
- /* Calculate the remainder. */
- mpn_mul_n (tp, rp, rp, rsize);
- tsize = rsize + rsize;
- tsize -= tp[tsize - 1] == 0;
- if (op_size < tsize
- || (op_size == tsize && mpn_cmp (op_ptr, tp, op_size) < 0))
- {
- /* R is too large. Decrement it. */
-
- /* These operations can't overflow. */
- cy_limb = mpn_sub_n (tp, tp, rp, rsize);
- cy_limb += mpn_sub_n (tp, tp, rp, rsize);
- mpn_sub_1 (tp + rsize, tp + rsize, tsize - rsize, cy_limb);
- mpn_add_1 (tp, tp, tsize, (mp_limb_t) 1);
-
- mpn_sub_1 (rp, rp, rsize, (mp_limb_t) 1);
-
-#ifdef DEBUG
- printf ("(adjusted) R = ");
- mpn_dump (rp, rsize);
-#endif
- }
-
- if (rem_ptr != NULL)
- {
- cy_limb = mpn_sub (rem_ptr, op_ptr, op_size, tp, tsize);
- MPN_NORMALIZE (rem_ptr, op_size);
- TMP_FREE (marker);
- return op_size;
- }
- else
- {
- int res;
- res = op_size != tsize || mpn_cmp (op_ptr, tp, op_size);
- TMP_FREE (marker);
- return res;
- }
-}
diff --git a/gnu/lib/libgmp/mpn/generic/sub_n.c b/gnu/lib/libgmp/mpn/generic/sub_n.c
deleted file mode 100644
index 9d4b216..0000000
--- a/gnu/lib/libgmp/mpn/generic/sub_n.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* mpn_sub_n -- Subtract two limb vectors of equal, non-zero length.
-
-Copyright (C) 1992, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-mp_limb_t
-#if __STDC__
-mpn_sub_n (mp_ptr res_ptr, mp_srcptr s1_ptr, mp_srcptr s2_ptr, mp_size_t size)
-#else
-mpn_sub_n (res_ptr, s1_ptr, s2_ptr, size)
- register mp_ptr res_ptr;
- register mp_srcptr s1_ptr;
- register mp_srcptr s2_ptr;
- mp_size_t size;
-#endif
-{
- register mp_limb_t x, y, cy;
- register mp_size_t j;
-
- /* The loop counter and index J goes from -SIZE to -1. This way
- the loop becomes faster. */
- j = -size;
-
- /* Offset the base pointers to compensate for the negative indices. */
- s1_ptr -= j;
- s2_ptr -= j;
- res_ptr -= j;
-
- cy = 0;
- do
- {
- y = s2_ptr[j];
- x = s1_ptr[j];
- y += cy; /* add previous carry to subtrahend */
- cy = (y < cy); /* get out carry from that addition */
- y = x - y; /* main subtract */
- cy = (y > x) + cy; /* get out carry from the subtract, combine */
- res_ptr[j] = y;
- }
- while (++j != 0);
-
- return cy;
-}
diff --git a/gnu/lib/libgmp/mpn/generic/submul_1.c b/gnu/lib/libgmp/mpn/generic/submul_1.c
deleted file mode 100644
index b144283..0000000
--- a/gnu/lib/libgmp/mpn/generic/submul_1.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/* mpn_submul_1 -- multiply the S1_SIZE long limb vector pointed to by S1_PTR
- by S2_LIMB, subtract the S1_SIZE least significant limbs of the product
- from the limb vector pointed to by RES_PTR. Return the most significant
- limb of the product, adjusted for carry-out from the subtraction.
-
-Copyright (C) 1992, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-mp_limb_t
-mpn_submul_1 (res_ptr, s1_ptr, s1_size, s2_limb)
- register mp_ptr res_ptr;
- register mp_srcptr s1_ptr;
- mp_size_t s1_size;
- register mp_limb_t s2_limb;
-{
- register mp_limb_t cy_limb;
- register mp_size_t j;
- register mp_limb_t prod_high, prod_low;
- register mp_limb_t x;
-
- /* The loop counter and index J goes from -SIZE to -1. This way
- the loop becomes faster. */
- j = -s1_size;
-
- /* Offset the base pointers to compensate for the negative indices. */
- res_ptr -= j;
- s1_ptr -= j;
-
- cy_limb = 0;
- do
- {
- umul_ppmm (prod_high, prod_low, s1_ptr[j], s2_limb);
-
- prod_low += cy_limb;
- cy_limb = (prod_low < cy_limb) + prod_high;
-
- x = res_ptr[j];
- prod_low = x - prod_low;
- cy_limb += (prod_low > x);
- res_ptr[j] = prod_low;
- }
- while (++j != 0);
-
- return cy_limb;
-}
diff --git a/gnu/lib/libgmp/mpn/generic/udiv_w_sdiv.c b/gnu/lib/libgmp/mpn/generic/udiv_w_sdiv.c
deleted file mode 100644
index d9e71b7..0000000
--- a/gnu/lib/libgmp/mpn/generic/udiv_w_sdiv.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/* mpn_udiv_w_sdiv -- implement udiv_qrnnd on machines with only signed
- division.
-
- Contributed by Peter L. Montgomery.
-
-Copyright (C) 1992, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-mp_limb_t
-mpn_udiv_w_sdiv (rp, a1, a0, d)
- mp_limb_t *rp, a1, a0, d;
-{
- mp_limb_t q, r;
- mp_limb_t c0, c1, b1;
-
- if ((mp_limb_signed_t) d >= 0)
- {
- if (a1 < d - a1 - (a0 >> (BITS_PER_MP_LIMB - 1)))
- {
- /* dividend, divisor, and quotient are nonnegative */
- sdiv_qrnnd (q, r, a1, a0, d);
- }
- else
- {
- /* Compute c1*2^32 + c0 = a1*2^32 + a0 - 2^31*d */
- sub_ddmmss (c1, c0, a1, a0, d >> 1, d << (BITS_PER_MP_LIMB - 1));
- /* Divide (c1*2^32 + c0) by d */
- sdiv_qrnnd (q, r, c1, c0, d);
- /* Add 2^31 to quotient */
- q += (mp_limb_t) 1 << (BITS_PER_MP_LIMB - 1);
- }
- }
- else
- {
- b1 = d >> 1; /* d/2, between 2^30 and 2^31 - 1 */
- c1 = a1 >> 1; /* A/2 */
- c0 = (a1 << (BITS_PER_MP_LIMB - 1)) + (a0 >> 1);
-
- if (a1 < b1) /* A < 2^32*b1, so A/2 < 2^31*b1 */
- {
- sdiv_qrnnd (q, r, c1, c0, b1); /* (A/2) / (d/2) */
-
- r = 2*r + (a0 & 1); /* Remainder from A/(2*b1) */
- if ((d & 1) != 0)
- {
- if (r >= q)
- r = r - q;
- else if (q - r <= d)
- {
- r = r - q + d;
- q--;
- }
- else
- {
- r = r - q + 2*d;
- q -= 2;
- }
- }
- }
- else if (c1 < b1) /* So 2^31 <= (A/2)/b1 < 2^32 */
- {
- c1 = (b1 - 1) - c1;
- c0 = ~c0; /* logical NOT */
-
- sdiv_qrnnd (q, r, c1, c0, b1); /* (A/2) / (d/2) */
-
- q = ~q; /* (A/2)/b1 */
- r = (b1 - 1) - r;
-
- r = 2*r + (a0 & 1); /* A/(2*b1) */
-
- if ((d & 1) != 0)
- {
- if (r >= q)
- r = r - q;
- else if (q - r <= d)
- {
- r = r - q + d;
- q--;
- }
- else
- {
- r = r - q + 2*d;
- q -= 2;
- }
- }
- }
- else /* Implies c1 = b1 */
- { /* Hence a1 = d - 1 = 2*b1 - 1 */
- if (a0 >= -d)
- {
- q = -1;
- r = a0 + d;
- }
- else
- {
- q = -2;
- r = a0 + 2*d;
- }
- }
- }
-
- *rp = r;
- return q;
-}
diff --git a/gnu/lib/libgmp/mpn/mp_bases.c b/gnu/lib/libgmp/mpn/mp_bases.c
deleted file mode 100644
index bbe39b0..0000000
--- a/gnu/lib/libgmp/mpn/mp_bases.c
+++ /dev/null
@@ -1,549 +0,0 @@
-/* __mp_bases -- Structure for conversion between internal binary
- format and strings in base 2..255. The fields are explained in
- gmp-impl.h.
-
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-#if BITS_PER_MP_LIMB == 32
-const struct bases __mp_bases[256] =
-{
- /* 0 */ {0, 0.0, 0, 0},
- /* 1 */ {0, 1e38, 0, 0},
- /* 2 */ {32, 1.00000000, 0x1, 0x0},
- /* 3 */ {20, 0.63092975, 0xcfd41b91, 0x3b563c24},
- /* 4 */ {16, 0.50000000, 0x2, 0x0},
- /* 5 */ {13, 0.43067656, 0x48c27395, 0xc25c2684},
- /* 6 */ {12, 0.38685281, 0x81bf1000, 0xf91bd1b6},
- /* 7 */ {11, 0.35620719, 0x75db9c97, 0x1607a2cb},
- /* 8 */ {10, 0.33333333, 0x3, 0x0},
- /* 9 */ {10, 0.31546488, 0xcfd41b91, 0x3b563c24},
- /* 10 */ {9, 0.30103000, 0x3b9aca00, 0x12e0be82},
- /* 11 */ {9, 0.28906483, 0x8c8b6d2b, 0xd24cde04},
- /* 12 */ {8, 0.27894295, 0x19a10000, 0x3fa39ab5},
- /* 13 */ {8, 0.27023815, 0x309f1021, 0x50f8ac5f},
- /* 14 */ {8, 0.26264954, 0x57f6c100, 0x74843b1e},
- /* 15 */ {8, 0.25595802, 0x98c29b81, 0xad0326c2},
- /* 16 */ {8, 0.25000000, 0x4, 0x0},
- /* 17 */ {7, 0.24465054, 0x18754571, 0x4ef0b6bd},
- /* 18 */ {7, 0.23981247, 0x247dbc80, 0xc0fc48a1},
- /* 19 */ {7, 0.23540891, 0x3547667b, 0x33838942},
- /* 20 */ {7, 0.23137821, 0x4c4b4000, 0xad7f29ab},
- /* 21 */ {7, 0.22767025, 0x6b5a6e1d, 0x313c3d15},
- /* 22 */ {7, 0.22424382, 0x94ace180, 0xb8cca9e0},
- /* 23 */ {7, 0.22106473, 0xcaf18367, 0x42ed6de9},
- /* 24 */ {6, 0.21810429, 0xb640000, 0x67980e0b},
- /* 25 */ {6, 0.21533828, 0xe8d4a51, 0x19799812},
- /* 26 */ {6, 0.21274605, 0x1269ae40, 0xbce85396},
- /* 27 */ {6, 0.21030992, 0x17179149, 0x62c103a9},
- /* 28 */ {6, 0.20801460, 0x1cb91000, 0x1d353d43},
- /* 29 */ {6, 0.20584683, 0x23744899, 0xce1decea},
- /* 30 */ {6, 0.20379505, 0x2b73a840, 0x790fc511},
- /* 31 */ {6, 0.20184909, 0x34e63b41, 0x35b865a0},
- /* 32 */ {6, 0.20000000, 0x5, 0x0},
- /* 33 */ {6, 0.19823986, 0x4cfa3cc1, 0xa9aed1b3},
- /* 34 */ {6, 0.19656163, 0x5c13d840, 0x63dfc229},
- /* 35 */ {6, 0.19495902, 0x6d91b519, 0x2b0fee30},
- /* 36 */ {6, 0.19342640, 0x81bf1000, 0xf91bd1b6},
- /* 37 */ {6, 0.19195872, 0x98ede0c9, 0xac89c3a9},
- /* 38 */ {6, 0.19055141, 0xb3773e40, 0x6d2c32fe},
- /* 39 */ {6, 0.18920036, 0xd1bbc4d1, 0x387907c9},
- /* 40 */ {6, 0.18790182, 0xf4240000, 0xc6f7a0b},
- /* 41 */ {5, 0.18665241, 0x6e7d349, 0x28928154},
- /* 42 */ {5, 0.18544902, 0x7ca30a0, 0x6e8629d},
- /* 43 */ {5, 0.18428883, 0x8c32bbb, 0xd373dca0},
- /* 44 */ {5, 0.18316925, 0x9d46c00, 0xa0b17895},
- /* 45 */ {5, 0.18208790, 0xaffacfd, 0x746811a5},
- /* 46 */ {5, 0.18104260, 0xc46bee0, 0x4da6500f},
- /* 47 */ {5, 0.18003133, 0xdab86ef, 0x2ba23582},
- /* 48 */ {5, 0.17905223, 0xf300000, 0xdb20a88},
- /* 49 */ {5, 0.17810359, 0x10d63af1, 0xe68d5ce4},
- /* 50 */ {5, 0.17718382, 0x12a05f20, 0xb7cdfd9d},
- /* 51 */ {5, 0.17629143, 0x1490aae3, 0x8e583933},
- /* 52 */ {5, 0.17542506, 0x16a97400, 0x697cc3ea},
- /* 53 */ {5, 0.17458343, 0x18ed2825, 0x48a5ca6c},
- /* 54 */ {5, 0.17376534, 0x1b5e4d60, 0x2b52db16},
- /* 55 */ {5, 0.17296969, 0x1dff8297, 0x111586a6},
- /* 56 */ {5, 0.17219543, 0x20d38000, 0xf31d2b36},
- /* 57 */ {5, 0.17144160, 0x23dd1799, 0xc8d76d19},
- /* 58 */ {5, 0.17070728, 0x271f35a0, 0xa2cb1eb4},
- /* 59 */ {5, 0.16999162, 0x2a9ce10b, 0x807c3ec3},
- /* 60 */ {5, 0.16929381, 0x2e593c00, 0x617ec8bf},
- /* 61 */ {5, 0.16861310, 0x3257844d, 0x45746cbe},
- /* 62 */ {5, 0.16794878, 0x369b13e0, 0x2c0aa273},
- /* 63 */ {5, 0.16730018, 0x3b27613f, 0x14f90805},
- /* 64 */ {5, 0.16666667, 0x6, 0x0},
- /* 65 */ {5, 0.16604765, 0x4528a141, 0xd9cf0829},
- /* 66 */ {5, 0.16544255, 0x4aa51420, 0xb6fc4841},
- /* 67 */ {5, 0.16485086, 0x50794633, 0x973054cb},
- /* 68 */ {5, 0.16427205, 0x56a94400, 0x7a1dbe4b},
- /* 69 */ {5, 0.16370566, 0x5d393975, 0x5f7fcd7f},
- /* 70 */ {5, 0.16315122, 0x642d7260, 0x47196c84},
- /* 71 */ {5, 0.16260831, 0x6b8a5ae7, 0x30b43635},
- /* 72 */ {5, 0.16207652, 0x73548000, 0x1c1fa5f6},
- /* 73 */ {5, 0.16155547, 0x7b908fe9, 0x930634a},
- /* 74 */ {5, 0.16104477, 0x84435aa0, 0xef7f4a3c},
- /* 75 */ {5, 0.16054409, 0x8d71d25b, 0xcf5552d2},
- /* 76 */ {5, 0.16005307, 0x97210c00, 0xb1a47c8e},
- /* 77 */ {5, 0.15957142, 0xa1563f9d, 0x9634b43e},
- /* 78 */ {5, 0.15909881, 0xac16c8e0, 0x7cd3817d},
- /* 79 */ {5, 0.15863496, 0xb768278f, 0x65536761},
- /* 80 */ {5, 0.15817959, 0xc3500000, 0x4f8b588e},
- /* 81 */ {5, 0.15773244, 0xcfd41b91, 0x3b563c24},
- /* 82 */ {5, 0.15729325, 0xdcfa6920, 0x28928154},
- /* 83 */ {5, 0.15686177, 0xeac8fd83, 0x1721bfb0},
- /* 84 */ {5, 0.15643779, 0xf9461400, 0x6e8629d},
- /* 85 */ {4, 0.15602107, 0x31c84b1, 0x491cc17c},
- /* 86 */ {4, 0.15561139, 0x342ab10, 0x3a11d83b},
- /* 87 */ {4, 0.15520856, 0x36a2c21, 0x2be074cd},
- /* 88 */ {4, 0.15481238, 0x3931000, 0x1e7a02e7},
- /* 89 */ {4, 0.15442266, 0x3bd5ee1, 0x11d10edd},
- /* 90 */ {4, 0.15403922, 0x3e92110, 0x5d92c68},
- /* 91 */ {4, 0.15366189, 0x4165ef1, 0xf50dbfb2},
- /* 92 */ {4, 0.15329049, 0x4452100, 0xdf9f1316},
- /* 93 */ {4, 0.15292487, 0x4756fd1, 0xcb52a684},
- /* 94 */ {4, 0.15256487, 0x4a75410, 0xb8163e97},
- /* 95 */ {4, 0.15221035, 0x4dad681, 0xa5d8f269},
- /* 96 */ {4, 0.15186115, 0x5100000, 0x948b0fcd},
- /* 97 */ {4, 0.15151715, 0x546d981, 0x841e0215},
- /* 98 */ {4, 0.15117821, 0x57f6c10, 0x74843b1e},
- /* 99 */ {4, 0.15084420, 0x5b9c0d1, 0x65b11e6e},
- /* 100 */ {4, 0.15051500, 0x5f5e100, 0x5798ee23},
- /* 101 */ {4, 0.15019048, 0x633d5f1, 0x4a30b99b},
- /* 102 */ {4, 0.14987054, 0x673a910, 0x3d6e4d94},
- /* 103 */ {4, 0.14955506, 0x6b563e1, 0x314825b0},
- /* 104 */ {4, 0.14924394, 0x6f91000, 0x25b55f2e},
- /* 105 */ {4, 0.14893706, 0x73eb721, 0x1aadaccb},
- /* 106 */ {4, 0.14863434, 0x7866310, 0x10294ba2},
- /* 107 */ {4, 0.14833567, 0x7d01db1, 0x620f8f6},
- /* 108 */ {4, 0.14804096, 0x81bf100, 0xf91bd1b6},
- /* 109 */ {4, 0.14775011, 0x869e711, 0xe6d37b2a},
- /* 110 */ {4, 0.14746305, 0x8ba0a10, 0xd55cff6e},
- /* 111 */ {4, 0.14717969, 0x90c6441, 0xc4ad2db2},
- /* 112 */ {4, 0.14689994, 0x9610000, 0xb4b985cf},
- /* 113 */ {4, 0.14662372, 0x9b7e7c1, 0xa5782bef},
- /* 114 */ {4, 0.14635096, 0xa112610, 0x96dfdd2a},
- /* 115 */ {4, 0.14608158, 0xa6cc591, 0x88e7e509},
- /* 116 */ {4, 0.14581551, 0xacad100, 0x7b8813d3},
- /* 117 */ {4, 0.14555268, 0xb2b5331, 0x6eb8b595},
- /* 118 */ {4, 0.14529302, 0xb8e5710, 0x627289db},
- /* 119 */ {4, 0.14503647, 0xbf3e7a1, 0x56aebc07},
- /* 120 */ {4, 0.14478295, 0xc5c1000, 0x4b66dc33},
- /* 121 */ {4, 0.14453241, 0xcc6db61, 0x4094d8a3},
- /* 122 */ {4, 0.14428479, 0xd345510, 0x3632f7a5},
- /* 123 */ {4, 0.14404003, 0xda48871, 0x2c3bd1f0},
- /* 124 */ {4, 0.14379807, 0xe178100, 0x22aa4d5f},
- /* 125 */ {4, 0.14355885, 0xe8d4a51, 0x19799812},
- /* 126 */ {4, 0.14332233, 0xf05f010, 0x10a523e5},
- /* 127 */ {4, 0.14308844, 0xf817e01, 0x828a237},
- /* 128 */ {4, 0.14285714, 0x7, 0x0},
- /* 129 */ {4, 0.14262838, 0x10818201, 0xf04ec452},
- /* 130 */ {4, 0.14240211, 0x11061010, 0xe136444a},
- /* 131 */ {4, 0.14217828, 0x118db651, 0xd2af9589},
- /* 132 */ {4, 0.14195685, 0x12188100, 0xc4b42a83},
- /* 133 */ {4, 0.14173777, 0x12a67c71, 0xb73dccf5},
- /* 134 */ {4, 0.14152100, 0x1337b510, 0xaa4698c5},
- /* 135 */ {4, 0.14130649, 0x13cc3761, 0x9dc8f729},
- /* 136 */ {4, 0.14109421, 0x14641000, 0x91bf9a30},
- /* 137 */ {4, 0.14088412, 0x14ff4ba1, 0x86257887},
- /* 138 */ {4, 0.14067617, 0x159df710, 0x7af5c98c},
- /* 139 */ {4, 0.14047033, 0x16401f31, 0x702c01a0},
- /* 140 */ {4, 0.14026656, 0x16e5d100, 0x65c3ceb1},
- /* 141 */ {4, 0.14006482, 0x178f1991, 0x5bb91502},
- /* 142 */ {4, 0.13986509, 0x183c0610, 0x5207ec23},
- /* 143 */ {4, 0.13966731, 0x18eca3c1, 0x48ac9c19},
- /* 144 */ {4, 0.13947147, 0x19a10000, 0x3fa39ab5},
- /* 145 */ {4, 0.13927753, 0x1a592841, 0x36e98912},
- /* 146 */ {4, 0.13908545, 0x1b152a10, 0x2e7b3140},
- /* 147 */ {4, 0.13889521, 0x1bd51311, 0x2655840b},
- /* 148 */ {4, 0.13870677, 0x1c98f100, 0x1e7596ea},
- /* 149 */ {4, 0.13852011, 0x1d60d1b1, 0x16d8a20d},
- /* 150 */ {4, 0.13833519, 0x1e2cc310, 0xf7bfe87},
- /* 151 */ {4, 0.13815199, 0x1efcd321, 0x85d2492},
- /* 152 */ {4, 0.13797047, 0x1fd11000, 0x179a9f4},
- /* 153 */ {4, 0.13779062, 0x20a987e1, 0xf59e80eb},
- /* 154 */ {4, 0.13761241, 0x21864910, 0xe8b768db},
- /* 155 */ {4, 0.13743580, 0x226761f1, 0xdc39d6d5},
- /* 156 */ {4, 0.13726078, 0x234ce100, 0xd021c5d1},
- /* 157 */ {4, 0.13708732, 0x2436d4d1, 0xc46b5e37},
- /* 158 */ {4, 0.13691539, 0x25254c10, 0xb912f39c},
- /* 159 */ {4, 0.13674498, 0x26185581, 0xae150294},
- /* 160 */ {4, 0.13657605, 0x27100000, 0xa36e2eb1},
- /* 161 */ {4, 0.13640859, 0x280c5a81, 0x991b4094},
- /* 162 */ {4, 0.13624257, 0x290d7410, 0x8f19241e},
- /* 163 */ {4, 0.13607797, 0x2a135bd1, 0x8564e6b7},
- /* 164 */ {4, 0.13591477, 0x2b1e2100, 0x7bfbb5b4},
- /* 165 */ {4, 0.13575295, 0x2c2dd2f1, 0x72dadcc8},
- /* 166 */ {4, 0.13559250, 0x2d428110, 0x69ffc498},
- /* 167 */ {4, 0.13543338, 0x2e5c3ae1, 0x6167f154},
- /* 168 */ {4, 0.13527558, 0x2f7b1000, 0x5911016e},
- /* 169 */ {4, 0.13511908, 0x309f1021, 0x50f8ac5f},
- /* 170 */ {4, 0.13496386, 0x31c84b10, 0x491cc17c},
- /* 171 */ {4, 0.13480991, 0x32f6d0b1, 0x417b26d8},
- /* 172 */ {4, 0.13465720, 0x342ab100, 0x3a11d83b},
- /* 173 */ {4, 0.13450572, 0x3563fc11, 0x32dee622},
- /* 174 */ {4, 0.13435545, 0x36a2c210, 0x2be074cd},
- /* 175 */ {4, 0.13420637, 0x37e71341, 0x2514bb58},
- /* 176 */ {4, 0.13405847, 0x39310000, 0x1e7a02e7},
- /* 177 */ {4, 0.13391173, 0x3a8098c1, 0x180ea5d0},
- /* 178 */ {4, 0.13376614, 0x3bd5ee10, 0x11d10edd},
- /* 179 */ {4, 0.13362168, 0x3d311091, 0xbbfb88e},
- /* 180 */ {4, 0.13347832, 0x3e921100, 0x5d92c68},
- /* 181 */ {4, 0.13333607, 0x3ff90031, 0x1c024c},
- /* 182 */ {4, 0.13319491, 0x4165ef10, 0xf50dbfb2},
- /* 183 */ {4, 0.13305481, 0x42d8eea1, 0xea30efa3},
- /* 184 */ {4, 0.13291577, 0x44521000, 0xdf9f1316},
- /* 185 */ {4, 0.13277777, 0x45d16461, 0xd555c0c9},
- /* 186 */ {4, 0.13264079, 0x4756fd10, 0xcb52a684},
- /* 187 */ {4, 0.13250483, 0x48e2eb71, 0xc193881f},
- /* 188 */ {4, 0.13236988, 0x4a754100, 0xb8163e97},
- /* 189 */ {4, 0.13223591, 0x4c0e0f51, 0xaed8b724},
- /* 190 */ {4, 0.13210292, 0x4dad6810, 0xa5d8f269},
- /* 191 */ {4, 0.13197089, 0x4f535d01, 0x9d15039d},
- /* 192 */ {4, 0.13183981, 0x51000000, 0x948b0fcd},
- /* 193 */ {4, 0.13170967, 0x52b36301, 0x8c394d1d},
- /* 194 */ {4, 0.13158046, 0x546d9810, 0x841e0215},
- /* 195 */ {4, 0.13145216, 0x562eb151, 0x7c3784f8},
- /* 196 */ {4, 0.13132477, 0x57f6c100, 0x74843b1e},
- /* 197 */ {4, 0.13119827, 0x59c5d971, 0x6d02985d},
- /* 198 */ {4, 0.13107265, 0x5b9c0d10, 0x65b11e6e},
- /* 199 */ {4, 0.13094791, 0x5d796e61, 0x5e8e5c64},
- /* 200 */ {4, 0.13082402, 0x5f5e1000, 0x5798ee23},
- /* 201 */ {4, 0.13070099, 0x614a04a1, 0x50cf7bde},
- /* 202 */ {4, 0.13057879, 0x633d5f10, 0x4a30b99b},
- /* 203 */ {4, 0.13045743, 0x65383231, 0x43bb66bd},
- /* 204 */ {4, 0.13033688, 0x673a9100, 0x3d6e4d94},
- /* 205 */ {4, 0.13021715, 0x69448e91, 0x374842ee},
- /* 206 */ {4, 0.13009822, 0x6b563e10, 0x314825b0},
- /* 207 */ {4, 0.12998007, 0x6d6fb2c1, 0x2b6cde75},
- /* 208 */ {4, 0.12986271, 0x6f910000, 0x25b55f2e},
- /* 209 */ {4, 0.12974613, 0x71ba3941, 0x2020a2c5},
- /* 210 */ {4, 0.12963031, 0x73eb7210, 0x1aadaccb},
- /* 211 */ {4, 0.12951524, 0x7624be11, 0x155b891f},
- /* 212 */ {4, 0.12940092, 0x78663100, 0x10294ba2},
- /* 213 */ {4, 0.12928734, 0x7aafdeb1, 0xb160fe9},
- /* 214 */ {4, 0.12917448, 0x7d01db10, 0x620f8f6},
- /* 215 */ {4, 0.12906235, 0x7f5c3a21, 0x14930ef},
- /* 216 */ {4, 0.12895094, 0x81bf1000, 0xf91bd1b6},
- /* 217 */ {4, 0.12884022, 0x842a70e1, 0xefdcb0c7},
- /* 218 */ {4, 0.12873021, 0x869e7110, 0xe6d37b2a},
- /* 219 */ {4, 0.12862089, 0x891b24f1, 0xddfeb94a},
- /* 220 */ {4, 0.12851224, 0x8ba0a100, 0xd55cff6e},
- /* 221 */ {4, 0.12840428, 0x8e2ef9d1, 0xcceced50},
- /* 222 */ {4, 0.12829698, 0x90c64410, 0xc4ad2db2},
- /* 223 */ {4, 0.12819034, 0x93669481, 0xbc9c75f9},
- /* 224 */ {4, 0.12808435, 0x96100000, 0xb4b985cf},
- /* 225 */ {4, 0.12797901, 0x98c29b81, 0xad0326c2},
- /* 226 */ {4, 0.12787431, 0x9b7e7c10, 0xa5782bef},
- /* 227 */ {4, 0.12777024, 0x9e43b6d1, 0x9e1771a9},
- /* 228 */ {4, 0.12766680, 0xa1126100, 0x96dfdd2a},
- /* 229 */ {4, 0.12756398, 0xa3ea8ff1, 0x8fd05c41},
- /* 230 */ {4, 0.12746176, 0xa6cc5910, 0x88e7e509},
- /* 231 */ {4, 0.12736016, 0xa9b7d1e1, 0x8225759d},
- /* 232 */ {4, 0.12725915, 0xacad1000, 0x7b8813d3},
- /* 233 */ {4, 0.12715874, 0xafac2921, 0x750eccf9},
- /* 234 */ {4, 0.12705891, 0xb2b53310, 0x6eb8b595},
- /* 235 */ {4, 0.12695967, 0xb5c843b1, 0x6884e923},
- /* 236 */ {4, 0.12686100, 0xb8e57100, 0x627289db},
- /* 237 */ {4, 0.12676290, 0xbc0cd111, 0x5c80c07b},
- /* 238 */ {4, 0.12666537, 0xbf3e7a10, 0x56aebc07},
- /* 239 */ {4, 0.12656839, 0xc27a8241, 0x50fbb19b},
- /* 240 */ {4, 0.12647197, 0xc5c10000, 0x4b66dc33},
- /* 241 */ {4, 0.12637609, 0xc91209c1, 0x45ef7c7c},
- /* 242 */ {4, 0.12628075, 0xcc6db610, 0x4094d8a3},
- /* 243 */ {4, 0.12618595, 0xcfd41b91, 0x3b563c24},
- /* 244 */ {4, 0.12609168, 0xd3455100, 0x3632f7a5},
- /* 245 */ {4, 0.12599794, 0xd6c16d31, 0x312a60c3},
- /* 246 */ {4, 0.12590471, 0xda488710, 0x2c3bd1f0},
- /* 247 */ {4, 0.12581200, 0xdddab5a1, 0x2766aa45},
- /* 248 */ {4, 0.12571980, 0xe1781000, 0x22aa4d5f},
- /* 249 */ {4, 0.12562811, 0xe520ad61, 0x1e06233c},
- /* 250 */ {4, 0.12553692, 0xe8d4a510, 0x19799812},
- /* 251 */ {4, 0.12544622, 0xec940e71, 0x15041c33},
- /* 252 */ {4, 0.12535601, 0xf05f0100, 0x10a523e5},
- /* 253 */ {4, 0.12526629, 0xf4359451, 0xc5c2749},
- /* 254 */ {4, 0.12517705, 0xf817e010, 0x828a237},
- /* 255 */ {4, 0.12508829, 0xfc05fc01, 0x40a1423},
-};
-#endif
-#if BITS_PER_MP_LIMB == 64
-const struct bases __mp_bases[256] =
-{
- /* 0 */ {0, 0.0, 0, 0},
- /* 1 */ {0, 1e38, 0, 0},
- /* 2 */ {64, 1.00000000, 0x1, 0x0},
- /* 3 */ {40, 0.63092975, 0xa8b8b452291fe821L, 0x846d550e37b5063dL},
- /* 4 */ {32, 0.50000000, 0x2L, 0x0L},
- /* 5 */ {27, 0.43067656, 0x6765c793fa10079dL, 0x3ce9a36f23c0fc90L},
- /* 6 */ {24, 0.38685281, 0x41c21cb8e1000000L, 0xf24f62335024a295L},
- /* 7 */ {22, 0.35620719, 0x3642798750226111L, 0x2df495ccaa57147bL},
- /* 8 */ {21, 0.33333333, 0x3L, 0x0L},
- /* 9 */ {20, 0.31546488, 0xa8b8b452291fe821L, 0x846d550e37b5063dL},
- /* 10 */ {19, 0.30103000, 0x8ac7230489e80000L, 0xd83c94fb6d2ac34aL},
- /* 11 */ {18, 0.28906483, 0x4d28cb56c33fa539L, 0xa8adf7ae45e7577bL},
- /* 12 */ {17, 0.27894295, 0x1eca170c00000000L, 0xa10c2bec5da8f8fL},
- /* 13 */ {17, 0.27023815, 0x780c7372621bd74dL, 0x10f4becafe412ec3L},
- /* 14 */ {16, 0.26264954, 0x1e39a5057d810000L, 0xf08480f672b4e86L},
- /* 15 */ {16, 0.25595802, 0x5b27ac993df97701L, 0x6779c7f90dc42f48L},
- /* 16 */ {16, 0.25000000, 0x4L, 0x0L},
- /* 17 */ {15, 0.24465054, 0x27b95e997e21d9f1L, 0x9c71e11bab279323L},
- /* 18 */ {15, 0.23981247, 0x5da0e1e53c5c8000L, 0x5dfaa697ec6f6a1cL},
- /* 19 */ {15, 0.23540891, 0xd2ae3299c1c4aedbL, 0x3711783f6be7e9ecL},
- /* 20 */ {14, 0.23137821, 0x16bcc41e90000000L, 0x6849b86a12b9b01eL},
- /* 21 */ {14, 0.22767025, 0x2d04b7fdd9c0ef49L, 0x6bf097ba5ca5e239L},
- /* 22 */ {14, 0.22424382, 0x5658597bcaa24000L, 0x7b8015c8d7af8f08L},
- /* 23 */ {14, 0.22106473, 0xa0e2073737609371L, 0x975a24b3a3151b38L},
- /* 24 */ {13, 0.21810429, 0xc29e98000000000L, 0x50bd367972689db1L},
- /* 25 */ {13, 0.21533828, 0x14adf4b7320334b9L, 0x8c240c4aecb13bb5L},
- /* 26 */ {13, 0.21274605, 0x226ed36478bfa000L, 0xdbd2e56854e118c9L},
- /* 27 */ {13, 0.21030992, 0x383d9170b85ff80bL, 0x2351ffcaa9c7c4aeL},
- /* 28 */ {13, 0.20801460, 0x5a3c23e39c000000L, 0x6b24188ca33b0636L},
- /* 29 */ {13, 0.20584683, 0x8e65137388122bcdL, 0xcc3dceaf2b8ba99dL},
- /* 30 */ {13, 0.20379505, 0xdd41bb36d259e000L, 0x2832e835c6c7d6b6L},
- /* 31 */ {12, 0.20184909, 0xaee5720ee830681L, 0x76b6aa272e1873c5L},
- /* 32 */ {12, 0.20000000, 0x5L, 0x0L},
- /* 33 */ {12, 0.19823986, 0x172588ad4f5f0981L, 0x61eaf5d402c7bf4fL},
- /* 34 */ {12, 0.19656163, 0x211e44f7d02c1000L, 0xeeb658123ffb27ecL},
- /* 35 */ {12, 0.19495902, 0x2ee56725f06e5c71L, 0x5d5e3762e6fdf509L},
- /* 36 */ {12, 0.19342640, 0x41c21cb8e1000000L, 0xf24f62335024a295L},
- /* 37 */ {12, 0.19195872, 0x5b5b57f8a98a5dd1L, 0x66ae7831762efb6fL},
- /* 38 */ {12, 0.19055141, 0x7dcff8986ea31000L, 0x47388865a00f544L},
- /* 39 */ {12, 0.18920036, 0xabd4211662a6b2a1L, 0x7d673c33a123b54cL},
- /* 40 */ {12, 0.18790182, 0xe8d4a51000000000L, 0x19799812dea11197L},
- /* 41 */ {11, 0.18665241, 0x7a32956ad081b79L, 0xc27e62e0686feaeL},
- /* 42 */ {11, 0.18544902, 0x9f49aaff0e86800L, 0x9b6e7507064ce7c7L},
- /* 43 */ {11, 0.18428883, 0xce583bb812d37b3L, 0x3d9ac2bf66cfed94L},
- /* 44 */ {11, 0.18316925, 0x109b79a654c00000L, 0xed46bc50ce59712aL},
- /* 45 */ {11, 0.18208790, 0x1543beff214c8b95L, 0x813d97e2c89b8d46L},
- /* 46 */ {11, 0.18104260, 0x1b149a79459a3800L, 0x2e81751956af8083L},
- /* 47 */ {11, 0.18003133, 0x224edfb5434a830fL, 0xdd8e0a95e30c0988L},
- /* 48 */ {11, 0.17905223, 0x2b3fb00000000000L, 0x7ad4dd48a0b5b167L},
- /* 49 */ {11, 0.17810359, 0x3642798750226111L, 0x2df495ccaa57147bL},
- /* 50 */ {11, 0.17718382, 0x43c33c1937564800L, 0xe392010175ee5962L},
- /* 51 */ {11, 0.17629143, 0x54411b2441c3cd8bL, 0x84eaf11b2fe7738eL},
- /* 52 */ {11, 0.17542506, 0x6851455acd400000L, 0x3a1e3971e008995dL},
- /* 53 */ {11, 0.17458343, 0x80a23b117c8feb6dL, 0xfd7a462344ffce25L},
- /* 54 */ {11, 0.17376534, 0x9dff7d32d5dc1800L, 0x9eca40b40ebcef8aL},
- /* 55 */ {11, 0.17296969, 0xc155af6faeffe6a7L, 0x52fa161a4a48e43dL},
- /* 56 */ {11, 0.17219543, 0xebb7392e00000000L, 0x1607a2cbacf930c1L},
- /* 57 */ {10, 0.17144160, 0x50633659656d971L, 0x97a014f8e3be55f1L},
- /* 58 */ {10, 0.17070728, 0x5fa8624c7fba400L, 0x568df8b76cbf212cL},
- /* 59 */ {10, 0.16999162, 0x717d9faa73c5679L, 0x20ba7c4b4e6ef492L},
- /* 60 */ {10, 0.16929381, 0x86430aac6100000L, 0xe81ee46b9ef492f5L},
- /* 61 */ {10, 0.16861310, 0x9e64d9944b57f29L, 0x9dc0d10d51940416L},
- /* 62 */ {10, 0.16794878, 0xba5ca5392cb0400L, 0x5fa8ed2f450272a5L},
- /* 63 */ {10, 0.16730018, 0xdab2ce1d022cd81L, 0x2ba9eb8c5e04e641L},
- /* 64 */ {10, 0.16666667, 0x6L, 0x0L},
- /* 65 */ {10, 0.16604765, 0x12aeed5fd3e2d281L, 0xb67759cc00287bf1L},
- /* 66 */ {10, 0.16544255, 0x15c3da1572d50400L, 0x78621feeb7f4ed33L},
- /* 67 */ {10, 0.16485086, 0x194c05534f75ee29L, 0x43d55b5f72943bc0L},
- /* 68 */ {10, 0.16427205, 0x1d56299ada100000L, 0x173decb64d1d4409L},
- /* 69 */ {10, 0.16370566, 0x21f2a089a4ff4f79L, 0xe29fb54fd6b6074fL},
- /* 70 */ {10, 0.16315122, 0x2733896c68d9a400L, 0xa1f1f5c210d54e62L},
- /* 71 */ {10, 0.16260831, 0x2d2cf2c33b533c71L, 0x6aac7f9bfafd57b2L},
- /* 72 */ {10, 0.16207652, 0x33f506e440000000L, 0x3b563c2478b72ee2L},
- /* 73 */ {10, 0.16155547, 0x3ba43bec1d062211L, 0x12b536b574e92d1bL},
- /* 74 */ {10, 0.16104477, 0x4455872d8fd4e400L, 0xdf86c03020404fa5L},
- /* 75 */ {10, 0.16054409, 0x4e2694539f2f6c59L, 0xa34adf02234eea8eL},
- /* 76 */ {10, 0.16005307, 0x5938006c18900000L, 0x6f46eb8574eb59ddL},
- /* 77 */ {10, 0.15957142, 0x65ad9912474aa649L, 0x42459b481df47cecL},
- /* 78 */ {10, 0.15909881, 0x73ae9ff4241ec400L, 0x1b424b95d80ca505L},
- /* 79 */ {10, 0.15863496, 0x836612ee9c4ce1e1L, 0xf2c1b982203a0dacL},
- /* 80 */ {10, 0.15817959, 0x9502f90000000000L, 0xb7cdfd9d7bdbab7dL},
- /* 81 */ {10, 0.15773244, 0xa8b8b452291fe821L, 0x846d550e37b5063dL},
- /* 82 */ {10, 0.15729325, 0xbebf59a07dab4400L, 0x57931eeaf85cf64fL},
- /* 83 */ {10, 0.15686177, 0xd7540d4093bc3109L, 0x305a944507c82f47L},
- /* 84 */ {10, 0.15643779, 0xf2b96616f1900000L, 0xe007ccc9c22781aL},
- /* 85 */ {9, 0.15602107, 0x336de62af2bca35L, 0x3e92c42e000eeed4L},
- /* 86 */ {9, 0.15561139, 0x39235ec33d49600L, 0x1ebe59130db2795eL},
- /* 87 */ {9, 0.15520856, 0x3f674e539585a17L, 0x268859e90f51b89L},
- /* 88 */ {9, 0.15481238, 0x4645b6958000000L, 0xd24cde0463108cfaL},
- /* 89 */ {9, 0.15442266, 0x4dcb74afbc49c19L, 0xa536009f37adc383L},
- /* 90 */ {9, 0.15403922, 0x56064e1d18d9a00L, 0x7cea06ce1c9ace10L},
- /* 91 */ {9, 0.15366189, 0x5f04fe2cd8a39fbL, 0x58db032e72e8ba43L},
- /* 92 */ {9, 0.15329049, 0x68d74421f5c0000L, 0x388cc17cae105447L},
- /* 93 */ {9, 0.15292487, 0x738df1f6ab4827dL, 0x1b92672857620ce0L},
- /* 94 */ {9, 0.15256487, 0x7f3afbc9cfb5e00L, 0x18c6a9575c2ade4L},
- /* 95 */ {9, 0.15221035, 0x8bf187fba88f35fL, 0xd44da7da8e44b24fL},
- /* 96 */ {9, 0.15186115, 0x99c600000000000L, 0xaa2f78f1b4cc6794L},
- /* 97 */ {9, 0.15151715, 0xa8ce21eb6531361L, 0x843c067d091ee4ccL},
- /* 98 */ {9, 0.15117821, 0xb92112c1a0b6200L, 0x62005e1e913356e3L},
- /* 99 */ {9, 0.15084420, 0xcad7718b8747c43L, 0x4316eed01dedd518L},
- /* 100 */ {9, 0.15051500, 0xde0b6b3a7640000L, 0x2725dd1d243aba0eL},
- /* 101 */ {9, 0.15019048, 0xf2d8cf5fe6d74c5L, 0xddd9057c24cb54fL},
- /* 102 */ {9, 0.14987054, 0x1095d25bfa712600L, 0xedeee175a736d2a1L},
- /* 103 */ {9, 0.14955506, 0x121b7c4c3698faa7L, 0xc4699f3df8b6b328L},
- /* 104 */ {9, 0.14924394, 0x13c09e8d68000000L, 0x9ebbe7d859cb5a7cL},
- /* 105 */ {9, 0.14893706, 0x15876ccb0b709ca9L, 0x7c828b9887eb2179L},
- /* 106 */ {9, 0.14863434, 0x17723c2976da2a00L, 0x5d652ab99001adcfL},
- /* 107 */ {9, 0.14833567, 0x198384e9c259048bL, 0x4114f1754e5d7b32L},
- /* 108 */ {9, 0.14804096, 0x1bbde41dfeec0000L, 0x274b7c902f7e0188L},
- /* 109 */ {9, 0.14775011, 0x1e241d6e3337910dL, 0xfc9e0fbb32e210cL},
- /* 110 */ {9, 0.14746305, 0x20b91cee9901ee00L, 0xf4afa3e594f8ea1fL},
- /* 111 */ {9, 0.14717969, 0x237ff9079863dfefL, 0xcd85c32e9e4437b0L},
- /* 112 */ {9, 0.14689994, 0x267bf47000000000L, 0xa9bbb147e0dd92a8L},
- /* 113 */ {9, 0.14662372, 0x29b08039fbeda7f1L, 0x8900447b70e8eb82L},
- /* 114 */ {9, 0.14635096, 0x2d213df34f65f200L, 0x6b0a92adaad5848aL},
- /* 115 */ {9, 0.14608158, 0x30d201d957a7c2d3L, 0x4f990ad8740f0ee5L},
- /* 116 */ {9, 0.14581551, 0x34c6d52160f40000L, 0x3670a9663a8d3610L},
- /* 117 */ {9, 0.14555268, 0x3903f855d8f4c755L, 0x1f5c44188057be3cL},
- /* 118 */ {9, 0.14529302, 0x3d8de5c8ec59b600L, 0xa2bea956c4e4977L},
- /* 119 */ {9, 0.14503647, 0x4269541d1ff01337L, 0xed68b23033c3637eL},
- /* 120 */ {9, 0.14478295, 0x479b38e478000000L, 0xc99cf624e50549c5L},
- /* 121 */ {9, 0.14453241, 0x4d28cb56c33fa539L, 0xa8adf7ae45e7577bL},
- /* 122 */ {9, 0.14428479, 0x5317871fa13aba00L, 0x8a5bc740b1c113e5L},
- /* 123 */ {9, 0.14404003, 0x596d2f44de9fa71bL, 0x6e6c7efb81cfbb9bL},
- /* 124 */ {9, 0.14379807, 0x602fd125c47c0000L, 0x54aba5c5cada5f10L},
- /* 125 */ {9, 0.14355885, 0x6765c793fa10079dL, 0x3ce9a36f23c0fc90L},
- /* 126 */ {9, 0.14332233, 0x6f15be069b847e00L, 0x26fb43de2c8cd2a8L},
- /* 127 */ {9, 0.14308844, 0x7746b3e82a77047fL, 0x12b94793db8486a1L},
- /* 128 */ {9, 0.14285714, 0x7L, 0x0L},
- /* 129 */ {9, 0.14262838, 0x894953f7ea890481L, 0xdd5deca404c0156dL},
- /* 130 */ {9, 0.14240211, 0x932abffea4848200L, 0xbd51373330291de0L},
- /* 131 */ {9, 0.14217828, 0x9dacb687d3d6a163L, 0x9fa4025d66f23085L},
- /* 132 */ {9, 0.14195685, 0xa8d8102a44840000L, 0x842530ee2db4949dL},
- /* 133 */ {9, 0.14173777, 0xb4b60f9d140541e5L, 0x6aa7f2766b03dc25L},
- /* 134 */ {9, 0.14152100, 0xc15065d4856e4600L, 0x53035ba7ebf32e8dL},
- /* 135 */ {9, 0.14130649, 0xceb1363f396d23c7L, 0x3d12091fc9fb4914L},
- /* 136 */ {9, 0.14109421, 0xdce31b2488000000L, 0x28b1cb81b1ef1849L},
- /* 137 */ {9, 0.14088412, 0xebf12a24bca135c9L, 0x15c35be67ae3e2c9L},
- /* 138 */ {9, 0.14067617, 0xfbe6f8dbf88f4a00L, 0x42a17bd09be1ff0L},
- /* 139 */ {8, 0.14047033, 0x1ef156c084ce761L, 0x8bf461f03cf0bbfL},
- /* 140 */ {8, 0.14026656, 0x20c4e3b94a10000L, 0xf3fbb43f68a32d05L},
- /* 141 */ {8, 0.14006482, 0x22b0695a08ba421L, 0xd84f44c48564dc19L},
- /* 142 */ {8, 0.13986509, 0x24b4f35d7a4c100L, 0xbe58ebcce7956abeL},
- /* 143 */ {8, 0.13966731, 0x26d397284975781L, 0xa5fac463c7c134b7L},
- /* 144 */ {8, 0.13947147, 0x290d74100000000L, 0x8f19241e28c7d757L},
- /* 145 */ {8, 0.13927753, 0x2b63b3a37866081L, 0x799a6d046c0ae1aeL},
- /* 146 */ {8, 0.13908545, 0x2dd789f4d894100L, 0x6566e37d746a9e40L},
- /* 147 */ {8, 0.13889521, 0x306a35e51b58721L, 0x526887dbfb5f788fL},
- /* 148 */ {8, 0.13870677, 0x331d01712e10000L, 0x408af3382b8efd3dL},
- /* 149 */ {8, 0.13852011, 0x35f14200a827c61L, 0x2fbb374806ec05f1L},
- /* 150 */ {8, 0.13833519, 0x38e858b62216100L, 0x1fe7c0f0afce87feL},
- /* 151 */ {8, 0.13815199, 0x3c03b2c13176a41L, 0x11003d517540d32eL},
- /* 152 */ {8, 0.13797047, 0x3f44c9b21000000L, 0x2f5810f98eff0dcL},
- /* 153 */ {8, 0.13779062, 0x42ad23cef3113c1L, 0xeb72e35e7840d910L},
- /* 154 */ {8, 0.13761241, 0x463e546b19a2100L, 0xd27de19593dc3614L},
- /* 155 */ {8, 0.13743580, 0x49f9fc3f96684e1L, 0xbaf391fd3e5e6fc2L},
- /* 156 */ {8, 0.13726078, 0x4de1c9c5dc10000L, 0xa4bd38c55228c81dL},
- /* 157 */ {8, 0.13708732, 0x51f77994116d2a1L, 0x8fc5a8de8e1de782L},
- /* 158 */ {8, 0.13691539, 0x563cd6bb3398100L, 0x7bf9265bea9d3a3bL},
- /* 159 */ {8, 0.13674498, 0x5ab3bb270beeb01L, 0x69454b325983dccdL},
- /* 160 */ {8, 0.13657605, 0x5f5e10000000000L, 0x5798ee2308c39df9L},
- /* 161 */ {8, 0.13640859, 0x643dce0ec16f501L, 0x46e40ba0fa66a753L},
- /* 162 */ {8, 0.13624257, 0x6954fe21e3e8100L, 0x3717b0870b0db3a7L},
- /* 163 */ {8, 0.13607797, 0x6ea5b9755f440a1L, 0x2825e6775d11cdebL},
- /* 164 */ {8, 0.13591477, 0x74322a1c0410000L, 0x1a01a1c09d1b4dacL},
- /* 165 */ {8, 0.13575295, 0x79fc8b6ae8a46e1L, 0xc9eb0a8bebc8f3eL},
- /* 166 */ {8, 0.13559250, 0x80072a66d512100L, 0xffe357ff59e6a004L},
- /* 167 */ {8, 0.13543338, 0x86546633b42b9c1L, 0xe7dfd1be05fa61a8L},
- /* 168 */ {8, 0.13527558, 0x8ce6b0861000000L, 0xd11ed6fc78f760e5L},
- /* 169 */ {8, 0.13511908, 0x93c08e16a022441L, 0xbb8db609dd29ebfeL},
- /* 170 */ {8, 0.13496386, 0x9ae49717f026100L, 0xa71aec8d1813d532L},
- /* 171 */ {8, 0.13480991, 0xa25577ae24c1a61L, 0x93b612a9f20fbc02L},
- /* 172 */ {8, 0.13465720, 0xaa15f068e610000L, 0x814fc7b19a67d317L},
- /* 173 */ {8, 0.13450572, 0xb228d6bf7577921L, 0x6fd9a03f2e0a4b7cL},
- /* 174 */ {8, 0.13435545, 0xba91158ef5c4100L, 0x5f4615a38d0d316eL},
- /* 175 */ {8, 0.13420637, 0xc351ad9aec0b681L, 0x4f8876863479a286L},
- /* 176 */ {8, 0.13405847, 0xcc6db6100000000L, 0x4094d8a3041b60ebL},
- /* 177 */ {8, 0.13391173, 0xd5e85d09025c181L, 0x32600b8ed883a09bL},
- /* 178 */ {8, 0.13376614, 0xdfc4e816401c100L, 0x24df8c6eb4b6d1f1L},
- /* 179 */ {8, 0.13362168, 0xea06b4c72947221L, 0x18097a8ee151acefL},
- /* 180 */ {8, 0.13347832, 0xf4b139365210000L, 0xbd48cc8ec1cd8e3L},
- /* 181 */ {8, 0.13333607, 0xffc80497d520961L, 0x3807a8d67485fbL},
- /* 182 */ {8, 0.13319491, 0x10b4ebfca1dee100L, 0xea5768860b62e8d8L},
- /* 183 */ {8, 0.13305481, 0x117492de921fc141L, 0xd54faf5b635c5005L},
- /* 184 */ {8, 0.13291577, 0x123bb2ce41000000L, 0xc14a56233a377926L},
- /* 185 */ {8, 0.13277777, 0x130a8b6157bdecc1L, 0xae39a88db7cd329fL},
- /* 186 */ {8, 0.13264079, 0x13e15dede0e8a100L, 0x9c10bde69efa7ab6L},
- /* 187 */ {8, 0.13250483, 0x14c06d941c0ca7e1L, 0x8ac36c42a2836497L},
- /* 188 */ {8, 0.13236988, 0x15a7ff487a810000L, 0x7a463c8b84f5ef67L},
- /* 189 */ {8, 0.13223591, 0x169859ddc5c697a1L, 0x6a8e5f5ad090fd4bL},
- /* 190 */ {8, 0.13210292, 0x1791c60f6fed0100L, 0x5b91a2943596fc56L},
- /* 191 */ {8, 0.13197089, 0x18948e8c0e6fba01L, 0x4d4667b1c468e8f0L},
- /* 192 */ {8, 0.13183981, 0x19a1000000000000L, 0x3fa39ab547994dafL},
- /* 193 */ {8, 0.13170967, 0x1ab769203dafc601L, 0x32a0a9b2faee1e2aL},
- /* 194 */ {8, 0.13158046, 0x1bd81ab557f30100L, 0x26357ceac0e96962L},
- /* 195 */ {8, 0.13145216, 0x1d0367a69fed1ba1L, 0x1a5a6f65caa5859eL},
- /* 196 */ {8, 0.13132477, 0x1e39a5057d810000L, 0xf08480f672b4e86L},
- /* 197 */ {8, 0.13119827, 0x1f7b2a18f29ac3e1L, 0x4383340615612caL},
- /* 198 */ {8, 0.13107265, 0x20c850694c2aa100L, 0xf3c77969ee4be5a2L},
- /* 199 */ {8, 0.13094791, 0x222173cc014980c1L, 0xe00993cc187c5ec9L},
- /* 200 */ {8, 0.13082402, 0x2386f26fc1000000L, 0xcd2b297d889bc2b6L},
- /* 201 */ {8, 0.13070099, 0x24f92ce8af296d41L, 0xbb214d5064862b22L},
- /* 202 */ {8, 0.13057879, 0x2678863cd0ece100L, 0xa9e1a7ca7ea10e20L},
- /* 203 */ {8, 0.13045743, 0x280563f0a9472d61L, 0x99626e72b39ea0cfL},
- /* 204 */ {8, 0.13033688, 0x29a02e1406210000L, 0x899a5ba9c13fafd9L},
- /* 205 */ {8, 0.13021715, 0x2b494f4efe6d2e21L, 0x7a80a705391e96ffL},
- /* 206 */ {8, 0.13009822, 0x2d0134ef21cbc100L, 0x6c0cfe23de23042aL},
- /* 207 */ {8, 0.12998007, 0x2ec84ef4da2ef581L, 0x5e377df359c944ddL},
- /* 208 */ {8, 0.12986271, 0x309f102100000000L, 0x50f8ac5fc8f53985L},
- /* 209 */ {8, 0.12974613, 0x3285ee02a1420281L, 0x44497266278e35b7L},
- /* 210 */ {8, 0.12963031, 0x347d6104fc324100L, 0x382316831f7ee175L},
- /* 211 */ {8, 0.12951524, 0x3685e47dade53d21L, 0x2c7f377833b8946eL},
- /* 212 */ {8, 0.12940092, 0x389ff6bb15610000L, 0x2157c761ab4163efL},
- /* 213 */ {8, 0.12928734, 0x3acc1912ebb57661L, 0x16a7071803cc49a9L},
- /* 214 */ {8, 0.12917448, 0x3d0acff111946100L, 0xc6781d80f8224fcL},
- /* 215 */ {8, 0.12906235, 0x3f5ca2e692eaf841L, 0x294092d370a900bL},
- /* 216 */ {8, 0.12895094, 0x41c21cb8e1000000L, 0xf24f62335024a295L},
- /* 217 */ {8, 0.12884022, 0x443bcb714399a5c1L, 0xe03b98f103fad6d2L},
- /* 218 */ {8, 0.12873021, 0x46ca406c81af2100L, 0xcee3d32cad2a9049L},
- /* 219 */ {8, 0.12862089, 0x496e106ac22aaae1L, 0xbe3f9df9277fdadaL},
- /* 220 */ {8, 0.12851224, 0x4c27d39fa5410000L, 0xae46f0d94c05e933L},
- /* 221 */ {8, 0.12840428, 0x4ef825c296e43ca1L, 0x9ef2280fb437a33dL},
- /* 222 */ {8, 0.12829698, 0x51dfa61f5ad88100L, 0x9039ff426d3f284bL},
- /* 223 */ {8, 0.12819034, 0x54def7a6d2f16901L, 0x82178c6d6b51f8f4L},
- /* 224 */ {8, 0.12808435, 0x57f6c10000000000L, 0x74843b1ee4c1e053L},
- /* 225 */ {8, 0.12797901, 0x5b27ac993df97701L, 0x6779c7f90dc42f48L},
- /* 226 */ {8, 0.12787431, 0x5e7268b9bbdf8100L, 0x5af23c74f9ad9fe9L},
- /* 227 */ {8, 0.12777024, 0x61d7a7932ff3d6a1L, 0x4ee7eae2acdc617eL},
- /* 228 */ {8, 0.12766680, 0x65581f53c8c10000L, 0x43556aa2ac262a0bL},
- /* 229 */ {8, 0.12756398, 0x68f48a385b8320e1L, 0x3835949593b8ddd1L},
- /* 230 */ {8, 0.12746176, 0x6cada69ed07c2100L, 0x2d837fbe78458762L},
- /* 231 */ {8, 0.12736016, 0x70843718cdbf27c1L, 0x233a7e150a54a555L},
- /* 232 */ {8, 0.12725915, 0x7479027ea1000000L, 0x19561984a50ff8feL},
- /* 233 */ {8, 0.12715874, 0x788cd40268f39641L, 0xfd211159fe3490fL},
- /* 234 */ {8, 0.12705891, 0x7cc07b437ecf6100L, 0x6aa563e655033e3L},
- /* 235 */ {8, 0.12695967, 0x8114cc6220762061L, 0xfbb614b3f2d3b14cL},
- /* 236 */ {8, 0.12686100, 0x858aa0135be10000L, 0xeac0f8837fb05773L},
- /* 237 */ {8, 0.12676290, 0x8a22d3b53c54c321L, 0xda6e4c10e8615ca5L},
- /* 238 */ {8, 0.12666537, 0x8ede496339f34100L, 0xcab755a8d01fa67fL},
- /* 239 */ {8, 0.12656839, 0x93bde80aec3a1481L, 0xbb95a9ae71aa3e0cL},
- /* 240 */ {8, 0.12647197, 0x98c29b8100000000L, 0xad0326c296b4f529L},
- /* 241 */ {8, 0.12637609, 0x9ded549671832381L, 0x9ef9f21eed31b7c1L},
- /* 242 */ {8, 0.12628075, 0xa33f092e0b1ac100L, 0x91747422be14b0b2L},
- /* 243 */ {8, 0.12618595, 0xa8b8b452291fe821L, 0x846d550e37b5063dL},
- /* 244 */ {8, 0.12609168, 0xae5b564ac3a10000L, 0x77df79e9a96c06f6L},
- /* 245 */ {8, 0.12599794, 0xb427f4b3be74c361L, 0x6bc6019636c7d0c2L},
- /* 246 */ {8, 0.12590471, 0xba1f9a938041e100L, 0x601c4205aebd9e47L},
- /* 247 */ {8, 0.12581200, 0xc0435871d1110f41L, 0x54ddc59756f05016L},
- /* 248 */ {8, 0.12571980, 0xc694446f01000000L, 0x4a0648979c838c18L},
- /* 249 */ {8, 0.12562811, 0xcd137a5b57ac3ec1L, 0x3f91b6e0bb3a053dL},
- /* 250 */ {8, 0.12553692, 0xd3c21bcecceda100L, 0x357c299a88ea76a5L},
- /* 251 */ {8, 0.12544622, 0xdaa150410b788de1L, 0x2bc1e517aecc56e3L},
- /* 252 */ {8, 0.12535601, 0xe1b24521be010000L, 0x225f56ceb3da9f5dL},
- /* 253 */ {8, 0.12526629, 0xe8f62df12777c1a1L, 0x1951136d53ad63acL},
- /* 254 */ {8, 0.12517705, 0xf06e445906fc0100L, 0x1093d504b3cd7d93L},
- /* 255 */ {8, 0.12508829, 0xf81bc845c81bf801L, 0x824794d1ec1814fL},
-};
-#endif
diff --git a/gnu/lib/libgmp/mpn/tests/add_n.c b/gnu/lib/libgmp/mpn/tests/add_n.c
deleted file mode 100644
index c27d347..0000000
--- a/gnu/lib/libgmp/mpn/tests/add_n.c
+++ /dev/null
@@ -1,211 +0,0 @@
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-
-#ifndef USG
-#include <sys/time.h>
-#include <sys/resource.h>
-
-unsigned long
-cputime ()
-{
- struct rusage rus;
-
- getrusage (0, &rus);
- return rus.ru_utime.tv_sec * 1000 + rus.ru_utime.tv_usec / 1000;
-}
-#else
-#include <time.h>
-
-#ifndef CLOCKS_PER_SEC
-#define CLOCKS_PER_SEC 1000000
-#endif
-
-#if CLOCKS_PER_SEC >= 10000
-#define CLOCK_TO_MILLISEC(cl) ((cl) / (CLOCKS_PER_SEC / 1000))
-#else
-#define CLOCK_TO_MILLISEC(cl) ((cl) * 1000 / CLOCKS_PER_SEC)
-#endif
-
-unsigned long
-cputime ()
-{
- return CLOCK_TO_MILLISEC (clock ());
-}
-#endif
-
-#define M * 1000000
-
-#ifndef CLOCK
-#if defined (__m88k__)
-#define CLOCK 20 M
-#elif defined (__i386__)
-#define CLOCK (16.666667 M)
-#elif defined (__m68k__)
-#define CLOCK (20 M)
-#elif defined (_IBMR2)
-#define CLOCK (25 M)
-#elif defined (__sparc__)
-#define CLOCK (20 M)
-#elif defined (__sun__)
-#define CLOCK (20 M)
-#elif defined (__mips)
-#define CLOCK (40 M)
-#elif defined (__hppa__)
-#define CLOCK (50 M)
-#elif defined (__alpha)
-#define CLOCK (133 M)
-#else
-#error "Don't know CLOCK of your machine"
-#endif
-#endif
-
-#ifndef OPS
-#define OPS 10000000
-#endif
-#ifndef SIZE
-#define SIZE 328
-#endif
-#ifndef TIMES
-#define TIMES OPS/SIZE
-#else
-#undef OPS
-#define OPS (SIZE*TIMES)
-#endif
-
-
-mp_limb_t
-#if __STDC__
-refmpn_add_n (mp_ptr res_ptr,
- mp_srcptr s1_ptr, mp_srcptr s2_ptr, mp_size_t size)
-#else
-refmpn_add_n (res_ptr, s1_ptr, s2_ptr, size)
- register mp_ptr res_ptr;
- register mp_srcptr s1_ptr;
- register mp_srcptr s2_ptr;
- mp_size_t size;
-#endif
-{
- register mp_limb_t x, y, cy;
- register mp_size_t j;
-
- /* The loop counter and index J goes from -SIZE to -1. This way
- the loop becomes faster. */
- j = -size;
-
- /* Offset the base pointers to compensate for the negative indices. */
- s1_ptr -= j;
- s2_ptr -= j;
- res_ptr -= j;
-
- cy = 0;
- do
- {
- y = s2_ptr[j];
- x = s1_ptr[j];
- y += cy; /* add previous carry to one addend */
- cy = (y < cy); /* get out carry from that addition */
- y = x + y; /* add other addend */
- cy = (y < x) + cy; /* get out carry from that add, combine */
- res_ptr[j] = y;
- }
- while (++j != 0);
-
- return cy;
-}
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mp_limb_t s1[SIZE];
- mp_limb_t s2[SIZE];
- mp_limb_t dx[SIZE+1];
- mp_limb_t dy[SIZE+1];
- int cyx, cyy;
- int i;
- long t0, t;
- int test;
- mp_size_t size;
-
- for (test = 0; ; test++)
- {
-#ifdef RANDOM
- size = (random () % SIZE + 1);
-#else
- size = SIZE;
-#endif
-
- mpn_random2 (s1, size);
- mpn_random2 (s2, size);
-
- dx[size] = 0x12345678;
- dy[size] = 0x12345678;
-
-#ifdef PRINT
- mpn_print (s1, size);
- mpn_print (s2, size);
-#endif
- t0 = cputime();
- for (i = 0; i < TIMES; i++)
- cyx = refmpn_add_n (dx, s1, s2, size);
- t = cputime() - t0;
-#if TIMES != 1
- printf ("refmpn_add_n: %ldms (%.2f cycles/limb)\n",
- t,
- ((double) t * CLOCK) / (OPS * 1000.0));
-#endif
-#ifdef PRINT
- printf ("%d ", cyx); mpn_print (dx, size);
-#endif
-
- t0 = cputime();
- for (i = 0; i < TIMES; i++)
- cyx = mpn_add_n (dx, s1, s2, size);
- t = cputime() - t0;
-#if TIMES != 1
- printf ("mpn_add_n: %ldms (%.2f cycles/limb)\n",
- t,
- ((double) t * CLOCK) / (OPS * 1000.0));
-#endif
-#ifdef PRINT
- printf ("%d ", cyx); mpn_print (dx, size);
-#endif
-
-#ifndef NOCHECK
- /* Put garbage in the destination. */
- for (i = 0; i < size; i++)
- {
- dx[i] = 0x7654321;
- dy[i] = 0x1234567;
- }
-
- cyx = refmpn_add_n (dx, s1, s2, size);
- cyy = mpn_add_n (dy, s1, s2, size);
- if (cyx != cyy || mpn_cmp (dx, dy, size) != 0
- || dx[size] != 0x12345678 || dy[size] != 0x12345678)
- {
-#ifndef PRINT
- printf ("%d ", cyx); mpn_print (dx, size);
- printf ("%d ", cyy); mpn_print (dy, size);
-#endif
- abort();
- }
-#endif
- }
-}
-
-mpn_print (mp_ptr p, mp_size_t size)
-{
- mp_size_t i;
-
- for (i = size - 1; i >= 0; i--)
- {
- printf ("%0*lX", (int) (2 * sizeof(mp_limb_t)), p[i]);
-#ifdef SPACE
- if (i != 0)
- printf (" ");
-#endif
- }
- puts ("");
-}
diff --git a/gnu/lib/libgmp/mpn/tests/addmul_1.c b/gnu/lib/libgmp/mpn/tests/addmul_1.c
deleted file mode 100644
index 23952a1..0000000
--- a/gnu/lib/libgmp/mpn/tests/addmul_1.c
+++ /dev/null
@@ -1,223 +0,0 @@
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-#ifndef USG
-#include <sys/time.h>
-#include <sys/resource.h>
-
-unsigned long
-cputime ()
-{
- struct rusage rus;
-
- getrusage (0, &rus);
- return rus.ru_utime.tv_sec * 1000 + rus.ru_utime.tv_usec / 1000;
-}
-#else
-#include <time.h>
-
-#ifndef CLOCKS_PER_SEC
-#define CLOCKS_PER_SEC 1000000
-#endif
-
-#if CLOCKS_PER_SEC >= 10000
-#define CLOCK_TO_MILLISEC(cl) ((cl) / (CLOCKS_PER_SEC / 1000))
-#else
-#define CLOCK_TO_MILLISEC(cl) ((cl) * 1000 / CLOCKS_PER_SEC)
-#endif
-
-unsigned long
-cputime ()
-{
- return CLOCK_TO_MILLISEC (clock ());
-}
-#endif
-
-#define M * 1000000
-
-#ifndef CLOCK
-#if defined (__m88k__)
-#define CLOCK 20 M
-#elif defined (__i386__)
-#define CLOCK (16.666667 M)
-#elif defined (__m68k__)
-#define CLOCK (20 M)
-#elif defined (_IBMR2)
-#define CLOCK (25 M)
-#elif defined (__sparc__)
-#define CLOCK (20 M)
-#elif defined (__sun__)
-#define CLOCK (20 M)
-#elif defined (__mips)
-#define CLOCK (40 M)
-#elif defined (__hppa__)
-#define CLOCK (50 M)
-#elif defined (__alpha)
-#define CLOCK (133 M)
-#else
-#error "Don't know CLOCK of your machine"
-#endif
-#endif
-
-#ifndef OPS
-#define OPS 20000000
-#endif
-#ifndef SIZE
-#define SIZE 496
-#endif
-#ifndef TIMES
-#define TIMES OPS/SIZE
-#else
-#undef OPS
-#define OPS (SIZE*TIMES)
-#endif
-
-mp_limb_t
-refmpn_addmul_1 (res_ptr, s1_ptr, s1_size, s2_limb)
- register mp_ptr res_ptr;
- register mp_srcptr s1_ptr;
- mp_size_t s1_size;
- register mp_limb_t s2_limb;
-{
- register mp_limb_t cy_limb;
- register mp_size_t j;
- register mp_limb_t prod_high, prod_low;
- register mp_limb_t x;
-
- /* The loop counter and index J goes from -SIZE to -1. This way
- the loop becomes faster. */
- j = -s1_size;
-
- /* Offset the base pointers to compensate for the negative indices. */
- res_ptr -= j;
- s1_ptr -= j;
-
- cy_limb = 0;
- do
- {
- umul_ppmm (prod_high, prod_low, s1_ptr[j], s2_limb);
-
- prod_low += cy_limb;
- cy_limb = (prod_low < cy_limb) + prod_high;
-
- x = res_ptr[j];
- prod_low = x + prod_low;
- cy_limb += (prod_low < x);
- res_ptr[j] = prod_low;
- }
- while (++j != 0);
-
- return cy_limb;
-}
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mp_limb_t s1[SIZE];
- mp_limb_t dx[SIZE+2];
- mp_limb_t dy[SIZE+2];
- mp_limb_t cyx, cyy;
- int i;
- long t0, t;
- int test;
- mp_limb_t xlimb;
- mp_size_t size;
- double cyc;
-
- for (test = 0; ; test++)
- {
-#ifdef RANDOM
- size = (random () % SIZE + 1);
-#else
- size = SIZE;
-#endif
-
- mpn_random2 (s1, size);
- mpn_random2 (dy+1, size);
-
- if (random () % 0x100 == 0)
- xlimb = 0;
- else
- mpn_random2 (&xlimb, 1);
-
- dy[size+1] = 0x12345678;
- dy[0] = 0x87654321;
-
-#if defined (PRINT) || defined (XPRINT)
- printf ("xlimb=%*lX\n", (int) (2 * sizeof(mp_limb_t)), xlimb);
-#endif
-#ifdef PRINT
- mpn_print (dy+1, size);
- mpn_print (s1, size);
-#endif
-
- MPN_COPY (dx, dy, size+2);
- t0 = cputime();
- for (i = 0; i < TIMES; i++)
- cyx = refmpn_addmul_1 (dx+1, s1, size, xlimb);
- t = cputime() - t0;
-#if TIMES != 1
- cyc = ((double) t * CLOCK) / (OPS * 1000.0);
- printf ("refmpn_addmul_1: %5ldms (%.2f cycles/limb) [%.2f Gb/s]\n",
- t,
- cyc,
- CLOCK/cyc*BITS_PER_MP_LIMB*BITS_PER_MP_LIMB);
-#endif
-
- MPN_COPY (dx, dy, size+2);
- t0 = cputime();
- for (i = 0; i < TIMES; i++)
- cyy = mpn_addmul_1 (dx+1, s1, size, xlimb);
- t = cputime() - t0;
-#if TIMES != 1
- cyc = ((double) t * CLOCK) / (OPS * 1000.0);
- printf ("mpn_addmul_1: %5ldms (%.2f cycles/limb) [%.2f Gb/s]\n",
- t,
- cyc,
- CLOCK/cyc*BITS_PER_MP_LIMB*BITS_PER_MP_LIMB);
-#endif
-
- MPN_COPY (dx, dy, size+2);
- cyx = refmpn_addmul_1 (dx+1, s1, size, xlimb);
- cyy = mpn_addmul_1 (dy+1, s1, size, xlimb);
-
-#ifdef PRINT
- printf ("%*lX ", (int) (2 * sizeof(mp_limb_t)), cyx);
- mpn_print (dx+1, size);
- printf ("%*lX ", (int) (2 * sizeof(mp_limb_t)), cyy);
- mpn_print (dy+1, size);
-#endif
-
-#ifndef NOCHECK
- if (cyx != cyy || mpn_cmp (dx, dy, size+2) != 0
- || dx[size+1] != 0x12345678 || dx[0] != 0x87654321)
- {
-#ifndef PRINT
- printf ("%*lX ", (int) (2 * sizeof(mp_limb_t)), cyx);
- mpn_print (dx+1, size);
- printf ("%*lX ", (int) (2 * sizeof(mp_limb_t)), cyy);
- mpn_print (dy+1, size);
-#endif
- abort();
- }
-#endif
- }
-}
-
-mpn_print (mp_ptr p, mp_size_t size)
-{
- mp_size_t i;
-
- for (i = size - 1; i >= 0; i--)
- {
- printf ("%0*lX", (int) (2 * sizeof(mp_limb_t)), p[i]);
-#ifdef SPACE
- if (i != 0)
- printf (" ");
-#endif
- }
- puts ("");
-}
diff --git a/gnu/lib/libgmp/mpn/tests/divmod_1.c b/gnu/lib/libgmp/mpn/tests/divmod_1.c
deleted file mode 100644
index f6b541e..0000000
--- a/gnu/lib/libgmp/mpn/tests/divmod_1.c
+++ /dev/null
@@ -1,120 +0,0 @@
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-#ifndef USG
-#include <sys/time.h>
-#include <sys/resource.h>
-
-unsigned long
-cputime ()
-{
- struct rusage rus;
-
- getrusage (0, &rus);
- return rus.ru_utime.tv_sec * 1000 + rus.ru_utime.tv_usec / 1000;
-}
-#else
-#include <time.h>
-
-#ifndef CLOCKS_PER_SEC
-#define CLOCKS_PER_SEC 1000000
-#endif
-
-#if CLOCKS_PER_SEC >= 10000
-#define CLOCK_TO_MILLISEC(cl) ((cl) / (CLOCKS_PER_SEC / 1000))
-#else
-#define CLOCK_TO_MILLISEC(cl) ((cl) * 1000 / CLOCKS_PER_SEC)
-#endif
-
-unsigned long
-cputime ()
-{
- return CLOCK_TO_MILLISEC (clock ());
-}
-#endif
-
-#define M * 1000000
-
-#ifndef CLOCK
-#if defined (__m88k__)
-#define CLOCK 20 M
-#elif defined (__i386__)
-#define CLOCK (16.666667 M)
-#elif defined (__m68k__)
-#define CLOCK (20 M)
-#elif defined (_IBMR2)
-#define CLOCK (25 M)
-#elif defined (__sparc__)
-#define CLOCK (20 M)
-#elif defined (__sun__)
-#define CLOCK (20 M)
-#elif defined (__mips)
-#define CLOCK (40 M)
-#elif defined (__hppa__)
-#define CLOCK (50 M)
-#elif defined (__alpha)
-#define CLOCK (133 M)
-#else
-#error "Don't know CLOCK of your machine"
-#endif
-#endif
-
-#ifndef OPS
-#define OPS 20000000
-#endif
-#ifndef SIZE
-#define SIZE 1000
-#endif
-#ifndef TIMES
-#define TIMES OPS/SIZE
-#else
-#undef OPS
-#define OPS (SIZE*TIMES)
-#endif
-
-main ()
-{
- mp_limb_t nptr[SIZE];
- mp_limb_t qptr[SIZE];
- mp_limb_t pptr[SIZE];
- mp_limb_t dlimb, rlimb, plimb;
- mp_size_t nsize, qsize, psize;
- int test;
-
- for (test = 0; ; test++)
- {
-#ifdef RANDOM
- nsize = random () % SIZE + 1;
-#else
- nsize = SIZE;
-#endif
-
- mpn_random2 (nptr, nsize);
-
- mpn_random2 (&dlimb, 1);
- if (dlimb == 0)
- abort ();
-
- rlimb = mpn_divmod_1 (qptr, nptr, nsize, dlimb);
- qsize = nsize - (qptr[nsize - 1] == 0);
- if (qsize == 0)
- {
- plimb = rlimb;
- psize = qsize;
- }
- else
- {
- plimb = mpn_mul_1 (pptr, qptr, qsize, dlimb);
- psize = qsize;
- plimb += mpn_add_1 (pptr, pptr, psize, rlimb);
- }
- if (plimb != 0)
- pptr[psize++] = plimb;
-
-
- if (nsize != psize || mpn_cmp (nptr, pptr, nsize) != 0)
- abort ();
- }
-}
diff --git a/gnu/lib/libgmp/mpn/tests/divrem.c b/gnu/lib/libgmp/mpn/tests/divrem.c
deleted file mode 100644
index 6eafc99..0000000
--- a/gnu/lib/libgmp/mpn/tests/divrem.c
+++ /dev/null
@@ -1,129 +0,0 @@
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-#ifndef USG
-#include <sys/time.h>
-#include <sys/resource.h>
-
-unsigned long
-cputime ()
-{
- struct rusage rus;
-
- getrusage (0, &rus);
- return rus.ru_utime.tv_sec * 1000 + rus.ru_utime.tv_usec / 1000;
-}
-#else
-#include <time.h>
-
-#ifndef CLOCKS_PER_SEC
-#define CLOCKS_PER_SEC 1000000
-#endif
-
-#if CLOCKS_PER_SEC >= 10000
-#define CLOCK_TO_MILLISEC(cl) ((cl) / (CLOCKS_PER_SEC / 1000))
-#else
-#define CLOCK_TO_MILLISEC(cl) ((cl) * 1000 / CLOCKS_PER_SEC)
-#endif
-
-unsigned long
-cputime ()
-{
- return CLOCK_TO_MILLISEC (clock ());
-}
-#endif
-
-#define M * 1000000
-
-#ifndef CLOCK
-#if defined (__m88k__)
-#define CLOCK 20 M
-#elif defined (__i386__)
-#define CLOCK (16.666667 M)
-#elif defined (__m68k__)
-#define CLOCK (20 M)
-#elif defined (_IBMR2)
-#define CLOCK (25 M)
-#elif defined (__sparc__)
-#define CLOCK (20 M)
-#elif defined (__sun__)
-#define CLOCK (20 M)
-#elif defined (__mips)
-#define CLOCK (40 M)
-#elif defined (__hppa__)
-#define CLOCK (50 M)
-#elif defined (__alpha)
-#define CLOCK (133 M)
-#else
-#error "Don't know CLOCK of your machine"
-#endif
-#endif
-
-#ifndef OPS
-#define OPS 20000000
-#endif
-#ifndef SIZE
-#define SIZE 100
-#endif
-#ifndef TIMES
-#define TIMES OPS/SIZE
-#else
-#undef OPS
-#define OPS (SIZE*TIMES)
-#endif
-
-main ()
-{
- mp_limb_t nptr[2 * SIZE];
- mp_limb_t dptr[SIZE];
- mp_limb_t qptr[2 * SIZE];
- mp_limb_t pptr[2 * SIZE];
- mp_limb_t rptr[2 * SIZE];
- mp_size_t nsize, dsize, qsize, rsize, psize;
- int test;
- mp_limb_t qlimb;
-
- for (test = 0; ; test++)
- {
-#ifdef RANDOM
- nsize = random () % (2 * SIZE) + 1;
- dsize = random () % nsize + 1;
-#else
- nsize = 2 * SIZE;
- dsize = SIZE;
-#endif
-
- mpn_random2 (nptr, nsize);
- mpn_random2 (dptr, dsize);
- dptr[dsize - 1] |= (mp_limb_t) 1 << (BITS_PER_MP_LIMB - 1);
-
- MPN_COPY (rptr, nptr, nsize);
- qlimb = mpn_divrem (qptr, (mp_size_t) 0, rptr, nsize, dptr, dsize);
- rsize = dsize;
- qsize = nsize - dsize;
- qptr[qsize] = qlimb;
- qsize += qlimb;
- if (qsize == 0 || qsize > 2 * SIZE)
- {
- continue; /* bogus */
- }
- else
- {
- mp_limb_t cy;
- if (qsize > dsize)
- mpn_mul (pptr, qptr, qsize, dptr, dsize);
- else
- mpn_mul (pptr, dptr, dsize, qptr, qsize);
- psize = qsize + dsize;
- psize -= pptr[psize - 1] == 0;
- cy = mpn_add (pptr, pptr, psize, rptr, rsize);
- pptr[psize] = cy;
- psize += cy;
- }
-
- if (nsize != psize || mpn_cmp (nptr, pptr, nsize) != 0)
- abort ();
- }
-}
diff --git a/gnu/lib/libgmp/mpn/tests/lshift.c b/gnu/lib/libgmp/mpn/tests/lshift.c
deleted file mode 100644
index f50c5dc..0000000
--- a/gnu/lib/libgmp/mpn/tests/lshift.c
+++ /dev/null
@@ -1,226 +0,0 @@
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-#ifndef USG
-#include <sys/time.h>
-#include <sys/resource.h>
-
-unsigned long
-cputime ()
-{
- struct rusage rus;
-
- getrusage (0, &rus);
- return rus.ru_utime.tv_sec * 1000 + rus.ru_utime.tv_usec / 1000;
-}
-#else
-#include <time.h>
-
-#ifndef CLOCKS_PER_SEC
-#define CLOCKS_PER_SEC 1000000
-#endif
-
-#if CLOCKS_PER_SEC >= 10000
-#define CLOCK_TO_MILLISEC(cl) ((cl) / (CLOCKS_PER_SEC / 1000))
-#else
-#define CLOCK_TO_MILLISEC(cl) ((cl) * 1000 / CLOCKS_PER_SEC)
-#endif
-
-unsigned long
-cputime ()
-{
- return CLOCK_TO_MILLISEC (clock ());
-}
-#endif
-
-#define M * 1000000
-
-#ifndef CLOCK
-#if defined (__m88k__)
-#define CLOCK 20 M
-#elif defined (__i386__)
-#define CLOCK (16.666667 M)
-#elif defined (__m68k__)
-#define CLOCK (20 M)
-#elif defined (_IBMR2)
-#define CLOCK (25 M)
-#elif defined (__sparc__)
-#define CLOCK (20 M)
-#elif defined (__sun__)
-#define CLOCK (20 M)
-#elif defined (__mips)
-#define CLOCK (40 M)
-#elif defined (__hppa__)
-#define CLOCK (50 M)
-#elif defined (__alpha)
-#define CLOCK (133 M)
-#else
-#error "Don't know CLOCK of your machine"
-#endif
-#endif
-
-#ifndef OPS
-#define OPS 10000000
-#endif
-#ifndef SIZE
-#define SIZE 496
-#endif
-#ifndef TIMES
-#define TIMES OPS/SIZE
-#else
-#undef OPS
-#define OPS (SIZE*TIMES)
-#endif
-
-mp_limb_t
-refmpn_lshift (wp, up, usize, cnt)
- register mp_ptr wp;
- register mp_srcptr up;
- mp_size_t usize;
- register unsigned int cnt;
-{
- register mp_limb_t high_limb, low_limb;
- register unsigned sh_1, sh_2;
- register mp_size_t i;
- mp_limb_t retval;
-
-#ifdef DEBUG
- if (usize == 0 || cnt == 0)
- abort ();
-#endif
-
- sh_1 = cnt;
-#if 0
- if (sh_1 == 0)
- {
- if (wp != up)
- {
- /* Copy from high end to low end, to allow specified input/output
- overlapping. */
- for (i = usize - 1; i >= 0; i--)
- wp[i] = up[i];
- }
- return 0;
- }
-#endif
-
- wp += 1;
- sh_2 = BITS_PER_MP_LIMB - sh_1;
- i = usize - 1;
- low_limb = up[i];
- retval = low_limb >> sh_2;
- high_limb = low_limb;
- while (--i >= 0)
- {
- low_limb = up[i];
- wp[i] = (high_limb << sh_1) | (low_limb >> sh_2);
- high_limb = low_limb;
- }
- wp[i] = high_limb << sh_1;
-
- return retval;
-}
-
-#ifndef CNT
-#define CNT 4
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mp_limb_t s1[SIZE];
- mp_limb_t dx[SIZE+2];
- mp_limb_t dy[SIZE+2];
- mp_limb_t cyx, cyy;
- int i;
- long t0, t;
- int test;
- int cnt = CNT;
- mp_size_t size;
-
- for (test = 0; ; test++)
- {
-#ifdef RANDOM
- size = (random () % SIZE + 1);
-#else
- size = SIZE;
-#endif
- mpn_random2 (s1, size);
-
- dx[size+1] = 0x12345678;
- dy[size+1] = 0x12345678;
- dx[0] = 0x87654321;
- dy[0] = 0x87654321;
-
-#ifdef PRINT
- mpn_print (s1, size);
-#endif
- t0 = cputime();
- for (i = 0; i < TIMES; i++)
- cyx = refmpn_lshift (dx+1, s1, size, cnt);
- t = cputime() - t0;
-#if TIMES != 1
- printf ("refmpn_lshift: %5ldms (%.2f cycles/limb)\n",
- t,
- ((double) t * CLOCK) / (OPS * 1000.0));
-#endif
-#ifdef PRINT
- printf ("%*lX ", (int) (2 * sizeof(mp_limb_t)), cyx); mpn_print (dx+1, size);
-#endif
-
- t0 = cputime();
- for (i = 0; i < TIMES; i++)
- cyy = mpn_lshift (dx+1, s1, size, cnt);
- t = cputime() - t0;
-#if TIMES != 1
- printf ("mpn_lshift: %5ldms (%.2f cycles/limb)\n",
- t,
- ((double) t * CLOCK) / (OPS * 1000.0));
-#endif
-#ifdef PRINT
- printf ("%*lX ", (int) (2 * sizeof(mp_limb_t)), cyy); mpn_print (dx+1, size);
-#endif
-
-#ifndef NOCHECK
- /* Put garbage in the destination. */
- for (i = 1; i <= size; i++)
- {
- dx[i] = 0x7654321;
- dy[i] = 0x1234567;
- }
-
- cyx = refmpn_lshift (dx+1, s1, size, cnt);
- cyy = mpn_lshift (dy+1, s1, size, cnt);
-
- if (cyx != cyy || mpn_cmp (dx, dy, size+2) != 0
- || dx[size+1] != 0x12345678 || dx[0] != 0x87654321)
- {
-#ifndef PRINT
- printf ("%*lX ", (int) (2 * sizeof(mp_limb_t)), cyx);
- mpn_print (dx+1, size);
- printf ("%*lX ", (int) (2 * sizeof(mp_limb_t)), cyy);
- mpn_print (dy+1, size);
-#endif
- abort();
- }
-#endif
- }
-}
-
-mpn_print (mp_ptr p, mp_size_t size)
-{
- mp_size_t i;
-
- for (i = size - 1; i >= 0; i--)
- {
- printf ("%0*lX", (int) (2 * sizeof(mp_limb_t)), p[i]);
-#ifdef SPACE
- if (i != 0)
- printf (" ");
-#endif
- }
- puts ("");
-}
diff --git a/gnu/lib/libgmp/mpn/tests/mul_1.c b/gnu/lib/libgmp/mpn/tests/mul_1.c
deleted file mode 100644
index 2b522fa..0000000
--- a/gnu/lib/libgmp/mpn/tests/mul_1.c
+++ /dev/null
@@ -1,212 +0,0 @@
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-#ifndef USG
-#include <sys/time.h>
-#include <sys/resource.h>
-
-unsigned long
-cputime ()
-{
- struct rusage rus;
-
- getrusage (0, &rus);
- return rus.ru_utime.tv_sec * 1000 + rus.ru_utime.tv_usec / 1000;
-}
-#else
-#include <time.h>
-
-#ifndef CLOCKS_PER_SEC
-#define CLOCKS_PER_SEC 1000000
-#endif
-
-#if CLOCKS_PER_SEC >= 10000
-#define CLOCK_TO_MILLISEC(cl) ((cl) / (CLOCKS_PER_SEC / 1000))
-#else
-#define CLOCK_TO_MILLISEC(cl) ((cl) * 1000 / CLOCKS_PER_SEC)
-#endif
-
-unsigned long
-cputime ()
-{
- return CLOCK_TO_MILLISEC (clock ());
-}
-#endif
-
-#define M * 1000000
-
-#ifndef CLOCK
-#if defined (__m88k__)
-#define CLOCK 20 M
-#elif defined (__i386__)
-#define CLOCK (16.666667 M)
-#elif defined (__m68k__)
-#define CLOCK (20 M)
-#elif defined (_IBMR2)
-#define CLOCK (25 M)
-#elif defined (__sparc__)
-#define CLOCK (20 M)
-#elif defined (__sun__)
-#define CLOCK (20 M)
-#elif defined (__mips)
-#define CLOCK (40 M)
-#elif defined (__hppa__)
-#define CLOCK (50 M)
-#elif defined (__alpha)
-#define CLOCK (133 M)
-#else
-#error "Don't know CLOCK of your machine"
-#endif
-#endif
-
-#ifndef OPS
-#define OPS 20000000
-#endif
-#ifndef SIZE
-#define SIZE 496
-#endif
-#ifndef TIMES
-#define TIMES OPS/SIZE
-#else
-#undef OPS
-#define OPS (SIZE*TIMES)
-#endif
-
-mp_limb_t
-refmpn_mul_1 (res_ptr, s1_ptr, s1_size, s2_limb)
- register mp_ptr res_ptr;
- register mp_srcptr s1_ptr;
- mp_size_t s1_size;
- register mp_limb_t s2_limb;
-{
- register mp_limb_t cy_limb;
- register mp_size_t j;
- register mp_limb_t prod_high, prod_low;
-
- /* The loop counter and index J goes from -S1_SIZE to -1. This way
- the loop becomes faster. */
- j = -s1_size;
-
- /* Offset the base pointers to compensate for the negative indices. */
- s1_ptr -= j;
- res_ptr -= j;
-
- cy_limb = 0;
- do
- {
- umul_ppmm (prod_high, prod_low, s1_ptr[j], s2_limb);
-
- prod_low += cy_limb;
- cy_limb = (prod_low < cy_limb) + prod_high;
-
- res_ptr[j] = prod_low;
- }
- while (++j != 0);
-
- return cy_limb;
-}
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mp_limb_t s1[SIZE];
- mp_limb_t dx[SIZE+2];
- mp_limb_t dy[SIZE+2];
- mp_limb_t cyx, cyy;
- int i;
- long t0, t;
- int test;
- mp_limb_t xlimb;
- mp_size_t size;
-
- for (test = 0; ; test++)
- {
-#ifdef RANDOM
- size = (random () % SIZE + 1);
-#else
- size = SIZE;
-#endif
-
- mpn_random2 (s1, size);
- mpn_random2 (dy+1, size);
-
- if (random () % 0x100 == 0)
- xlimb = 0;
- else
- mpn_random2 (&xlimb, 1);
-
- dy[size+1] = 0x12345678;
- dy[0] = 0x87654321;
-
-#if defined (PRINT) || defined (XPRINT)
- printf ("xlimb=%*lX\n", (int) (2 * sizeof(mp_limb_t)), xlimb);
-#endif
-#ifdef PRINT
- mpn_print (s1, size);
-#endif
-
- MPN_COPY (dx, dy, size+2);
- t0 = cputime();
- for (i = 0; i < TIMES; i++)
- cyx = refmpn_mul_1 (dx+1, s1, size, xlimb);
- t = cputime() - t0;
-#if TIMES != 1
- printf ("refmpn_mul_1: %5ldms (%.2f cycles/limb)\n",
- t,
- ((double) t * CLOCK) / (OPS * 1000.0));
-#endif
-
- MPN_COPY (dx, dy, size+2);
- t0 = cputime();
- for (i = 0; i < TIMES; i++)
- cyy = mpn_mul_1 (dx+1, s1, size, xlimb);
- t = cputime() - t0;
-#if TIMES != 1
- printf ("mpn_mul_1: %5ldms (%.2f cycles/limb)\n",
- t,
- ((double) t * CLOCK) / (OPS * 1000.0));
-#endif
-
- cyx = refmpn_mul_1 (dx+1, s1, size, xlimb);
- cyy = mpn_mul_1 (dy+1, s1, size, xlimb);
-
-#ifdef PRINT
- printf ("%*lX ", (int) (2 * sizeof(mp_limb_t)), cyx);
- mpn_print (dx+1, size);
- printf ("%*lX ", (int) (2 * sizeof(mp_limb_t)), cyy);
- mpn_print (dy+1, size);
-#endif
-
-#ifndef NOCHECK
- if (cyx != cyy || mpn_cmp (dx, dy, size+2) != 0
- || dx[size+1] != 0x12345678 || dx[0] != 0x87654321)
- {
-#ifndef PRINT
- printf ("%*lX ", (int) (2 * sizeof(mp_limb_t)), cyx);
- mpn_print (dx+1, size);
- printf ("%*lX ", (int) (2 * sizeof(mp_limb_t)), cyy);
- mpn_print (dy+1, size);
-#endif
- abort();
- }
-#endif
- }
-}
-
-mpn_print (mp_ptr p, mp_size_t size)
-{
- mp_size_t i;
-
- for (i = size - 1; i >= 0; i--)
- {
- printf ("%0*lX", (int) (2 * sizeof(mp_limb_t)), p[i]);
-#ifdef SPACE
- if (i != 0)
- printf (" ");
-#endif
- }
- puts ("");
-}
diff --git a/gnu/lib/libgmp/mpn/tests/rshift.c b/gnu/lib/libgmp/mpn/tests/rshift.c
deleted file mode 100644
index 2482bf3..0000000
--- a/gnu/lib/libgmp/mpn/tests/rshift.c
+++ /dev/null
@@ -1,227 +0,0 @@
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-#ifndef USG
-#include <sys/time.h>
-#include <sys/resource.h>
-
-unsigned long
-cputime ()
-{
- struct rusage rus;
-
- getrusage (0, &rus);
- return rus.ru_utime.tv_sec * 1000 + rus.ru_utime.tv_usec / 1000;
-}
-#else
-#include <time.h>
-
-#ifndef CLOCKS_PER_SEC
-#define CLOCKS_PER_SEC 1000000
-#endif
-
-#if CLOCKS_PER_SEC >= 10000
-#define CLOCK_TO_MILLISEC(cl) ((cl) / (CLOCKS_PER_SEC / 1000))
-#else
-#define CLOCK_TO_MILLISEC(cl) ((cl) * 1000 / CLOCKS_PER_SEC)
-#endif
-
-unsigned long
-cputime ()
-{
- return CLOCK_TO_MILLISEC (clock ());
-}
-#endif
-
-#define M * 1000000
-
-#ifndef CLOCK
-#if defined (__m88k__)
-#define CLOCK 20 M
-#elif defined (__i386__)
-#define CLOCK (16.666667 M)
-#elif defined (__m68k__)
-#define CLOCK (20 M)
-#elif defined (_IBMR2)
-#define CLOCK (25 M)
-#elif defined (__sparc__)
-#define CLOCK (20 M)
-#elif defined (__sun__)
-#define CLOCK (20 M)
-#elif defined (__mips)
-#define CLOCK (40 M)
-#elif defined (__hppa__)
-#define CLOCK (50 M)
-#elif defined (__alpha)
-#define CLOCK (133 M)
-#else
-#error "Don't know CLOCK of your machine"
-#endif
-#endif
-
-#ifndef OPS
-#define OPS 10000000
-#endif
-#ifndef SIZE
-#define SIZE 496
-#endif
-#ifndef TIMES
-#define TIMES OPS/SIZE
-#else
-#undef OPS
-#define OPS (SIZE*TIMES)
-#endif
-
-mp_limb_t
-refmpn_rshift (wp, up, usize, cnt)
- register mp_ptr wp;
- register mp_srcptr up;
- mp_size_t usize;
- register unsigned int cnt;
-{
- register mp_limb_t high_limb, low_limb;
- register unsigned sh_1, sh_2;
- register mp_size_t i;
- mp_limb_t retval;
-
-#ifdef DEBUG
- if (usize == 0 || cnt == 0)
- abort ();
-#endif
-
- sh_1 = cnt;
-#if 0
- if (sh_1 == 0)
- {
- if (wp != up)
- {
- /* Copy from low end to high end, to allow specified input/output
- overlapping. */
- for (i = 0; i < usize; i++)
- wp[i] = up[i];
- }
- return 0;
- }
-#endif
-
- wp -= 1;
- sh_2 = BITS_PER_MP_LIMB - sh_1;
- high_limb = up[0];
- retval = high_limb << sh_2;
- low_limb = high_limb;
-
- for (i = 1; i < usize; i++)
- {
- high_limb = up[i];
- wp[i] = (low_limb >> sh_1) | (high_limb << sh_2);
- low_limb = high_limb;
- }
- low_limb >>= sh_1;
- wp[i] = low_limb;
-
- return retval;
-}
-
-#ifndef CNT
-#define CNT 4
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mp_limb_t s1[SIZE];
- mp_limb_t dx[SIZE+2];
- mp_limb_t dy[SIZE+2];
- mp_limb_t cyx, cyy;
- int i;
- long t0, t;
- int test;
- int cnt = CNT;
- mp_size_t size;
-
- for (test = 0; ; test++)
- {
-#ifdef RANDOM
- size = (random () % SIZE + 1);
-#else
- size = SIZE;
-#endif
- mpn_random2 (s1, size);
-
- dx[size+1] = 0x12345678;
- dy[size+1] = 0x12345678;
- dx[0] = 0x87654321;
- dy[0] = 0x87654321;
-
-#ifdef PRINT
- mpn_print (s1, size);
-#endif
- t0 = cputime();
- for (i = 0; i < TIMES; i++)
- cyx = refmpn_rshift (dx+1, s1, size, cnt);
- t = cputime() - t0;
-#if TIMES != 1
- printf ("refmpn_rshift: %5ldms (%.2f cycles/limb)\n",
- t,
- ((double) t * CLOCK) / (OPS * 1000.0));
-#endif
-#ifdef PRINT
- printf ("%*lX ", (int) (2 * sizeof(mp_limb_t)), cyx); mpn_print (dx+1, size);
-#endif
-
- t0 = cputime();
- for (i = 0; i < TIMES; i++)
- cyy = mpn_rshift (dx+1, s1, size, cnt);
- t = cputime() - t0;
-#if TIMES != 1
- printf ("mpn_rshift: %5ldms (%.2f cycles/limb)\n",
- t,
- ((double) t * CLOCK) / (OPS * 1000.0));
-#endif
-#ifdef PRINT
- printf ("%*lX ", (int) (2 * sizeof(mp_limb_t)), cyy); mpn_print (dx+1, size);
-#endif
-
-#ifndef NOCHECK
- /* Put garbage in the destination. */
- for (i = 1; i <= size; i++)
- {
- dx[i] = 0x7654321;
- dy[i] = 0x1234567;
- }
-
- cyx = refmpn_rshift (dx+1, s1, size, cnt);
- cyy = mpn_rshift (dy+1, s1, size, cnt);
-
- if (cyx != cyy || mpn_cmp (dx, dy, size+2) != 0
- || dx[size+1] != 0x12345678 || dx[0] != 0x87654321)
- {
-#ifndef PRINT
- printf ("%*lX ", (int) (2 * sizeof(mp_limb_t)), cyx);
- mpn_print (dx+1, size);
- printf ("%*lX ", (int) (2 * sizeof(mp_limb_t)), cyy);
- mpn_print (dy+1, size);
-#endif
- abort();
- }
-#endif
- }
-}
-
-mpn_print (mp_ptr p, mp_size_t size)
-{
- mp_size_t i;
-
- for (i = size - 1; i >= 0; i--)
- {
- printf ("%0*lX", (int) (2 * sizeof(mp_limb_t)), p[i]);
-#ifdef SPACE
- if (i != 0)
- printf (" ");
-#endif
- }
- puts ("");
-}
diff --git a/gnu/lib/libgmp/mpn/tests/sub_n.c b/gnu/lib/libgmp/mpn/tests/sub_n.c
deleted file mode 100644
index 2b9031b..0000000
--- a/gnu/lib/libgmp/mpn/tests/sub_n.c
+++ /dev/null
@@ -1,211 +0,0 @@
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-
-#ifndef USG
-#include <sys/time.h>
-#include <sys/resource.h>
-
-unsigned long
-cputime ()
-{
- struct rusage rus;
-
- getrusage (0, &rus);
- return rus.ru_utime.tv_sec * 1000 + rus.ru_utime.tv_usec / 1000;
-}
-#else
-#include <time.h>
-
-#ifndef CLOCKS_PER_SEC
-#define CLOCKS_PER_SEC 1000000
-#endif
-
-#if CLOCKS_PER_SEC >= 10000
-#define CLOCK_TO_MILLISEC(cl) ((cl) / (CLOCKS_PER_SEC / 1000))
-#else
-#define CLOCK_TO_MILLISEC(cl) ((cl) * 1000 / CLOCKS_PER_SEC)
-#endif
-
-unsigned long
-cputime ()
-{
- return CLOCK_TO_MILLISEC (clock ());
-}
-#endif
-
-#define M * 1000000
-
-#ifndef CLOCK
-#if defined (__m88k__)
-#define CLOCK 20 M
-#elif defined (__i386__)
-#define CLOCK (16.666667 M)
-#elif defined (__m68k__)
-#define CLOCK (20 M)
-#elif defined (_IBMR2)
-#define CLOCK (25 M)
-#elif defined (__sparc__)
-#define CLOCK (20 M)
-#elif defined (__sun__)
-#define CLOCK (20 M)
-#elif defined (__mips)
-#define CLOCK (40 M)
-#elif defined (__hppa__)
-#define CLOCK (50 M)
-#elif defined (__alpha)
-#define CLOCK (133 M)
-#else
-#error "Don't know CLOCK of your machine"
-#endif
-#endif
-
-#ifndef OPS
-#define OPS 10000000
-#endif
-#ifndef SIZE
-#define SIZE 328
-#endif
-#ifndef TIMES
-#define TIMES OPS/SIZE
-#else
-#undef OPS
-#define OPS (SIZE*TIMES)
-#endif
-
-
-mp_limb_t
-#if __STDC__
-refmpn_sub_n (mp_ptr res_ptr,
- mp_srcptr s1_ptr, mp_srcptr s2_ptr, mp_size_t size)
-#else
-refmpn_sub_n (res_ptr, s1_ptr, s2_ptr, size)
- register mp_ptr res_ptr;
- register mp_srcptr s1_ptr;
- register mp_srcptr s2_ptr;
- mp_size_t size;
-#endif
-{
- register mp_limb_t x, y, cy;
- register mp_size_t j;
-
- /* The loop counter and index J goes from -SIZE to -1. This way
- the loop becomes faster. */
- j = -size;
-
- /* Offset the base pointers to compensate for the negative indices. */
- s1_ptr -= j;
- s2_ptr -= j;
- res_ptr -= j;
-
- cy = 0;
- do
- {
- y = s2_ptr[j];
- x = s1_ptr[j];
- y += cy; /* add previous carry to subtrahend */
- cy = (y < cy); /* get out carry from that addition */
- y = x - y; /* main subtract */
- cy = (y > x) + cy; /* get out carry from the subtract, combine */
- res_ptr[j] = y;
- }
- while (++j != 0);
-
- return cy;
-}
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mp_limb_t s1[SIZE];
- mp_limb_t s2[SIZE];
- mp_limb_t dx[SIZE+1];
- mp_limb_t dy[SIZE+1];
- int cyx, cyy;
- int i;
- long t0, t;
- int test;
- mp_size_t size;
-
- for (test = 0; ; test++)
- {
-#ifdef RANDOM
- size = (random () % SIZE + 1);
-#else
- size = SIZE;
-#endif
-
- mpn_random2 (s1, size);
- mpn_random2 (s2, size);
-
- dx[size] = 0x12345678;
- dy[size] = 0x12345678;
-
-#ifdef PRINT
- mpn_print (s1, size);
- mpn_print (s2, size);
-#endif
- t0 = cputime();
- for (i = 0; i < TIMES; i++)
- cyx = refmpn_sub_n (dx, s1, s2, size);
- t = cputime() - t0;
-#if TIMES != 1
- printf ("refmpn_sub_n: %ldms (%.2f cycles/limb)\n",
- t,
- ((double) t * CLOCK) / (OPS * 1000.0));
-#endif
-#ifdef PRINT
- printf ("%d ", cyx); mpn_print (dx, size);
-#endif
-
- t0 = cputime();
- for (i = 0; i < TIMES; i++)
- cyx = mpn_sub_n (dx, s1, s2, size);
- t = cputime() - t0;
-#if TIMES != 1
- printf ("mpn_sub_n: %ldms (%.2f cycles/limb)\n",
- t,
- ((double) t * CLOCK) / (OPS * 1000.0));
-#endif
-#ifdef PRINT
- printf ("%d ", cyx); mpn_print (dx, size);
-#endif
-
-#ifndef NOCHECK
- /* Put garbage in the destination. */
- for (i = 0; i < size; i++)
- {
- dx[i] = 0x7654321;
- dy[i] = 0x1234567;
- }
-
- cyx = refmpn_sub_n (dx, s1, s2, size);
- cyy = mpn_sub_n (dy, s1, s2, size);
- if (cyx != cyy || mpn_cmp (dx, dy, size) != 0
- || dx[size] != 0x12345678 || dy[size] != 0x12345678)
- {
-#ifndef PRINT
- printf ("%d ", cyx); mpn_print (dx, size);
- printf ("%d ", cyy); mpn_print (dy, size);
-#endif
- abort();
- }
-#endif
- }
-}
-
-mpn_print (mp_ptr p, mp_size_t size)
-{
- mp_size_t i;
-
- for (i = size - 1; i >= 0; i--)
- {
- printf ("%0*lX", (int) (2 * sizeof(mp_limb_t)), p[i]);
-#ifdef SPACE
- if (i != 0)
- printf (" ");
-#endif
- }
- puts ("");
-}
diff --git a/gnu/lib/libgmp/mpn/tests/submul_1.c b/gnu/lib/libgmp/mpn/tests/submul_1.c
deleted file mode 100644
index 0e464e6..0000000
--- a/gnu/lib/libgmp/mpn/tests/submul_1.c
+++ /dev/null
@@ -1,218 +0,0 @@
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-#ifndef USG
-#include <sys/time.h>
-#include <sys/resource.h>
-
-unsigned long
-cputime ()
-{
- struct rusage rus;
-
- getrusage (0, &rus);
- return rus.ru_utime.tv_sec * 1000 + rus.ru_utime.tv_usec / 1000;
-}
-#else
-#include <time.h>
-
-#ifndef CLOCKS_PER_SEC
-#define CLOCKS_PER_SEC 1000000
-#endif
-
-#if CLOCKS_PER_SEC >= 10000
-#define CLOCK_TO_MILLISEC(cl) ((cl) / (CLOCKS_PER_SEC / 1000))
-#else
-#define CLOCK_TO_MILLISEC(cl) ((cl) * 1000 / CLOCKS_PER_SEC)
-#endif
-
-unsigned long
-cputime ()
-{
- return CLOCK_TO_MILLISEC (clock ());
-}
-#endif
-
-#define M * 1000000
-
-#ifndef CLOCK
-#if defined (__m88k__)
-#define CLOCK 20 M
-#elif defined (__i386__)
-#define CLOCK (16.666667 M)
-#elif defined (__m68k__)
-#define CLOCK (20 M)
-#elif defined (_IBMR2)
-#define CLOCK (25 M)
-#elif defined (__sparc__)
-#define CLOCK (20 M)
-#elif defined (__sun__)
-#define CLOCK (20 M)
-#elif defined (__mips)
-#define CLOCK (40 M)
-#elif defined (__hppa__)
-#define CLOCK (50 M)
-#elif defined (__alpha)
-#define CLOCK (133 M)
-#else
-#error "Don't know CLOCK of your machine"
-#endif
-#endif
-
-#ifndef OPS
-#define OPS 20000000
-#endif
-#ifndef SIZE
-#define SIZE 496
-#endif
-#ifndef TIMES
-#define TIMES OPS/SIZE
-#else
-#undef OPS
-#define OPS (SIZE*TIMES)
-#endif
-
-mp_limb_t
-refmpn_submul_1 (res_ptr, s1_ptr, s1_size, s2_limb)
- register mp_ptr res_ptr;
- register mp_srcptr s1_ptr;
- mp_size_t s1_size;
- register mp_limb_t s2_limb;
-{
- register mp_limb_t cy_limb;
- register mp_size_t j;
- register mp_limb_t prod_high, prod_low;
- register mp_limb_t x;
-
- /* The loop counter and index J goes from -SIZE to -1. This way
- the loop becomes faster. */
- j = -s1_size;
-
- /* Offset the base pointers to compensate for the negative indices. */
- res_ptr -= j;
- s1_ptr -= j;
-
- cy_limb = 0;
- do
- {
- umul_ppmm (prod_high, prod_low, s1_ptr[j], s2_limb);
-
- prod_low += cy_limb;
- cy_limb = (prod_low < cy_limb) + prod_high;
-
- x = res_ptr[j];
- prod_low = x - prod_low;
- cy_limb += (prod_low > x);
- res_ptr[j] = prod_low;
- }
- while (++j != 0);
-
- return cy_limb;
-}
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mp_limb_t s1[SIZE];
- mp_limb_t dx[SIZE+2];
- mp_limb_t dy[SIZE+2];
- mp_limb_t cyx, cyy;
- int i;
- long t0, t;
- int test;
- mp_limb_t xlimb;
- mp_size_t size;
-
- for (test = 0; ; test++)
- {
-#ifdef RANDOM
- size = (random () % SIZE + 1);
-#else
- size = SIZE;
-#endif
-
- mpn_random2 (s1, size);
- mpn_random2 (dy+1, size);
-
- if (random () % 0x100 == 0)
- xlimb = 0;
- else
- mpn_random2 (&xlimb, 1);
-
- dy[size+1] = 0x12345678;
- dy[0] = 0x87654321;
-
-#if defined (PRINT) || defined (XPRINT)
- printf ("xlimb=%*lX\n", (int) (2 * sizeof(mp_limb_t)), xlimb);
-#endif
-#ifdef PRINT
- mpn_print (dy+1, size);
- mpn_print (s1, size);
-#endif
-
- MPN_COPY (dx, dy, size+2);
- t0 = cputime();
- for (i = 0; i < TIMES; i++)
- cyx = refmpn_submul_1 (dx+1, s1, size, xlimb);
- t = cputime() - t0;
-#if TIMES != 1
- printf ("refmpn_submul_1: %5ldms (%.2f cycles/limb)\n",
- t,
- ((double) t * CLOCK) / (OPS * 1000.0));
-#endif
-
- MPN_COPY (dx, dy, size+2);
- t0 = cputime();
- for (i = 0; i < TIMES; i++)
- cyy = mpn_submul_1 (dx+1, s1, size, xlimb);
- t = cputime() - t0;
-#if TIMES != 1
- printf ("mpn_submul_1: %5ldms (%.2f cycles/limb)\n",
- t,
- ((double) t * CLOCK) / (OPS * 1000.0));
-#endif
-
- MPN_COPY (dx, dy, size+2);
- cyx = refmpn_submul_1 (dx+1, s1, size, xlimb);
- cyy = mpn_submul_1 (dy+1, s1, size, xlimb);
-
-#ifdef PRINT
- printf ("%*lX ", (int) (2 * sizeof(mp_limb_t)), cyx);
- mpn_print (dx+1, size);
- printf ("%*lX ", (int) (2 * sizeof(mp_limb_t)), cyy);
- mpn_print (dy+1, size);
-#endif
-
-#ifndef NOCHECK
- if (cyx != cyy || mpn_cmp (dx, dy, size+2) != 0
- || dx[size+1] != 0x12345678 || dx[0] != 0x87654321)
- {
-#ifndef PRINT
- printf ("%*lX ", (int) (2 * sizeof(mp_limb_t)), cyx);
- mpn_print (dx+1, size);
- printf ("%*lX ", (int) (2 * sizeof(mp_limb_t)), cyy);
- mpn_print (dy+1, size);
-#endif
- abort();
- }
-#endif
- }
-}
-
-mpn_print (mp_ptr p, mp_size_t size)
-{
- mp_size_t i;
-
- for (i = size - 1; i >= 0; i--)
- {
- printf ("%0*lX", (int) (2 * sizeof(mp_limb_t)), p[i]);
-#ifdef SPACE
- if (i != 0)
- printf (" ");
-#endif
- }
- puts ("");
-}
diff --git a/gnu/lib/libgmp/mpn/tests/tst-addsub.c b/gnu/lib/libgmp/mpn/tests/tst-addsub.c
deleted file mode 100644
index e02b9d5..0000000
--- a/gnu/lib/libgmp/mpn/tests/tst-addsub.c
+++ /dev/null
@@ -1,164 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-
-#define ADD 1
-#define SUB 2
-
-#ifndef METHOD
-#define METHOD ADD
-#endif
-
-#if METHOD == ADD
-#define REFCALL refmpn_add_n
-#define TESTCALL mpn_add_n
-#endif
-
-#if METHOD == SUB
-#define REFCALL refmpn_sub_n
-#define TESTCALL mpn_sub_n
-#endif
-
-mp_limb_t refmpn_add_n ();
-mp_limb_t refmpn_sub_n ();
-
-#define SIZE 100
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mp_size_t alloc_size, max_size, size, i, cumul_size;
- mp_ptr s1, s2, dx, dy;
- int s1_align, s2_align, d_align;
- long pass, n_passes;
- mp_limb_t cx, cy;
-
- max_size = SIZE;
- n_passes = 1000000;
-
- argc--; argv++;
- if (argc)
- {
- max_size = atol (*argv);
- argc--; argv++;
- }
-
- alloc_size = max_size + 32;
- s1 = malloc (alloc_size * BYTES_PER_MP_LIMB);
- s2 = malloc (alloc_size * BYTES_PER_MP_LIMB);
- dx = malloc (alloc_size * BYTES_PER_MP_LIMB);
- dy = malloc (alloc_size * BYTES_PER_MP_LIMB);
-
- cumul_size = 0;
- for (pass = 0; pass < n_passes; pass++)
- {
- cumul_size += size;
- if (cumul_size >= 1000000)
- {
- cumul_size -= 1000000;
- printf ("%d ", pass); fflush (stdout);
- }
- s1_align = random () % 32;
- s2_align = random () % 32;
- d_align = random () % 32;
-
- size = random () % max_size + 1;
-
- mpn_random2 (s1 + s1_align, size);
- mpn_random2 (s2 + s2_align, size);
-
- for (i = 0; i < alloc_size; i++)
- dx[i] = dy[i] = i + 0x9876500;
-
- cx = TESTCALL (dx + d_align, s1 + s1_align, s2 + s2_align, size);
- cy = REFCALL (dy + d_align, s1 + s1_align, s2 + s2_align, size);
-
- if (cx != cy || mpn_cmp (dx, dy, alloc_size) != 0)
- abort ();
- }
-
- printf ("%d passes OK\n", n_passes);
- exit (0);
-}
-
-mp_limb_t
-#if __STDC__
-refmpn_add_n (mp_ptr res_ptr,
- mp_srcptr s1_ptr, mp_srcptr s2_ptr, mp_size_t size)
-#else
-refmpn_add_n (res_ptr, s1_ptr, s2_ptr, size)
- register mp_ptr res_ptr;
- register mp_srcptr s1_ptr;
- register mp_srcptr s2_ptr;
- mp_size_t size;
-#endif
-{
- register mp_limb_t x, y, cy;
- register mp_size_t j;
-
- /* The loop counter and index J goes from -SIZE to -1. This way
- the loop becomes faster. */
- j = -size;
-
- /* Offset the base pointers to compensate for the negative indices. */
- s1_ptr -= j;
- s2_ptr -= j;
- res_ptr -= j;
-
- cy = 0;
- do
- {
- y = s2_ptr[j];
- x = s1_ptr[j];
- y += cy; /* add previous carry to one addend */
- cy = (y < cy); /* get out carry from that addition */
- y = x + y; /* add other addend */
- cy = (y < x) + cy; /* get out carry from that add, combine */
- res_ptr[j] = y;
- }
- while (++j != 0);
-
- return cy;
-}
-
-mp_limb_t
-#if __STDC__
-refmpn_sub_n (mp_ptr res_ptr,
- mp_srcptr s1_ptr, mp_srcptr s2_ptr, mp_size_t size)
-#else
-refmpn_sub_n (res_ptr, s1_ptr, s2_ptr, size)
- register mp_ptr res_ptr;
- register mp_srcptr s1_ptr;
- register mp_srcptr s2_ptr;
- mp_size_t size;
-#endif
-{
- register mp_limb_t x, y, cy;
- register mp_size_t j;
-
- /* The loop counter and index J goes from -SIZE to -1. This way
- the loop becomes faster. */
- j = -size;
-
- /* Offset the base pointers to compensate for the negative indices. */
- s1_ptr -= j;
- s2_ptr -= j;
- res_ptr -= j;
-
- cy = 0;
- do
- {
- y = s2_ptr[j];
- x = s1_ptr[j];
- y += cy; /* add previous carry to subtrahend */
- cy = (y < cy); /* get out carry from that addition */
- y = x - y; /* main subtract */
- cy = (y > x) + cy; /* get out carry from the subtract, combine */
- res_ptr[j] = y;
- }
- while (++j != 0);
-
- return cy;
-}
diff --git a/gnu/lib/libgmp/mpn/x86/add_n.S b/gnu/lib/libgmp/mpn/x86/add_n.S
deleted file mode 100644
index 5bbbd0d..0000000
--- a/gnu/lib/libgmp/mpn/x86/add_n.S
+++ /dev/null
@@ -1,106 +0,0 @@
-/* i80386 __mpn_add_n -- Add two limb vectors of the same length > 0 and store
-sum in a third limb vector.
-
-Copyright (C) 1992, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-/*
- INPUT PARAMETERS
- res_ptr (sp + 4)
- s1_ptr (sp + 8)
- s2_ptr (sp + 12)
- size (sp + 16)
-*/
-
-#include "sysdep.h"
-#include "asm-syntax.h"
-
-.text
- ALIGN (3)
- .globl C_SYMBOL_NAME(__mpn_add_n)
-C_SYMBOL_NAME(__mpn_add_n:)
- pushl %edi
- pushl %esi
-
- movl 12(%esp),%edi /* res_ptr */
- movl 16(%esp),%esi /* s1_ptr */
- movl 20(%esp),%edx /* s2_ptr */
- movl 24(%esp),%ecx /* size */
-
- movl %ecx,%eax
- shrl $3,%ecx /* compute count for unrolled loop */
- negl %eax
- andl $7,%eax /* get index where to start loop */
- jz Loop /* necessary special case for 0 */
- incl %ecx /* adjust loop count */
- shll $2,%eax /* adjustment for pointers... */
- subl %eax,%edi /* ... since they are offset ... */
- subl %eax,%esi /* ... by a constant when we ... */
- subl %eax,%edx /* ... enter the loop */
- shrl $2,%eax /* restore previous value */
-#ifdef PIC
-/* Calculate start address in loop for PIC. Due to limitations in some
- assemblers, Loop-L0-3 cannot be put into the leal */
- call L0
-L0: leal (%eax,%eax,8),%eax
- addl (%esp),%eax
- addl $(Loop-L0-3),%eax
- addl $4,%esp
-#else
-/* Calculate start address in loop for non-PIC. */
- leal (Loop - 3)(%eax,%eax,8),%eax
-#endif
- jmp *%eax /* jump into loop */
- ALIGN (3)
-Loop: movl (%esi),%eax
- adcl (%edx),%eax
- movl %eax,(%edi)
- movl 4(%esi),%eax
- adcl 4(%edx),%eax
- movl %eax,4(%edi)
- movl 8(%esi),%eax
- adcl 8(%edx),%eax
- movl %eax,8(%edi)
- movl 12(%esi),%eax
- adcl 12(%edx),%eax
- movl %eax,12(%edi)
- movl 16(%esi),%eax
- adcl 16(%edx),%eax
- movl %eax,16(%edi)
- movl 20(%esi),%eax
- adcl 20(%edx),%eax
- movl %eax,20(%edi)
- movl 24(%esi),%eax
- adcl 24(%edx),%eax
- movl %eax,24(%edi)
- movl 28(%esi),%eax
- adcl 28(%edx),%eax
- movl %eax,28(%edi)
- leal 32(%edi),%edi
- leal 32(%esi),%esi
- leal 32(%edx),%edx
- decl %ecx
- jnz Loop
-
- sbbl %eax,%eax
- negl %eax
-
- popl %esi
- popl %edi
- ret
diff --git a/gnu/lib/libgmp/mpn/x86/addmul_1.S b/gnu/lib/libgmp/mpn/x86/addmul_1.S
deleted file mode 100644
index c11209d..0000000
--- a/gnu/lib/libgmp/mpn/x86/addmul_1.S
+++ /dev/null
@@ -1,76 +0,0 @@
-/* i80386 __mpn_addmul_1 -- Multiply a limb vector with a limb and add
- the result to a second limb vector.
-
-Copyright (C) 1992, 1994 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-/*
- INPUT PARAMETERS
- res_ptr (sp + 4)
- s1_ptr (sp + 8)
- size (sp + 12)
- s2_limb (sp + 16)
-*/
-
-#include "sysdep.h"
-#include "asm-syntax.h"
-
-#define res_ptr edi
-#define s1_ptr esi
-#define size ecx
-#define s2_limb ebp
-
- TEXT
- ALIGN (3)
- GLOBL C_SYMBOL_NAME(__mpn_addmul_1)
-C_SYMBOL_NAME(__mpn_addmul_1:)
-
- INSN1(push,l ,R(edi))
- INSN1(push,l ,R(esi))
- INSN1(push,l ,R(ebx))
- INSN1(push,l ,R(ebp))
-
- INSN2(mov,l ,R(res_ptr),MEM_DISP(esp,20))
- INSN2(mov,l ,R(s1_ptr),MEM_DISP(esp,24))
- INSN2(mov,l ,R(size),MEM_DISP(esp,28))
- INSN2(mov,l ,R(s2_limb),MEM_DISP(esp,32))
-
- INSN2(lea,l ,R(res_ptr),MEM_INDEX(res_ptr,size,4))
- INSN2(lea,l ,R(s1_ptr),MEM_INDEX(s1_ptr,size,4))
- INSN1(neg,l ,R(size))
- INSN2(xor,l ,R(ebx),R(ebx))
- ALIGN (3)
-Loop:
- INSN2(mov,l ,R(eax),MEM_INDEX(s1_ptr,size,4))
- INSN1(mul,l ,R(s2_limb))
- INSN2(add,l ,R(eax),R(ebx))
- INSN2(adc,l ,R(edx),$0)
- INSN2(add,l ,MEM_INDEX(res_ptr,size,4),R(eax))
- INSN2(adc,l ,R(edx),$0)
- INSN2(mov,l ,R(ebx),R(edx))
-
- INSN1(inc,l ,R(size))
- INSN1(jnz, ,Loop)
- INSN2(mov,l ,R(eax),R(ebx))
-
- INSN1(pop,l ,R(ebp))
- INSN1(pop,l ,R(ebx))
- INSN1(pop,l ,R(esi))
- INSN1(pop,l ,R(edi))
- ret
diff --git a/gnu/lib/libgmp/mpn/x86/lshift.S b/gnu/lib/libgmp/mpn/x86/lshift.S
deleted file mode 100644
index 8173b92..0000000
--- a/gnu/lib/libgmp/mpn/x86/lshift.S
+++ /dev/null
@@ -1,85 +0,0 @@
-/* i80386 __mpn_lshift --
-
-Copyright (C) 1992, 1994 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-/*
- INPUT PARAMETERS
- res_ptr (sp + 4)
- s_ptr (sp + 8)
- size (sp + 12)
- cnt (sp + 16)
-*/
-
-#include "sysdep.h"
-#include "asm-syntax.h"
-
-.text
- ALIGN (3)
- .globl C_SYMBOL_NAME(__mpn_lshift)
-C_SYMBOL_NAME(__mpn_lshift:)
- pushl %edi
- pushl %esi
- pushl %ebx
-
- movl 16(%esp),%edi /* res_ptr */
- movl 20(%esp),%esi /* s_ptr */
- movl 24(%esp),%edx /* size */
- movl 28(%esp),%ecx /* cnt */
-
- subl $4,%esi /* adjust s_ptr */
-
- movl (%esi,%edx,4),%ebx /* read most significant limb */
- xorl %eax,%eax
- shldl %cl,%ebx,%eax /* compute carry limb */
- decl %edx
- jz Lend
- pushl %eax /* push carry limb onto stack */
- testb $1,%edx
- jnz L1 /* enter loop in the middle */
- movl %ebx,%eax
-
- ALIGN (3)
-Loop: movl (%esi,%edx,4),%ebx /* load next lower limb */
- shldl %cl,%ebx,%eax /* compute result limb */
- movl %eax,(%edi,%edx,4) /* store it */
- decl %edx
-L1: movl (%esi,%edx,4),%eax
- shldl %cl,%eax,%ebx
- movl %ebx,(%edi,%edx,4)
- decl %edx
- jnz Loop
-
- shll %cl,%eax /* compute least significant limb */
- movl %eax,(%edi) /* store it */
-
- popl %eax /* pop carry limb */
-
- popl %ebx
- popl %esi
- popl %edi
- ret
-
-Lend: shll %cl,%ebx /* compute least significant limb */
- movl %ebx,(%edi) /* store it */
-
- popl %ebx
- popl %esi
- popl %edi
- ret
diff --git a/gnu/lib/libgmp/mpn/x86/mul_1.S b/gnu/lib/libgmp/mpn/x86/mul_1.S
deleted file mode 100644
index b271399..0000000
--- a/gnu/lib/libgmp/mpn/x86/mul_1.S
+++ /dev/null
@@ -1,75 +0,0 @@
-/* i80386 __mpn_mul_1 -- Multiply a limb vector with a limb and store
- the result in a second limb vector.
-
-Copyright (C) 1992, 1994 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-/*
- INPUT PARAMETERS
- res_ptr (sp + 4)
- s1_ptr (sp + 8)
- size (sp + 12)
- s2_limb (sp + 16)
-*/
-
-#include "sysdep.h"
-#include "asm-syntax.h"
-
-#define res_ptr edi
-#define s1_ptr esi
-#define size ecx
-#define s2_limb ebp
-
- TEXT
- ALIGN (3)
- GLOBL C_SYMBOL_NAME(__mpn_mul_1)
-C_SYMBOL_NAME(__mpn_mul_1:)
-
- INSN1(push,l ,R(edi))
- INSN1(push,l ,R(esi))
- INSN1(push,l ,R(ebx))
- INSN1(push,l ,R(ebp))
-
- INSN2(mov,l ,R(res_ptr),MEM_DISP(esp,20))
- INSN2(mov,l ,R(s1_ptr),MEM_DISP(esp,24))
- INSN2(mov,l ,R(size),MEM_DISP(esp,28))
- INSN2(mov,l ,R(s2_limb),MEM_DISP(esp,32))
-
- INSN2(lea,l ,R(res_ptr),MEM_INDEX(res_ptr,size,4))
- INSN2(lea,l ,R(s1_ptr),MEM_INDEX(s1_ptr,size,4))
- INSN1(neg,l ,R(size))
- INSN2(xor,l ,R(ebx),R(ebx))
- ALIGN (3)
-Loop:
- INSN2(mov,l ,R(eax),MEM_INDEX(s1_ptr,size,4))
- INSN1(mul,l ,R(s2_limb))
- INSN2(add,l ,R(eax),R(ebx))
- INSN2(mov,l ,MEM_INDEX(res_ptr,size,4),R(eax))
- INSN2(adc,l ,R(edx),$0)
- INSN2(mov,l ,R(ebx),R(edx))
-
- INSN1(inc,l ,R(size))
- INSN1(jnz, ,Loop)
- INSN2(mov,l ,R(eax),R(ebx))
-
- INSN1(pop,l ,R(ebp))
- INSN1(pop,l ,R(ebx))
- INSN1(pop,l ,R(esi))
- INSN1(pop,l ,R(edi))
- ret
diff --git a/gnu/lib/libgmp/mpn/x86/pentium/README b/gnu/lib/libgmp/mpn/x86/pentium/README
deleted file mode 100644
index d73b082..0000000
--- a/gnu/lib/libgmp/mpn/x86/pentium/README
+++ /dev/null
@@ -1,26 +0,0 @@
-This directory contains mpn functions optimized for Intel Pentium
-processors.
-
-RELEVANT OPTIMIZATION ISSUES
-
-1. Pentium doesn't allocate cache lines on writes, unlike most other modern
-processors. Since the functions in the mpn class do array writes, we have to
-handle allocating the destination cache lines by reading a word from it in the
-loops, to achieve the best performance.
-
-2. Pairing of memory operations requires that the two issued operations refer
-to different cache banks. The simplest way to insure this is to read/write
-two words from the same object. If we make operations on different objects,
-they might or might not be to the same cache bank.
-
-STATUS
-
-1. mpn_lshift and mpn_rshift run at about 6 cycles/limb, but the Pentium
-documentation indicates that they should take only 43/8 = 5.375 cycles/limb,
-or 5 cycles/limb asymptotically.
-
-2. mpn_add_n and mpn_sub_n run at asymptotically 2 cycles/limb. Due to loop
-overhead and other delays (cache refill?), they run at or near 2.5 cycles/limb.
-
-3. mpn_mul_1, mpn_addmul_1, mpn_submul_1 all run 1 cycle faster than they
-should...
diff --git a/gnu/lib/libgmp/mpn/x86/pentium/add_n.S b/gnu/lib/libgmp/mpn/x86/pentium/add_n.S
deleted file mode 100644
index ac6f281..0000000
--- a/gnu/lib/libgmp/mpn/x86/pentium/add_n.S
+++ /dev/null
@@ -1,130 +0,0 @@
-/* Pentium __mpn_add_n -- Add two limb vectors of the same length > 0 and store
- sum in a third limb vector.
-
-Copyright (C) 1992, 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-/*
- INPUT PARAMETERS
- res_ptr (sp + 4)
- s1_ptr (sp + 8)
- s2_ptr (sp + 12)
- size (sp + 16)
-*/
-
-#include "sysdep.h"
-#include "asm-syntax.h"
-
-.text
- ALIGN (3)
- .globl C_SYMBOL_NAME(__mpn_add_n)
-C_SYMBOL_NAME(__mpn_add_n:)
- pushl %edi
- pushl %esi
- pushl %ebx
- pushl %ebp
-
- movl 20(%esp),%edi /* res_ptr */
- movl 24(%esp),%esi /* s1_ptr */
- movl 28(%esp),%ebp /* s2_ptr */
- movl 32(%esp),%ecx /* size */
-
- movl (%ebp),%ebx
-
- decl %ecx
- movl %ecx,%edx
- shrl $3,%ecx
- andl $7,%edx
- testl %ecx,%ecx /* zero carry flag */
- jz Lend
- pushl %edx
-
- ALIGN (3)
-Loop: movl 28(%edi),%eax /* fetch destination cache line */
- leal 32(%edi),%edi
-
-L1: movl (%esi),%eax
- movl 4(%esi),%edx
- adcl %ebx,%eax
- movl 4(%ebp),%ebx
- adcl %ebx,%edx
- movl 8(%ebp),%ebx
- movl %eax,-32(%edi)
- movl %edx,-28(%edi)
-
-L2: movl 8(%esi),%eax
- movl 12(%esi),%edx
- adcl %ebx,%eax
- movl 12(%ebp),%ebx
- adcl %ebx,%edx
- movl 16(%ebp),%ebx
- movl %eax,-24(%edi)
- movl %edx,-20(%edi)
-
-L3: movl 16(%esi),%eax
- movl 20(%esi),%edx
- adcl %ebx,%eax
- movl 20(%ebp),%ebx
- adcl %ebx,%edx
- movl 24(%ebp),%ebx
- movl %eax,-16(%edi)
- movl %edx,-12(%edi)
-
-L4: movl 24(%esi),%eax
- movl 28(%esi),%edx
- adcl %ebx,%eax
- movl 28(%ebp),%ebx
- adcl %ebx,%edx
- movl 32(%ebp),%ebx
- movl %eax,-8(%edi)
- movl %edx,-4(%edi)
-
- leal 32(%esi),%esi
- leal 32(%ebp),%ebp
- decl %ecx
- jnz Loop
-
- popl %edx
-Lend:
- decl %edx /* test %edx w/o clobbering carry */
- js Lend2
- incl %edx
-Loop2:
- leal 4(%edi),%edi
- movl (%esi),%eax
- adcl %ebx,%eax
- movl 4(%ebp),%ebx
- movl %eax,-4(%edi)
- leal 4(%esi),%esi
- leal 4(%ebp),%ebp
- decl %edx
- jnz Loop2
-Lend2:
- movl (%esi),%eax
- adcl %ebx,%eax
- movl %eax,(%edi)
-
- sbbl %eax,%eax
- negl %eax
-
- popl %ebp
- popl %ebx
- popl %esi
- popl %edi
- ret
diff --git a/gnu/lib/libgmp/mpn/x86/pentium/addmul_1.S b/gnu/lib/libgmp/mpn/x86/pentium/addmul_1.S
deleted file mode 100644
index 7cfa5db..0000000
--- a/gnu/lib/libgmp/mpn/x86/pentium/addmul_1.S
+++ /dev/null
@@ -1,83 +0,0 @@
-/* Pentium __mpn_addmul_1 -- Multiply a limb vector with a limb and add
- the result to a second limb vector.
-
-Copyright (C) 1992, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-/*
- INPUT PARAMETERS
- res_ptr (sp + 4)
- s1_ptr (sp + 8)
- size (sp + 12)
- s2_limb (sp + 16)
-*/
-
-#include "sysdep.h"
-#include "asm-syntax.h"
-
-#define res_ptr edi
-#define s1_ptr esi
-#define size ecx
-#define s2_limb ebp
-
- TEXT
- ALIGN (3)
- GLOBL C_SYMBOL_NAME(__mpn_addmul_1)
-C_SYMBOL_NAME(__mpn_addmul_1:)
-
- INSN1(push,l ,R(edi))
- INSN1(push,l ,R(esi))
- INSN1(push,l ,R(ebx))
- INSN1(push,l ,R(ebp))
-
- INSN2(mov,l ,R(res_ptr),MEM_DISP(esp,20))
- INSN2(mov,l ,R(s1_ptr),MEM_DISP(esp,24))
- INSN2(mov,l ,R(size),MEM_DISP(esp,28))
- INSN2(mov,l ,R(s2_limb),MEM_DISP(esp,32))
-
- INSN2(lea,l ,R(res_ptr),MEM_INDEX(res_ptr,size,4))
- INSN2(lea,l ,R(s1_ptr),MEM_INDEX(s1_ptr,size,4))
- INSN1(neg,l ,R(size))
- INSN2(xor,l ,R(ebx),R(ebx))
- ALIGN (3)
-
-Loop: INSN2(adc,l ,R(ebx),$0)
- INSN2(mov,l ,R(eax),MEM_INDEX(s1_ptr,size,4))
-
- INSN1(mul,l ,R(s2_limb))
-
- INSN2(add,l ,R(eax),R(ebx))
- INSN2(mov,l ,R(ebx),MEM_INDEX(res_ptr,size,4))
-
- INSN2(adc,l ,R(edx),$0)
- INSN2(add,l ,R(ebx),R(eax))
-
- INSN2(mov,l ,MEM_INDEX(res_ptr,size,4),R(ebx))
- INSN1(inc,l ,R(size))
-
- INSN2(mov,l ,R(ebx),R(edx))
- INSN1(jnz, ,Loop)
-
- INSN2(adc,l ,R(ebx),$0)
- INSN2(mov,l ,R(eax),R(ebx))
- INSN1(pop,l ,R(ebp))
- INSN1(pop,l ,R(ebx))
- INSN1(pop,l ,R(esi))
- INSN1(pop,l ,R(edi))
- ret
diff --git a/gnu/lib/libgmp/mpn/x86/pentium/lshift.S b/gnu/lib/libgmp/mpn/x86/pentium/lshift.S
deleted file mode 100644
index b298983..0000000
--- a/gnu/lib/libgmp/mpn/x86/pentium/lshift.S
+++ /dev/null
@@ -1,217 +0,0 @@
-/* Pentium optimized __mpn_lshift --
-
-Copyright (C) 1992, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-/*
- INPUT PARAMETERS
- res_ptr (sp + 4)
- s_ptr (sp + 8)
- size (sp + 12)
- cnt (sp + 16)
-*/
-
-#include "sysdep.h"
-#include "asm-syntax.h"
-
-.text
- ALIGN (3)
- .globl C_SYMBOL_NAME(__mpn_lshift)
-C_SYMBOL_NAME(__mpn_lshift:)
- pushl %edi
- pushl %esi
- pushl %ebx
- pushl %ebp
-
- movl 20(%esp),%edi /* res_ptr */
- movl 24(%esp),%esi /* s_ptr */
- movl 28(%esp),%ebp /* size */
- movl 32(%esp),%ecx /* cnt */
-
-/* We can use faster code for shift-by-1 under certain conditions. */
- cmp $1,%ecx
- jne Lnormal
- leal 4(%esi),%eax
- cmpl %edi,%eax
- jnc Lspecial /* jump if s_ptr + 1 >= res_ptr */
- leal (%esi,%ebp,4),%eax
- cmpl %eax,%edi
- jnc Lspecial /* jump if res_ptr >= s_ptr + size */
-
-Lnormal:
- leal -4(%edi,%ebp,4),%edi
- leal -4(%esi,%ebp,4),%esi
-
- movl (%esi),%edx
- subl $4,%esi
- xorl %eax,%eax
- shldl %cl,%edx,%eax /* compute carry limb */
- pushl %eax /* push carry limb onto stack */
-
- decl %ebp
- pushl %ebp
- shrl $3,%ebp
- jz Lend
-
- movl (%edi),%eax /* fetch destination cache line */
-
- ALIGN (2)
-Loop: movl -28(%edi),%eax /* fetch destination cache line */
- movl %edx,%ebx
-
- movl (%esi),%eax
- movl -4(%esi),%edx
- shldl %cl,%eax,%ebx
- shldl %cl,%edx,%eax
- movl %ebx,(%edi)
- movl %eax,-4(%edi)
-
- movl -8(%esi),%ebx
- movl -12(%esi),%eax
- shldl %cl,%ebx,%edx
- shldl %cl,%eax,%ebx
- movl %edx,-8(%edi)
- movl %ebx,-12(%edi)
-
- movl -16(%esi),%edx
- movl -20(%esi),%ebx
- shldl %cl,%edx,%eax
- shldl %cl,%ebx,%edx
- movl %eax,-16(%edi)
- movl %edx,-20(%edi)
-
- movl -24(%esi),%eax
- movl -28(%esi),%edx
- shldl %cl,%eax,%ebx
- shldl %cl,%edx,%eax
- movl %ebx,-24(%edi)
- movl %eax,-28(%edi)
-
- subl $32,%esi
- subl $32,%edi
- decl %ebp
- jnz Loop
-
-Lend: popl %ebp
- andl $7,%ebp
- jz Lend2
-Loop2: movl (%esi),%eax
- shldl %cl,%eax,%edx
- movl %edx,(%edi)
- movl %eax,%edx
- subl $4,%esi
- subl $4,%edi
- decl %ebp
- jnz Loop2
-
-Lend2: shll %cl,%edx /* compute least significant limb */
- movl %edx,(%edi) /* store it */
-
- popl %eax /* pop carry limb */
-
- popl %ebp
- popl %ebx
- popl %esi
- popl %edi
- ret
-
-/* We loop from least significant end of the arrays, which is only
- permissable if the source and destination don't overlap, since the
- function is documented to work for overlapping source and destination.
-*/
-
-Lspecial:
- movl (%esi),%edx
- addl $4,%esi
-
- decl %ebp
- pushl %ebp
- shrl $3,%ebp
-
- addl %edx,%edx
- incl %ebp
- decl %ebp
- jz LLend
-
- movl (%edi),%eax /* fetch destination cache line */
-
- ALIGN (2)
-LLoop: movl 28(%edi),%eax /* fetch destination cache line */
- movl %edx,%ebx
-
- movl (%esi),%eax
- movl 4(%esi),%edx
- adcl %eax,%eax
- movl %ebx,(%edi)
- adcl %edx,%edx
- movl %eax,4(%edi)
-
- movl 8(%esi),%ebx
- movl 12(%esi),%eax
- adcl %ebx,%ebx
- movl %edx,8(%edi)
- adcl %eax,%eax
- movl %ebx,12(%edi)
-
- movl 16(%esi),%edx
- movl 20(%esi),%ebx
- adcl %edx,%edx
- movl %eax,16(%edi)
- adcl %ebx,%ebx
- movl %edx,20(%edi)
-
- movl 24(%esi),%eax
- movl 28(%esi),%edx
- adcl %eax,%eax
- movl %ebx,24(%edi)
- adcl %edx,%edx
- movl %eax,28(%edi)
-
- leal 32(%esi),%esi /* use leal not to clobber carry */
- leal 32(%edi),%edi
- decl %ebp
- jnz LLoop
-
-LLend: popl %ebp
- sbbl %eax,%eax /* save carry in %eax */
- andl $7,%ebp
- jz LLend2
- addl %eax,%eax /* restore carry from eax */
-LLoop2: movl %edx,%ebx
- movl (%esi),%edx
- adcl %edx,%edx
- movl %ebx,(%edi)
-
- leal 4(%esi),%esi /* use leal not to clobber carry */
- leal 4(%edi),%edi
- decl %ebp
- jnz LLoop2
-
- jmp LL1
-LLend2: addl %eax,%eax /* restore carry from eax */
-LL1: movl %edx,(%edi) /* store last limb */
-
- sbbl %eax,%eax
- negl %eax
-
- popl %ebp
- popl %ebx
- popl %esi
- popl %edi
- ret
diff --git a/gnu/lib/libgmp/mpn/x86/pentium/mul_1.S b/gnu/lib/libgmp/mpn/x86/pentium/mul_1.S
deleted file mode 100644
index 4ac3050..0000000
--- a/gnu/lib/libgmp/mpn/x86/pentium/mul_1.S
+++ /dev/null
@@ -1,79 +0,0 @@
-/* Pentium __mpn_mul_1 -- Multiply a limb vector with a limb and store
- the result in a second limb vector.
-
-Copyright (C) 1992, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-/*
- INPUT PARAMETERS
- res_ptr (sp + 4)
- s1_ptr (sp + 8)
- size (sp + 12)
- s2_limb (sp + 16)
-*/
-
-#include "sysdep.h"
-#include "asm-syntax.h"
-
-#define res_ptr edi
-#define s1_ptr esi
-#define size ecx
-#define s2_limb ebp
-
- TEXT
- ALIGN (3)
- GLOBL C_SYMBOL_NAME(__mpn_mul_1)
-C_SYMBOL_NAME(__mpn_mul_1:)
-
- INSN1(push,l ,R(edi))
- INSN1(push,l ,R(esi))
- INSN1(push,l ,R(ebx))
- INSN1(push,l ,R(ebp))
-
- INSN2(mov,l ,R(res_ptr),MEM_DISP(esp,20))
- INSN2(mov,l ,R(s1_ptr),MEM_DISP(esp,24))
- INSN2(mov,l ,R(size),MEM_DISP(esp,28))
- INSN2(mov,l ,R(s2_limb),MEM_DISP(esp,32))
-
- INSN2(lea,l ,R(res_ptr),MEM_INDEX(res_ptr,size,4))
- INSN2(lea,l ,R(s1_ptr),MEM_INDEX(s1_ptr,size,4))
- INSN1(neg,l ,R(size))
- INSN2(xor,l ,R(ebx),R(ebx))
- ALIGN (3)
-
-Loop: INSN2(adc,l ,R(ebx),$0)
- INSN2(mov,l ,R(eax),MEM_INDEX(s1_ptr,size,4))
-
- INSN1(mul,l ,R(s2_limb))
-
- INSN2(add,l ,R(ebx),R(eax))
-
- INSN2(mov,l ,MEM_INDEX(res_ptr,size,4),R(ebx))
- INSN1(inc,l ,R(size))
-
- INSN2(mov,l ,R(ebx),R(edx))
- INSN1(jnz, ,Loop)
-
- INSN2(adc,l ,R(ebx),$0)
- INSN2(mov,l ,R(eax),R(ebx))
- INSN1(pop,l ,R(ebp))
- INSN1(pop,l ,R(ebx))
- INSN1(pop,l ,R(esi))
- INSN1(pop,l ,R(edi))
- ret
diff --git a/gnu/lib/libgmp/mpn/x86/pentium/rshift.S b/gnu/lib/libgmp/mpn/x86/pentium/rshift.S
deleted file mode 100644
index 38398ed..0000000
--- a/gnu/lib/libgmp/mpn/x86/pentium/rshift.S
+++ /dev/null
@@ -1,217 +0,0 @@
-/* Pentium optimized __mpn_rshift --
-
-Copyright (C) 1992, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-/*
- INPUT PARAMETERS
- res_ptr (sp + 4)
- s_ptr (sp + 8)
- size (sp + 12)
- cnt (sp + 16)
-*/
-
-#include "sysdep.h"
-#include "asm-syntax.h"
-
-.text
- ALIGN (3)
- .globl C_SYMBOL_NAME(__mpn_rshift)
-C_SYMBOL_NAME(__mpn_rshift:)
- pushl %edi
- pushl %esi
- pushl %ebx
- pushl %ebp
-
- movl 20(%esp),%edi /* res_ptr */
- movl 24(%esp),%esi /* s_ptr */
- movl 28(%esp),%ebp /* size */
- movl 32(%esp),%ecx /* cnt */
-
-/* We can use faster code for shift-by-1 under certain conditions. */
- cmp $1,%ecx
- jne Lnormal
- leal 4(%edi),%eax
- cmpl %esi,%eax
- jnc Lspecial /* jump if res_ptr + 1 >= s_ptr */
- leal (%edi,%ebp,4),%eax
- cmpl %eax,%esi
- jnc Lspecial /* jump if s_ptr >= res_ptr + size */
-
-Lnormal:
- movl (%esi),%edx
- addl $4,%esi
- xorl %eax,%eax
- shrdl %cl,%edx,%eax /* compute carry limb */
- pushl %eax /* push carry limb onto stack */
-
- decl %ebp
- pushl %ebp
- shrl $3,%ebp
- jz Lend
-
- movl (%edi),%eax /* fetch destination cache line */
-
- ALIGN (2)
-Loop: movl 28(%edi),%eax /* fetch destination cache line */
- movl %edx,%ebx
-
- movl (%esi),%eax
- movl 4(%esi),%edx
- shrdl %cl,%eax,%ebx
- shrdl %cl,%edx,%eax
- movl %ebx,(%edi)
- movl %eax,4(%edi)
-
- movl 8(%esi),%ebx
- movl 12(%esi),%eax
- shrdl %cl,%ebx,%edx
- shrdl %cl,%eax,%ebx
- movl %edx,8(%edi)
- movl %ebx,12(%edi)
-
- movl 16(%esi),%edx
- movl 20(%esi),%ebx
- shrdl %cl,%edx,%eax
- shrdl %cl,%ebx,%edx
- movl %eax,16(%edi)
- movl %edx,20(%edi)
-
- movl 24(%esi),%eax
- movl 28(%esi),%edx
- shrdl %cl,%eax,%ebx
- shrdl %cl,%edx,%eax
- movl %ebx,24(%edi)
- movl %eax,28(%edi)
-
- addl $32,%esi
- addl $32,%edi
- decl %ebp
- jnz Loop
-
-Lend: popl %ebp
- andl $7,%ebp
- jz Lend2
-Loop2: movl (%esi),%eax
- shrdl %cl,%eax,%edx /* compute result limb */
- movl %edx,(%edi)
- movl %eax,%edx
- addl $4,%esi
- addl $4,%edi
- decl %ebp
- jnz Loop2
-
-Lend2: shrl %cl,%edx /* compute most significant limb */
- movl %edx,(%edi) /* store it */
-
- popl %eax /* pop carry limb */
-
- popl %ebp
- popl %ebx
- popl %esi
- popl %edi
- ret
-
-/* We loop from least significant end of the arrays, which is only
- permissable if the source and destination don't overlap, since the
- function is documented to work for overlapping source and destination.
-*/
-
-Lspecial:
- leal -4(%edi,%ebp,4),%edi
- leal -4(%esi,%ebp,4),%esi
-
- movl (%esi),%edx
- subl $4,%esi
-
- decl %ebp
- pushl %ebp
- shrl $3,%ebp
-
- shrl $1,%edx
- incl %ebp
- decl %ebp
- jz LLend
-
- movl (%edi),%eax /* fetch destination cache line */
-
- ALIGN (2)
-LLoop: movl -28(%edi),%eax /* fetch destination cache line */
- movl %edx,%ebx
-
- movl (%esi),%eax
- movl -4(%esi),%edx
- rcrl $1,%eax
- movl %ebx,(%edi)
- rcrl $1,%edx
- movl %eax,-4(%edi)
-
- movl -8(%esi),%ebx
- movl -12(%esi),%eax
- rcrl $1,%ebx
- movl %edx,-8(%edi)
- rcrl $1,%eax
- movl %ebx,-12(%edi)
-
- movl -16(%esi),%edx
- movl -20(%esi),%ebx
- rcrl $1,%edx
- movl %eax,-16(%edi)
- rcrl $1,%ebx
- movl %edx,-20(%edi)
-
- movl -24(%esi),%eax
- movl -28(%esi),%edx
- rcrl $1,%eax
- movl %ebx,-24(%edi)
- rcrl $1,%edx
- movl %eax,-28(%edi)
-
- leal -32(%esi),%esi /* use leal not to clobber carry */
- leal -32(%edi),%edi
- decl %ebp
- jnz LLoop
-
-LLend: popl %ebp
- sbbl %eax,%eax /* save carry in %eax */
- andl $7,%ebp
- jz LLend2
- addl %eax,%eax /* restore carry from eax */
-LLoop2: movl %edx,%ebx
- movl (%esi),%edx
- rcrl $1,%edx
- movl %ebx,(%edi)
-
- leal -4(%esi),%esi /* use leal not to clobber carry */
- leal -4(%edi),%edi
- decl %ebp
- jnz LLoop2
-
- jmp LL1
-LLend2: addl %eax,%eax /* restore carry from eax */
-LL1: movl %edx,(%edi) /* store last limb */
-
- movl $0,%eax
- rcrl $1,%eax
-
- popl %ebp
- popl %ebx
- popl %esi
- popl %edi
- ret
diff --git a/gnu/lib/libgmp/mpn/x86/pentium/sub_n.S b/gnu/lib/libgmp/mpn/x86/pentium/sub_n.S
deleted file mode 100644
index d1a2bc0..0000000
--- a/gnu/lib/libgmp/mpn/x86/pentium/sub_n.S
+++ /dev/null
@@ -1,130 +0,0 @@
-/* Pentium __mpn_sub_n -- Subtract two limb vectors of the same length > 0
- and store difference in a third limb vector.
-
-Copyright (C) 1992, 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-/*
- INPUT PARAMETERS
- res_ptr (sp + 4)
- s1_ptr (sp + 8)
- s2_ptr (sp + 12)
- size (sp + 16)
-*/
-
-#include "sysdep.h"
-#include "asm-syntax.h"
-
-.text
- ALIGN (3)
- .globl C_SYMBOL_NAME(__mpn_sub_n)
-C_SYMBOL_NAME(__mpn_sub_n:)
- pushl %edi
- pushl %esi
- pushl %ebx
- pushl %ebp
-
- movl 20(%esp),%edi /* res_ptr */
- movl 24(%esp),%esi /* s1_ptr */
- movl 28(%esp),%ebp /* s2_ptr */
- movl 32(%esp),%ecx /* size */
-
- movl (%ebp),%ebx
-
- decl %ecx
- movl %ecx,%edx
- shrl $3,%ecx
- andl $7,%edx
- testl %ecx,%ecx /* zero carry flag */
- jz Lend
- pushl %edx
-
- ALIGN (3)
-Loop: movl 28(%edi),%eax /* fetch destination cache line */
- leal 32(%edi),%edi
-
-L1: movl (%esi),%eax
- movl 4(%esi),%edx
- sbbl %ebx,%eax
- movl 4(%ebp),%ebx
- sbbl %ebx,%edx
- movl 8(%ebp),%ebx
- movl %eax,-32(%edi)
- movl %edx,-28(%edi)
-
-L2: movl 8(%esi),%eax
- movl 12(%esi),%edx
- sbbl %ebx,%eax
- movl 12(%ebp),%ebx
- sbbl %ebx,%edx
- movl 16(%ebp),%ebx
- movl %eax,-24(%edi)
- movl %edx,-20(%edi)
-
-L3: movl 16(%esi),%eax
- movl 20(%esi),%edx
- sbbl %ebx,%eax
- movl 20(%ebp),%ebx
- sbbl %ebx,%edx
- movl 24(%ebp),%ebx
- movl %eax,-16(%edi)
- movl %edx,-12(%edi)
-
-L4: movl 24(%esi),%eax
- movl 28(%esi),%edx
- sbbl %ebx,%eax
- movl 28(%ebp),%ebx
- sbbl %ebx,%edx
- movl 32(%ebp),%ebx
- movl %eax,-8(%edi)
- movl %edx,-4(%edi)
-
- leal 32(%esi),%esi
- leal 32(%ebp),%ebp
- decl %ecx
- jnz Loop
-
- popl %edx
-Lend:
- decl %edx /* test %edx w/o clobbering carry */
- js Lend2
- incl %edx
-Loop2:
- leal 4(%edi),%edi
- movl (%esi),%eax
- sbbl %ebx,%eax
- movl 4(%ebp),%ebx
- movl %eax,-4(%edi)
- leal 4(%esi),%esi
- leal 4(%ebp),%ebp
- decl %edx
- jnz Loop2
-Lend2:
- movl (%esi),%eax
- sbbl %ebx,%eax
- movl %eax,(%edi)
-
- sbbl %eax,%eax
- negl %eax
-
- popl %ebp
- popl %ebx
- popl %esi
- popl %edi
- ret
diff --git a/gnu/lib/libgmp/mpn/x86/pentium/submul_1.S b/gnu/lib/libgmp/mpn/x86/pentium/submul_1.S
deleted file mode 100644
index adf2d63..0000000
--- a/gnu/lib/libgmp/mpn/x86/pentium/submul_1.S
+++ /dev/null
@@ -1,83 +0,0 @@
-/* Pentium __mpn_submul_1 -- Multiply a limb vector with a limb and subtract
- the result from a second limb vector.
-
-Copyright (C) 1992, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-/*
- INPUT PARAMETERS
- res_ptr (sp + 4)
- s1_ptr (sp + 8)
- size (sp + 12)
- s2_limb (sp + 16)
-*/
-
-#include "sysdep.h"
-#include "asm-syntax.h"
-
-#define res_ptr edi
-#define s1_ptr esi
-#define size ecx
-#define s2_limb ebp
-
- TEXT
- ALIGN (3)
- GLOBL C_SYMBOL_NAME(__mpn_submul_1)
-C_SYMBOL_NAME(__mpn_submul_1:)
-
- INSN1(push,l ,R(edi))
- INSN1(push,l ,R(esi))
- INSN1(push,l ,R(ebx))
- INSN1(push,l ,R(ebp))
-
- INSN2(mov,l ,R(res_ptr),MEM_DISP(esp,20))
- INSN2(mov,l ,R(s1_ptr),MEM_DISP(esp,24))
- INSN2(mov,l ,R(size),MEM_DISP(esp,28))
- INSN2(mov,l ,R(s2_limb),MEM_DISP(esp,32))
-
- INSN2(lea,l ,R(res_ptr),MEM_INDEX(res_ptr,size,4))
- INSN2(lea,l ,R(s1_ptr),MEM_INDEX(s1_ptr,size,4))
- INSN1(neg,l ,R(size))
- INSN2(xor,l ,R(ebx),R(ebx))
- ALIGN (3)
-
-Loop: INSN2(adc,l ,R(ebx),$0)
- INSN2(mov,l ,R(eax),MEM_INDEX(s1_ptr,size,4))
-
- INSN1(mul,l ,R(s2_limb))
-
- INSN2(add,l ,R(eax),R(ebx))
- INSN2(mov,l ,R(ebx),MEM_INDEX(res_ptr,size,4))
-
- INSN2(adc,l ,R(edx),$0)
- INSN2(sub,l ,R(ebx),R(eax))
-
- INSN2(mov,l ,MEM_INDEX(res_ptr,size,4),R(ebx))
- INSN1(inc,l ,R(size))
-
- INSN2(mov,l ,R(ebx),R(edx))
- INSN1(jnz, ,Loop)
-
- INSN2(adc,l ,R(ebx),$0)
- INSN2(mov,l ,R(eax),R(ebx))
- INSN1(pop,l ,R(ebp))
- INSN1(pop,l ,R(ebx))
- INSN1(pop,l ,R(esi))
- INSN1(pop,l ,R(edi))
- ret
diff --git a/gnu/lib/libgmp/mpn/x86/rshift.S b/gnu/lib/libgmp/mpn/x86/rshift.S
deleted file mode 100644
index 9abbf9a..0000000
--- a/gnu/lib/libgmp/mpn/x86/rshift.S
+++ /dev/null
@@ -1,87 +0,0 @@
-/* i80386 __mpn_rshift --
-
-Copyright (C) 1992, 1994 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-/*
- INPUT PARAMETERS
- res_ptr (sp + 4)
- s_ptr (sp + 8)
- size (sp + 12)
- cnt (sp + 16)
-*/
-
-#include "sysdep.h"
-#include "asm-syntax.h"
-
-.text
- ALIGN (3)
- .globl C_SYMBOL_NAME(__mpn_rshift)
-C_SYMBOL_NAME(__mpn_rshift:)
- pushl %edi
- pushl %esi
- pushl %ebx
-
- movl 16(%esp),%edi /* res_ptr */
- movl 20(%esp),%esi /* s_ptr */
- movl 24(%esp),%edx /* size */
- movl 28(%esp),%ecx /* cnt */
-
- leal -4(%edi,%edx,4),%edi
- leal (%esi,%edx,4),%esi
- negl %edx
-
- movl (%esi,%edx,4),%ebx /* read least significant limb */
- xorl %eax,%eax
- shrdl %cl,%ebx,%eax /* compute carry limb */
- incl %edx
- jz Lend
- pushl %eax /* push carry limb onto stack */
- testb $1,%edx
- jnz L1 /* enter loop in the middle */
- movl %ebx,%eax
-
- ALIGN (3)
-Loop: movl (%esi,%edx,4),%ebx /* load next higher limb */
- shrdl %cl,%ebx,%eax /* compute result limb */
- movl %eax,(%edi,%edx,4) /* store it */
- incl %edx
-L1: movl (%esi,%edx,4),%eax
- shrdl %cl,%eax,%ebx
- movl %ebx,(%edi,%edx,4)
- incl %edx
- jnz Loop
-
- shrl %cl,%eax /* compute most significant limb */
- movl %eax,(%edi) /* store it */
-
- popl %eax /* pop carry limb */
-
- popl %ebx
- popl %esi
- popl %edi
- ret
-
-Lend: shrl %cl,%ebx /* compute most significant limb */
- movl %ebx,(%edi) /* store it */
-
- popl %ebx
- popl %esi
- popl %edi
- ret
diff --git a/gnu/lib/libgmp/mpn/x86/sub_n.S b/gnu/lib/libgmp/mpn/x86/sub_n.S
deleted file mode 100644
index 1774f3a..0000000
--- a/gnu/lib/libgmp/mpn/x86/sub_n.S
+++ /dev/null
@@ -1,106 +0,0 @@
-/* i80386 __mpn_sub_n -- Add two limb vectors of the same length > 0 and store
- sum in a third limb vector.
-
-Copyright (C) 1992, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-/*
- INPUT PARAMETERS
- res_ptr (sp + 4)
- s1_ptr (sp + 8)
- s2_ptr (sp + 12)
- size (sp + 16)
-*/
-
-#include "sysdep.h"
-#include "asm-syntax.h"
-
-.text
- ALIGN (3)
- .globl C_SYMBOL_NAME(__mpn_sub_n)
-C_SYMBOL_NAME(__mpn_sub_n:)
- pushl %edi
- pushl %esi
-
- movl 12(%esp),%edi /* res_ptr */
- movl 16(%esp),%esi /* s1_ptr */
- movl 20(%esp),%edx /* s2_ptr */
- movl 24(%esp),%ecx /* size */
-
- movl %ecx,%eax
- shrl $3,%ecx /* compute count for unrolled loop */
- negl %eax
- andl $7,%eax /* get index where to start loop */
- jz Loop /* necessary special case for 0 */
- incl %ecx /* adjust loop count */
- shll $2,%eax /* adjustment for pointers... */
- subl %eax,%edi /* ... since they are offset ... */
- subl %eax,%esi /* ... by a constant when we ... */
- subl %eax,%edx /* ... enter the loop */
- shrl $2,%eax /* restore previous value */
-#ifdef PIC
-/* Calculate start address in loop for PIC. Due to limitations in some
- assemblers, Loop-L0-3 cannot be put into the leal */
- call L0
-L0: leal (%eax,%eax,8),%eax
- addl (%esp),%eax
- addl $(Loop-L0-3),%eax
- addl $4,%esp
-#else
-/* Calculate start address in loop for non-PIC. */
- leal (Loop - 3)(%eax,%eax,8),%eax
-#endif
- jmp *%eax /* jump into loop */
- ALIGN (3)
-Loop: movl (%esi),%eax
- sbbl (%edx),%eax
- movl %eax,(%edi)
- movl 4(%esi),%eax
- sbbl 4(%edx),%eax
- movl %eax,4(%edi)
- movl 8(%esi),%eax
- sbbl 8(%edx),%eax
- movl %eax,8(%edi)
- movl 12(%esi),%eax
- sbbl 12(%edx),%eax
- movl %eax,12(%edi)
- movl 16(%esi),%eax
- sbbl 16(%edx),%eax
- movl %eax,16(%edi)
- movl 20(%esi),%eax
- sbbl 20(%edx),%eax
- movl %eax,20(%edi)
- movl 24(%esi),%eax
- sbbl 24(%edx),%eax
- movl %eax,24(%edi)
- movl 28(%esi),%eax
- sbbl 28(%edx),%eax
- movl %eax,28(%edi)
- leal 32(%edi),%edi
- leal 32(%esi),%esi
- leal 32(%edx),%edx
- decl %ecx
- jnz Loop
-
- sbbl %eax,%eax
- negl %eax
-
- popl %esi
- popl %edi
- ret
diff --git a/gnu/lib/libgmp/mpn/x86/submul_1.S b/gnu/lib/libgmp/mpn/x86/submul_1.S
deleted file mode 100644
index 730e732..0000000
--- a/gnu/lib/libgmp/mpn/x86/submul_1.S
+++ /dev/null
@@ -1,76 +0,0 @@
-/* i80386 __mpn_submul_1 -- Multiply a limb vector with a limb and subtract
- the result from a second limb vector.
-
-Copyright (C) 1992, 1994 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-/*
- INPUT PARAMETERS
- res_ptr (sp + 4)
- s1_ptr (sp + 8)
- size (sp + 12)
- s2_limb (sp + 16)
-*/
-
-#include "sysdep.h"
-#include "asm-syntax.h"
-
-#define res_ptr edi
-#define s1_ptr esi
-#define size ecx
-#define s2_limb ebp
-
- TEXT
- ALIGN (3)
- GLOBL C_SYMBOL_NAME(__mpn_submul_1)
-C_SYMBOL_NAME(__mpn_submul_1:)
-
- INSN1(push,l ,R(edi))
- INSN1(push,l ,R(esi))
- INSN1(push,l ,R(ebx))
- INSN1(push,l ,R(ebp))
-
- INSN2(mov,l ,R(res_ptr),MEM_DISP(esp,20))
- INSN2(mov,l ,R(s1_ptr),MEM_DISP(esp,24))
- INSN2(mov,l ,R(size),MEM_DISP(esp,28))
- INSN2(mov,l ,R(s2_limb),MEM_DISP(esp,32))
-
- INSN2(lea,l ,R(res_ptr),MEM_INDEX(res_ptr,size,4))
- INSN2(lea,l ,R(s1_ptr),MEM_INDEX(s1_ptr,size,4))
- INSN1(neg,l ,R(size))
- INSN2(xor,l ,R(ebx),R(ebx))
- ALIGN (3)
-Loop:
- INSN2(mov,l ,R(eax),MEM_INDEX(s1_ptr,size,4))
- INSN1(mul,l ,R(s2_limb))
- INSN2(add,l ,R(eax),R(ebx))
- INSN2(adc,l ,R(edx),$0)
- INSN2(sub,l ,MEM_INDEX(res_ptr,size,4),R(eax))
- INSN2(adc,l ,R(edx),$0)
- INSN2(mov,l ,R(ebx),R(edx))
-
- INSN1(inc,l ,R(size))
- INSN1(jnz, ,Loop)
- INSN2(mov,l ,R(eax),R(ebx))
-
- INSN1(pop,l ,R(ebp))
- INSN1(pop,l ,R(ebx))
- INSN1(pop,l ,R(esi))
- INSN1(pop,l ,R(edi))
- ret
diff --git a/gnu/lib/libgmp/mpn/x86/syntax.h b/gnu/lib/libgmp/mpn/x86/syntax.h
deleted file mode 100644
index c53c73c..0000000
--- a/gnu/lib/libgmp/mpn/x86/syntax.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* asm.h -- Definitions for x86 syntax variations.
-
-Copyright (C) 1992, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-
-#undef ALIGN
-
-#if defined (BSD_SYNTAX) || defined (ELF_SYNTAX)
-#define R(r) %r
-#define MEM(base)(base)
-#define MEM_DISP(base,displacement)displacement(R(base))
-#define MEM_INDEX(base,index,size)(R(base),R(index),size)
-#ifdef __STDC__
-#define INSN1(mnemonic,size_suffix,dst)mnemonic##size_suffix dst
-#define INSN2(mnemonic,size_suffix,dst,src)mnemonic##size_suffix src,dst
-#else
-#define INSN1(mnemonic,size_suffix,dst)mnemonic/**/size_suffix dst
-#define INSN2(mnemonic,size_suffix,dst,src)mnemonic/**/size_suffix src,dst
-#endif
-#define TEXT .text
-#if defined (BSD_SYNTAX)
-#define ALIGN(log) .align log
-#endif
-#if defined (ELF_SYNTAX)
-#define ALIGN(log) .align 1<<(log)
-#endif
-#define GLOBL .globl
-#endif
-
-#ifdef INTEL_SYNTAX
-#define R(r) r
-#define MEM(base)[base]
-#define MEM_DISP(base,displacement)[base+(displacement)]
-#define MEM_INDEX(base,index,size)[base+index*size]
-#define INSN1(mnemonic,size_suffix,dst)mnemonic dst
-#define INSN2(mnemonic,size_suffix,dst,src)mnemonic dst,src
-#define TEXT .text
-#define ALIGN(log) .align log
-#define GLOBL .globl
-#endif
-
-#ifdef BROKEN_ALIGN
-#undef ALIGN
-#define ALIGN(log) .align log,0x90
-#endif
diff --git a/gnu/lib/libgmp/mpq/Makefile.in b/gnu/lib/libgmp/mpq/Makefile.in
deleted file mode 100644
index f34ffb9..0000000
--- a/gnu/lib/libgmp/mpq/Makefile.in
+++ /dev/null
@@ -1,81 +0,0 @@
-# Makefile for GNU MP/mpq functions
-# Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-# This file is part of the GNU MP Library.
-
-# The GNU MP Library is free software; you can redistribute it and/or modify
-# it under the terms of the GNU Library General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or (at your
-# option) any later version.
-
-# The GNU MP Library 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 Library General Public
-# License for more details.
-
-# You should have received a copy of the GNU Library General Public License
-# along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-# MA 02111-1307, USA.
-
-srcdir = .
-
-CC = gcc
-
-CFLAGS = -g -O
-AR = ar
-AR_FLAGS = rc
-SHELL = /bin/sh
-
-#### host and target specific makefile fragments come in here.
-###
-
-MPQ_SRCS = add.c canonicalize.c clear.c cmp.c cmp_ui.c div.c get_d.c \
- get_den.c get_num.c init.c inv.c mul.c neg.c set.c set_den.c set_num.c \
- set_si.c set_ui.c sub.c equal.c set_z.c
-MPQ_OBJS = add.o canonicalize.o clear.o cmp.o cmp_ui.o div.o get_d.o \
- get_den.o get_num.o init.o inv.o mul.o neg.o set.o set_den.o set_num.o \
- set_si.o set_ui.o sub.o equal.o set_z.o
-
-INCLUDES = -I. -I.. -I../mpn -I$(srcdir)/..
-
-libmpq.a: Makefile $(MPQ_OBJS)
- rm -f $@
- $(AR) $(AR_FLAGS) $@ $(MPQ_OBJS)
-
-.c.o:
- $(CC) -c $(INCLUDES) $(CFLAGS) $(XCFLAGS) $<
-
-clean mostlyclean:
- rm -f *.o libmpq.a
- -cd tests; $(MAKE) $@
-distclean maintainer-clean: clean
- rm -f Makefile config.status
- -cd tests; $(MAKE) $@
-
-Makefile: $(srcdir)/Makefile.in
- $(SHELL) ./config.status
-
-H = $(srcdir)/../gmp.h $(srcdir)/../gmp-impl.h ../mpn/gmp-mparam.h
-
-add.o: $(srcdir)/add.c $(H)
-canonicalize.o: $(srcdir)/canonicalize.c $(H)
-clear.o: $(srcdir)/clear.c $(H)
-cmp.o: $(srcdir)/cmp.c $(H) $(srcdir)/../longlong.h
-cmp_ui.o: $(srcdir)/cmp_ui.c $(H)
-div.o: $(srcdir)/div.c $(H)
-equal.o: $(srcdir)/equal.c $(H)
-get_d.o: $(srcdir)/get_d.c $(H) $(srcdir)/../longlong.h
-get_den.o: $(srcdir)/get_den.c $(H)
-get_num.o: $(srcdir)/get_num.c $(H)
-init.o: $(srcdir)/init.c $(H)
-inv.o: $(srcdir)/inv.c $(H)
-mul.o: $(srcdir)/mul.c $(H)
-neg.o: $(srcdir)/neg.c $(H)
-set.o: $(srcdir)/set.c $(H)
-set_den.o: $(srcdir)/set_den.c $(H)
-set_num.o: $(srcdir)/set_num.c $(H)
-set_si.o: $(srcdir)/set_si.c $(H)
-set_ui.o: $(srcdir)/set_ui.c $(H)
-set_z.o: $(srcdir)/set_z.c $(H)
-sub.o: $(srcdir)/sub.c $(H)
diff --git a/gnu/lib/libgmp/mpq/add.c b/gnu/lib/libgmp/mpq/add.c
deleted file mode 100644
index 6b98b46..0000000
--- a/gnu/lib/libgmp/mpq/add.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/* mpq_add -- add two rational numbers.
-
-Copyright (C) 1991, 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpq_add (mpq_ptr rop, mpq_srcptr op1, mpq_srcptr op2)
-#else
-mpq_add (rop, op1, op2)
- mpq_ptr rop;
- mpq_srcptr op1;
- mpq_srcptr op2;
-#endif
-{
- mpz_t gcd;
- mpz_t tmp1, tmp2;
- mp_size_t op1_num_size = ABS (op1->_mp_num._mp_size);
- mp_size_t op1_den_size = ABS (op1->_mp_den._mp_size);
- mp_size_t op2_num_size = ABS (op2->_mp_num._mp_size);
- mp_size_t op2_den_size = ABS (op2->_mp_den._mp_size);
- TMP_DECL (marker);
-
- TMP_MARK (marker);
- MPZ_TMP_INIT (gcd, MIN (op1_den_size, op2_den_size));
- MPZ_TMP_INIT (tmp1, op1_num_size + op2_den_size);
- MPZ_TMP_INIT (tmp2, op2_num_size + op1_den_size);
-
- /* ROP might be identical to either operand, so don't store the
- result there until we are finished with the input operands. We
- dare to overwrite the numerator of ROP when we are finished
- with the numerators of OP1 and OP2. */
-
- mpz_gcd (gcd, &(op1->_mp_den), &(op2->_mp_den));
- if (gcd->_mp_size > 1 || gcd->_mp_d[0] != 1)
- {
- mpz_t t;
-
- mpz_divexact (tmp1, &(op2->_mp_den), gcd);
- mpz_mul (tmp1, &(op1->_mp_num), tmp1);
-
- mpz_divexact (tmp2, &(op1->_mp_den), gcd);
- mpz_mul (tmp2, &(op2->_mp_num), tmp2);
-
- MPZ_TMP_INIT (t, MAX (ABS (tmp1->_mp_size), ABS (tmp2->_mp_size)) + 1);
-
- mpz_add (t, tmp1, tmp2);
- mpz_divexact (tmp1, &(op1->_mp_den), gcd);
- mpz_gcd (gcd, t, gcd);
-
- mpz_divexact (&(rop->_mp_num), t, gcd);
-
- mpz_divexact (tmp2, &(op2->_mp_den), gcd);
- mpz_mul (&(rop->_mp_den), tmp1, tmp2);
- }
- else
- {
- /* The common divisor is 1. This is the case (for random input) with
- probability 6/(pi**2). */
- mpz_mul (tmp1, &(op1->_mp_num), &(op2->_mp_den));
- mpz_mul (tmp2, &(op2->_mp_num), &(op1->_mp_den));
- mpz_add (&(rop->_mp_num), tmp1, tmp2);
- mpz_mul (&(rop->_mp_den), &(op1->_mp_den), &(op2->_mp_den));
- }
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpq/canonicalize.c b/gnu/lib/libgmp/mpq/canonicalize.c
deleted file mode 100644
index 901e6eb..0000000
--- a/gnu/lib/libgmp/mpq/canonicalize.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* mpq_canonicalize(op) -- Remove common factors of the denominator and
- numerator in OP.
-
-Copyright (C) 1991, 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpq_canonicalize (MP_RAT *op)
-#else
-mpq_canonicalize (op)
- MP_RAT *op;
-#endif
-{
- mpz_t gcd;
- TMP_DECL (marker);
-
- TMP_MARK (marker);
-
- /* ??? Dunno if the 1+ is needed. */
- MPZ_TMP_INIT (gcd, 1 + MAX (ABS (op->_mp_num._mp_size),
- ABS (op->_mp_den._mp_size)));
-
- mpz_gcd (gcd, &(op->_mp_num), &(op->_mp_den));
- mpz_divexact (&(op->_mp_num), &(op->_mp_num), gcd);
- mpz_divexact (&(op->_mp_den), &(op->_mp_den), gcd);
-
- if (op->_mp_den._mp_size < 0)
- {
- op->_mp_num._mp_size = -op->_mp_num._mp_size;
- op->_mp_den._mp_size = -op->_mp_den._mp_size;
- }
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpq/clear.c b/gnu/lib/libgmp/mpq/clear.c
deleted file mode 100644
index 2837cf2..0000000
--- a/gnu/lib/libgmp/mpq/clear.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* mpq_clear -- free the space occupied by a MP_RAT.
-
-Copyright (C) 1991, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpq_clear (MP_RAT *m)
-#else
-mpq_clear (m)
- MP_RAT *m;
-#endif
-{
- (*_mp_free_func) (m->_mp_num._mp_d,
- m->_mp_num._mp_alloc * BYTES_PER_MP_LIMB);
- (*_mp_free_func) (m->_mp_den._mp_d,
- m->_mp_den._mp_alloc * BYTES_PER_MP_LIMB);
-}
diff --git a/gnu/lib/libgmp/mpq/cmp.c b/gnu/lib/libgmp/mpq/cmp.c
deleted file mode 100644
index fc530e3..0000000
--- a/gnu/lib/libgmp/mpq/cmp.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/* mpq_cmp(u,v) -- Compare U, V. Return postive, zero, or negative
- based on if U > V, U == V, or U < V.
-
-Copyright (C) 1991, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-int
-#if __STDC__
-mpq_cmp (const MP_RAT *op1, const MP_RAT *op2)
-#else
-mpq_cmp (op1, op2)
- const MP_RAT *op1;
- const MP_RAT *op2;
-#endif
-{
- mp_size_t num1_size = op1->_mp_num._mp_size;
- mp_size_t den1_size = op1->_mp_den._mp_size;
- mp_size_t num2_size = op2->_mp_num._mp_size;
- mp_size_t den2_size = op2->_mp_den._mp_size;
- mp_size_t tmp1_size, tmp2_size;
- mp_ptr tmp1_ptr, tmp2_ptr;
- mp_size_t num1_sign;
- int cc;
- TMP_DECL (marker);
-
- if (num1_size == 0)
- return -num2_size;
- if (num2_size == 0)
- return num1_size;
- if ((num1_size ^ num2_size) < 0) /* I.e. are the signs different? */
- return num1_size;
-
- num1_sign = num1_size;
- num1_size = ABS (num1_size);
- num2_size = ABS (num2_size);
-
- tmp1_size = num1_size + den2_size;
- tmp2_size = num2_size + den1_size;
-
- /* 1. Check to see if we can tell which operand is larger by just looking at
- the number of limbs. */
-
- /* NUM1 x DEN2 is either TMP1_SIZE limbs or TMP1_SIZE-1 limbs.
- Same for NUM1 x DEN1 with respect to TMP2_SIZE. */
- if (tmp1_size > tmp2_size + 1)
- /* NUM1 x DEN2 is surely larger in magnitude than NUM2 x DEN1. */
- return num1_sign;
- if (tmp2_size > tmp1_size + 1)
- /* NUM1 x DEN2 is surely smaller in magnitude than NUM2 x DEN1. */
- return -num1_sign;
-
- /* 2. Same, but compare the number of significant bits. */
- {
- int cnt1, cnt2;
- unsigned long int bits1, bits2;
-
- count_leading_zeros (cnt1, op1->_mp_num._mp_d[num1_size - 1]);
- count_leading_zeros (cnt2, op2->_mp_den._mp_d[den2_size - 1]);
- bits1 = tmp1_size * BITS_PER_MP_LIMB - cnt1 - cnt2;
-
- count_leading_zeros (cnt1, op2->_mp_num._mp_d[num2_size - 1]);
- count_leading_zeros (cnt2, op1->_mp_den._mp_d[den1_size - 1]);
- bits2 = tmp2_size * BITS_PER_MP_LIMB - cnt1 - cnt2;
-
- if (bits1 > bits2 + 1)
- return num1_sign;
- if (bits2 > bits1 + 1)
- return -num1_sign;
- }
-
- /* 3. Finally, cross multiply and compare. */
-
- TMP_MARK (marker);
- tmp1_ptr = (mp_ptr) TMP_ALLOC (tmp1_size * BYTES_PER_MP_LIMB);
- tmp2_ptr = (mp_ptr) TMP_ALLOC (tmp2_size * BYTES_PER_MP_LIMB);
-
- if (num1_size >= den2_size)
- tmp1_size -= 0 == mpn_mul (tmp1_ptr,
- op1->_mp_num._mp_d, num1_size,
- op2->_mp_den._mp_d, den2_size);
- else
- tmp1_size -= 0 == mpn_mul (tmp1_ptr,
- op2->_mp_den._mp_d, den2_size,
- op1->_mp_num._mp_d, num1_size);
-
- if (num2_size >= den1_size)
- tmp2_size -= 0 == mpn_mul (tmp2_ptr,
- op2->_mp_num._mp_d, num2_size,
- op1->_mp_den._mp_d, den1_size);
- else
- tmp2_size -= 0 == mpn_mul (tmp2_ptr,
- op1->_mp_den._mp_d, den1_size,
- op2->_mp_num._mp_d, num2_size);
-
-
- cc = tmp1_size - tmp2_size != 0
- ? tmp1_size - tmp2_size : mpn_cmp (tmp1_ptr, tmp2_ptr, tmp1_size);
- TMP_FREE (marker);
- return num1_sign < 0 ? -cc : cc;
-}
diff --git a/gnu/lib/libgmp/mpq/cmp_ui.c b/gnu/lib/libgmp/mpq/cmp_ui.c
deleted file mode 100644
index bdecec5..0000000
--- a/gnu/lib/libgmp/mpq/cmp_ui.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/* mpq_cmp_ui(u,vn,vd) -- Compare U with Vn/Vd. Return positive, zero, or
- negative based on if U > V, U == V, or U < V. Vn and Vd may have
- common factors.
-
-Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-/* gmp.h defines a macro for mpq_cmp_ui. */
-#undef mpq_cmp_ui
-
-int
-#if __STDC__
-mpq_cmp_ui (const MP_RAT *op1, unsigned long int num2, unsigned long int den2)
-#else
-mpq_cmp_ui (op1, num2, den2)
- const MP_RAT *op1;
- unsigned long int num2;
- unsigned long int den2;
-#endif
-{
- mp_size_t num1_size = op1->_mp_num._mp_size;
- mp_size_t den1_size = op1->_mp_den._mp_size;
- mp_size_t tmp1_size, tmp2_size;
- mp_ptr tmp1_ptr, tmp2_ptr;
- mp_size_t num1_sign;
- mp_limb_t cy_limb;
- int cc;
- TMP_DECL (marker);
-
- if (num1_size == 0)
- return -(num2 != 0);
- if (num1_size < 0)
- return num1_size;
- if (num2 == 0)
- return num1_size;
-
- num1_sign = num1_size;
- num1_size = ABS (num1_size);
-
- /* NUM1 x DEN2 is either TMP1_SIZE limbs or TMP1_SIZE-1 limbs.
- Same for NUM1 x DEN1 with respect to TMP2_SIZE. */
- if (num1_size > den1_size + 1)
- /* NUM1 x DEN2 is surely larger in magnitude than NUM2 x DEN1. */
- return num1_sign;
- if (den1_size > num1_sign + 1)
- /* NUM1 x DEN2 is surely smaller in magnitude than NUM2 x DEN1. */
- return -num1_sign;
-
- TMP_MARK (marker);
- tmp1_ptr = (mp_ptr) TMP_ALLOC ((num1_size + 1) * BYTES_PER_MP_LIMB);
- tmp2_ptr = (mp_ptr) TMP_ALLOC ((den1_size + 1) * BYTES_PER_MP_LIMB);
-
- cy_limb = mpn_mul_1 (tmp1_ptr, op1->_mp_num._mp_d, num1_size, den2);
- tmp1_ptr[num1_size] = cy_limb;
- tmp1_size = num1_size + (cy_limb != 0);
-
- cy_limb = mpn_mul_1 (tmp2_ptr, op1->_mp_den._mp_d, den1_size, num2);
- tmp2_ptr[den1_size] = cy_limb;
- tmp2_size = den1_size + (cy_limb != 0);
-
- cc = tmp1_size - tmp2_size != 0
- ? tmp1_size - tmp2_size : mpn_cmp (tmp1_ptr, tmp2_ptr, tmp1_size);
- TMP_FREE (marker);
- return (num1_sign < 0) ? -cc : cc;
-}
diff --git a/gnu/lib/libgmp/mpq/configure.in b/gnu/lib/libgmp/mpq/configure.in
deleted file mode 100644
index b5d501c..0000000
--- a/gnu/lib/libgmp/mpq/configure.in
+++ /dev/null
@@ -1,12 +0,0 @@
-# This file is a shell script fragment that supplies the information
-# necessary for a configure script to process the program in
-# this directory. For more information, look at ../configure.
-
-configdirs=tests
-srctrigger=cmp_ui.c
-srcname="GNU Multi-Precision library/mpq"
-
-# per-host:
-
-# per-target:
-
diff --git a/gnu/lib/libgmp/mpq/div.c b/gnu/lib/libgmp/mpq/div.c
deleted file mode 100644
index cd1f3881..0000000
--- a/gnu/lib/libgmp/mpq/div.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/* mpq_div -- divide two rational numbers.
-
-Copyright (C) 1991, 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpq_div (mpq_ptr quot, mpq_srcptr op1, mpq_srcptr op2)
-#else
-mpq_div (quot, op1, op2)
- mpq_ptr quot;
- mpq_srcptr op1;
- mpq_srcptr op2;
-#endif
-{
- mpz_t gcd1, gcd2;
- mpz_t tmp1, tmp2;
- mpz_t numtmp;
-
- mpz_init (gcd1);
- mpz_init (gcd2);
- mpz_init (tmp1);
- mpz_init (tmp2);
- mpz_init (numtmp);
-
- /* QUOT might be identical to either operand, so don't store the
- result there until we are finished with the input operands. We
- dare to overwrite the numerator of QUOT when we are finished
- with the numerators of OP1 and OP2. */
-
- mpz_gcd (gcd1, &(op1->_mp_num), &(op2->_mp_num));
- mpz_gcd (gcd2, &(op2->_mp_den), &(op1->_mp_den));
-
- if (gcd1->_mp_size > 1 || gcd1->_mp_d[0] != 1)
- mpz_divexact (tmp1, &(op1->_mp_num), gcd1);
- else
- mpz_set (tmp1, &(op1->_mp_num));
-
- if (gcd2->_mp_size > 1 || gcd2->_mp_d[0] != 1)
- mpz_divexact (tmp2, &(op2->_mp_den), gcd2);
- else
- mpz_set (tmp2, &(op2->_mp_den));
-
- mpz_mul (numtmp, tmp1, tmp2);
-
- if (gcd1->_mp_size > 1 || gcd1->_mp_d[0] != 1)
- mpz_divexact (tmp1, &(op2->_mp_num), gcd1);
- else
- mpz_set (tmp1, &(op2->_mp_num));
-
- if (gcd2->_mp_size > 1 || gcd2->_mp_d[0] != 1)
- mpz_divexact (tmp2, &(op1->_mp_den), gcd2);
- else
- mpz_set (tmp2, &(op1->_mp_den));
-
- mpz_mul (&(quot->_mp_den), tmp1, tmp2);
-
- /* We needed to go via NUMTMP to take care of QUOT being the same
- as either input operands. Now move NUMTMP to QUOT->_mp_num. */
- mpz_set (&(quot->_mp_num), numtmp);
-
- /* Keep the denominator positive. */
- if (quot->_mp_den._mp_size < 0)
- {
- quot->_mp_den._mp_size = -quot->_mp_den._mp_size;
- quot->_mp_num._mp_size = -quot->_mp_num._mp_size;
- }
-
- mpz_clear (numtmp);
- mpz_clear (tmp2);
- mpz_clear (tmp1);
- mpz_clear (gcd2);
- mpz_clear (gcd1);
-}
diff --git a/gnu/lib/libgmp/mpq/equal.c b/gnu/lib/libgmp/mpq/equal.c
deleted file mode 100644
index 2b4bb5b..0000000
--- a/gnu/lib/libgmp/mpq/equal.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* mpq_equal(u,v) -- Compare U, V. Return non-zero if they are equal, zero
- if they are non-equal.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-int
-#if __STDC__
-mpq_equal (mpq_srcptr op1, mpq_srcptr op2)
-#else
-mpq_equal (op1, op2)
- mpq_srcptr op1;
- mpq_srcptr op2;
-#endif
-{
- mp_size_t num1_size = op1->_mp_num._mp_size;
- mp_size_t den1_size = op1->_mp_den._mp_size;
- mp_size_t num2_size = op2->_mp_num._mp_size;
- mp_size_t den2_size = op2->_mp_den._mp_size;
-
- return (num1_size == num2_size && den1_size == den2_size
- && mpn_cmp (op1->_mp_num._mp_d, op2->_mp_num._mp_d, num1_size) == 0
- && mpn_cmp (op1->_mp_den._mp_d, op2->_mp_den._mp_d, den1_size) == 0);
-}
diff --git a/gnu/lib/libgmp/mpq/get_d.c b/gnu/lib/libgmp/mpq/get_d.c
deleted file mode 100644
index cb4e800..0000000
--- a/gnu/lib/libgmp/mpq/get_d.c
+++ /dev/null
@@ -1,151 +0,0 @@
-/* double mpq_get_d (mpq_t src) -- Return the double approximation to SRC.
-
-Copyright (C) 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-/* Algorithm:
- 1. Develop >= n bits of src.num / src.den, where n is the number of bits
- in a double. This (partial) division will use all bits from the
- denominator.
- 2. Use the remainder to determine how to round the result.
- 3. Assign the integral result to a temporary double.
- 4. Scale the temporary double, and return the result.
-
- An alternative algorithm, that would be faster:
- 0. Let n be somewhat larger than the number of significant bits in a double.
- 1. Extract the most significant n bits of the denominator, and an equal
- number of bits from the numerator.
- 2. Interpret the extracted numbers as integers, call them a and b
- respectively, and develop n bits of the fractions ((a + 1) / b) and
- (a / (b + 1)) using mpn_divrem.
- 3. If the computed values are identical UP TO THE POSITION WE CARE ABOUT,
- we are done. If they are different, repeat the algorithm from step 1,
- but first let n = n * 2.
- 4. If we end up using all bits from the numerator and denominator, fall
- back to the first algorithm above.
- 5. Just to make life harder, The computation of a + 1 and b + 1 above
- might give carry-out... Needs special handling. It might work to
- subtract 1 in both cases instead.
-*/
-
-double
-#if __STDC__
-mpq_get_d (const MP_RAT *src)
-#else
-mpq_get_d (src)
- const MP_RAT *src;
-#endif
-{
- mp_ptr np, dp;
- mp_ptr rp;
- mp_size_t nsize = src->_mp_num._mp_size;
- mp_size_t dsize = src->_mp_den._mp_size;
- mp_size_t qsize, rsize;
- mp_size_t sign_quotient = nsize ^ dsize;
- unsigned normalization_steps;
- mp_limb_t qlimb;
-#define N_QLIMBS (1 + (sizeof (double) + BYTES_PER_MP_LIMB-1) / BYTES_PER_MP_LIMB)
- mp_limb_t qp[N_QLIMBS + 1];
- TMP_DECL (marker);
-
- if (nsize == 0)
- return 0.0;
-
- TMP_MARK (marker);
- nsize = ABS (nsize);
- dsize = ABS (dsize);
- np = src->_mp_num._mp_d;
- dp = src->_mp_den._mp_d;
-
- rsize = dsize + N_QLIMBS;
- rp = (mp_ptr) TMP_ALLOC ((rsize + 1) * BYTES_PER_MP_LIMB);
-
- count_leading_zeros (normalization_steps, dp[dsize - 1]);
-
- /* Normalize the denominator, i.e. make its most significant bit set by
- shifting it NORMALIZATION_STEPS bits to the left. Also shift the
- numerator the same number of steps (to keep the quotient the same!). */
- if (normalization_steps != 0)
- {
- mp_ptr tp;
- mp_limb_t nlimb;
-
- /* Shift up the denominator setting the most significant bit of
- the most significant limb. Use temporary storage not to clobber
- the original contents of the denominator. */
- tp = (mp_ptr) TMP_ALLOC (dsize * BYTES_PER_MP_LIMB);
- mpn_lshift (tp, dp, dsize, normalization_steps);
- dp = tp;
-
- if (rsize > nsize)
- {
- MPN_ZERO (rp, rsize - nsize);
- nlimb = mpn_lshift (rp + (rsize - nsize),
- np, nsize, normalization_steps);
- }
- else
- {
- nlimb = mpn_lshift (rp, np + (nsize - rsize),
- rsize, normalization_steps);
- }
- if (nlimb != 0)
- {
- rp[rsize] = nlimb;
- rsize++;
- }
- }
- else
- {
- if (rsize > nsize)
- {
- MPN_ZERO (rp, rsize - nsize);
- MPN_COPY (rp + (rsize - nsize), np, nsize);
- }
- else
- {
- MPN_COPY (rp, np + (nsize - rsize), rsize);
- }
- }
-
- qlimb = mpn_divmod (qp, rp, rsize, dp, dsize);
- qsize = rsize - dsize;
- if (qlimb)
- {
- qp[qsize] = qlimb;
- qsize++;
- }
-
- {
- double res;
- mp_size_t i;
-
- res = qp[qsize - 1];
- for (i = qsize - 2; i >= 0; i--)
- res = res * MP_BASE_AS_DOUBLE + qp[i];
-
- res = __gmp_scale2 (res, BITS_PER_MP_LIMB * (nsize - dsize - N_QLIMBS));
-
- TMP_FREE (marker);
- return sign_quotient >= 0 ? res : -res;
- }
-}
diff --git a/gnu/lib/libgmp/mpq/get_den.c b/gnu/lib/libgmp/mpq/get_den.c
deleted file mode 100644
index fc5e387..0000000
--- a/gnu/lib/libgmp/mpq/get_den.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* mpq_get_den(den,rat_src) -- Set DEN to the denominator of RAT_SRC.
-
-Copyright (C) 1991, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpq_get_den (MP_INT *den, const MP_RAT *src)
-#else
-mpq_get_den (den, src)
- MP_INT *den;
- const MP_RAT *src;
-#endif
-{
- mp_size_t size = src->_mp_den._mp_size;
-
- if (den->_mp_alloc < size)
- _mpz_realloc (den, size);
-
- MPN_COPY (den->_mp_d, src->_mp_den._mp_d, size);
- den->_mp_size = size;
-}
diff --git a/gnu/lib/libgmp/mpq/get_num.c b/gnu/lib/libgmp/mpq/get_num.c
deleted file mode 100644
index 61f812f..0000000
--- a/gnu/lib/libgmp/mpq/get_num.c
+++ /dev/null
@@ -1,42 +0,0 @@
- /* mpq_get_num(num,rat_src) -- Set NUM to the numerator of RAT_SRC.
-
-Copyright (C) 1991, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpq_get_num (MP_INT *num, const MP_RAT *src)
-#else
-mpq_get_num (num, src)
- MP_INT *num;
- const MP_RAT *src;
-#endif
-{
- mp_size_t size = src->_mp_num._mp_size;
- mp_size_t abs_size = ABS (size);
-
- if (num->_mp_alloc < abs_size)
- _mpz_realloc (num, abs_size);
-
- MPN_COPY (num->_mp_d, src->_mp_num._mp_d, abs_size);
- num->_mp_size = size;
-}
diff --git a/gnu/lib/libgmp/mpq/init.c b/gnu/lib/libgmp/mpq/init.c
deleted file mode 100644
index ae6d8b3..0000000
--- a/gnu/lib/libgmp/mpq/init.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* mpq_init -- Make a new rational number with value 0/1.
-
-Copyright (C) 1991, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpq_init (MP_RAT *x)
-#else
-mpq_init (x)
- MP_RAT *x;
-#endif
-{
- x->_mp_num._mp_alloc = 1;
- x->_mp_num._mp_d = (mp_ptr) (*_mp_allocate_func) (BYTES_PER_MP_LIMB);
- x->_mp_num._mp_size = 0;
- x->_mp_den._mp_alloc = 1;
- x->_mp_den._mp_d = (mp_ptr) (*_mp_allocate_func) (BYTES_PER_MP_LIMB);
- x->_mp_den._mp_d[0] = 1;
- x->_mp_den._mp_size = 1;
-}
diff --git a/gnu/lib/libgmp/mpq/inv.c b/gnu/lib/libgmp/mpq/inv.c
deleted file mode 100644
index 745c78d..0000000
--- a/gnu/lib/libgmp/mpq/inv.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* mpq_inv(dest,src) -- invert a rational number, i.e. set DEST to SRC
- with the numerator and denominator swapped.
-
-Copyright (C) 1991, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpq_inv (MP_RAT *dest, const MP_RAT *src)
-#else
-mpq_inv (dest, src)
- MP_RAT *dest;
- const MP_RAT *src;
-#endif
-{
- mp_size_t num_size = src->_mp_num._mp_size;
- mp_size_t den_size = src->_mp_den._mp_size;
-
- if (num_size == 0)
- num_size = 1 / num_size; /* Divide by zero! */
-
- if (num_size < 0)
- {
- num_size = -num_size;
- den_size = -den_size;
- }
- dest->_mp_den._mp_size = num_size;
- dest->_mp_num._mp_size = den_size;
-
- /* If dest == src we may just swap the numerator and denominator, but
- we have to ensure the new denominator is positive. */
-
- if (dest == src)
- {
- mp_size_t alloc = dest->_mp_num._mp_alloc;
- mp_ptr limb_ptr = dest->_mp_num._mp_d;
-
- dest->_mp_num._mp_alloc = dest->_mp_den._mp_alloc;
- dest->_mp_num._mp_d = dest->_mp_den._mp_d;
-
- dest->_mp_den._mp_alloc = alloc;
- dest->_mp_den._mp_d = limb_ptr;
- }
- else
- {
- den_size = ABS (den_size);
- if (dest->_mp_num._mp_alloc < den_size)
- _mpz_realloc (&(dest->_mp_num), den_size);
-
- if (dest->_mp_den._mp_alloc < num_size)
- _mpz_realloc (&(dest->_mp_den), num_size);
-
- MPN_COPY (dest->_mp_num._mp_d, src->_mp_den._mp_d, den_size);
- MPN_COPY (dest->_mp_den._mp_d, src->_mp_num._mp_d, num_size);
- }
-}
diff --git a/gnu/lib/libgmp/mpq/mul.c b/gnu/lib/libgmp/mpq/mul.c
deleted file mode 100644
index 35f960c..0000000
--- a/gnu/lib/libgmp/mpq/mul.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/* mpq_mul -- mutiply two rational numbers.
-
-Copyright (C) 1991, 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpq_mul (mpq_ptr prod, mpq_srcptr op1, mpq_srcptr op2)
-#else
-mpq_mul (prod, op1, op2)
- mpq_ptr prod;
- mpq_srcptr op1;
- mpq_srcptr op2;
-#endif
-{
- mpz_t gcd1, gcd2;
- mpz_t tmp1, tmp2;
-
- mpz_init (gcd1);
- mpz_init (gcd2);
- mpz_init (tmp1);
- mpz_init (tmp2);
-
- /* PROD might be identical to either operand, so don't store the
- result there until we are finished with the input operands. We
- dare to overwrite the numerator of PROD when we are finished
- with the numerators of OP1 and OP2. */
-
- mpz_gcd (gcd1, &(op1->_mp_num), &(op2->_mp_den));
- mpz_gcd (gcd2, &(op2->_mp_num), &(op1->_mp_den));
-
- if (gcd1->_mp_size > 1 || gcd1->_mp_d[0] != 1)
- mpz_divexact (tmp1, &(op1->_mp_num), gcd1);
- else
- mpz_set (tmp1, &(op1->_mp_num));
-
- if (gcd2->_mp_size > 1 || gcd2->_mp_d[0] != 1)
- mpz_divexact (tmp2, &(op2->_mp_num), gcd2);
- else
- mpz_set (tmp2, &(op2->_mp_num));
-
- mpz_mul (&(prod->_mp_num), tmp1, tmp2);
-
- if (gcd1->_mp_size > 1 || gcd1->_mp_d[0] != 1)
- mpz_divexact (tmp1, &(op2->_mp_den), gcd1);
- else
- mpz_set (tmp1, &(op2->_mp_den));
-
- if (gcd2->_mp_size > 1 || gcd2->_mp_d[0] != 1)
- mpz_divexact (tmp2, &(op1->_mp_den), gcd2);
- else
- mpz_set (tmp2, &(op1->_mp_den));
-
- mpz_mul (&(prod->_mp_den), tmp1, tmp2);
-
- mpz_clear (tmp2);
- mpz_clear (tmp1);
- mpz_clear (gcd2);
- mpz_clear (gcd1);
-}
diff --git a/gnu/lib/libgmp/mpq/neg.c b/gnu/lib/libgmp/mpq/neg.c
deleted file mode 100644
index ac54d27..0000000
--- a/gnu/lib/libgmp/mpq/neg.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* mpq_neg(dst, src) -- Assign the negated value of SRC to DST.
-
-Copyright (C) 1991, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpq_neg (MP_RAT *dst, const MP_RAT *src)
-#else
-mpq_neg (dst, src)
- MP_RAT *dst;
- const MP_RAT *src;
-#endif
-{
- mpz_neg (&dst->_mp_num, &src->_mp_num);
- mpz_set (&dst->_mp_den, &src->_mp_den);
-}
diff --git a/gnu/lib/libgmp/mpq/set.c b/gnu/lib/libgmp/mpq/set.c
deleted file mode 100644
index ef85639..0000000
--- a/gnu/lib/libgmp/mpq/set.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* mpq_set(dest,src) -- Set DEST to SRC.
-
-Copyright (C) 1991, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpq_set (MP_RAT *dest, const MP_RAT *src)
-#else
-mpq_set (dest, src)
- MP_RAT *dest;
- const MP_RAT *src;
-#endif
-{
- mp_size_t num_size, den_size;
- mp_size_t abs_num_size;
-
- num_size = src->_mp_num._mp_size;
- abs_num_size = ABS (num_size);
- if (dest->_mp_num._mp_alloc < abs_num_size)
- _mpz_realloc (&(dest->_mp_num), abs_num_size);
- MPN_COPY (dest->_mp_num._mp_d, src->_mp_num._mp_d, abs_num_size);
- dest->_mp_num._mp_size = num_size;
-
- den_size = src->_mp_den._mp_size;
- if (dest->_mp_den._mp_alloc < den_size)
- _mpz_realloc (&(dest->_mp_den), den_size);
- MPN_COPY (dest->_mp_den._mp_d, src->_mp_den._mp_d, den_size);
- dest->_mp_den._mp_size = den_size;
-}
diff --git a/gnu/lib/libgmp/mpq/set_den.c b/gnu/lib/libgmp/mpq/set_den.c
deleted file mode 100644
index 4586c89..0000000
--- a/gnu/lib/libgmp/mpq/set_den.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* mpq_set_den(dest,den) -- Set the denominator of DEST from DEN.
-
-Copyright (C) 1991, 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpq_set_den (MP_RAT *dest, const MP_INT *den)
-#else
-mpq_set_den (dest, den)
- MP_RAT *dest;
- const MP_INT *den;
-#endif
-{
- mp_size_t size = den->_mp_size;
- mp_size_t abs_size = ABS (size);
-
- if (dest->_mp_den._mp_alloc < abs_size)
- _mpz_realloc (&(dest->_mp_den), abs_size);
-
- MPN_COPY (dest->_mp_den._mp_d, den->_mp_d, abs_size);
- dest->_mp_den._mp_size = abs_size;
-}
diff --git a/gnu/lib/libgmp/mpq/set_num.c b/gnu/lib/libgmp/mpq/set_num.c
deleted file mode 100644
index ce918ce..0000000
--- a/gnu/lib/libgmp/mpq/set_num.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* mpq_set_num(dest,num) -- Set the numerator of DEST from NUM.
-
-Copyright (C) 1991, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpq_set_num (MP_RAT *dest, const MP_INT *num)
-#else
-mpq_set_num (dest, num)
- MP_RAT *dest;
- const MP_INT *num;
-#endif
-{
- mp_size_t size = num->_mp_size;
- mp_size_t abs_size = ABS (size);
-
- if (dest->_mp_num._mp_alloc < abs_size)
- _mpz_realloc (&(dest->_mp_num), abs_size);
-
- MPN_COPY (dest->_mp_num._mp_d, num->_mp_d, abs_size);
- dest->_mp_num._mp_size = size;
-}
diff --git a/gnu/lib/libgmp/mpq/set_si.c b/gnu/lib/libgmp/mpq/set_si.c
deleted file mode 100644
index cf1f9f0..0000000
--- a/gnu/lib/libgmp/mpq/set_si.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* mpq_set_si(dest,ulong_num,ulong_den) -- Set DEST to the retional number
- ULONG_NUM/ULONG_DEN.
-
-Copyright (C) 1991, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpq_set_si (MP_RAT *dest, signed long int num, unsigned long int den)
-#else
-mpq_set_si (dest, num, den)
- MP_RAT *dest;
- signed long int num;
- unsigned long int den;
-#endif
-{
- unsigned long int abs_num;
-
- abs_num = ABS (num);
-
- if (num == 0)
- {
- /* Canonicalize 0/d to 0/1. */
- den = 1;
- dest->_mp_num._mp_size = 0;
- }
- else
- {
- dest->_mp_num._mp_d[0] = abs_num;
- dest->_mp_num._mp_size = num > 0 ? 1 : -1;
- }
-
- dest->_mp_den._mp_d[0] = den;
- dest->_mp_den._mp_size = 1;
-}
diff --git a/gnu/lib/libgmp/mpq/set_ui.c b/gnu/lib/libgmp/mpq/set_ui.c
deleted file mode 100644
index aaa9fc2..0000000
--- a/gnu/lib/libgmp/mpq/set_ui.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* mpq_set_ui(dest,ulong_num,ulong_den) -- Set DEST to the retional number
- ULONG_NUM/ULONG_DEN.
-
-Copyright (C) 1991, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpq_set_ui (MP_RAT *dest, unsigned long int num, unsigned long int den)
-#else
-mpq_set_ui (dest, num, den)
- MP_RAT *dest;
- unsigned long int num;
- unsigned long int den;
-#endif
-{
- if (num == 0)
- {
- /* Canonicalize 0/n to 0/1. */
- den = 1;
- dest->_mp_num._mp_size = 0;
- }
- else
- {
- dest->_mp_num._mp_d[0] = num;
- dest->_mp_num._mp_size = 1;
- }
-
- dest->_mp_den._mp_d[0] = den;
- dest->_mp_den._mp_size = 1;
-}
diff --git a/gnu/lib/libgmp/mpq/set_z.c b/gnu/lib/libgmp/mpq/set_z.c
deleted file mode 100644
index ca638f3..0000000
--- a/gnu/lib/libgmp/mpq/set_z.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/* mpq_set_z (dest,src) -- Set DEST to SRC.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpq_set_z (mpq_ptr dest, mpz_srcptr src)
-#else
-mpq_set_z (dest, src)
- mpq_ptr dest;
- mpz_srcptr src;
-#endif
-{
- mp_size_t num_size;
- mp_size_t abs_num_size;
-
- num_size = src->_mp_size;
- abs_num_size = ABS (num_size);
- if (dest->_mp_num._mp_alloc < abs_num_size)
- _mpz_realloc (&(dest->_mp_num), abs_num_size);
- MPN_COPY (dest->_mp_num._mp_d, src->_mp_d, abs_num_size);
- dest->_mp_num._mp_size = num_size;
-
- dest->_mp_den._mp_d[0] = 1;
- dest->_mp_den._mp_size = 1;
-}
diff --git a/gnu/lib/libgmp/mpq/sub.c b/gnu/lib/libgmp/mpq/sub.c
deleted file mode 100644
index 9274ff8..0000000
--- a/gnu/lib/libgmp/mpq/sub.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/* mpq_sub -- subtract two rational numbers.
-
-Copyright (C) 1991, 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpq_sub (mpq_ptr rop, mpq_srcptr op1, mpq_srcptr op2)
-#else
-mpq_sub (rop, op1, op2)
- mpq_ptr rop;
- mpq_srcptr op1;
- mpq_srcptr op2;
-#endif
-{
- mpz_t gcd;
- mpz_t tmp1, tmp2;
- mp_size_t op1_num_size = ABS (op1->_mp_num._mp_size);
- mp_size_t op1_den_size = ABS (op1->_mp_den._mp_size);
- mp_size_t op2_num_size = ABS (op2->_mp_num._mp_size);
- mp_size_t op2_den_size = ABS (op2->_mp_den._mp_size);
- TMP_DECL (marker);
-
- TMP_MARK (marker);
- MPZ_TMP_INIT (gcd, MIN (op1_den_size, op2_den_size));
- MPZ_TMP_INIT (tmp1, op1_num_size + op2_den_size);
- MPZ_TMP_INIT (tmp2, op2_num_size + op1_den_size);
-
- /* ROP might be identical to either operand, so don't store the
- result there until we are finished with the input operands. We
- dare to overwrite the numerator of ROP when we are finished
- with the numerators of OP1 and OP2. */
-
- mpz_gcd (gcd, &(op1->_mp_den), &(op2->_mp_den));
- if (gcd->_mp_size > 1 || gcd->_mp_d[0] != 1)
- {
- mpz_t t;
-
- mpz_divexact (tmp1, &(op2->_mp_den), gcd);
- mpz_mul (tmp1, &(op1->_mp_num), tmp1);
-
- mpz_divexact (tmp2, &(op1->_mp_den), gcd);
- mpz_mul (tmp2, &(op2->_mp_num), tmp2);
-
- MPZ_TMP_INIT (t, MAX (ABS (tmp1->_mp_size), ABS (tmp2->_mp_size)) + 1);
-
- mpz_sub (t, tmp1, tmp2);
- mpz_divexact (tmp1, &(op1->_mp_den), gcd);
- mpz_gcd (gcd, t, gcd);
-
- mpz_divexact (&(rop->_mp_num), t, gcd);
-
- mpz_divexact (tmp2, &(op2->_mp_den), gcd);
- mpz_mul (&(rop->_mp_den), tmp1, tmp2);
- }
- else
- {
- /* The common divisor is 1. This is the case (for random input) with
- probability 6/(pi**2). */
- mpz_mul (tmp1, &(op1->_mp_num), &(op2->_mp_den));
- mpz_mul (tmp2, &(op2->_mp_num), &(op1->_mp_den));
- mpz_sub (&(rop->_mp_num), tmp1, tmp2);
- mpz_mul (&(rop->_mp_den), &(op1->_mp_den), &(op2->_mp_den));
- }
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpq/tests/Makefile.in b/gnu/lib/libgmp/mpq/tests/Makefile.in
deleted file mode 100644
index d7921c0..0000000
--- a/gnu/lib/libgmp/mpq/tests/Makefile.in
+++ /dev/null
@@ -1,48 +0,0 @@
-# Makefile for mpq/tests for GNU MP
-
-srcdir = .
-
-CC = gcc
-
-TEST_LIBS = ../../libgmp.a
-INCLUDES = -I../../mpn -I$(srcdir)/../..
-CFLAGS = -g -O
-
-.c.o:
- $(CC) -c $(INCLUDES) $(CFLAGS) $(XCFLAGS) $<
-
-TEST_SRCS = t-cmp.c t-cmp_ui.c t-get_d.c
-TEST_OBJS = t-cmp.o t-cmp_ui.o t-get_d.o
-TESTS = t-cmp t-cmp_ui t-get_d
-
-check: Makefile st-cmp st-cmp_ui st-get_d
- @echo "The tests passed."
-
-st-cmp: t-cmp
- ./t-cmp
- touch $@
-st-cmp_ui: t-cmp_ui
- ./t-cmp_ui
- touch $@
-st-get_d: t-get_d
- ./t-get_d
- touch $@
-
-t-cmp: t-cmp.o $(TEST_LIBS)
- $(CC) -o $@ $@.o $(TEST_LIBS) $(CFLAGS)
-t-cmp_ui: t-cmp_ui.o $(TEST_LIBS)
- $(CC) -o $@ $@.o $(TEST_LIBS) $(CFLAGS)
-t-get_d: t-get_d.o $(TEST_LIBS)
- $(CC) -o $@ $@.o $(TEST_LIBS) $(CFLAGS)
-
-t-cmp.o: $(srcdir)/t-cmp.c
-t-cmp_ui.o: $(srcdir)/t-cmp_ui.c
-t-get_d.o: $(srcdir)/t-get_d.c
-
-clean mostlyclean:
- rm -f *.o st-* $(TESTS)
-distclean maintainer-clean: clean
- rm -f Makefile config.status
-
-Makefile: $(srcdir)/Makefile.in
- $(SHELL) ./config.status
diff --git a/gnu/lib/libgmp/mpq/tests/configure.in b/gnu/lib/libgmp/mpq/tests/configure.in
deleted file mode 100644
index 5ee2138..0000000
--- a/gnu/lib/libgmp/mpq/tests/configure.in
+++ /dev/null
@@ -1,11 +0,0 @@
-# This file is a shell script that supplies the information necessary
-# to tailor a template configure script into the configure script
-# appropriate for this directory. For more information, check any
-# existing configure script.
-
-srctrigger=t-cmp.c
-srcname="gmp/mpq/tests"
-
-# per-host:
-
-# per-target:
diff --git a/gnu/lib/libgmp/mpq/tests/t-cmp.c b/gnu/lib/libgmp/mpq/tests/t-cmp.c
deleted file mode 100644
index 77e46f2..0000000
--- a/gnu/lib/libgmp/mpq/tests/t-cmp.c
+++ /dev/null
@@ -1,109 +0,0 @@
-/* Test mpq_cmp.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-#define NUM(x) (&((x)->_mp_num))
-#define DEN(x) (&((x)->_mp_den))
-
-#define SGN(x) ((x) < 0 ? -1 : (x) > 0 ? 1 : 0)
-
-ref_mpq_cmp (a, b)
- mpq_t a, b;
-{
- mpz_t ai, bi;
- int cc;
-
- mpz_init (ai);
- mpz_init (bi);
-
- mpz_mul (ai, NUM (a), DEN (b));
- mpz_mul (bi, NUM (b), DEN (a));
- cc = mpz_cmp (ai, bi);
- mpz_clear (ai);
- mpz_clear (bi);
- return cc;
-}
-
-#ifndef SIZE
-#define SIZE 8 /* increasing this lowers the probabilty of finding an error */
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mpq_t a, b;
- mp_size_t size;
- int reps = 100000;
- int i;
- int cc, ccref;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpq_init (a);
- mpq_init (b);
-
- for (i = 0; i < reps; i++)
- {
- size = urandom () % SIZE - SIZE/2;
- mpz_random2 (NUM (a), size);
- do
- {
- size = urandom () % SIZE - SIZE/2;
- mpz_random2 (DEN (a), size);
- }
- while (mpz_cmp_ui (DEN (a), 0) == 0);
-
- size = urandom () % SIZE - SIZE/2;
- mpz_random2 (NUM (b), size);
- do
- {
- size = urandom () % SIZE - SIZE/2;
- mpz_random2 (DEN (b), size);
- }
- while (mpz_cmp_ui (DEN (b), 0) == 0);
-
- mpq_canonicalize (a);
- mpq_canonicalize (b);
-
- ccref = ref_mpq_cmp (a, b);
- cc = mpq_cmp (a, b);
-
- if (SGN (ccref) != SGN (cc))
- abort ();
- }
-
- exit (0);
-}
-
-dump (x)
- mpq_t x;
-{
- mpz_out_str (stdout, 10, NUM (x));
- printf ("/");
- mpz_out_str (stdout, 10, DEN (x));
- printf ("\n");
-}
diff --git a/gnu/lib/libgmp/mpq/tests/t-cmp_ui.c b/gnu/lib/libgmp/mpq/tests/t-cmp_ui.c
deleted file mode 100644
index f7b92ad..0000000
--- a/gnu/lib/libgmp/mpq/tests/t-cmp_ui.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/* Test mpq_cmp_ui.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-#define NUM(x) (&((x)->_mp_num))
-#define DEN(x) (&((x)->_mp_den))
-
-#define SGN(x) ((x) < 0 ? -1 : (x) > 0 ? 1 : 0)
-
-ref_mpq_cmp_ui (a, bn, bd)
- mpq_t a;
- unsigned long int bn, bd;
-{
- mpz_t ai, bi;
- int cc;
-
- mpz_init (ai);
- mpz_init (bi);
-
- mpz_mul_ui (ai, NUM (a), bd);
- mpz_mul_ui (bi, DEN (a), bn);
- cc = mpz_cmp (ai, bi);
- mpz_clear (ai);
- mpz_clear (bi);
- return cc;
-}
-
-#ifndef SIZE
-#define SIZE 8 /* increasing this lowers the probabilty of finding an error */
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mpq_t a, b;
- mp_size_t size;
- int reps = 100000;
- int i;
- int cc, ccref;
- unsigned long int bn, bd;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpq_init (a);
- mpq_init (b);
-
- for (i = 0; i < reps; i++)
- {
- size = urandom () % SIZE - SIZE/2;
- mpz_random2 (NUM (a), size);
- do
- {
- size = urandom () % SIZE - SIZE/2;
- mpz_random2 (DEN (a), size);
- }
- while (mpz_cmp_ui (DEN (a), 0) == 0);
-
- mpz_random2 (NUM (b), 1);
- do
- {
- mpz_random2 (DEN (b), 1);
- }
- while (mpz_cmp_ui (DEN (b), 0) == 0);
-
- mpq_canonicalize (a);
- mpq_canonicalize (b);
-
- bn = mpz_get_ui (NUM (b));
- bd = mpz_get_ui (DEN (b));
-
- ccref = ref_mpq_cmp_ui (a, bn, bd);
- cc = mpq_cmp_ui (a, bn, bd);
-
- if (SGN (ccref) != SGN (cc))
- abort ();
- }
-
- exit (0);
-}
diff --git a/gnu/lib/libgmp/mpq/tests/t-get_d.c b/gnu/lib/libgmp/mpq/tests/t-get_d.c
deleted file mode 100644
index db4f926..0000000
--- a/gnu/lib/libgmp/mpq/tests/t-get_d.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/* Test mpq_get_d
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-#ifndef SIZE
-#define SIZE 8
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mpq_t a;
- mp_size_t size;
- int reps = 10000;
- int i, j;
- double last_d, new_d;
- mpz_t eps;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- /* The idea here is to test the monotonousness of mpq_get_d by adding
- numbers to the numerator and denominator. */
-
- mpq_init (a);
- mpz_init (eps);
-
- for (i = 0; i < reps; i++)
- {
- size = urandom () % SIZE - SIZE/2;
- mpz_random2 (mpq_numref (a), size);
- do
- {
- size = urandom () % SIZE - SIZE/2;
- mpz_random2 (mpq_denref (a), size);
- }
- while (mpz_cmp_ui (mpq_denref (a), 0) == 0);
-
- mpq_canonicalize (a);
-
- last_d = mpq_get_d (a);
- for (j = 0; j < 10; j++)
- {
- size = urandom () % SIZE;
- mpz_random2 (eps, size);
- mpz_add (mpq_numref (a), mpq_numref (a), eps);
- mpq_canonicalize (a);
- new_d = mpq_get_d (a);
- if (last_d > new_d)
- abort ();
- last_d = new_d;
- }
- }
-
- exit (0);
-}
-
-dump (x)
- mpq_t x;
-{
- mpz_out_str (stdout, 10, mpq_numref (x));
- printf ("/");
- mpz_out_str (stdout, 10, mpq_denref (x));
- printf ("\n");
-}
diff --git a/gnu/lib/libgmp/mpz/Makefile.in b/gnu/lib/libgmp/mpz/Makefile.in
deleted file mode 100644
index 497f09c..0000000
--- a/gnu/lib/libgmp/mpz/Makefile.in
+++ /dev/null
@@ -1,180 +0,0 @@
-# Makefile for GNU MP/mpz functions
-# Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-# This file is part of the GNU MP Library.
-
-# The GNU MP Library is free software; you can redistribute it and/or modify
-# it under the terms of the GNU Library General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or (at your
-# option) any later version.
-
-# The GNU MP Library 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 Library General Public
-# License for more details.
-
-# You should have received a copy of the GNU Library General Public License
-# along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-# the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-# MA 02111-1307, USA.
-
-srcdir = .
-
-CC = gcc
-
-# If you cross compile on a machine with the same sizes of the integral
-# types ("int", "long int", "short int", and "char") define this as the
-# local compiler. Otherwise, you need to look for the uses of LOCAL_CC below,
-# and handle those cases manually.
-LOCAL_CC = $(CC)
-CFLAGS = -g -O
-AR = ar
-AR_FLAGS = rc
-SHELL = /bin/sh
-
-#### host and target specific makefile fragments come in here.
-###
-
-MPZ_SRCS = init.c set.c set_ui.c set_si.c set_str.c set_d.c set_f.c set_q.c \
- iset.c iset_ui.c iset_si.c iset_str.c iset_d.c clear.c \
- get_ui.c get_si.c get_str.c get_d.c size.c sizeinbase.c \
- add.c add_ui.c sub.c sub_ui.c mul.c mul_ui.c \
- gcd.c gcd_ui.c gcdext.c sqrt.c sqrtrem.c powm.c powm_ui.c \
- cmp.c cmp_ui.c cmp_si.c mul_2exp.c fdiv_q_2exp.c fdiv_r_2exp.c \
- tdiv_q_2exp.c tdiv_r_2exp.c abs.c neg.c com.c and.c ior.c \
- inp_raw.c inp_str.c out_raw.c out_str.c \
- perfsqr.c random.c random2.c pow_ui.c ui_pow_ui.c setbit.c \
- clrbit.c fac_ui.c pprime_p.c realloc.c getlimbn.c popcount.c hamdist.c \
- cdiv_qr.c cdiv_q.c cdiv_r.c cdiv_qr_ui.c cdiv_q_ui.c cdiv_r_ui.c cdiv_ui.c \
- fdiv_qr.c fdiv_q.c fdiv_r.c fdiv_qr_ui.c fdiv_q_ui.c fdiv_r_ui.c fdiv_ui.c \
- tdiv_qr.c tdiv_q.c tdiv_r.c tdiv_qr_ui.c tdiv_q_ui.c tdiv_r_ui.c \
- mod.c divexact.c array_init.c scan0.c scan1.c \
- jacobi.c legendre.c invert.c
-MPZ_OBJS = init.o set.o set_ui.o set_si.o set_str.o set_d.o set_f.o set_q.o \
- iset.o iset_ui.o iset_si.o iset_str.o iset_d.o clear.o \
- get_ui.o get_si.o get_str.o get_d.o size.o sizeinbase.o \
- add.o add_ui.o sub.o sub_ui.o mul.o mul_ui.o \
- gcd.o gcd_ui.o gcdext.o sqrt.o sqrtrem.o powm.o powm_ui.o \
- cmp.o cmp_ui.o cmp_si.o mul_2exp.o fdiv_q_2exp.o fdiv_r_2exp.o \
- tdiv_q_2exp.o tdiv_r_2exp.o abs.o neg.o com.o and.o ior.o \
- inp_raw.o inp_str.o out_raw.o out_str.o \
- perfsqr.o random.o random2.o pow_ui.o ui_pow_ui.o setbit.o \
- clrbit.o fac_ui.o pprime_p.o realloc.o getlimbn.o popcount.o hamdist.o \
- cdiv_qr.o cdiv_q.o cdiv_r.o cdiv_qr_ui.o cdiv_q_ui.o cdiv_r_ui.o cdiv_ui.o \
- fdiv_qr.o fdiv_q.o fdiv_r.o fdiv_qr_ui.o fdiv_q_ui.o fdiv_r_ui.o fdiv_ui.o \
- tdiv_qr.o tdiv_q.o tdiv_r.o tdiv_qr_ui.o tdiv_q_ui.o tdiv_r_ui.o \
- mod.o divexact.o array_init.o scan0.o scan1.o \
- jacobi.o legendre.o invert.o
-
-INCLUDES = -I. -I.. -I../mpn -I$(srcdir)/..
-
-libmpz.a: Makefile $(MPZ_OBJS)
- rm -f $@
- $(AR) $(AR_FLAGS) $@ $(MPZ_OBJS)
-
-.c.o:
- $(CC) -c $(INCLUDES) $(CFLAGS) $(XCFLAGS) $<
-
-clean mostlyclean:
- rm -f *.o libmpz.a
- -cd tests; $(MAKE) $@
-distclean maintainer-clean: clean
- rm -f Makefile config.status
- -cd tests; $(MAKE) $@
-
-Makefile: $(srcdir)/Makefile.in
- $(SHELL) ./config.status
-
-H = $(srcdir)/../gmp.h $(srcdir)/../gmp-impl.h ../mpn/gmp-mparam.h
-
-abs.o: $(srcdir)/abs.c $(H)
-add.o: $(srcdir)/add.c $(H)
-add_ui.o: $(srcdir)/add_ui.c $(H)
-and.o: $(srcdir)/and.c $(H)
-array_init.o: $(srcdir)/array_init.c $(H)
-cdiv_q.o: $(srcdir)/cdiv_q.c $(H)
-cdiv_q_ui.o: $(srcdir)/cdiv_q_ui.c $(H)
-cdiv_qr.o: $(srcdir)/cdiv_qr.c $(H)
-cdiv_qr_ui.o: $(srcdir)/cdiv_qr_ui.c $(H)
-cdiv_r.o: $(srcdir)/cdiv_r.c $(H)
-cdiv_r_ui.o: $(srcdir)/cdiv_r_ui.c $(H)
-cdiv_ui.o: $(srcdir)/cdiv_ui.c $(H)
-clear.o: $(srcdir)/clear.c $(H)
-clrbit.o: $(srcdir)/clrbit.c $(H)
-cmp.o: $(srcdir)/cmp.c $(H)
-cmp_si.o: $(srcdir)/cmp_si.c $(H)
-cmp_ui.o: $(srcdir)/cmp_ui.c $(H)
-com.o: $(srcdir)/com.c $(H)
-fdiv_q_2exp.o: $(srcdir)/fdiv_q_2exp.c $(H)
-fdiv_r_2exp.o: $(srcdir)/fdiv_r_2exp.c $(H)
-divexact.o: $(srcdir)/divexact.c $(H) $(srcdir)/../longlong.h
-fac_ui.o: $(srcdir)/fac_ui.c $(H) $(srcdir)/../longlong.h
-fdiv_q.o: $(srcdir)/fdiv_q.c $(H)
-fdiv_q_ui.o: $(srcdir)/fdiv_q_ui.c $(H)
-fdiv_qr.o: $(srcdir)/fdiv_qr.c $(H)
-fdiv_qr_ui.o: $(srcdir)/fdiv_qr_ui.c $(H)
-fdiv_r.o: $(srcdir)/fdiv_r.c $(H)
-fdiv_r_ui.o: $(srcdir)/fdiv_r_ui.c $(H)
-fdiv_ui.o: $(srcdir)/fdiv_ui.c $(H)
-gcd.o: $(srcdir)/gcd.c $(H) $(srcdir)/../longlong.h
-gcd_ui.o: $(srcdir)/gcd_ui.c $(H)
-gcdext.o: $(srcdir)/gcdext.c $(H)
-get_d.o: $(srcdir)/get_d.c $(H)
-get_si.o: $(srcdir)/get_si.c $(H)
-get_str.o: $(srcdir)/get_str.c $(H)
-get_ui.o: $(srcdir)/get_ui.c $(H)
-getlimbn.o: $(srcdir)/getlimbn.c $(H)
-hamdist.o: $(srcdir)/hamdist.c $(H)
-init.o: $(srcdir)/init.c $(H)
-inp_raw.o: $(srcdir)/inp_raw.c $(H)
-inp_str.o: $(srcdir)/inp_str.c $(H)
-invert.o: $(srcdir)/invert.c $(H)
-ior.o: $(srcdir)/ior.c $(H)
-iset.o: $(srcdir)/iset.c $(H)
-iset_d.o: $(srcdir)/iset_d.c $(H)
-iset_si.o: $(srcdir)/iset_si.c $(H)
-iset_str.o: $(srcdir)/iset_str.c $(H)
-iset_ui.o: $(srcdir)/iset_ui.c $(H)
-jacobi.o: $(srcdir)/jacobi.c $(H)
-legendre.o: $(srcdir)/legendre.c $(H)
-mod.o: $(srcdir)/mod.c $(H)
-tdiv_q_2exp.o: $(srcdir)/tdiv_q_2exp.c $(H)
-tdiv_r_2exp.o: $(srcdir)/tdiv_r_2exp.c $(H)
-mul.o: $(srcdir)/mul.c $(H)
-mul_2exp.o: $(srcdir)/mul_2exp.c $(H)
-mul_ui.o: $(srcdir)/mul_ui.c $(H)
-neg.o: $(srcdir)/neg.c $(H)
-out_raw.o: $(srcdir)/out_raw.c $(H)
-out_str.o: $(srcdir)/out_str.c $(H)
-perfsqr.o: $(srcdir)/perfsqr.c $(H)
-popcount.o: $(srcdir)/popcount.c $(H)
-pow_ui.o: $(srcdir)/pow_ui.c $(H) $(srcdir)/../longlong.h
-powm.o: $(srcdir)/powm.c $(H) $(srcdir)/../longlong.h
-powm_ui.o: $(srcdir)/powm_ui.c $(H) $(srcdir)/../longlong.h
-pprime_p.o: $(srcdir)/pprime_p.c $(H)
-random.o: $(srcdir)/random.c $(H) $(srcdir)/../urandom.h
-random2.o: $(srcdir)/random2.c $(H)
-realloc.o: $(srcdir)/realloc.c $(H)
-scan0.o: $(srcdir)/scan0.c $(H)
-scan1.o: $(srcdir)/scan1.c $(H)
-set.o: $(srcdir)/set.c $(H)
-set_d.o: $(srcdir)/set_d.c $(H)
-set_f.o: $(srcdir)/set_f.c $(H)
-set_q.o: $(srcdir)/set_q.c $(H)
-set_si.o: $(srcdir)/set_si.c $(H)
-set_str.o: $(srcdir)/set_str.c $(H) $(srcdir)/../longlong.h
-set_ui.o: $(srcdir)/set_ui.c $(H)
-setbit.o: $(srcdir)/setbit.c $(H)
-size.o: $(srcdir)/size.c $(H)
-sizeinbase.o: $(srcdir)/sizeinbase.c $(H) $(srcdir)/../longlong.h
-sqrt.o: $(srcdir)/sqrt.c $(H)
-sqrtrem.o: $(srcdir)/sqrtrem.c $(H)
-sub.o: $(srcdir)/sub.c $(H)
-sub_ui.o: $(srcdir)/sub_ui.c $(H)
-tdiv_q.o: $(srcdir)/tdiv_q.c $(H) $(srcdir)/../longlong.h
-tdiv_q_ui.o: $(srcdir)/tdiv_q_ui.c $(H)
-tdiv_qr.o: $(srcdir)/tdiv_qr.c $(H) $(srcdir)/../longlong.h $(srcdir)/dmincl.c $(H)
-tdiv_qr_ui.o: $(srcdir)/tdiv_qr_ui.c $(H)
-tdiv_r.o: $(srcdir)/tdiv_r.c $(H) $(srcdir)/../longlong.h $(srcdir)/dmincl.c $(H)
-tdiv_r_ui.o: $(srcdir)/tdiv_r_ui.c $(H)
-ui_pow_ui.o: $(srcdir)/ui_pow_ui.c $(H) $(srcdir)/../longlong.h
diff --git a/gnu/lib/libgmp/mpz/abs.c b/gnu/lib/libgmp/mpz/abs.c
deleted file mode 100644
index 080cac6..0000000
--- a/gnu/lib/libgmp/mpz/abs.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* mpz_abs(dst, src) -- Assign the absolute value of SRC to DST.
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_abs (mpz_ptr w, mpz_srcptr u)
-#else
-mpz_abs (w, u)
- mpz_ptr w;
- mpz_srcptr u;
-#endif
-{
- mp_ptr wp, up;
- mp_size_t size;
-
- size = ABS (u->_mp_size);
-
- if (u != w)
- {
- if (w->_mp_alloc < size)
- _mpz_realloc (w, size);
-
- wp = w->_mp_d;
- up = u->_mp_d;
-
- MPN_COPY (wp, up, size);
- }
-
- w->_mp_size = size;
-}
diff --git a/gnu/lib/libgmp/mpz/add.c b/gnu/lib/libgmp/mpz/add.c
deleted file mode 100644
index 10dd970..0000000
--- a/gnu/lib/libgmp/mpz/add.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/* mpz_add -- Add two integers.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-#ifndef BERKELEY_MP
-void
-#if __STDC__
-mpz_add (mpz_ptr w, mpz_srcptr u, mpz_srcptr v)
-#else
-mpz_add (w, u, v)
- mpz_ptr w;
- mpz_srcptr u;
- mpz_srcptr v;
-#endif
-#else /* BERKELEY_MP */
-void
-#if __STDC__
-madd (mpz_srcptr u, mpz_srcptr v, mpz_ptr w)
-#else
-madd (u, v, w)
- mpz_srcptr u;
- mpz_srcptr v;
- mpz_ptr w;
-#endif
-#endif /* BERKELEY_MP */
-{
- mp_srcptr up, vp;
- mp_ptr wp;
- mp_size_t usize, vsize, wsize;
- mp_size_t abs_usize;
- mp_size_t abs_vsize;
-
- usize = u->_mp_size;
- vsize = v->_mp_size;
- abs_usize = ABS (usize);
- abs_vsize = ABS (vsize);
-
- if (abs_usize < abs_vsize)
- {
- /* Swap U and V. */
- {const __mpz_struct *t = u; u = v; v = t;}
- {mp_size_t t = usize; usize = vsize; vsize = t;}
- {mp_size_t t = abs_usize; abs_usize = abs_vsize; abs_vsize = t;}
- }
-
- /* True: ABS_USIZE >= ABS_VSIZE. */
-
- /* If not space for w (and possible carry), increase space. */
- wsize = abs_usize + 1;
- if (w->_mp_alloc < wsize)
- _mpz_realloc (w, wsize);
-
- /* These must be after realloc (u or v may be the same as w). */
- up = u->_mp_d;
- vp = v->_mp_d;
- wp = w->_mp_d;
-
- if ((usize ^ vsize) < 0)
- {
- /* U and V have different sign. Need to compare them to determine
- which operand to subtract from which. */
-
- /* This test is right since ABS_USIZE >= ABS_VSIZE. */
- if (abs_usize != abs_vsize)
- {
- mpn_sub (wp, up, abs_usize, vp, abs_vsize);
- wsize = abs_usize;
- MPN_NORMALIZE (wp, wsize);
- if (usize < 0)
- wsize = -wsize;
- }
- else if (mpn_cmp (up, vp, abs_usize) < 0)
- {
- mpn_sub_n (wp, vp, up, abs_usize);
- wsize = abs_usize;
- MPN_NORMALIZE (wp, wsize);
- if (usize >= 0)
- wsize = -wsize;
- }
- else
- {
- mpn_sub_n (wp, up, vp, abs_usize);
- wsize = abs_usize;
- MPN_NORMALIZE (wp, wsize);
- if (usize < 0)
- wsize = -wsize;
- }
- }
- else
- {
- /* U and V have same sign. Add them. */
- mp_limb_t cy_limb = mpn_add (wp, up, abs_usize, vp, abs_vsize);
- wp[abs_usize] = cy_limb;
- wsize = abs_usize + cy_limb;
- if (usize < 0)
- wsize = -wsize;
- }
-
- w->_mp_size = wsize;
-}
diff --git a/gnu/lib/libgmp/mpz/add_ui.c b/gnu/lib/libgmp/mpz/add_ui.c
deleted file mode 100644
index a1e4306..0000000
--- a/gnu/lib/libgmp/mpz/add_ui.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/* mpz_add_ui -- Add an mpz_t and an unsigned one-word integer.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_add_ui (mpz_ptr w, mpz_srcptr u, unsigned long int v)
-#else
-mpz_add_ui (w, u, v)
- mpz_ptr w;
- mpz_srcptr u;
- unsigned long int v;
-#endif
-{
- mp_srcptr up;
- mp_ptr wp;
- mp_size_t usize, wsize;
- mp_size_t abs_usize;
-
- usize = u->_mp_size;
- abs_usize = ABS (usize);
-
- /* If not space for W (and possible carry), increase space. */
- wsize = abs_usize + 1;
- if (w->_mp_alloc < wsize)
- _mpz_realloc (w, wsize);
-
- /* These must be after realloc (U may be the same as W). */
- up = u->_mp_d;
- wp = w->_mp_d;
-
- if (abs_usize == 0)
- {
- wp[0] = v;
- w->_mp_size = v != 0;
- return;
- }
-
- if (usize >= 0)
- {
- mp_limb_t cy;
- cy = mpn_add_1 (wp, up, abs_usize, v);
- wp[abs_usize] = cy;
- wsize = abs_usize + cy;
- }
- else
- {
- /* The signs are different. Need exact comparison to determine
- which operand to subtract from which. */
- if (abs_usize == 1 && up[0] < v)
- {
- wp[0] = v - up[0];
- wsize = 1;
- }
- else
- {
- mpn_sub_1 (wp, up, abs_usize, v);
- /* Size can decrease with at most one limb. */
- wsize = -(abs_usize - (wp[abs_usize - 1] == 0));
- }
- }
-
- w->_mp_size = wsize;
-}
diff --git a/gnu/lib/libgmp/mpz/and.c b/gnu/lib/libgmp/mpz/and.c
deleted file mode 100644
index 838d4b1..0000000
--- a/gnu/lib/libgmp/mpz/and.c
+++ /dev/null
@@ -1,278 +0,0 @@
-/* mpz_and -- Logical and.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_and (mpz_ptr res, mpz_srcptr op1, mpz_srcptr op2)
-#else
-mpz_and (res, op1, op2)
- mpz_ptr res;
- mpz_srcptr op1;
- mpz_srcptr op2;
-#endif
-{
- mp_srcptr op1_ptr, op2_ptr;
- mp_size_t op1_size, op2_size;
- mp_ptr res_ptr;
- mp_size_t res_size;
- mp_size_t i;
- TMP_DECL (marker);
-
- TMP_MARK (marker);
- op1_size = op1->_mp_size;
- op2_size = op2->_mp_size;
-
- op1_ptr = op1->_mp_d;
- op2_ptr = op2->_mp_d;
- res_ptr = res->_mp_d;
-
- if (op1_size >= 0)
- {
- if (op2_size >= 0)
- {
- res_size = MIN (op1_size, op2_size);
- /* First loop finds the size of the result. */
- for (i = res_size - 1; i >= 0; i--)
- if ((op1_ptr[i] & op2_ptr[i]) != 0)
- break;
- res_size = i + 1;
-
- /* Handle allocation, now then we know exactly how much space is
- needed for the result. */
- if (res->_mp_alloc < res_size)
- {
- _mpz_realloc (res, res_size);
- op1_ptr = op1->_mp_d;
- op2_ptr = op2->_mp_d;
- res_ptr = res->_mp_d;
- }
-
- /* Second loop computes the real result. */
- for (i = res_size - 1; i >= 0; i--)
- res_ptr[i] = op1_ptr[i] & op2_ptr[i];
-
- res->_mp_size = res_size;
- return;
- }
- else /* op2_size < 0 */
- {
- /* Fall through to the code at the end of the function. */
- }
- }
- else
- {
- if (op2_size < 0)
- {
- mp_ptr opx;
- mp_limb_t cy;
- mp_size_t res_alloc;
-
- /* Both operands are negative, so will be the result.
- -((-OP1) & (-OP2)) = -(~(OP1 - 1) & ~(OP2 - 1)) =
- = ~(~(OP1 - 1) & ~(OP2 - 1)) + 1 =
- = ((OP1 - 1) | (OP2 - 1)) + 1 */
-
- /* It might seem as we could end up with an (invalid) result with
- a leading zero-limb here when one of the operands is of the
- type 1,,0,,..,,.0. But some analysis shows that we surely
- would get carry into the zero-limb in this situation... */
-
- op1_size = -op1_size;
- op2_size = -op2_size;
-
- res_alloc = 1 + MAX (op1_size, op2_size);
-
- opx = (mp_ptr) TMP_ALLOC (op1_size * BYTES_PER_MP_LIMB);
- mpn_sub_1 (opx, op1_ptr, op1_size, (mp_limb_t) 1);
- op1_ptr = opx;
-
- opx = (mp_ptr) TMP_ALLOC (op2_size * BYTES_PER_MP_LIMB);
- mpn_sub_1 (opx, op2_ptr, op2_size, (mp_limb_t) 1);
- op2_ptr = opx;
-
- if (res->_mp_alloc < res_alloc)
- {
- _mpz_realloc (res, res_alloc);
- res_ptr = res->_mp_d;
- /* Don't re-read OP1_PTR and OP2_PTR. They point to
- temporary space--never to the space RES->_mp_D used
- to point to before reallocation. */
- }
-
- if (op1_size >= op2_size)
- {
- MPN_COPY (res_ptr + op2_size, op1_ptr + op2_size,
- op1_size - op2_size);
- for (i = op2_size - 1; i >= 0; i--)
- res_ptr[i] = op1_ptr[i] | op2_ptr[i];
- res_size = op1_size;
- }
- else
- {
- MPN_COPY (res_ptr + op1_size, op2_ptr + op1_size,
- op2_size - op1_size);
- for (i = op1_size - 1; i >= 0; i--)
- res_ptr[i] = op1_ptr[i] | op2_ptr[i];
- res_size = op2_size;
- }
-
- cy = mpn_add_1 (res_ptr, res_ptr, res_size, (mp_limb_t) 1);
- if (cy)
- {
- res_ptr[res_size] = cy;
- res_size++;
- }
-
- res->_mp_size = -res_size;
- TMP_FREE (marker);
- return;
- }
- else
- {
- /* We should compute -OP1 & OP2. Swap OP1 and OP2 and fall
- through to the code that handles OP1 & -OP2. */
- {mpz_srcptr t = op1; op1 = op2; op2 = t;}
- {mp_srcptr t = op1_ptr; op1_ptr = op2_ptr; op2_ptr = t;}
- {mp_size_t t = op1_size; op1_size = op2_size; op2_size = t;}
- }
-
- }
-
- {
-#if ANDNEW
- mp_size_t op2_lim;
- mp_size_t count;
-
- /* OP2 must be negated as with infinite precision.
-
- Scan from the low end for a non-zero limb. The first non-zero
- limb is simply negated (two's complement). Any subsequent
- limbs are one's complemented. Of course, we don't need to
- handle more limbs than there are limbs in the other, positive
- operand as the result for those limbs is going to become zero
- anyway. */
-
- /* Scan for the least significant. non-zero OP2 limb, and zero the
- result meanwhile for those limb positions. (We will surely
- find a non-zero limb, so we can write the loop with one
- termination condition only.) */
- for (i = 0; op2_ptr[i] == 0; i++)
- res_ptr[i] = 0;
- op2_lim = i;
-
- op2_size = -op2_size;
-
- if (op1_size <= op2_size)
- {
- /* The ones-extended OP2 is >= than the zero-extended OP1.
- RES_SIZE <= OP1_SIZE. Find the exact size. */
- for (i = op1_size - 1; i > op2_lim; i--)
- if ((op1_ptr[i] & ~op2_ptr[i]) != 0)
- break;
- res_size = i + 1;
- for (i = res_size - 1; i > op2_lim; i--)
- res_ptr[i] = op1_ptr[i] & ~op2_ptr[i];
- res_ptr[op2_lim] = op1_ptr[op2_lim] & -op2_ptr[op2_lim];
- /* Yes, this *can* happen! */
- MPN_NORMALIZE (res_ptr, res_size);
- }
- else
- {
- /* The ones-extended OP2 is < than the zero-extended OP1.
- RES_SIZE == OP1_SIZE, since OP1 is normalized. */
- res_size = op1_size;
- MPN_COPY (res_ptr + op2_size, op1_ptr + op2_size, op1_size - op2_size);
- for (i = op2_size - 1; i > op2_lim; i--)
- res_ptr[i] = op1_ptr[i] & ~op2_ptr[i];
- res_ptr[op2_lim] = op1_ptr[op2_lim] & -op2_ptr[op2_lim];
- }
-
- res->_mp_size = res_size;
-#else
-
- /* OP1 is positive and zero-extended,
- OP2 is negative and ones-extended.
- The result will be positive.
- OP1 & -OP2 = OP1 & ~(OP2 - 1). */
-
- mp_ptr opx;
-
- op2_size = -op2_size;
- opx = (mp_ptr) TMP_ALLOC (op2_size * BYTES_PER_MP_LIMB);
- mpn_sub_1 (opx, op2_ptr, op2_size, (mp_limb_t) 1);
- op2_ptr = opx;
-
- if (op1_size > op2_size)
- {
- /* The result has the same size as OP1, since OP1 is normalized
- and longer than the ones-extended OP2. */
- res_size = op1_size;
-
- /* Handle allocation, now then we know exactly how much space is
- needed for the result. */
- if (res->_mp_alloc < res_size)
- {
- _mpz_realloc (res, res_size);
- res_ptr = res->_mp_d;
- op1_ptr = op1->_mp_d;
- /* Don't re-read OP2_PTR. It points to temporary space--never
- to the space RES->_mp_D used to point to before reallocation. */
- }
-
- MPN_COPY (res_ptr + op2_size, op1_ptr + op2_size,
- res_size - op2_size);
- for (i = op2_size - 1; i >= 0; i--)
- res_ptr[i] = op1_ptr[i] & ~op2_ptr[i];
-
- res->_mp_size = res_size;
- }
- else
- {
- /* Find out the exact result size. Ignore the high limbs of OP2,
- OP1 is zero-extended and would make the result zero. */
- for (i = op1_size - 1; i >= 0; i--)
- if ((op1_ptr[i] & ~op2_ptr[i]) != 0)
- break;
- res_size = i + 1;
-
- /* Handle allocation, now then we know exactly how much space is
- needed for the result. */
- if (res->_mp_alloc < res_size)
- {
- _mpz_realloc (res, res_size);
- res_ptr = res->_mp_d;
- op1_ptr = op1->_mp_d;
- /* Don't re-read OP2_PTR. It points to temporary space--never
- to the space RES->_mp_D used to point to before reallocation. */
- }
-
- for (i = res_size - 1; i >= 0; i--)
- res_ptr[i] = op1_ptr[i] & ~op2_ptr[i];
-
- res->_mp_size = res_size;
- }
-#endif
- }
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpz/array_init.c b/gnu/lib/libgmp/mpz/array_init.c
deleted file mode 100644
index 8b2e85c..0000000
--- a/gnu/lib/libgmp/mpz/array_init.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* mpz_array_init (array, array_size, size_per_elem) --
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_array_init (mpz_ptr arr, mp_size_t arr_size, mp_size_t nbits)
-#else
-mpz_array_init (arr, arr_size, nbits)
- mpz_ptr arr;
- mp_size_t arr_size;
- mp_size_t nbits;
-#endif
-{
- register mp_ptr p;
- register size_t i;
- mp_size_t nlimbs;
-
- nlimbs = (nbits + BITS_PER_MP_LIMB - 1) / BITS_PER_MP_LIMB;
- p = (mp_ptr) (*_mp_allocate_func) (arr_size * nlimbs * BYTES_PER_MP_LIMB);
-
- for (i = 0; i < arr_size; i++)
- {
- arr[i]._mp_alloc = nlimbs + 1; /* Yes, lie a little... */
- arr[i]._mp_size = 0;
- arr[i]._mp_d = p + i * nlimbs;
- }
-}
diff --git a/gnu/lib/libgmp/mpz/cdiv_q.c b/gnu/lib/libgmp/mpz/cdiv_q.c
deleted file mode 100644
index 860a232..0000000
--- a/gnu/lib/libgmp/mpz/cdiv_q.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* mpz_cdiv_q -- Division rounding the quotient towards +infinity. The
- remainder gets the opposite sign as the denominator.
-
-Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_cdiv_q (mpz_ptr quot, mpz_srcptr dividend, mpz_srcptr divisor)
-#else
-mpz_cdiv_q (quot, dividend, divisor)
- mpz_ptr quot;
- mpz_srcptr dividend;
- mpz_srcptr divisor;
-#endif
-{
- mp_size_t dividend_size = dividend->_mp_size;
- mp_size_t divisor_size = divisor->_mp_size;
- mpz_t rem;
- TMP_DECL (marker);
-
- TMP_MARK (marker);
-
- MPZ_TMP_INIT (rem, 1 + ABS (dividend_size));
-
- mpz_tdiv_qr (quot, rem, dividend, divisor);
-
- if ((divisor_size ^ dividend_size) >= 0 && rem->_mp_size != 0)
- mpz_add_ui (quot, quot, 1L);
-
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpz/cdiv_q_ui.c b/gnu/lib/libgmp/mpz/cdiv_q_ui.c
deleted file mode 100644
index 7b6cfd7..0000000
--- a/gnu/lib/libgmp/mpz/cdiv_q_ui.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* mpz_cdiv_q_ui -- Division rounding the quotient towards +infinity. The
- remainder gets the opposite sign as the denominator. In order to make it
- always fit into the return type, the negative of the true remainder is
- returned.
-
-Copyright (C) 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-unsigned long int
-#if __STDC__
-mpz_cdiv_q_ui (mpz_ptr quot, mpz_srcptr dividend, unsigned long int divisor)
-#else
-mpz_cdiv_q_ui (quot, dividend, divisor)
- mpz_ptr quot;
- mpz_srcptr dividend;
- unsigned long int divisor;
-#endif
-{
- mp_size_t dividend_size;
- mp_size_t size;
- mp_ptr quot_ptr;
- mp_limb_t remainder_limb;
-
- dividend_size = dividend->_mp_size;
- size = ABS (dividend_size);
-
- if (quot->_mp_alloc < size)
- _mpz_realloc (quot, size);
-
- quot_ptr = quot->_mp_d;
-
- remainder_limb = mpn_divmod_1 (quot_ptr, dividend->_mp_d, size,
- (mp_limb_t) divisor);
-
- if (remainder_limb != 0 && dividend_size >= 0)
- {
- mpn_add_1 (quot_ptr, quot_ptr, size, (mp_limb_t) 1);
- remainder_limb = divisor - remainder_limb;
- }
-
- size -= size != 0 && quot_ptr[size - 1] == 0;
- quot->_mp_size = dividend_size >= 0 ? size : -size;
-
- return remainder_limb;
-}
diff --git a/gnu/lib/libgmp/mpz/cdiv_qr.c b/gnu/lib/libgmp/mpz/cdiv_qr.c
deleted file mode 100644
index bf7d6da..0000000
--- a/gnu/lib/libgmp/mpz/cdiv_qr.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* mpz_cdiv_qr -- Division rounding the quotient towards +infinity. The
- remainder gets the opposite sign as the denominator.
-
-Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_cdiv_qr (mpz_ptr quot, mpz_ptr rem, mpz_srcptr dividend, mpz_srcptr divisor)
-#else
-mpz_cdiv_qr (quot, rem, dividend, divisor)
- mpz_ptr quot;
- mpz_ptr rem;
- mpz_srcptr dividend;
- mpz_srcptr divisor;
-#endif
-{
- mp_size_t divisor_size = divisor->_mp_size;
- mpz_t temp_divisor; /* N.B.: lives until function returns! */
- TMP_DECL (marker);
-
- TMP_MARK (marker);
-
- /* We need the original value of the divisor after the quotient and
- remainder have been preliminary calculated. We have to copy it to
- temporary space if it's the same variable as either QUOT or REM. */
- if (quot == divisor || rem == divisor)
- {
- MPZ_TMP_INIT (temp_divisor, ABS (divisor_size));
- mpz_set (temp_divisor, divisor);
- divisor = temp_divisor;
- }
-
- mpz_tdiv_qr (quot, rem, dividend, divisor);
-
- if ((divisor_size ^ dividend->_mp_size) >= 0 && rem->_mp_size != 0)
- {
- mpz_add_ui (quot, quot, 1L);
- mpz_sub (rem, rem, divisor);
- }
-
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpz/cdiv_qr_ui.c b/gnu/lib/libgmp/mpz/cdiv_qr_ui.c
deleted file mode 100644
index a780e77..0000000
--- a/gnu/lib/libgmp/mpz/cdiv_qr_ui.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/* mpz_cdiv_qr_ui -- Division rounding the quotient towards +infinity. The
- remainder gets the opposite sign as the denominator. In order to make it
- always fit into the return type, the negative of the true remainder is
- returned.
-
-Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-unsigned long int
-#if __STDC__
-mpz_cdiv_qr_ui (mpz_ptr quot, mpz_ptr rem, mpz_srcptr dividend, unsigned long int divisor)
-#else
-mpz_cdiv_qr_ui (quot, rem, dividend, divisor)
- mpz_ptr quot;
- mpz_ptr rem;
- mpz_srcptr dividend;
- unsigned long int divisor;
-#endif
-{
- mp_size_t dividend_size;
- mp_size_t size;
- mp_ptr quot_ptr;
- mp_limb_t remainder_limb;
-
- dividend_size = dividend->_mp_size;
- size = ABS (dividend_size);
-
- if (quot->_mp_alloc < size)
- _mpz_realloc (quot, size);
-
- quot_ptr = quot->_mp_d;
-
- remainder_limb = mpn_divmod_1 (quot_ptr, dividend->_mp_d, size,
- (mp_limb_t) divisor);
-
- if (remainder_limb != 0 && dividend_size >= 0)
- {
- mpn_add_1 (quot_ptr, quot_ptr, size, (mp_limb_t) 1);
- remainder_limb = divisor - remainder_limb;
- }
-
- size -= size != 0 && quot_ptr[size - 1] == 0;
- quot->_mp_size = dividend_size >= 0 ? size : -size;
-
- rem->_mp_d[0] = remainder_limb;
- rem->_mp_size = -(remainder_limb != 0);
-
- return remainder_limb;
-}
diff --git a/gnu/lib/libgmp/mpz/cdiv_r.c b/gnu/lib/libgmp/mpz/cdiv_r.c
deleted file mode 100644
index d34d138..0000000
--- a/gnu/lib/libgmp/mpz/cdiv_r.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/* mpz_cdiv_r -- Division rounding the quotient towards +infinity. The
- remainder gets the opposite sign as the denominator.
-
-Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_cdiv_r (mpz_ptr rem, mpz_srcptr dividend, mpz_srcptr divisor)
-#else
-mpz_cdiv_r (rem, dividend, divisor)
- mpz_ptr rem;
- mpz_srcptr dividend;
- mpz_srcptr divisor;
-#endif
-{
- mp_size_t divisor_size = divisor->_mp_size;
- mpz_t temp_divisor; /* N.B.: lives until function returns! */
- TMP_DECL (marker);
-
- TMP_MARK (marker);
-
- /* We need the original value of the divisor after the remainder has been
- preliminary calculated. We have to copy it to temporary space if it's
- the same variable as REM. */
- if (rem == divisor)
- {
-
- MPZ_TMP_INIT (temp_divisor, ABS (divisor_size));
- mpz_set (temp_divisor, divisor);
- divisor = temp_divisor;
- }
-
- mpz_tdiv_r (rem, dividend, divisor);
-
- if ((divisor_size ^ dividend->_mp_size) >= 0 && rem->_mp_size != 0)
- mpz_sub (rem, rem, divisor);
-
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpz/cdiv_r_ui.c b/gnu/lib/libgmp/mpz/cdiv_r_ui.c
deleted file mode 100644
index 757a3f5..0000000
--- a/gnu/lib/libgmp/mpz/cdiv_r_ui.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* mpz_cdiv_r_ui -- Division rounding the quotient towards +infinity. The
- remainder gets the opposite sign as the denominator. In order to make it
- always fit into the return type, the negative of the true remainder is
- returned.
-
-Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-unsigned long int
-#if __STDC__
-mpz_cdiv_r_ui (mpz_ptr rem, mpz_srcptr dividend, unsigned long int divisor)
-#else
-mpz_cdiv_r_ui (rem, dividend, divisor)
- mpz_ptr rem;
- mpz_srcptr dividend;
- unsigned long int divisor;
-#endif
-{
- mp_size_t dividend_size;
- mp_size_t size;
- mp_limb_t remainder_limb;
-
- dividend_size = dividend->_mp_size;
- size = ABS (dividend_size);
-
- remainder_limb = mpn_mod_1 (dividend->_mp_d, size, (mp_limb_t) divisor);
-
- if (remainder_limb != 0 && dividend_size >= 0)
- remainder_limb = divisor - remainder_limb;
-
- rem->_mp_d[0] = remainder_limb;
- rem->_mp_size = -(remainder_limb != 0);
-
- return remainder_limb;
-}
diff --git a/gnu/lib/libgmp/mpz/cdiv_ui.c b/gnu/lib/libgmp/mpz/cdiv_ui.c
deleted file mode 100644
index df841ed..0000000
--- a/gnu/lib/libgmp/mpz/cdiv_ui.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* mpz_cdiv_ui -- Division rounding the quotient towards +infinity. The
- remainder gets the opposite sign as the denominator. In order to make it
- always fit into the return type, the negative of the true remainder is
- returned.
-
-Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-unsigned long int
-#if __STDC__
-mpz_cdiv_ui (mpz_srcptr dividend, unsigned long int divisor)
-#else
-mpz_cdiv_ui (dividend, divisor)
- mpz_srcptr dividend;
- unsigned long int divisor;
-#endif
-{
- mp_size_t dividend_size;
- mp_size_t size;
- mp_limb_t remainder_limb;
-
- dividend_size = dividend->_mp_size;
- size = ABS (dividend_size);
-
- remainder_limb = mpn_mod_1 (dividend->_mp_d, size, (mp_limb_t) divisor);
-
- if (remainder_limb != 0 && dividend_size >= 0)
- remainder_limb = divisor - remainder_limb;
-
- return remainder_limb;
-}
diff --git a/gnu/lib/libgmp/mpz/clear.c b/gnu/lib/libgmp/mpz/clear.c
deleted file mode 100644
index 00f3cfd..0000000
--- a/gnu/lib/libgmp/mpz/clear.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* mpz_clear -- de-allocate the space occupied by the dynamic digit space of
- an integer.
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_clear (mpz_ptr m)
-#else
-mpz_clear (m)
- mpz_ptr m;
-#endif
-{
- (*_mp_free_func) (m->_mp_d, m->_mp_alloc * BYTES_PER_MP_LIMB);
-}
diff --git a/gnu/lib/libgmp/mpz/clrbit.c b/gnu/lib/libgmp/mpz/clrbit.c
deleted file mode 100644
index 59d9565..0000000
--- a/gnu/lib/libgmp/mpz/clrbit.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/* mpz_clrbit -- clear a specified bit.
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_clrbit (mpz_ptr d, unsigned long int bit_index)
-#else
-mpz_clrbit (d, bit_index)
- mpz_ptr d;
- unsigned long int bit_index;
-#endif
-{
- mp_size_t dsize = d->_mp_size;
- mp_ptr dp = d->_mp_d;
- mp_size_t limb_index;
-
- limb_index = bit_index / BITS_PER_MP_LIMB;
- if (dsize >= 0)
- {
- if (limb_index < dsize)
- {
- dp[limb_index] &= ~((mp_limb_t) 1 << (bit_index % BITS_PER_MP_LIMB));
- MPN_NORMALIZE (dp, dsize);
- d->_mp_size = dsize;
- }
- else
- ;
- }
- else
- {
- mp_size_t zero_bound;
-
- /* Simulate two's complement arithmetic, i.e. simulate
- 1. Set OP = ~(OP - 1) [with infinitely many leading ones].
- 2. clear the bit.
- 3. Set OP = ~OP + 1. */
-
- dsize = -dsize;
-
- /* No upper bound on this loop, we're sure there's a non-zero limb
- sooner ot later. */
- for (zero_bound = 0; ; zero_bound++)
- if (dp[zero_bound] != 0)
- break;
-
- if (limb_index > zero_bound)
- {
- if (limb_index < dsize)
- dp[limb_index] |= (mp_limb_t) 1 << (bit_index % BITS_PER_MP_LIMB);
- else
- {
- /* Ugh. The bit should be cleared outside of the end of the
- number. We have to increase the size of the number. */
- if (d->_mp_alloc < limb_index + 1)
- {
- _mpz_realloc (d, limb_index + 1);
- dp = d->_mp_d;
- }
- MPN_ZERO (dp + dsize, limb_index - dsize);
- dp[limb_index] = (mp_limb_t) 1 << (bit_index % BITS_PER_MP_LIMB);
- d->_mp_size = -(limb_index + 1);
- }
- }
- else if (limb_index == zero_bound)
- {
- dp[limb_index] = ((dp[limb_index] - 1)
- | ((mp_limb_t) 1 << (bit_index % BITS_PER_MP_LIMB))) + 1;
- if (dp[limb_index] == 0)
- {
- mp_size_t i;
- for (i = limb_index + 1; i < dsize; i++)
- {
- dp[i] += 1;
- if (dp[i] != 0)
- goto fin;
- }
- /* We got carry all way out beyond the end of D. Increase
- its size (and allocation if necessary). */
- dsize++;
- if (d->_mp_alloc < dsize)
- {
- _mpz_realloc (d, dsize);
- dp = d->_mp_d;
- }
- dp[i] = 1;
- d->_mp_size = -dsize;
- fin:;
- }
- }
- else
- ;
- }
-}
diff --git a/gnu/lib/libgmp/mpz/cmp.c b/gnu/lib/libgmp/mpz/cmp.c
deleted file mode 100644
index 37be334..0000000
--- a/gnu/lib/libgmp/mpz/cmp.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/* mpz_cmp(u,v) -- Compare U, V. Return postive, zero, or negative
- based on if U > V, U == V, or U < V.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#ifdef BERKELEY_MP
-#include "mp.h"
-#endif
-#include "gmp.h"
-#include "gmp-impl.h"
-
-#ifndef BERKELEY_MP
-int
-#if __STDC__
-mpz_cmp (mpz_srcptr u, mpz_srcptr v)
-#else
-mpz_cmp (u, v)
- mpz_srcptr u;
- mpz_srcptr v;
-#endif
-#else /* BERKELEY_MP */
-int
-#if __STDC__
-mcmp (mpz_srcptr u, mpz_srcptr v)
-#else
-mcmp (u, v)
- mpz_srcptr u;
- mpz_srcptr v;
-#endif
-#endif /* BERKELEY_MP */
-{
- mp_size_t usize = u->_mp_size;
- mp_size_t vsize = v->_mp_size;
- mp_size_t size;
- mp_srcptr up, vp;
- int cmp;
-
- if (usize != vsize)
- return usize - vsize;
-
- if (usize == 0)
- return 0;
-
- size = ABS (usize);
-
- up = u->_mp_d;
- vp = v->_mp_d;
-
- cmp = mpn_cmp (up, vp, size);
-
- if (cmp == 0)
- return 0;
-
- if ((cmp < 0) == (usize < 0))
- return 1;
- else
- return -1;
-}
diff --git a/gnu/lib/libgmp/mpz/cmp_si.c b/gnu/lib/libgmp/mpz/cmp_si.c
deleted file mode 100644
index 8063fd3..0000000
--- a/gnu/lib/libgmp/mpz/cmp_si.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/* mpz_cmp_si(u,v) -- Compare an integer U with a single-word int V.
- Return positive, zero, or negative based on if U > V, U == V, or U < V.
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-/* gmp.h defines a macro for mpz_cmp_si. */
-#undef mpz_cmp_si
-
-int
-#if __STDC__
-mpz_cmp_si (mpz_srcptr u, signed long int v_digit)
-#else
-mpz_cmp_si (u, v_digit)
- mpz_srcptr u;
- signed long int v_digit;
-#endif
-{
- mp_size_t usize = u->_mp_size;
- mp_size_t vsize;
- mp_limb_t u_digit;
-
- vsize = 0;
- if (v_digit > 0)
- vsize = 1;
- else if (v_digit < 0)
- {
- vsize = -1;
- v_digit = -v_digit;
- }
-
- if (usize != vsize)
- return usize - vsize;
-
- if (usize == 0)
- return 0;
-
- u_digit = u->_mp_d[0];
-
- if (u_digit == v_digit)
- return 0;
-
- if (u_digit > v_digit)
- return usize;
- else
- return -usize;
-}
diff --git a/gnu/lib/libgmp/mpz/cmp_ui.c b/gnu/lib/libgmp/mpz/cmp_ui.c
deleted file mode 100644
index 1a50b96..0000000
--- a/gnu/lib/libgmp/mpz/cmp_ui.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* mpz_cmp_ui.c -- Compare a mpz_t a with an mp_limb_t b. Return positive,
- zero, or negative based on if a > b, a == b, or a < b.
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-/* gmp.h defines a macro for mpz_cmp_ui. */
-#undef mpz_cmp_ui
-
-int
-#if __STDC__
-mpz_cmp_ui (mpz_srcptr u, unsigned long int v_digit)
-#else
-mpz_cmp_ui (u, v_digit)
- mpz_srcptr u;
- unsigned long int v_digit;
-#endif
-{
- mp_size_t usize = u->_mp_size;
-
- if (usize == 0)
- return -(v_digit != 0);
-
- if (usize == 1)
- {
- mp_limb_t u_digit;
-
- u_digit = u->_mp_d[0];
- if (u_digit > v_digit)
- return 1;
- if (u_digit < v_digit)
- return -1;
- return 0;
- }
-
- return (usize > 0) ? 1 : -1;
-}
diff --git a/gnu/lib/libgmp/mpz/com.c b/gnu/lib/libgmp/mpz/com.c
deleted file mode 100644
index 559f2b6..0000000
--- a/gnu/lib/libgmp/mpz/com.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/* mpz_com(mpz_ptr dst, mpz_ptr src) -- Assign the bit-complemented value of
- SRC to DST.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_com (mpz_ptr dst, mpz_srcptr src)
-#else
-mpz_com (dst, src)
- mpz_ptr dst;
- mpz_srcptr src;
-#endif
-{
- mp_size_t size = src->_mp_size;
- mp_srcptr src_ptr;
- mp_ptr dst_ptr;
-
- if (size >= 0)
- {
- /* As with infinite precision: one's complement, two's complement.
- But this can be simplified using the identity -x = ~x + 1.
- So we're going to compute (~~x) + 1 = x + 1! */
-
- if (dst->_mp_alloc < size + 1)
- _mpz_realloc (dst, size + 1);
-
- src_ptr = src->_mp_d;
- dst_ptr = dst->_mp_d;
-
- if (size == 0)
- {
- /* Special case, as mpn_add wants the first arg's size >= the
- second arg's size. */
- dst_ptr[0] = 1;
- dst->_mp_size = -1;
- return;
- }
-
- {
- mp_limb_t cy;
-
- cy = mpn_add_1 (dst_ptr, src_ptr, size, (mp_limb_t) 1);
- if (cy)
- {
- dst_ptr[size] = cy;
- size++;
- }
- }
-
- /* Store a negative size, to indicate ones-extension. */
- dst->_mp_size = -size;
- }
- else
- {
- /* As with infinite precision: two's complement, then one's complement.
- But that can be simplified using the identity -x = ~(x - 1).
- So we're going to compute ~~(x - 1) = x - 1! */
- size = -size;
-
- if (dst->_mp_alloc < size)
- _mpz_realloc (dst, size);
-
- src_ptr = src->_mp_d;
- dst_ptr = dst->_mp_d;
-
- mpn_sub_1 (dst_ptr, src_ptr, size, (mp_limb_t) 1);
- size -= dst_ptr[size - 1] == 0;
-
- /* Store a positive size, to indicate zero-extension. */
- dst->_mp_size = size;
- }
-}
diff --git a/gnu/lib/libgmp/mpz/configure.in b/gnu/lib/libgmp/mpz/configure.in
deleted file mode 100644
index ed84461..0000000
--- a/gnu/lib/libgmp/mpz/configure.in
+++ /dev/null
@@ -1,12 +0,0 @@
-# This file is a shell script fragment that supplies the information
-# necessary for a configure script to process the program in
-# this directory. For more information, look at ../configure.
-
-configdirs=tests
-srctrigger=add_ui.c
-srcname="GNU Multi-Precision library/mpz"
-
-# per-host:
-
-# per-target:
-
diff --git a/gnu/lib/libgmp/mpz/divexact.c b/gnu/lib/libgmp/mpz/divexact.c
deleted file mode 100644
index b897448..0000000
--- a/gnu/lib/libgmp/mpz/divexact.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/* mpz_divexact -- finds quotient when known that quot * den == num && den != 0.
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-/* Ken Weber (kweber@mat.ufrgs.br, kweber@mcs.kent.edu)
-
- Funding for this work has been partially provided by Conselho Nacional
- de Desenvolvimento Cienti'fico e Tecnolo'gico (CNPq) do Brazil, Grant
- 301314194-2, and was done while I was a visiting reseacher in the Instituto
- de Matema'tica at Universidade Federal do Rio Grande do Sul (UFRGS).
-
- References:
- T. Jebelean, An algorithm for exact division, Journal of Symbolic
- Computation, v. 15, 1993, pp. 169-180. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-void
-#if __STDC__
-mpz_divexact (mpz_ptr quot, mpz_srcptr num, mpz_srcptr den)
-#else
-mpz_divexact (quot, num, den)
- mpz_ptr quot;
- mpz_srcptr num;
- mpz_srcptr den;
-#endif
-{
- mp_ptr qp, tp;
- mp_size_t qsize, tsize;
-
- mp_srcptr np = num->_mp_d;
- mp_srcptr dp = den->_mp_d;
- mp_size_t nsize = ABS (num->_mp_size);
- mp_size_t dsize = ABS (den->_mp_size);
- TMP_DECL (marker);
-
- /* Generate divide-by-zero error if dsize == 0. */
- if (dsize == 0)
- {
- quot->_mp_size = 1 / dsize;
- return;
- }
-
- if (nsize == 0)
- {
- quot->_mp_size = 0;
- return;
- }
-
- qsize = nsize - dsize + 1;
- if (quot->_mp_alloc < qsize)
- _mpz_realloc (quot, qsize);
- qp = quot->_mp_d;
-
- TMP_MARK (marker);
-
- /* QUOT <-- NUM/2^r, T <-- DEN/2^r where = r number of twos in DEN. */
- while (dp[0] == 0)
- np += 1, nsize -= 1, dp += 1, dsize -= 1;
- tsize = MIN (qsize, dsize);
- if (dp[0] & 1)
- {
- if (qp != dp)
- MPN_COPY (qp, np, qsize);
- if (qp == dp) /* QUOT and DEN overlap. */
- {
- tp = (mp_ptr) TMP_ALLOC (sizeof (mp_limb_t) * tsize);
- MPN_COPY (tp, dp, tsize);
- }
- else
- tp = (mp_ptr) dp;
- }
- else
- {
- unsigned long int r;
- tp = (mp_ptr) TMP_ALLOC (sizeof (mp_limb_t) * tsize);
- count_trailing_zeros (r, dp[0]);
- mpn_rshift (tp, dp, tsize, r);
- if (dsize > tsize)
- tp[tsize-1] |= dp[tsize] << (BITS_PER_MP_LIMB - r);
- mpn_rshift (qp, np, qsize, r);
- if (nsize > qsize)
- qp[qsize-1] |= np[qsize] << (BITS_PER_MP_LIMB - r);
- }
-
- /* Now QUOT <-- QUOT/T. */
- mpn_bdivmod (qp, qp, qsize, tp, tsize, qsize * BITS_PER_MP_LIMB);
- MPN_NORMALIZE (qp, qsize);
-
- quot->_mp_size = (num->_mp_size < 0) == (den->_mp_size < 0) ? qsize : -qsize;
-
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpz/dmincl.c b/gnu/lib/libgmp/mpz/dmincl.c
deleted file mode 100644
index 51bd084..0000000
--- a/gnu/lib/libgmp/mpz/dmincl.c
+++ /dev/null
@@ -1,201 +0,0 @@
-/* dmincl.c -- include file for tdiv_qr.c, tdiv_r.c.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-/* If den == quot, den needs temporary storage.
- If den == rem, den needs temporary storage.
- If num == quot, num needs temporary storage.
- If den has temporary storage, it can be normalized while being copied,
- i.e no extra storage should be allocated. */
-
-/* This is the function body of mdiv, mpz_divmod, and mpz_mod.
-
- If COMPUTE_QUOTIENT is defined, the quotient is put in the MP_INT
- object quot, otherwise that variable is not referenced at all.
-
- The remainder is always computed, and the result is put in the MP_INT
- object rem. */
-
-{
- mp_ptr np, dp;
- mp_ptr qp, rp;
- mp_size_t nsize = num->_mp_size;
- mp_size_t dsize = den->_mp_size;
- mp_size_t qsize, rsize;
- mp_size_t sign_remainder = nsize;
-#ifdef COMPUTE_QUOTIENT
- mp_size_t sign_quotient = nsize ^ dsize;
-#endif
- unsigned normalization_steps;
- mp_limb_t q_limb;
- TMP_DECL (marker);
-
- nsize = ABS (nsize);
- dsize = ABS (dsize);
-
- /* Ensure space is enough for quotient and remainder. */
-
- /* We need space for an extra limb in the remainder, because it's
- up-shifted (normalized) below. */
- rsize = nsize + 1;
- if (rem->_mp_alloc < rsize)
- _mpz_realloc (rem, rsize);
-
- qsize = rsize - dsize; /* qsize cannot be bigger than this. */
- if (qsize <= 0)
- {
- if (num != rem)
- {
- rem->_mp_size = num->_mp_size;
- MPN_COPY (rem->_mp_d, num->_mp_d, nsize);
- }
-#ifdef COMPUTE_QUOTIENT
- /* This needs to follow the assignment to rem, in case the
- numerator and quotient are the same. */
- quot->_mp_size = 0;
-#endif
- return;
- }
-
-#ifdef COMPUTE_QUOTIENT
- if (quot->_mp_alloc < qsize)
- _mpz_realloc (quot, qsize);
-#endif
-
- /* Read pointers here, when reallocation is finished. */
- np = num->_mp_d;
- dp = den->_mp_d;
- rp = rem->_mp_d;
-
- /* Optimize division by a single-limb divisor. */
- if (dsize == 1)
- {
- mp_limb_t rlimb;
-#ifdef COMPUTE_QUOTIENT
- qp = quot->_mp_d;
- rlimb = mpn_divmod_1 (qp, np, nsize, dp[0]);
- qsize -= qp[qsize - 1] == 0;
- quot->_mp_size = sign_quotient >= 0 ? qsize : -qsize;
-#else
- rlimb = mpn_mod_1 (np, nsize, dp[0]);
-#endif
- rp[0] = rlimb;
- rsize = rlimb != 0;
- rem->_mp_size = sign_remainder >= 0 ? rsize : -rsize;
- return;
- }
-
- TMP_MARK (marker);
-
-#ifdef COMPUTE_QUOTIENT
- qp = quot->_mp_d;
-
- /* Make sure QP and NP point to different objects. Otherwise the
- numerator would be gradually overwritten by the quotient limbs. */
- if (qp == np)
- {
- /* Copy NP object to temporary space. */
- np = (mp_ptr) TMP_ALLOC (nsize * BYTES_PER_MP_LIMB);
- MPN_COPY (np, qp, nsize);
- }
-
-#else
- /* Put quotient at top of remainder. */
- qp = rp + dsize;
-#endif
-
- count_leading_zeros (normalization_steps, dp[dsize - 1]);
-
- /* Normalize the denominator, i.e. make its most significant bit set by
- shifting it NORMALIZATION_STEPS bits to the left. Also shift the
- numerator the same number of steps (to keep the quotient the same!). */
- if (normalization_steps != 0)
- {
- mp_ptr tp;
- mp_limb_t nlimb;
-
- /* Shift up the denominator setting the most significant bit of
- the most significant word. Use temporary storage not to clobber
- the original contents of the denominator. */
- tp = (mp_ptr) TMP_ALLOC (dsize * BYTES_PER_MP_LIMB);
- mpn_lshift (tp, dp, dsize, normalization_steps);
- dp = tp;
-
- /* Shift up the numerator, possibly introducing a new most
- significant word. Move the shifted numerator in the remainder
- meanwhile. */
- nlimb = mpn_lshift (rp, np, nsize, normalization_steps);
- if (nlimb != 0)
- {
- rp[nsize] = nlimb;
- rsize = nsize + 1;
- }
- else
- rsize = nsize;
- }
- else
- {
- /* The denominator is already normalized, as required. Copy it to
- temporary space if it overlaps with the quotient or remainder. */
-#ifdef COMPUTE_QUOTIENT
- if (dp == rp || dp == qp)
-#else
- if (dp == rp)
-#endif
- {
- mp_ptr tp;
-
- tp = (mp_ptr) TMP_ALLOC (dsize * BYTES_PER_MP_LIMB);
- MPN_COPY (tp, dp, dsize);
- dp = tp;
- }
-
- /* Move the numerator to the remainder. */
- if (rp != np)
- MPN_COPY (rp, np, nsize);
-
- rsize = nsize;
- }
-
- q_limb = mpn_divmod (qp, rp, rsize, dp, dsize);
-
-#ifdef COMPUTE_QUOTIENT
- qsize = rsize - dsize;
- if (q_limb)
- {
- qp[qsize] = q_limb;
- qsize += 1;
- }
-
- quot->_mp_size = sign_quotient >= 0 ? qsize : -qsize;
-#endif
-
- rsize = dsize;
- MPN_NORMALIZE (rp, rsize);
-
- if (normalization_steps != 0 && rsize != 0)
- {
- mpn_rshift (rp, rp, rsize, normalization_steps);
- rsize -= rp[rsize - 1] == 0;
- }
-
- rem->_mp_size = sign_remainder >= 0 ? rsize : -rsize;
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpz/fac_ui.c b/gnu/lib/libgmp/mpz/fac_ui.c
deleted file mode 100644
index a170060..0000000
--- a/gnu/lib/libgmp/mpz/fac_ui.c
+++ /dev/null
@@ -1,157 +0,0 @@
-/* mpz_fac_ui(result, n) -- Set RESULT to N!.
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#ifdef DBG
-#include <stdio.h>
-#endif
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-void
-#if __STDC__
-mpz_fac_ui (mpz_ptr result, unsigned long int n)
-#else
-mpz_fac_ui (result, n)
- mpz_ptr result;
- unsigned long int n;
-#endif
-{
-#if SIMPLE_FAC
-
- /* Be silly. Just multiply the numbers in ascending order. O(n**2). */
-
- unsigned long int k;
-
- mpz_set_ui (result, 1L);
-
- for (k = 2; k <= n; k++)
- mpz_mul_ui (result, result, k);
-#else
-
- /* Be smarter. Multiply groups of numbers in ascending order until the
- product doesn't fit in a limb. Multiply these partial product in a
- balanced binary tree fashion, to make the operand have as equal sizes
- as possible. When the operands have about the same size, mpn_mul
- becomes faster. */
-
- unsigned long int p, k;
- mp_limb_t p1, p0;
-
- /* Stack of partial products, used to make the computation balanced
- (i.e. make the sizes of the multiplication operands equal). The
- topmost position of MP_STACK will contain a one-limb partial product,
- the second topmost will contain a two-limb partial product, and so
- on. MP_STACK[0] will contain a partial product with 2**t limbs.
- To compute n! MP_STACK needs to be less than
- log(n)**2/log(BITS_PER_MP_LIMB), so 30 is surely enough. */
-#define MP_STACK_SIZE 30
- mpz_t mp_stack[MP_STACK_SIZE];
-
- /* TOP is an index into MP_STACK, giving the topmost element.
- TOP_LIMIT_SO_FAR is the largets value it has taken so far. */
- int top, top_limit_so_far;
-
- /* Count of the total number of limbs put on MP_STACK so far. This
- variable plays an essential role in making the compututation balanced.
- See below. */
- unsigned int tree_cnt;
-
- top = top_limit_so_far = -1;
- tree_cnt = 0;
- p = 1;
- for (k = 2; k <= n; k++)
- {
- /* Multiply the partial product in P with K. */
- umul_ppmm (p1, p0, (mp_limb_t) p, (mp_limb_t) k);
-
- /* Did we get overflow into the high limb, i.e. is the partial
- product now more than one limb? */
- if (p1 != 0)
- {
- tree_cnt++;
-
- if (tree_cnt % 2 == 0)
- {
- mp_size_t i;
-
- /* TREE_CNT is even (i.e. we have generated an even number of
- one-limb partial products), which means that we have a
- single-limb product on the top of MP_STACK. */
-
- mpz_mul_ui (mp_stack[top], mp_stack[top], p);
-
- /* If TREE_CNT is divisable by 4, 8,..., we have two
- similar-sized partial products with 2, 4,... limbs at
- the topmost two positions of MP_STACK. Multiply them
- to form a new partial product with 4, 8,... limbs. */
- for (i = 4; (tree_cnt & (i - 1)) == 0; i <<= 1)
- {
- mpz_mul (mp_stack[top - 1],
- mp_stack[top], mp_stack[top - 1]);
- top--;
- }
- }
- else
- {
- /* Put the single-limb partial product in P on the stack.
- (The next time we get a single-limb product, we will
- multiply the two together.) */
- top++;
- if (top > top_limit_so_far)
- {
- if (top > MP_STACK_SIZE)
- abort();
- /* The stack is now bigger than ever, initialize the top
- element. */
- mpz_init_set_ui (mp_stack[top], p);
- top_limit_so_far++;
- }
- else
- mpz_set_ui (mp_stack[top], p);
- }
-
- /* We ignored the last result from umul_ppmm. Put K in P as the
- first component of the next single-limb partial product. */
- p = k;
- }
- else
- /* We didn't get overflow in umul_ppmm. Put p0 in P and try
- with one more value of K. */
- p = p0; /* bogus if long != mp_limb_t */
- }
-
- /* We have partial products in mp_stack[0..top], in descending order.
- We also have a small partial product in p.
- Their product is the final result. */
- if (top < 0)
- mpz_set_ui (result, p);
- else
- mpz_mul_ui (result, mp_stack[top--], p);
- while (top >= 0)
- mpz_mul (result, result, mp_stack[top--]);
-
- /* Free the storage allocated for MP_STACK. */
- for (top = top_limit_so_far; top >= 0; top--)
- mpz_clear (mp_stack[top]);
-#endif
-}
diff --git a/gnu/lib/libgmp/mpz/fdiv_q.c b/gnu/lib/libgmp/mpz/fdiv_q.c
deleted file mode 100644
index 3da943a..0000000
--- a/gnu/lib/libgmp/mpz/fdiv_q.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* mpz_fdiv_q -- Division rounding the quotient towards -infinity.
- The remainder gets the same sign as the denominator.
-
-Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_fdiv_q (mpz_ptr quot, mpz_srcptr dividend, mpz_srcptr divisor)
-#else
-mpz_fdiv_q (quot, dividend, divisor)
- mpz_ptr quot;
- mpz_srcptr dividend;
- mpz_srcptr divisor;
-#endif
-{
- mp_size_t dividend_size = dividend->_mp_size;
- mp_size_t divisor_size = divisor->_mp_size;
- mpz_t rem;
- TMP_DECL (marker);
-
- TMP_MARK (marker);
-
- MPZ_TMP_INIT (rem, 1 + ABS (dividend_size));
-
- mpz_tdiv_qr (quot, rem, dividend, divisor);
-
- if ((divisor_size ^ dividend_size) < 0 && rem->_mp_size != 0)
- mpz_sub_ui (quot, quot, 1L);
-
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpz/fdiv_q_2exp.c b/gnu/lib/libgmp/mpz/fdiv_q_2exp.c
deleted file mode 100644
index 3f56baf..0000000
--- a/gnu/lib/libgmp/mpz/fdiv_q_2exp.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/* mpz_fdiv_q_2exp -- Divide an integer by 2**CNT. Round the quotient
- towards -infinity.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_fdiv_q_2exp (mpz_ptr w, mpz_srcptr u, unsigned long int cnt)
-#else
-mpz_fdiv_q_2exp (w, u, cnt)
- mpz_ptr w;
- mpz_srcptr u;
- unsigned long int cnt;
-#endif
-{
- mp_size_t usize = u->_mp_size;
- mp_size_t wsize;
- mp_size_t abs_usize = ABS (usize);
- mp_size_t limb_cnt;
- mp_ptr wp;
- mp_limb_t round = 0;
-
- limb_cnt = cnt / BITS_PER_MP_LIMB;
- wsize = abs_usize - limb_cnt;
- if (wsize <= 0)
- {
- wp = w->_mp_d;
- wsize = 0;
- /* Set ROUND since we know we skip some non-zero words in this case.
- Well, if U is zero, we don't, but then this will be taken care of
- below, since rounding only really takes place for negative U. */
- round = 1;
- wp[0] = 1;
- w->_mp_size = -(usize < 0);
- return;
- }
- else
- {
- mp_size_t i;
- mp_ptr up;
-
- /* Make sure there is enough space. We make an extra limb
- here to account for possible rounding at the end. */
- if (w->_mp_alloc < wsize + 1)
- _mpz_realloc (w, wsize + 1);
-
- wp = w->_mp_d;
- up = u->_mp_d;
-
- /* Set ROUND if we are about skip some non-zero limbs. */
- for (i = 0; i < limb_cnt && round == 0; i++)
- round = up[i];
-
- cnt %= BITS_PER_MP_LIMB;
- if (cnt != 0)
- {
- round |= mpn_rshift (wp, up + limb_cnt, wsize, cnt);
- wsize -= wp[wsize - 1] == 0;
- }
- else
- {
- MPN_COPY_INCR (wp, up + limb_cnt, wsize);
- }
- }
-
- if (usize < 0 && round != 0)
- {
- mp_limb_t cy;
- cy = mpn_add_1 (wp, wp, wsize, 1);
- wp[wsize] = cy;
- wsize += cy;
- }
- w->_mp_size = usize >= 0 ? wsize : -wsize;
-}
diff --git a/gnu/lib/libgmp/mpz/fdiv_q_ui.c b/gnu/lib/libgmp/mpz/fdiv_q_ui.c
deleted file mode 100644
index 3d6825d..0000000
--- a/gnu/lib/libgmp/mpz/fdiv_q_ui.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* mpz_fdiv_q_ui -- Division rounding the quotient towards -infinity.
- The remainder gets the same sign as the denominator.
-
-Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-unsigned long int
-#if __STDC__
-mpz_fdiv_q_ui (mpz_ptr quot, mpz_srcptr dividend, unsigned long int divisor)
-#else
-mpz_fdiv_q_ui (quot, dividend, divisor)
- mpz_ptr quot;
- mpz_srcptr dividend;
- unsigned long int divisor;
-#endif
-{
- mp_size_t dividend_size;
- mp_size_t size;
- mp_ptr quot_ptr;
- mp_limb_t remainder_limb;
-
- dividend_size = dividend->_mp_size;
- size = ABS (dividend_size);
-
- if (quot->_mp_alloc < size)
- _mpz_realloc (quot, size);
-
- quot_ptr = quot->_mp_d;
-
- remainder_limb = mpn_divmod_1 (quot_ptr, dividend->_mp_d, size,
- (mp_limb_t) divisor);
-
- if (remainder_limb != 0 && dividend_size < 0)
- {
- mpn_add_1 (quot_ptr, quot_ptr, size, (mp_limb_t) 1);
- remainder_limb = divisor - remainder_limb;
- }
-
- size -= size != 0 && quot_ptr[size - 1] == 0;
- quot->_mp_size = dividend_size >= 0 ? size : -size;
-
- return remainder_limb;
-}
diff --git a/gnu/lib/libgmp/mpz/fdiv_qr.c b/gnu/lib/libgmp/mpz/fdiv_qr.c
deleted file mode 100644
index 2abb16c..0000000
--- a/gnu/lib/libgmp/mpz/fdiv_qr.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* mpz_fdiv_qr -- Division rounding the quotient towards -infinity.
- The remainder gets the same sign as the denominator.
-
-Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_fdiv_qr (mpz_ptr quot, mpz_ptr rem, mpz_srcptr dividend, mpz_srcptr divisor)
-#else
-mpz_fdiv_qr (quot, rem, dividend, divisor)
- mpz_ptr quot;
- mpz_ptr rem;
- mpz_srcptr dividend;
- mpz_srcptr divisor;
-#endif
-{
- mp_size_t divisor_size = divisor->_mp_size;
- mpz_t temp_divisor; /* N.B.: lives until function returns! */
- TMP_DECL (marker);
-
- TMP_MARK (marker);
-
- /* We need the original value of the divisor after the quotient and
- remainder have been preliminary calculated. We have to copy it to
- temporary space if it's the same variable as either QUOT or REM. */
- if (quot == divisor || rem == divisor)
- {
- MPZ_TMP_INIT (temp_divisor, ABS (divisor_size));
- mpz_set (temp_divisor, divisor);
- divisor = temp_divisor;
- }
-
- mpz_tdiv_qr (quot, rem, dividend, divisor);
-
- if ((divisor_size ^ dividend->_mp_size) < 0 && rem->_mp_size != 0)
- {
- mpz_sub_ui (quot, quot, 1L);
- mpz_add (rem, rem, divisor);
- }
-
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpz/fdiv_qr_ui.c b/gnu/lib/libgmp/mpz/fdiv_qr_ui.c
deleted file mode 100644
index a22b702..0000000
--- a/gnu/lib/libgmp/mpz/fdiv_qr_ui.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/* mpz_fdiv_qr_ui -- Division rounding the quotient towards -infinity.
- The remainder gets the same sign as the denominator.
-
-Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-unsigned long int
-#if __STDC__
-mpz_fdiv_qr_ui (mpz_ptr quot, mpz_ptr rem, mpz_srcptr dividend, unsigned long int divisor)
-#else
-mpz_fdiv_qr_ui (quot, rem, dividend, divisor)
- mpz_ptr quot;
- mpz_ptr rem;
- mpz_srcptr dividend;
- unsigned long int divisor;
-#endif
-{
- mp_size_t dividend_size;
- mp_size_t size;
- mp_ptr quot_ptr;
- mp_limb_t remainder_limb;
-
- dividend_size = dividend->_mp_size;
- size = ABS (dividend_size);
-
- if (quot->_mp_alloc < size)
- _mpz_realloc (quot, size);
-
- quot_ptr = quot->_mp_d;
-
- remainder_limb = mpn_divmod_1 (quot_ptr, dividend->_mp_d, size,
- (mp_limb_t) divisor);
-
- if (remainder_limb != 0 && dividend_size < 0)
- {
- mpn_add_1 (quot_ptr, quot_ptr, size, (mp_limb_t) 1);
- remainder_limb = divisor - remainder_limb;
- }
-
- size -= size != 0 && quot_ptr[size - 1] == 0;
- quot->_mp_size = dividend_size >= 0 ? size : -size;
-
- rem->_mp_d[0] = remainder_limb;
- rem->_mp_size = remainder_limb != 0;
-
- return remainder_limb;
-}
diff --git a/gnu/lib/libgmp/mpz/fdiv_r.c b/gnu/lib/libgmp/mpz/fdiv_r.c
deleted file mode 100644
index 14e045b..0000000
--- a/gnu/lib/libgmp/mpz/fdiv_r.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/* mpz_fdiv_r -- Division rounding the quotient towards -infinity.
- The remainder gets the same sign as the denominator.
-
-Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_fdiv_r (mpz_ptr rem, mpz_srcptr dividend, mpz_srcptr divisor)
-#else
-mpz_fdiv_r (rem, dividend, divisor)
- mpz_ptr rem;
- mpz_srcptr dividend;
- mpz_srcptr divisor;
-#endif
-{
- mp_size_t divisor_size = divisor->_mp_size;
- mpz_t temp_divisor; /* N.B.: lives until function returns! */
- TMP_DECL (marker);
-
- TMP_MARK (marker);
-
- /* We need the original value of the divisor after the remainder has been
- preliminary calculated. We have to copy it to temporary space if it's
- the same variable as REM. */
- if (rem == divisor)
- {
- MPZ_TMP_INIT (temp_divisor, ABS (divisor_size));
- mpz_set (temp_divisor, divisor);
- divisor = temp_divisor;
- }
-
- mpz_tdiv_r (rem, dividend, divisor);
-
- if ((divisor_size ^ dividend->_mp_size) < 0 && rem->_mp_size != 0)
- mpz_add (rem, rem, divisor);
-
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpz/fdiv_r_2exp.c b/gnu/lib/libgmp/mpz/fdiv_r_2exp.c
deleted file mode 100644
index 04190b1..0000000
--- a/gnu/lib/libgmp/mpz/fdiv_r_2exp.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/* mpz_fdiv_r_2exp -- Divide a integer by 2**CNT and produce a remainder.
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_fdiv_r_2exp (mpz_ptr res, mpz_srcptr in, unsigned long int cnt)
-#else
-mpz_fdiv_r_2exp (res, in, cnt)
- mpz_ptr res;
- mpz_srcptr in;
- unsigned long int cnt;
-#endif
-{
- mp_size_t in_size = ABS (in->_mp_size);
- mp_size_t res_size;
- mp_size_t limb_cnt = cnt / BITS_PER_MP_LIMB;
- mp_srcptr in_ptr = in->_mp_d;
-
- if (in_size > limb_cnt)
- {
- /* The input operand is (probably) greater than 2**CNT. */
- mp_limb_t x;
-
- x = in_ptr[limb_cnt] & (((mp_limb_t) 1 << cnt % BITS_PER_MP_LIMB) - 1);
- if (x != 0)
- {
- res_size = limb_cnt + 1;
- if (res->_mp_alloc < res_size)
- _mpz_realloc (res, res_size);
-
- res->_mp_d[limb_cnt] = x;
- }
- else
- {
- res_size = limb_cnt;
- MPN_NORMALIZE (in_ptr, res_size);
-
- if (res->_mp_alloc < res_size)
- _mpz_realloc (res, res_size);
-
- limb_cnt = res_size;
- }
- }
- else
- {
- /* The input operand is smaller than 2**CNT. We perform a no-op,
- apart from that we might need to copy IN to RES. */
- res_size = in_size;
- if (res->_mp_alloc < res_size)
- _mpz_realloc (res, res_size);
-
- limb_cnt = res_size;
- }
-
- if (res != in)
- MPN_COPY (res->_mp_d, in->_mp_d, limb_cnt);
- res->_mp_size = res_size;
- if (in->_mp_size < 0 && res_size != 0)
- {
- /* Result should be 2^CNT - RES */
- mpz_t tmp;
- MPZ_TMP_INIT (tmp, limb_cnt + 1);
- mpz_set_ui (tmp, 1L);
- mpz_mul_2exp (tmp, tmp, cnt);
- mpz_sub (res, tmp, res);
- }
-}
diff --git a/gnu/lib/libgmp/mpz/fdiv_r_ui.c b/gnu/lib/libgmp/mpz/fdiv_r_ui.c
deleted file mode 100644
index c4c3749..0000000
--- a/gnu/lib/libgmp/mpz/fdiv_r_ui.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/* mpz_fdiv_r_ui -- Division rounding the quotient towards -infinity.
- The remainder gets the same sign as the denominator.
-
-Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-unsigned long int
-#if __STDC__
-mpz_fdiv_r_ui (mpz_ptr rem, mpz_srcptr dividend, unsigned long int divisor)
-#else
-mpz_fdiv_r_ui (rem, dividend, divisor)
- mpz_ptr rem;
- mpz_srcptr dividend;
- unsigned long int divisor;
-#endif
-{
- mp_size_t dividend_size;
- mp_size_t size;
- mp_limb_t remainder_limb;
-
- dividend_size = dividend->_mp_size;
- size = ABS (dividend_size);
-
- remainder_limb = mpn_mod_1 (dividend->_mp_d, size, (mp_limb_t) divisor);
-
- if (remainder_limb != 0 && dividend_size < 0)
- remainder_limb = divisor - remainder_limb;
-
- rem->_mp_d[0] = remainder_limb;
- rem->_mp_size = remainder_limb != 0;
-
- return remainder_limb;
-}
diff --git a/gnu/lib/libgmp/mpz/fdiv_ui.c b/gnu/lib/libgmp/mpz/fdiv_ui.c
deleted file mode 100644
index 4d018a2..0000000
--- a/gnu/lib/libgmp/mpz/fdiv_ui.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* mpz_fdiv_ui -- Division rounding the quotient towards -infinity.
- The remainder gets the same sign as the denominator.
-
-Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-unsigned long int
-#if __STDC__
-mpz_fdiv_ui (mpz_srcptr dividend, unsigned long int divisor)
-#else
-mpz_fdiv_ui (dividend, divisor)
- mpz_srcptr dividend;
- unsigned long int divisor;
-#endif
-{
- mp_size_t dividend_size;
- mp_size_t size;
- mp_limb_t remainder_limb;
-
- dividend_size = dividend->_mp_size;
- size = ABS (dividend_size);
-
- remainder_limb = mpn_mod_1 (dividend->_mp_d, size, (mp_limb_t) divisor);
-
- if (remainder_limb != 0 && dividend_size < 0)
- remainder_limb = divisor - remainder_limb;
-
- return remainder_limb;
-}
diff --git a/gnu/lib/libgmp/mpz/gcd.c b/gnu/lib/libgmp/mpz/gcd.c
deleted file mode 100644
index f93030c..0000000
--- a/gnu/lib/libgmp/mpz/gcd.c
+++ /dev/null
@@ -1,178 +0,0 @@
-/* mpz/gcd.c: Calculate the greatest common divisor of two integers.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-void *_mpz_realloc ();
-
-#ifndef BERKELEY_MP
-void
-#if __STDC__
-mpz_gcd (mpz_ptr g, mpz_srcptr u, mpz_srcptr v)
-#else
-mpz_gcd (g, u, v)
- mpz_ptr g;
- mpz_srcptr u;
- mpz_srcptr v;
-#endif
-#else /* BERKELEY_MP */
-void
-#if __STDC__
-gcd (mpz_srcptr u, mpz_srcptr v, mpz_ptr g)
-#else
-gcd (u, v, g)
- mpz_ptr g;
- mpz_srcptr u;
- mpz_srcptr v;
-#endif
-#endif /* BERKELEY_MP */
-
-{
- unsigned long int g_zero_bits, u_zero_bits, v_zero_bits;
- mp_size_t g_zero_limbs, u_zero_limbs, v_zero_limbs;
- mp_ptr tp;
- mp_ptr up = u->_mp_d;
- mp_size_t usize = ABS (u->_mp_size);
- mp_ptr vp = v->_mp_d;
- mp_size_t vsize = ABS (v->_mp_size);
- mp_size_t gsize;
- TMP_DECL (marker);
-
- /* GCD(0, V) == V. */
- if (usize == 0)
- {
- g->_mp_size = vsize;
- if (g == v)
- return;
- if (g->_mp_alloc < vsize)
- _mpz_realloc (g, vsize);
- MPN_COPY (g->_mp_d, vp, vsize);
- return;
- }
-
- /* GCD(U, 0) == U. */
- if (vsize == 0)
- {
- g->_mp_size = usize;
- if (g == u)
- return;
- if (g->_mp_alloc < usize)
- _mpz_realloc (g, usize);
- MPN_COPY (g->_mp_d, up, usize);
- return;
- }
-
- if (usize == 1)
- {
- g->_mp_size = 1;
- g->_mp_d[0] = mpn_gcd_1 (vp, vsize, up[0]);
- return;
- }
-
- if (vsize == 1)
- {
- g->_mp_size = 1;
- g->_mp_d[0] = mpn_gcd_1 (up, usize, vp[0]);
- return;
- }
-
- TMP_MARK (marker);
-
- /* Eliminate low zero bits from U and V and move to temporary storage. */
- while (*up == 0)
- up++;
- u_zero_limbs = up - u->_mp_d;
- usize -= u_zero_limbs;
- count_trailing_zeros (u_zero_bits, *up);
- tp = up;
- up = (mp_ptr) TMP_ALLOC (usize * BYTES_PER_MP_LIMB);
- if (u_zero_bits != 0)
- {
- mpn_rshift (up, tp, usize, u_zero_bits);
- usize -= up[usize - 1] == 0;
- }
- else
- MPN_COPY (up, tp, usize);
-
- while (*vp == 0)
- vp++;
- v_zero_limbs = vp - v->_mp_d;
- vsize -= v_zero_limbs;
- count_trailing_zeros (v_zero_bits, *vp);
- tp = vp;
- vp = (mp_ptr) TMP_ALLOC (vsize * BYTES_PER_MP_LIMB);
- if (v_zero_bits != 0)
- {
- mpn_rshift (vp, tp, vsize, v_zero_bits);
- vsize -= vp[vsize - 1] == 0;
- }
- else
- MPN_COPY (vp, tp, vsize);
-
- if (u_zero_limbs > v_zero_limbs)
- {
- g_zero_limbs = v_zero_limbs;
- g_zero_bits = v_zero_bits;
- }
- else if (u_zero_limbs < v_zero_limbs)
- {
- g_zero_limbs = u_zero_limbs;
- g_zero_bits = u_zero_bits;
- }
- else /* Equal. */
- {
- g_zero_limbs = u_zero_limbs;
- g_zero_bits = MIN (u_zero_bits, v_zero_bits);
- }
-
- /* Call mpn_gcd. The 1st argument must not have more bits than the 2nd. */
- vsize = (usize < vsize || (usize == vsize && up[usize-1] < vp[vsize-1]))
- ? mpn_gcd (vp, up, usize, vp, vsize)
- : mpn_gcd (vp, vp, vsize, up, usize);
-
- /* Here G <-- V << (g_zero_limbs*BITS_PER_MP_LIMB + g_zero_bits). */
- gsize = vsize + g_zero_limbs;
- if (g_zero_bits != 0)
- {
- mp_limb_t cy_limb;
- gsize += (vp[vsize - 1] >> (BITS_PER_MP_LIMB - g_zero_bits)) != 0;
- if (g->_mp_alloc < gsize)
- _mpz_realloc (g, gsize);
- MPN_ZERO (g->_mp_d, g_zero_limbs);
-
- tp = g->_mp_d + g_zero_limbs;
- cy_limb = mpn_lshift (tp, vp, vsize, g_zero_bits);
- if (cy_limb != 0)
- tp[vsize] = cy_limb;
- }
- else
- {
- if (g->_mp_alloc < gsize)
- _mpz_realloc (g, gsize);
- MPN_ZERO (g->_mp_d, g_zero_limbs);
- MPN_COPY (g->_mp_d + g_zero_limbs, vp, vsize);
- }
-
- g->_mp_size = gsize;
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpz/gcd_ui.c b/gnu/lib/libgmp/mpz/gcd_ui.c
deleted file mode 100644
index 388ab05..0000000
--- a/gnu/lib/libgmp/mpz/gcd_ui.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* mpz_gcd_ui -- Calculate the greatest common divisior of two integers.
-
-Copyright (C) 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-unsigned long int
-#if __STDC__
-mpz_gcd_ui (mpz_ptr w, mpz_srcptr u, unsigned long int v)
-#else
-mpz_gcd_ui (w, u, v)
- mpz_ptr w;
- mpz_srcptr u;
- unsigned long int v;
-#endif
-{
- mp_size_t size;
- mp_limb_t res;
-
- size = ABS (u->_mp_size);
-
- if (size == 0)
- res = v;
- else if (v == 0)
- {
- if (w != NULL && u != w)
- {
- if (w->_mp_alloc < size)
- _mpz_realloc (w, size);
-
- MPN_COPY (w->_mp_d, u->_mp_d, size);
- }
- w->_mp_size = size;
- /* We can't return any useful result for gcd(big,0). */
- return size > 1 ? 0 : w->_mp_d[0];
- }
- else
- res = mpn_gcd_1 (u->_mp_d, size, v);
-
- if (w != NULL)
- {
- w->_mp_d[0] = res;
- w->_mp_size = 1;
- }
- return res;
-}
diff --git a/gnu/lib/libgmp/mpz/gcdext.c b/gnu/lib/libgmp/mpz/gcdext.c
deleted file mode 100644
index adf66b0..0000000
--- a/gnu/lib/libgmp/mpz/gcdext.c
+++ /dev/null
@@ -1,88 +0,0 @@
-/* mpz_gcdext(g, s, t, a, b) -- Set G to gcd(a, b), and S and T such that
- g = as + bt.
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-/* Botch: SLOW! */
-
-void
-#if __STDC__
-mpz_gcdext (mpz_ptr g, mpz_ptr s, mpz_ptr t, mpz_srcptr a, mpz_srcptr b)
-#else
-mpz_gcdext (g, s, t, a, b)
- mpz_ptr g;
- mpz_ptr s;
- mpz_ptr t;
- mpz_srcptr a;
- mpz_srcptr b;
-#endif
-{
- mpz_t s0, s1, q, r, x, d0, d1;
-
- mpz_init_set_ui (s0, 1L);
- mpz_init_set_ui (s1, 0L);
- mpz_init (q);
- mpz_init (r);
- mpz_init (x);
- mpz_init_set (d0, a);
- mpz_init_set (d1, b);
-
- while (d1->_mp_size != 0)
- {
- mpz_tdiv_qr (q, r, d0, d1);
- mpz_set (d0, d1);
- mpz_set (d1, r);
-
- mpz_mul (x, s1, q);
- mpz_sub (x, s0, x);
- mpz_set (s0, s1);
- mpz_set (s1, x);
- }
-
- if (t != NULL)
- {
- mpz_mul (x, s0, a);
- mpz_sub (x, d0, x);
- if (b->_mp_size == 0)
- t->_mp_size = 0;
- else
- mpz_tdiv_q (t, x, b);
- }
- mpz_set (s, s0);
- mpz_set (g, d0);
- if (g->_mp_size < 0)
- {
- g->_mp_size = -g->_mp_size;
- s->_mp_size = -s->_mp_size;
- if (t != NULL)
- t->_mp_size = -t->_mp_size;
- }
-
- mpz_clear (s0);
- mpz_clear (s1);
- mpz_clear (q);
- mpz_clear (r);
- mpz_clear (x);
- mpz_clear (d0);
- mpz_clear (d1);
-}
diff --git a/gnu/lib/libgmp/mpz/get_d.c b/gnu/lib/libgmp/mpz/get_d.c
deleted file mode 100644
index 0fd7916..0000000
--- a/gnu/lib/libgmp/mpz/get_d.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* double mpz_get_d (mpz_t src) -- Return the double approximation to SRC.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-double
-#if __STDC__
-mpz_get_d (mpz_srcptr src)
-#else
-mpz_get_d (src)
- mpz_srcptr src;
-#endif
-{
- double res;
- mp_size_t size, i, n_limbs_to_use;
- int negative;
- mp_ptr qp;
-
- size = SIZ(src);
- if (size == 0)
- return 0.0;
-
- negative = size < 0;
- size = ABS (size);
- qp = PTR(src);
-
- res = qp[size - 1];
- n_limbs_to_use = MIN (LIMBS_PER_DOUBLE, size);
- for (i = 2; i <= n_limbs_to_use; i++)
- res = res * MP_BASE_AS_DOUBLE + qp[size - i];
-
- res = __gmp_scale2 (res, (size - n_limbs_to_use) * BITS_PER_MP_LIMB);
-
- return negative ? -res : res;
-}
diff --git a/gnu/lib/libgmp/mpz/get_si.c b/gnu/lib/libgmp/mpz/get_si.c
deleted file mode 100644
index 45e0e5a..0000000
--- a/gnu/lib/libgmp/mpz/get_si.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* mpz_get_si(integer) -- Return the least significant digit from INTEGER.
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-signed long int
-#if __STDC__
-mpz_get_si (mpz_srcptr op)
-#else
-mpz_get_si (op)
- mpz_srcptr op;
-#endif
-{
- mp_size_t size = op->_mp_size;
- mp_limb_t low_limb = op->_mp_d[0];
-
- if (size > 0)
- return low_limb % ((mp_limb_t) 1 << (BITS_PER_MP_LIMB - 1));
- else if (size < 0)
- /* This convoluted expression is necessary to properly handle 0x80000000 */
- return ~((low_limb - 1) % ((mp_limb_t) 1 << (BITS_PER_MP_LIMB - 1)));
- else
- return 0;
-}
diff --git a/gnu/lib/libgmp/mpz/get_str.c b/gnu/lib/libgmp/mpz/get_str.c
deleted file mode 100644
index 8ccf3ef..0000000
--- a/gnu/lib/libgmp/mpz/get_str.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/* mpz_get_str (string, base, mp_src) -- Convert the multiple precision
- number MP_SRC to a string STRING of base BASE. If STRING is NULL
- allocate space for the result. In any case, return a pointer to the
- result. If STRING is not NULL, the caller must ensure enough space is
- available to store the result.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-char *
-#if __STDC__
-mpz_get_str (char *res_str, int base, mpz_srcptr x)
-#else
-mpz_get_str (res_str, base, x)
- char *res_str;
- int base;
- mpz_srcptr x;
-#endif
-{
- mp_ptr xp;
- mp_size_t x_size = x->_mp_size;
- unsigned char *str;
- char *return_str;
- size_t str_size;
- char *num_to_text;
- int i;
- TMP_DECL (marker);
-
- TMP_MARK (marker);
- if (base >= 0)
- {
- if (base == 0)
- base = 10;
- num_to_text = "0123456789abcdefghijklmnopqrstuvwxyz";
- }
- else
- {
- base = -base;
- num_to_text = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
- }
-
- /* We allways allocate space for the string. If the caller passed a
- NULL pointer for RES_STR, we allocate permanent space and return
- a pointer to that to the caller. */
- str_size = ((size_t) (ABS (x_size) * BITS_PER_MP_LIMB
- * __mp_bases[base].chars_per_bit_exactly)) + 3;
- if (res_str == 0)
- {
- /* We didn't get a string from the user. Allocate one (and return
- a pointer to it). */
- res_str = (char *) (*_mp_allocate_func) (str_size);
- /* Make str, the variable used for raw result from mpn_get_str,
- point to the same string, but just after a possible minus sign. */
- str = (unsigned char *) res_str + 1;
- }
- else
- {
- /* Use TMP_ALLOC to get temporary space, since we need a few extra bytes
- that we can't expect to caller to supply us with. */
- str = (unsigned char *) TMP_ALLOC (str_size);
- }
-
- return_str = res_str;
-
- if (x_size == 0)
- {
- res_str[0] = '0';
- res_str[1] = 0;
- TMP_FREE (marker);
- return res_str;
- }
- if (x_size < 0)
- {
- *res_str++ = '-';
- x_size = -x_size;
- }
-
- /* Move the number to convert into temporary space, since mpn_get_str
- clobbers its argument + needs one extra high limb.... */
- xp = (mp_ptr) TMP_ALLOC ((x_size + 1) * BYTES_PER_MP_LIMB);
- MPN_COPY (xp, x->_mp_d, x_size);
-
- str_size = mpn_get_str (str, base, xp, x_size);
-
- /* mpn_get_str might make some leading zeros. Skip them. */
- while (*str == 0)
- {
- str_size--;
- str++;
- }
-
- /* Translate result to printable chars and move result to RES_STR. */
- for (i = 0; i < str_size; i++)
- res_str[i] = num_to_text[str[i]];
- res_str[str_size] = 0;
-
- TMP_FREE (marker);
- return return_str;
-}
diff --git a/gnu/lib/libgmp/mpz/get_ui.c b/gnu/lib/libgmp/mpz/get_ui.c
deleted file mode 100644
index 4bfb5e1..0000000
--- a/gnu/lib/libgmp/mpz/get_ui.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* mpz_get_ui(integer) -- Return the least significant digit from INTEGER.
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-unsigned long int
-#if __STDC__
-mpz_get_ui (mpz_srcptr integer)
-#else
-mpz_get_ui (integer)
- mpz_srcptr integer;
-#endif
-{
- if (integer->_mp_size == 0)
- return 0;
- else
- return integer->_mp_d[0];
-}
diff --git a/gnu/lib/libgmp/mpz/getlimbn.c b/gnu/lib/libgmp/mpz/getlimbn.c
deleted file mode 100644
index c7a234b..0000000
--- a/gnu/lib/libgmp/mpz/getlimbn.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/* mpz_getlimbn(integer,n) -- Return the N:th limb from INTEGER.
-
-Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-mp_limb_t
-#if __STDC__
-mpz_getlimbn (mpz_srcptr integer, mp_size_t n)
-#else
-mpz_getlimbn (integer, n)
- mpz_srcptr integer;
- mp_size_t n;
-#endif
-{
- if (integer->_mp_size <= n || n < 0)
- return 0;
- else
- return integer->_mp_d[n];
-}
diff --git a/gnu/lib/libgmp/mpz/hamdist.c b/gnu/lib/libgmp/mpz/hamdist.c
deleted file mode 100644
index 58c9273..0000000
--- a/gnu/lib/libgmp/mpz/hamdist.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* mpz_hamdist(mpz_ptr op1, mpz_ptr op2) -- Compute the hamming distance
- between OP1 and OP2. If one of the operands is negative, return ~0. (We
- could make the function well-defined when both operands are negative, but
- that would probably not be worth the trouble.
-
-Copyright (C) 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-unsigned long int
-#if __STDC__
-mpz_hamdist (mpz_srcptr u, mpz_srcptr v)
-#else
-mpz_hamdist (u, v)
- mpz_srcptr u;
- mpz_srcptr v;
-#endif
-{
- mp_srcptr up, vp;
- mp_size_t usize, vsize, size;
- unsigned long int count;
-
- usize = u->_mp_size;
- vsize = v->_mp_size;
-
- if ((usize | vsize) < 0)
- return ~ (unsigned long int) 0;
-
- up = u->_mp_d;
- vp = v->_mp_d;
-
- if (usize > vsize)
- {
- count = mpn_popcount (up + vsize, usize - vsize);
- size = vsize;
- }
- else
- {
- count = mpn_popcount (vp + usize, vsize - usize);
- size = usize;
- }
-
- return count + mpn_hamdist (up, vp, size);
-}
diff --git a/gnu/lib/libgmp/mpz/init.c b/gnu/lib/libgmp/mpz/init.c
deleted file mode 100644
index f8d8e20..0000000
--- a/gnu/lib/libgmp/mpz/init.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* mpz_init() -- Make a new multiple precision number with value 0.
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_init (mpz_ptr x)
-#else
-mpz_init (x)
- mpz_ptr x;
-#endif
-{
- x->_mp_alloc = 1;
- x->_mp_d = (mp_ptr) (*_mp_allocate_func) (BYTES_PER_MP_LIMB);
- x->_mp_size = 0;
-}
diff --git a/gnu/lib/libgmp/mpz/inp_raw.c b/gnu/lib/libgmp/mpz/inp_raw.c
deleted file mode 100644
index e1cec1d..0000000
--- a/gnu/lib/libgmp/mpz/inp_raw.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/* mpz_inp_raw -- Input a mpz_t in raw, but endianess, and wordsize
- independent format (as output by mpz_out_raw).
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-size_t
-#if __STDC__
-mpz_inp_raw (mpz_ptr x, FILE *stream)
-#else
-mpz_inp_raw (x, stream)
- mpz_ptr x;
- FILE *stream;
-#endif
-{
- int i;
- mp_size_t s;
- mp_size_t xsize;
- mp_ptr xp;
- unsigned int c;
- mp_limb_t x_limb;
- mp_size_t in_bytesize;
- int neg_flag;
-
- if (stream == 0)
- stream = stdin;
-
- /* Read 4-byte size */
- in_bytesize = 0;
- for (i = 4 - 1; i >= 0; i--)
- {
- c = fgetc (stream);
- in_bytesize = (in_bytesize << BITS_PER_CHAR) | c;
- }
-
- /* Size is stored as a 32 bit word; sign extend in_bytesize for non-32 bit
- machines. */
- if (sizeof (mp_size_t) > 4)
- in_bytesize |= (-(in_bytesize < 0)) << 31;
-
- neg_flag = in_bytesize < 0;
- in_bytesize = ABS (in_bytesize);
- xsize = (in_bytesize + BYTES_PER_MP_LIMB - 1) / BYTES_PER_MP_LIMB;
-
- if (xsize == 0)
- {
- x->_mp_size = 0;
- return 4; /* we've read 4 bytes */
- }
-
- if (x->_mp_alloc < xsize)
- _mpz_realloc (x, xsize);
- xp = x->_mp_d;
-
- x_limb = 0;
- for (i = (in_bytesize - 1) % BYTES_PER_MP_LIMB; i >= 0; i--)
- {
- c = fgetc (stream);
- x_limb = (x_limb << BITS_PER_CHAR) | c;
- }
- xp[xsize - 1] = x_limb;
-
- for (s = xsize - 2; s >= 0; s--)
- {
- x_limb = 0;
- for (i = BYTES_PER_MP_LIMB - 1; i >= 0; i--)
- {
- c = fgetc (stream);
- x_limb = (x_limb << BITS_PER_CHAR) | c;
- }
- xp[s] = x_limb;
- }
-
- if (c == EOF)
- return 0; /* error */
-
- MPN_NORMALIZE (xp, xsize);
- x->_mp_size = neg_flag ? -xsize : xsize;
- return in_bytesize + 4;
-}
diff --git a/gnu/lib/libgmp/mpz/inp_str.c b/gnu/lib/libgmp/mpz/inp_str.c
deleted file mode 100644
index 7159062..0000000
--- a/gnu/lib/libgmp/mpz/inp_str.c
+++ /dev/null
@@ -1,138 +0,0 @@
-/* mpz_inp_str(dest_integer, stream, base) -- Input a number in base
- BASE from stdio stream STREAM and store the result in DEST_INTEGER.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include <ctype.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-
-static int
-digit_value_in_base (c, base)
- int c;
- int base;
-{
- int digit;
-
- if (isdigit (c))
- digit = c - '0';
- else if (islower (c))
- digit = c - 'a' + 10;
- else if (isupper (c))
- digit = c - 'A' + 10;
- else
- return -1;
-
- if (digit < base)
- return digit;
- return -1;
-}
-
-size_t
-#if __STDC__
-mpz_inp_str (mpz_ptr dest, FILE *stream, int base)
-#else
-mpz_inp_str (dest, stream, base)
- mpz_ptr dest;
- FILE *stream;
- int base;
-#endif
-{
- char *str;
- size_t alloc_size, str_size;
- int c;
- int negative;
- mp_size_t dest_size;
- size_t nread;
-
- if (stream == 0)
- stream = stdin;
-
- alloc_size = 100;
- str = (char *) (*_mp_allocate_func) (alloc_size);
- str_size = 0;
- nread = 0;
-
- /* Skip whitespace. */
- do
- {
- c = getc (stream);
- nread++;
- }
- while (isspace (c));
-
- negative = 0;
- if (c == '-')
- {
- negative = 1;
- c = getc (stream);
- }
-
- if (digit_value_in_base (c, base == 0 ? 10 : base) < 0)
- return 0; /* error if no digits */
-
- /* If BASE is 0, try to find out the base by looking at the initial
- characters. */
- if (base == 0)
- {
- base = 10;
- if (c == '0')
- {
- base = 8;
- c = getc (stream);
- nread++;
- if (c == 'x' || c == 'X')
- {
- base = 16;
- c = getc (stream);
- nread++;
- }
- }
- }
-
- for (;;)
- {
- int dig;
- if (str_size >= alloc_size)
- {
- size_t old_alloc_size = alloc_size;
- alloc_size = alloc_size * 3 / 2;
- str = (char *) (*_mp_reallocate_func) (str, old_alloc_size, alloc_size);
- }
- dig = digit_value_in_base (c, base);
- if (dig < 0)
- break;
- str[str_size++] = dig;
- c = getc (stream);
- }
-
- ungetc (c, stream);
-
- dest_size = str_size / __mp_bases[base].chars_per_limb + 1;
- if (dest->_mp_alloc < dest_size)
- _mpz_realloc (dest, dest_size);
-
- dest_size = mpn_set_str (dest->_mp_d, (unsigned char *) str, str_size, base);
- dest->_mp_size = negative ? -dest_size : dest_size;
-
- (*_mp_free_func) (str, alloc_size);
- return str_size + nread;
-}
diff --git a/gnu/lib/libgmp/mpz/invert.c b/gnu/lib/libgmp/mpz/invert.c
deleted file mode 100644
index ff1d6d9..0000000
--- a/gnu/lib/libgmp/mpz/invert.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* mpz_invert (inv, x, n). Find multiplicative inverse of X in Z(N).
- If X has an inverse, return non-zero and store inverse in INVERSE,
- otherwise, return 0 and put garbage in X.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-
-int
-#if __STDC__
-mpz_invert (mpz_ptr inverse, mpz_srcptr x, mpz_srcptr n)
-#else
-mpz_invert (inverse, x, n)
- mpz_ptr inverse;
- mpz_srcptr x, n;
-#endif
-{
- mpz_t gcd;
- int rv;
-
- mpz_init (gcd);
- mpz_gcdext (gcd, inverse, (mpz_ptr) 0, x, n);
- rv = gcd->_mp_size == 1 && (gcd->_mp_d)[0] == 1;
- mpz_clear (gcd);
- return rv;
-}
diff --git a/gnu/lib/libgmp/mpz/ior.c b/gnu/lib/libgmp/mpz/ior.c
deleted file mode 100644
index 77facfd..0000000
--- a/gnu/lib/libgmp/mpz/ior.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/* mpz_ior -- Logical inclusive or.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_ior (mpz_ptr res, mpz_srcptr op1, mpz_srcptr op2)
-#else
-mpz_ior (res, op1, op2)
- mpz_ptr res;
- mpz_srcptr op1;
- mpz_srcptr op2;
-#endif
-{
- mp_srcptr op1_ptr, op2_ptr;
- mp_size_t op1_size, op2_size;
- mp_ptr res_ptr;
- mp_size_t res_size;
- mp_size_t i;
- TMP_DECL (marker);
-
- TMP_MARK (marker);
- op1_size = op1->_mp_size;
- op2_size = op2->_mp_size;
-
- op1_ptr = op1->_mp_d;
- op2_ptr = op2->_mp_d;
- res_ptr = res->_mp_d;
-
- if (op1_size >= 0)
- {
- if (op2_size >= 0)
- {
- if (op1_size >= op2_size)
- {
- if (res->_mp_alloc < op1_size)
- {
- _mpz_realloc (res, op1_size);
- op1_ptr = op1->_mp_d;
- op2_ptr = op2->_mp_d;
- res_ptr = res->_mp_d;
- }
-
- if (res_ptr != op1_ptr)
- MPN_COPY (res_ptr + op2_size, op1_ptr + op2_size,
- op1_size - op2_size);
- for (i = op2_size - 1; i >= 0; i--)
- res_ptr[i] = op1_ptr[i] | op2_ptr[i];
- res_size = op1_size;
- }
- else
- {
- if (res->_mp_alloc < op2_size)
- {
- _mpz_realloc (res, op2_size);
- op1_ptr = op1->_mp_d;
- op2_ptr = op2->_mp_d;
- res_ptr = res->_mp_d;
- }
-
- if (res_ptr != op2_ptr)
- MPN_COPY (res_ptr + op1_size, op2_ptr + op1_size,
- op2_size - op1_size);
- for (i = op1_size - 1; i >= 0; i--)
- res_ptr[i] = op1_ptr[i] | op2_ptr[i];
- res_size = op2_size;
- }
-
- res->_mp_size = res_size;
- return;
- }
- else /* op2_size < 0 */
- {
- /* Fall through to the code at the end of the function. */
- }
- }
- else
- {
- if (op2_size < 0)
- {
- mp_ptr opx;
- mp_limb_t cy;
-
- /* Both operands are negative, so will be the result.
- -((-OP1) | (-OP2)) = -(~(OP1 - 1) | ~(OP2 - 1)) =
- = ~(~(OP1 - 1) | ~(OP2 - 1)) + 1 =
- = ((OP1 - 1) & (OP2 - 1)) + 1 */
-
- op1_size = -op1_size;
- op2_size = -op2_size;
-
- res_size = MIN (op1_size, op2_size);
-
- /* Possible optimization: Decrease mpn_sub precision,
- as we won't use the entire res of both. */
- opx = (mp_ptr) TMP_ALLOC (res_size * BYTES_PER_MP_LIMB);
- mpn_sub_1 (opx, op1_ptr, res_size, (mp_limb_t) 1);
- op1_ptr = opx;
-
- opx = (mp_ptr) TMP_ALLOC (res_size * BYTES_PER_MP_LIMB);
- mpn_sub_1 (opx, op2_ptr, res_size, (mp_limb_t) 1);
- op2_ptr = opx;
-
- if (res->_mp_alloc < res_size)
- {
- _mpz_realloc (res, res_size);
- res_ptr = res->_mp_d;
- /* Don't re-read OP1_PTR and OP2_PTR. They point to
- temporary space--never to the space RES->_mp_D used
- to point to before reallocation. */
- }
-
- /* First loop finds the size of the result. */
- for (i = res_size - 1; i >= 0; i--)
- if ((op1_ptr[i] & op2_ptr[i]) != 0)
- break;
- res_size = i + 1;
-
- if (res_size != 0)
- {
- /* Second loop computes the real result. */
- for (i = res_size - 1; i >= 0; i--)
- res_ptr[i] = op1_ptr[i] & op2_ptr[i];
-
- cy = mpn_add_1 (res_ptr, res_ptr, res_size, (mp_limb_t) 1);
- if (cy)
- {
- res_ptr[res_size] = cy;
- res_size++;
- }
- }
- else
- {
- res_ptr[0] = 1;
- res_size = 1;
- }
-
- res->_mp_size = -res_size;
- TMP_FREE (marker);
- return;
- }
- else
- {
- /* We should compute -OP1 | OP2. Swap OP1 and OP2 and fall
- through to the code that handles OP1 | -OP2. */
- {mpz_srcptr t = op1; op1 = op2; op2 = t;}
- {mp_srcptr t = op1_ptr; op1_ptr = op2_ptr; op2_ptr = t;}
- {mp_size_t t = op1_size; op1_size = op2_size; op2_size = t;}
- }
- }
-
- {
- mp_ptr opx;
- mp_limb_t cy;
- mp_size_t res_alloc;
- mp_size_t count;
-
- /* Operand 2 negative, so will be the result.
- -(OP1 | (-OP2)) = -(OP1 | ~(OP2 - 1)) =
- = ~(OP1 | ~(OP2 - 1)) + 1 =
- = (~OP1 & (OP2 - 1)) + 1 */
-
- op2_size = -op2_size;
-
- res_alloc = op2_size;
-
- opx = (mp_ptr) TMP_ALLOC (op2_size * BYTES_PER_MP_LIMB);
- mpn_sub_1 (opx, op2_ptr, op2_size, (mp_limb_t) 1);
- op2_ptr = opx;
-
- if (res->_mp_alloc < res_alloc)
- {
- _mpz_realloc (res, res_alloc);
- op1_ptr = op1->_mp_d;
- res_ptr = res->_mp_d;
- /* Don't re-read OP2_PTR. It points to temporary space--never
- to the space RES->_mp_D used to point to before reallocation. */
- }
-
- if (op1_size >= op2_size)
- {
- /* We can just ignore the part of OP1 that stretches above OP2,
- because the result limbs are zero there. */
-
- /* First loop finds the size of the result. */
- for (i = op2_size - 1; i >= 0; i--)
- if ((~op1_ptr[i] & op2_ptr[i]) != 0)
- break;
- res_size = i + 1;
- count = res_size;
- }
- else
- {
- res_size = op2_size;
-
- /* Copy the part of OP2 that stretches above OP1, to RES. */
- MPN_COPY (res_ptr + op1_size, op2_ptr + op1_size, op2_size - op1_size);
- count = op1_size;
- }
-
- if (res_size != 0)
- {
- /* Second loop computes the real result. */
- for (i = count - 1; i >= 0; i--)
- res_ptr[i] = ~op1_ptr[i] & op2_ptr[i];
-
- cy = mpn_add_1 (res_ptr, res_ptr, res_size, (mp_limb_t) 1);
- if (cy)
- {
- res_ptr[res_size] = cy;
- res_size++;
- }
- }
- else
- {
- res_ptr[0] = 1;
- res_size = 1;
- }
-
- res->_mp_size = -res_size;
- }
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpz/iset.c b/gnu/lib/libgmp/mpz/iset.c
deleted file mode 100644
index c8a17dc..0000000
--- a/gnu/lib/libgmp/mpz/iset.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* mpz_init_set (src_integer) -- Make a new multiple precision number with
- a value copied from SRC_INTEGER.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_init_set (mpz_ptr w, mpz_srcptr u)
-#else
-mpz_init_set (w, u)
- mpz_ptr w;
- mpz_srcptr u;
-#endif
-{
- mp_ptr wp, up;
- mp_size_t usize, size;
-
- usize = u->_mp_size;
- size = ABS (usize);
-
- w->_mp_alloc = MAX (size, 1);
- w->_mp_d = (mp_ptr) (*_mp_allocate_func) (w->_mp_alloc * BYTES_PER_MP_LIMB);
-
- wp = w->_mp_d;
- up = u->_mp_d;
-
- MPN_COPY (wp, up, size);
- w->_mp_size = usize;
-}
diff --git a/gnu/lib/libgmp/mpz/iset_d.c b/gnu/lib/libgmp/mpz/iset_d.c
deleted file mode 100644
index 41e5c4f..0000000
--- a/gnu/lib/libgmp/mpz/iset_d.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* mpz_init_set_d(integer, val) -- Initialize and assign INTEGER with a double
- value VAL.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_init_set_d (mpz_ptr dest, double val)
-#else
-mpz_init_set_d (dest, val)
- mpz_ptr dest;
- double val;
-#endif
-{
- dest->_mp_alloc = 1;
- dest->_mp_d = (mp_ptr) (*_mp_allocate_func) (BYTES_PER_MP_LIMB);
- dest->_mp_size = 0;
- mpz_set_d (dest, val);
-}
diff --git a/gnu/lib/libgmp/mpz/iset_si.c b/gnu/lib/libgmp/mpz/iset_si.c
deleted file mode 100644
index af51f05..0000000
--- a/gnu/lib/libgmp/mpz/iset_si.c
+++ /dev/null
@@ -1,49 +0,0 @@
-/* mpz_init_set_si(val) -- Make a new multiple precision number with
- value val.
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_init_set_si (mpz_ptr x, signed long int val)
-#else
-mpz_init_set_si (x, val)
- mpz_ptr x;
- signed long int val;
-#endif
-{
- x->_mp_alloc = 1;
- x->_mp_d = (mp_ptr) (*_mp_allocate_func) (BYTES_PER_MP_LIMB);
- if (val > 0)
- {
- x->_mp_d[0] = val;
- x->_mp_size = 1;
- }
- else if (val < 0)
- {
- x->_mp_d[0] = -val;
- x->_mp_size = -1;
- }
- else
- x->_mp_size = 0;
-}
diff --git a/gnu/lib/libgmp/mpz/iset_str.c b/gnu/lib/libgmp/mpz/iset_str.c
deleted file mode 100644
index e04ad5d..0000000
--- a/gnu/lib/libgmp/mpz/iset_str.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/* mpz_init_set_str(string, base) -- Convert the \0-terminated string
- STRING in base BASE to a multiple precision integer. Return a MP_INT
- structure representing the integer. Allow white space in the
- string. If BASE == 0 determine the base in the C standard way,
- i.e. 0xhh...h means base 16, 0oo...o means base 8, otherwise
- assume base 10.
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-int
-#if __STDC__
-mpz_init_set_str (mpz_ptr x, const char *str, int base)
-#else
-mpz_init_set_str (x, str, base)
- mpz_ptr x;
- const char *str;
- int base;
-#endif
-{
- x->_mp_alloc = 1;
- x->_mp_d = (mp_ptr) (*_mp_allocate_func) (BYTES_PER_MP_LIMB);
-
- return mpz_set_str (x, str, base);
-}
diff --git a/gnu/lib/libgmp/mpz/iset_ui.c b/gnu/lib/libgmp/mpz/iset_ui.c
deleted file mode 100644
index dc39f59..0000000
--- a/gnu/lib/libgmp/mpz/iset_ui.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* mpz_init_set_ui(val) -- Make a new multiple precision number with
- value val.
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_init_set_ui (mpz_ptr x, unsigned long int val)
-#else
-mpz_init_set_ui (x, val)
- mpz_ptr x;
- unsigned long int val;
-#endif
-{
- x->_mp_alloc = 1;
- x->_mp_d = (mp_ptr) (*_mp_allocate_func) (BYTES_PER_MP_LIMB);
- x->_mp_d[0] = val;
- x->_mp_size = val != 0;
-}
diff --git a/gnu/lib/libgmp/mpz/jacobi.c b/gnu/lib/libgmp/mpz/jacobi.c
deleted file mode 100644
index 409f622..0000000
--- a/gnu/lib/libgmp/mpz/jacobi.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* mpz_jacobi (op1, op2).
- Contributed by Bennet Yee (bsy) at Carnegie-Mellon University
-
-Copyright (C) 1991, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-
-/* Precondition: both p and q are positive */
-
-int
-#if __STDC__
-mpz_jacobi (mpz_srcptr pi, mpz_srcptr qi)
-#else
-mpz_jacobi (pi, qi)
- mpz_srcptr pi, qi;
-#endif
-{
-#if GCDCHECK
- int retval;
- mpz_t gcdval;
-
- mpz_init (gcdval);
- mpz_gcd (gcdval, pi, qi);
- if (!mpz_cmp_ui (gcdval, 1L))
- {
- /* J(ab,cb) = J(ab,c)J(ab,b) = J(ab,c)J(0,b) = J(ab,c)*0 */
- retval = 0;
- }
- else
- retval = mpz_legendre (pi, qi);
- mpz_clear (gcdval);
- return retval;
-#else
- return mpz_legendre (pi, qi);
-#endif
-}
diff --git a/gnu/lib/libgmp/mpz/legendre.c b/gnu/lib/libgmp/mpz/legendre.c
deleted file mode 100644
index 4de16a6..0000000
--- a/gnu/lib/libgmp/mpz/legendre.c
+++ /dev/null
@@ -1,184 +0,0 @@
-/* mpz_legendre (op1, op2).
- Contributed by Bennet Yee (bsy) at Carnegie-Mellon University
-
-Copyright (C) 1992, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-
-#if defined (DEBUG)
-#include <stdio.h>
-#endif
-
-/* Precondition: both p and q are positive */
-
-int
-#if __STDC__
-mpz_legendre (mpz_srcptr pi, mpz_srcptr qi)
-#else
-mpz_legendre (pi, qi)
-mpz_srcptr pi, qi;
-#endif
-{
- mpz_t p, q, qdiv2;
-#ifdef Q_MINUS_1
- mpz_t q_minus_1;
-#endif
- mpz_ptr mtmp;
- register mpz_ptr pptr, qptr;
- register int retval = 1;
- register unsigned long int s;
-
- pptr = p;
- mpz_init_set (pptr, pi);
- qptr = q;
- mpz_init_set (qptr, qi);
-
-#ifdef Q_MINUS_1
- mpz_init (q_minus_1);
-#endif
- mpz_init (qdiv2);
-
-tail_recurse2:
-#ifdef DEBUG
- printf ("tail_recurse2: p=");
- mpz_out_str (stdout, 10, pptr);
- printf ("\nq=");
- mpz_out_str (stdout, 10, qptr);
- putchar ('\n');
-#endif
- s = mpz_scan1 (qptr, 0);
- if (s) mpz_tdiv_q_2exp (qptr, qptr, s); /* J(a,2) = 1 */
-#ifdef DEBUG
- printf ("2 factor decomposition: p=");
- mpz_out_str (stdout, 10, pptr);
- printf ("\nq=");
- mpz_out_str (stdout, 10, qptr);
- putchar ('\n');
-#endif
- /* postcondition q odd */
- if (!mpz_cmp_ui (qptr, 1L)) /* J(a,1) = 1 */
- goto done;
- mpz_mod (pptr, pptr, qptr); /* J(a,q) = J(b,q) when a == b mod q */
-#ifdef DEBUG
- printf ("mod out by q: p=");
- mpz_out_str (stdout, 10, pptr);
- printf ("\nq=");
- mpz_out_str (stdout, 10, qptr);
- putchar ('\n');
-#endif
- /* quick calculation to get approximate size first */
- /* precondition: p < q */
- if ((mpz_sizeinbase (pptr, 2) + 1 >= mpz_sizeinbase (qptr,2))
- && (mpz_tdiv_q_2exp (qdiv2, qptr, 1L), mpz_cmp (pptr, qdiv2) > 0))
- {
- /* p > q/2 */
- mpz_sub (pptr, qptr, pptr);
- /* J(-1,q) = (-1)^((q-1)/2), q odd */
- if (mpz_get_ui (qptr) & 2)
- retval = -retval;
- }
- /* p < q/2 */
-#ifdef Q_MINUS_1
- mpz_sub_ui (q_minus_q, qptr, 1L);
-#endif
-tail_recurse: /* we use tail_recurse only if q has not changed */
-#ifdef DEBUG
- printf ("tail_recurse1: p=");
- mpz_out_str (stdout, 10, pptr);
- printf ("\nq=");
- mpz_out_str (stdout, 10, qptr);
- putchar ('\n');
-#endif
- /*
- * J(0,q) = 0
- * this occurs only if gcd(p,q) != 1 which is never true for
- * Legendre function.
- */
- if (!mpz_cmp_ui (pptr, 0L))
- {
- retval = 0;
- goto done;
- }
-
- if (!mpz_cmp_ui (pptr, 1L))
- {
- /* J(1,q) = 1 */
- /* retval *= 1; */
- goto done;
- }
-#ifdef Q_MINUS_1
- if (!mpz_cmp (pptr, q_minus_1))
- {
- /* J(-1,q) = (-1)^((q-1)/2) */
- if (mpz_get_ui (qptr) & 2)
- retval = -retval;
- /* else retval *= 1; */
- goto done;
- }
-#endif
- /*
- * we do not handle J(xy,q) except for x==2
- * since we do not want to factor
- */
- if ((s = mpz_scan1 (pptr, 0)) != 0)
- {
- /*
- * J(2,q) = (-1)^((q^2-1)/8)
- *
- * Note that q odd guarantees that q^2-1 is divisible by 8:
- * Let a: q=2a+1. q^2 = 4a^2+4a+1, (q^2-1)/8 = a(a+1)/2, qed
- *
- * Now, note that this means that the low two bits of _a_
- * (or the low bits of q shifted over by 1 determines
- * the factor).
- */
- mpz_tdiv_q_2exp (pptr, pptr, s);
-
- /* even powers of 2 gives J(2,q)^{2n} = 1 */
- if (s & 1)
- {
- s = mpz_get_ui (qptr) >> 1;
- s = s * (s + 1);
- if (s & 2)
- retval = -retval;
- }
- goto tail_recurse;
- }
- /*
- * we know p is odd since we have cast out 2s
- * precondition that q is odd guarantees both odd.
- *
- * quadratic reciprocity
- * J(p,q) = (-1)^((p-1)(q-1)/4) * J(q,p)
- */
- if ((s = mpz_scan1 (pptr, 1)) <= 2 && (s + mpz_scan1 (qptr, 1)) <= 2)
- retval = -retval;
-
- mtmp = pptr; pptr = qptr; qptr = mtmp;
- goto tail_recurse2;
-done:
- mpz_clear (p);
- mpz_clear (q);
- mpz_clear (qdiv2);
-#ifdef Q_MINUS_1
- mpz_clear (q_minus_1);
-#endif
- return retval;
-}
diff --git a/gnu/lib/libgmp/mpz/mod.c b/gnu/lib/libgmp/mpz/mod.c
deleted file mode 100644
index b2b8b39..0000000
--- a/gnu/lib/libgmp/mpz/mod.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/* mpz_mod -- The mathematical mod function.
-
-Copyright (C) 1991, 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_mod (mpz_ptr rem, mpz_srcptr dividend, mpz_srcptr divisor)
-#else
-mpz_mod (rem, dividend, divisor)
- mpz_ptr rem;
- mpz_srcptr dividend;
- mpz_srcptr divisor;
-#endif
-{
- mp_size_t divisor_size = divisor->_mp_size;
- mpz_t temp_divisor; /* N.B.: lives until function returns! */
- TMP_DECL (marker);
-
- TMP_MARK (marker);
-
- /* We need the original value of the divisor after the remainder has been
- preliminary calculated. We have to copy it to temporary space if it's
- the same variable as REM. */
- if (rem == divisor)
- {
- MPZ_TMP_INIT (temp_divisor, ABS (divisor_size));
- mpz_set (temp_divisor, divisor);
- divisor = temp_divisor;
- }
-
- mpz_tdiv_r (rem, dividend, divisor);
-
- if (rem->_mp_size != 0)
- {
- if (dividend->_mp_size < 0)
- if (divisor->_mp_size < 0)
- mpz_sub (rem, rem, divisor);
- else
- mpz_add (rem, rem, divisor);
- }
-
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpz/mul.c b/gnu/lib/libgmp/mpz/mul.c
deleted file mode 100644
index 47ce8e3..0000000
--- a/gnu/lib/libgmp/mpz/mul.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/* mpz_mul -- Multiply two integers.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-#ifndef BERKELEY_MP
-void
-#if __STDC__
-mpz_mul (mpz_ptr w, mpz_srcptr u, mpz_srcptr v)
-#else
-mpz_mul (w, u, v)
- mpz_ptr w;
- mpz_srcptr u;
- mpz_srcptr v;
-#endif
-#else /* BERKELEY_MP */
-void
-#if __STDC__
-mult (mpz_srcptr u, mpz_srcptr v, mpz_ptr w)
-#else
-mult (u, v, w)
- mpz_srcptr u;
- mpz_srcptr v;
- mpz_ptr w;
-#endif
-#endif /* BERKELEY_MP */
-{
- mp_size_t usize = u->_mp_size;
- mp_size_t vsize = v->_mp_size;
- mp_size_t wsize;
- mp_size_t sign_product;
- mp_ptr up, vp;
- mp_ptr wp;
- mp_ptr free_me = NULL;
- size_t free_me_size;
- mp_limb_t cy_limb;
- TMP_DECL (marker);
-
- TMP_MARK (marker);
- sign_product = usize ^ vsize;
- usize = ABS (usize);
- vsize = ABS (vsize);
-
- if (usize < vsize)
- {
- /* Swap U and V. */
- {const __mpz_struct *t = u; u = v; v = t;}
- {mp_size_t t = usize; usize = vsize; vsize = t;}
- }
-
- up = u->_mp_d;
- vp = v->_mp_d;
- wp = w->_mp_d;
-
- /* Ensure W has space enough to store the result. */
- wsize = usize + vsize;
- if (w->_mp_alloc < wsize)
- {
- if (wp == up || wp == vp)
- {
- free_me = wp;
- free_me_size = w->_mp_alloc;
- }
- else
- (*_mp_free_func) (wp, w->_mp_alloc * BYTES_PER_MP_LIMB);
-
- w->_mp_alloc = wsize;
- wp = (mp_ptr) (*_mp_allocate_func) (wsize * BYTES_PER_MP_LIMB);
- w->_mp_d = wp;
- }
- else
- {
- /* Make U and V not overlap with W. */
- if (wp == up)
- {
- /* W and U are identical. Allocate temporary space for U. */
- up = (mp_ptr) TMP_ALLOC (usize * BYTES_PER_MP_LIMB);
- /* Is V identical too? Keep it identical with U. */
- if (wp == vp)
- vp = up;
- /* Copy to the temporary space. */
- MPN_COPY (up, wp, usize);
- }
- else if (wp == vp)
- {
- /* W and V are identical. Allocate temporary space for V. */
- vp = (mp_ptr) TMP_ALLOC (vsize * BYTES_PER_MP_LIMB);
- /* Copy to the temporary space. */
- MPN_COPY (vp, wp, vsize);
- }
- }
-
- if (vsize == 0)
- {
- wsize = 0;
- }
- else
- {
- cy_limb = mpn_mul (wp, up, usize, vp, vsize);
- wsize = usize + vsize;
- wsize -= cy_limb == 0;
- }
-
- w->_mp_size = sign_product < 0 ? -wsize : wsize;
- if (free_me != NULL)
- (*_mp_free_func) (free_me, free_me_size * BYTES_PER_MP_LIMB);
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpz/mul_2exp.c b/gnu/lib/libgmp/mpz/mul_2exp.c
deleted file mode 100644
index 4d66a98..0000000
--- a/gnu/lib/libgmp/mpz/mul_2exp.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/* mpz_mul_2exp -- Multiply a bignum by 2**CNT
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_mul_2exp (mpz_ptr w, mpz_srcptr u, unsigned long int cnt)
-#else
-mpz_mul_2exp (w, u, cnt)
- mpz_ptr w;
- mpz_srcptr u;
- unsigned long int cnt;
-#endif
-{
- mp_size_t usize = u->_mp_size;
- mp_size_t abs_usize = ABS (usize);
- mp_size_t wsize;
- mp_size_t limb_cnt;
- mp_ptr wp;
- mp_limb_t wlimb;
-
- if (usize == 0)
- {
- w->_mp_size = 0;
- return;
- }
-
- limb_cnt = cnt / BITS_PER_MP_LIMB;
- wsize = abs_usize + limb_cnt + 1;
- if (w->_mp_alloc < wsize)
- _mpz_realloc (w, wsize);
-
- wp = w->_mp_d;
- wsize = abs_usize + limb_cnt;
-
- cnt %= BITS_PER_MP_LIMB;
- if (cnt != 0)
- {
- wlimb = mpn_lshift (wp + limb_cnt, u->_mp_d, abs_usize, cnt);
- if (wlimb != 0)
- {
- wp[wsize] = wlimb;
- wsize++;
- }
- }
- else
- {
- MPN_COPY_DECR (wp + limb_cnt, u->_mp_d, abs_usize);
- }
-
- /* Zero all whole limbs at low end. Do it here and not before calling
- mpn_lshift, not to lose for U == W. */
- MPN_ZERO (wp, limb_cnt);
-
- w->_mp_size = usize >= 0 ? wsize : -wsize;
-}
diff --git a/gnu/lib/libgmp/mpz/mul_ui.c b/gnu/lib/libgmp/mpz/mul_ui.c
deleted file mode 100644
index f1f7269..0000000
--- a/gnu/lib/libgmp/mpz/mul_ui.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* mpz_mul_ui(product, multiplier, small_multiplicand) -- Set
- PRODUCT to MULTIPLICATOR times SMALL_MULTIPLICAND.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_mul_ui (mpz_ptr prod, mpz_srcptr mult, unsigned long int small_mult)
-#else
-mpz_mul_ui (prod, mult, small_mult)
- mpz_ptr prod;
- mpz_srcptr mult;
- unsigned long int small_mult;
-#endif
-{
- mp_size_t size = mult->_mp_size;
- mp_size_t sign_product = size;
- mp_limb_t cy;
- mp_size_t prod_size;
- mp_ptr prod_ptr;
-
- size = ABS (size);
-
- if (size == 0 || small_mult == 0)
- {
- prod->_mp_size = 0;
- return;
- }
-
- prod_size = size + 1;
- if (prod->_mp_alloc < prod_size)
- _mpz_realloc (prod, prod_size);
-
- prod_ptr = prod->_mp_d;
-
- cy = mpn_mul_1 (prod_ptr, mult->_mp_d, size, (mp_limb_t) small_mult);
- if (cy != 0)
- {
- prod_ptr[size] = cy;
- size++;
- }
-
- prod->_mp_size = sign_product >= 0 ? size : -size;
-}
diff --git a/gnu/lib/libgmp/mpz/neg.c b/gnu/lib/libgmp/mpz/neg.c
deleted file mode 100644
index 0b48e5c..0000000
--- a/gnu/lib/libgmp/mpz/neg.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* mpz_neg(mpz_ptr dst, mpz_ptr src) -- Assign the negated value of SRC to DST.
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_neg (mpz_ptr w, mpz_srcptr u)
-#else
-mpz_neg (w, u)
- mpz_ptr w;
- mpz_srcptr u;
-#endif
-{
- mp_ptr wp, up;
- mp_size_t usize, size;
-
- usize = u->_mp_size;
-
- if (u != w)
- {
- size = ABS (usize);
-
- if (w->_mp_alloc < size)
- _mpz_realloc (w, size);
-
- wp = w->_mp_d;
- up = u->_mp_d;
-
- MPN_COPY (wp, up, size);
- }
-
- w->_mp_size = -usize;
-}
diff --git a/gnu/lib/libgmp/mpz/out_raw.c b/gnu/lib/libgmp/mpz/out_raw.c
deleted file mode 100644
index 35d311b..0000000
--- a/gnu/lib/libgmp/mpz/out_raw.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/* mpz_out_raw -- Output a mpz_t in binary. Use an endianess and word size
- independent format.
-
-Copyright (C) 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-size_t
-#if __STDC__
-mpz_out_raw (FILE *stream, mpz_srcptr x)
-#else
-mpz_out_raw (stream, x)
- FILE *stream;
- mpz_srcptr x;
-#endif
-{
- int i;
- mp_size_t s;
- mp_size_t xsize = ABS (x->_mp_size);
- mp_srcptr xp = x->_mp_d;
- mp_size_t out_bytesize;
- mp_limb_t hi_limb;
- int n_bytes_in_hi_limb;
-
- if (stream == 0)
- stream = stdout;
-
- if (xsize == 0)
- {
- for (i = 4 - 1; i >= 0; i--)
- fputc (0, stream);
- return ferror (stream) ? 0 : 4;
- }
-
- hi_limb = xp[xsize - 1];
- for (i = BYTES_PER_MP_LIMB - 1; i > 0; i--)
- {
- if ((hi_limb >> i * BITS_PER_CHAR) != 0)
- break;
- }
- n_bytes_in_hi_limb = i + 1;
- out_bytesize = BYTES_PER_MP_LIMB * (xsize - 1) + n_bytes_in_hi_limb;
- if (x->_mp_size < 0)
- out_bytesize = -out_bytesize;
-
- /* Make the size 4 bytes on all machines, to make the format portable. */
- for (i = 4 - 1; i >= 0; i--)
- fputc ((out_bytesize >> (i * BITS_PER_CHAR)) % (1 << BITS_PER_CHAR),
- stream);
-
- /* Output from the most significant limb to the least significant limb,
- with each limb also output in decreasing significance order. */
-
- /* Output the most significant limb separately, since we will only
- output some of its bytes. */
- for (i = n_bytes_in_hi_limb - 1; i >= 0; i--)
- fputc ((hi_limb >> (i * BITS_PER_CHAR)) % (1 << BITS_PER_CHAR), stream);
-
- /* Output the remaining limbs. */
- for (s = xsize - 2; s >= 0; s--)
- {
- mp_limb_t x_limb;
-
- x_limb = xp[s];
- for (i = BYTES_PER_MP_LIMB - 1; i >= 0; i--)
- fputc ((x_limb >> (i * BITS_PER_CHAR)) % (1 << BITS_PER_CHAR), stream);
- }
- return ferror (stream) ? 0 : ABS (out_bytesize) + 4;
-}
diff --git a/gnu/lib/libgmp/mpz/out_str.c b/gnu/lib/libgmp/mpz/out_str.c
deleted file mode 100644
index 909f533..0000000
--- a/gnu/lib/libgmp/mpz/out_str.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/* mpz_out_str(stream, base, integer) -- Output to STREAM the multi prec.
- integer INTEGER in base BASE.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-
-size_t
-#if __STDC__
-mpz_out_str (FILE *stream, int base, mpz_srcptr x)
-#else
-mpz_out_str (stream, base, x)
- FILE *stream;
- int base;
- mpz_srcptr x;
-#endif
-{
- mp_ptr xp;
- mp_size_t x_size = x->_mp_size;
- unsigned char *str;
- size_t str_size;
- size_t i;
- size_t written;
- char *num_to_text;
- TMP_DECL (marker);
-
- if (stream == 0)
- stream = stdout;
-
- if (base >= 0)
- {
- if (base == 0)
- base = 10;
- num_to_text = "0123456789abcdefghijklmnopqrstuvwxyz";
- }
- else
- {
- base = -base;
- num_to_text = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
- }
-
- if (x_size == 0)
- {
- fputc ('0', stream);
- return ferror (stream) ? 0 : 1;
- }
-
- written = 0;
-
- if (x_size < 0)
- {
- fputc ('-', stream);
- x_size = -x_size;
- written = 1;
- }
-
- TMP_MARK (marker);
- str_size = ((size_t) (x_size * BITS_PER_MP_LIMB
- * __mp_bases[base].chars_per_bit_exactly)) + 3;
- str = (unsigned char *) TMP_ALLOC (str_size);
-
- /* Move the number to convert into temporary space, since mpn_get_str
- clobbers its argument + needs one extra high limb.... */
- xp = (mp_ptr) TMP_ALLOC ((x_size + 1) * BYTES_PER_MP_LIMB);
- MPN_COPY (xp, x->_mp_d, x_size);
-
- str_size = mpn_get_str (str, base, xp, x_size);
-
- /* mpn_get_str might make some leading zeros. Skip them. */
- while (*str == 0)
- {
- str_size--;
- str++;
- }
-
- /* Translate to printable chars. */
- for (i = 0; i < str_size; i++)
- str[i] = num_to_text[str[i]];
- str[str_size] = 0;
-
- {
- size_t fwret;
- fwret = fwrite ((char *) str, 1, str_size, stream);
- written += fwret;
- }
-
- TMP_FREE (marker);
- return ferror (stream) ? 0 : written;
-}
diff --git a/gnu/lib/libgmp/mpz/perfsqr.c b/gnu/lib/libgmp/mpz/perfsqr.c
deleted file mode 100644
index cdf1b5a..0000000
--- a/gnu/lib/libgmp/mpz/perfsqr.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* mpz_perfect_square_p(arg) -- Return non-zero if ARG is a perfect square,
- zero otherwise.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-int
-#if __STDC__
-mpz_perfect_square_p (mpz_srcptr a)
-#else
-mpz_perfect_square_p (a)
- mpz_srcptr a;
-#endif
-{
- mp_size_t asize = a->_mp_size;
-
- /* No negative numbers are perfect squares. */
- if (asize < 0)
- return 0;
-
- return mpn_perfect_square_p (a->_mp_d, asize);
-}
diff --git a/gnu/lib/libgmp/mpz/popcount.c b/gnu/lib/libgmp/mpz/popcount.c
deleted file mode 100644
index a979380..0000000
--- a/gnu/lib/libgmp/mpz/popcount.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/* mpz_popcount(mpz_ptr op) -- Population count of OP. If the operand is
- negative, return ~0 (a novel representation of infinity).
-
-Copyright (C) 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-unsigned long int
-#if __STDC__
-mpz_popcount (mpz_srcptr u)
-#else
-mpz_popcount (u)
- mpz_srcptr u;
-#endif
-{
- mp_size_t usize;
-
- usize = u->_mp_size;
-
- if ((usize) < 0)
- return ~ (unsigned long int) 0;
-
- return mpn_popcount (u->_mp_d, usize);
-}
diff --git a/gnu/lib/libgmp/mpz/pow_ui.c b/gnu/lib/libgmp/mpz/pow_ui.c
deleted file mode 100644
index d8cf7a6..0000000
--- a/gnu/lib/libgmp/mpz/pow_ui.c
+++ /dev/null
@@ -1,129 +0,0 @@
-/* mpz_pow_ui(res, base, exp) -- Set RES to BASE**EXP.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#ifdef BERKELEY_MP
-#include "mp.h"
-#endif
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-#ifndef BERKELEY_MP
-void
-#if __STDC__
-mpz_pow_ui (mpz_ptr r, mpz_srcptr b, unsigned long int e)
-#else
-mpz_pow_ui (r, b, e)
- mpz_ptr r;
- mpz_srcptr b;
- unsigned long int e;
-#endif
-#else /* BERKELEY_MP */
-void
-#if __STDC__
-rpow (const MINT *b, signed short int e, MINT *r)
-#else
-rpow (b, e, r)
- const MINT *b;
- signed short int e;
- MINT *r;
-#endif
-#endif /* BERKELEY_MP */
-{
- mp_ptr rp, bp, tp, xp;
- mp_size_t rsize, bsize;
- int cnt, i;
- mp_limb_t blimb;
- TMP_DECL (marker);
-
- bsize = ABS (b->_mp_size);
-
- /* Single out cases that give result == 0 or 1. These tests are here
- to simplify the general code below, not to optimize. */
- if (e == 0)
- {
- r->_mp_d[0] = 1;
- r->_mp_size = 1;
- return;
- }
- if (bsize == 0
-#ifdef BERKELEY_MP
- || e < 0
-#endif
- )
- {
- r->_mp_size = 0;
- return;
- }
-
- bp = b->_mp_d;
-
- blimb = bp[bsize - 1];
- if (bsize == 1 && blimb < 0x100)
- {
- /* Estimate space requirements accurately. Using the code from the
- `else' path would over-estimate space requirements wildly. */
- float lb = __mp_bases[blimb].chars_per_bit_exactly;
- rsize = 2 + ((mp_size_t) (e / lb) / BITS_PER_MP_LIMB);
- }
- else
- {
- /* Over-estimate space requirements somewhat. */
- count_leading_zeros (cnt, blimb);
- rsize = bsize * e - cnt * e / BITS_PER_MP_LIMB + 1;
- }
-
- TMP_MARK (marker);
-
- /* The two areas are used to alternatingly hold the input and recieve the
- product for mpn_mul. (This scheme is used to fulfill the requirements
- of mpn_mul; that the product space may not be the same as any of the
- input operands.) */
- rp = (mp_ptr) TMP_ALLOC (rsize * BYTES_PER_MP_LIMB);
- tp = (mp_ptr) TMP_ALLOC (rsize * BYTES_PER_MP_LIMB);
-
- MPN_COPY (rp, bp, bsize);
- rsize = bsize;
- count_leading_zeros (cnt, e);
-
- for (i = BITS_PER_MP_LIMB - cnt - 2; i >= 0; i--)
- {
- mpn_mul_n (tp, rp, rp, rsize);
- rsize = 2 * rsize;
- rsize -= tp[rsize - 1] == 0;
- xp = tp; tp = rp; rp = xp;
-
- if ((e & ((mp_limb_t) 1 << i)) != 0)
- {
- rsize = rsize + bsize - (mpn_mul (tp, rp, rsize, bp, bsize) == 0);
- xp = tp; tp = rp; rp = xp;
- }
- }
-
- /* Now then we know the exact space requirements, reallocate if
- necessary. */
- if (r->_mp_alloc < rsize)
- _mpz_realloc (r, rsize);
-
- MPN_COPY (r->_mp_d, rp, rsize);
- r->_mp_size = (e & 1) == 0 || b->_mp_size >= 0 ? rsize : -rsize;
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpz/powm.c b/gnu/lib/libgmp/mpz/powm.c
deleted file mode 100644
index 5dcd1b1..0000000
--- a/gnu/lib/libgmp/mpz/powm.c
+++ /dev/null
@@ -1,276 +0,0 @@
-/* mpz_powm(res,base,exp,mod) -- Set RES to (base**exp) mod MOD.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-#ifndef BERKELEY_MP
-void
-#if __STDC__
-mpz_powm (mpz_ptr res, mpz_srcptr base, mpz_srcptr exp, mpz_srcptr mod)
-#else
-mpz_powm (res, base, exp, mod)
- mpz_ptr res;
- mpz_srcptr base;
- mpz_srcptr exp;
- mpz_srcptr mod;
-#endif
-#else /* BERKELEY_MP */
-void
-#if __STDC__
-pow (mpz_srcptr base, mpz_srcptr exp, mpz_srcptr mod, mpz_ptr res)
-#else
-pow (base, exp, mod, res)
- mpz_srcptr base;
- mpz_srcptr exp;
- mpz_srcptr mod;
- mpz_ptr res;
-#endif
-#endif /* BERKELEY_MP */
-{
- mp_ptr rp, ep, mp, bp;
- mp_size_t esize, msize, bsize, rsize;
- mp_size_t size;
- int mod_shift_cnt;
- int negative_result;
- mp_limb_t *free_me = NULL;
- size_t free_me_size;
- TMP_DECL (marker);
-
- esize = ABS (exp->_mp_size);
- msize = ABS (mod->_mp_size);
- size = 2 * msize;
-
- rp = res->_mp_d;
- ep = exp->_mp_d;
-
- if (msize == 0)
- msize = 1 / msize; /* provoke a signal */
-
- if (esize == 0)
- {
- /* Exponent is zero, result is 1 mod MOD, i.e., 1 or 0
- depending on if MOD equals 1. */
- rp[0] = 1;
- res->_mp_size = (msize == 1 && (mod->_mp_d)[0] == 1) ? 0 : 1;
- return;
- }
-
- TMP_MARK (marker);
-
- /* Normalize MOD (i.e. make its most significant bit set) as required by
- mpn_divmod. This will make the intermediate values in the calculation
- slightly larger, but the correct result is obtained after a final
- reduction using the original MOD value. */
-
- mp = (mp_ptr) TMP_ALLOC (msize * BYTES_PER_MP_LIMB);
- count_leading_zeros (mod_shift_cnt, mod->_mp_d[msize - 1]);
- if (mod_shift_cnt != 0)
- mpn_lshift (mp, mod->_mp_d, msize, mod_shift_cnt);
- else
- MPN_COPY (mp, mod->_mp_d, msize);
-
- bsize = ABS (base->_mp_size);
- if (bsize > msize)
- {
- /* The base is larger than the module. Reduce it. */
-
- /* Allocate (BSIZE + 1) with space for remainder and quotient.
- (The quotient is (bsize - msize + 1) limbs.) */
- bp = (mp_ptr) TMP_ALLOC ((bsize + 1) * BYTES_PER_MP_LIMB);
- MPN_COPY (bp, base->_mp_d, bsize);
- /* We don't care about the quotient, store it above the remainder,
- at BP + MSIZE. */
- mpn_divmod (bp + msize, bp, bsize, mp, msize);
- bsize = msize;
- /* Canonicalize the base, since we are going to multiply with it
- quite a few times. */
- MPN_NORMALIZE (bp, bsize);
- }
- else
- bp = base->_mp_d;
-
- if (bsize == 0)
- {
- res->_mp_size = 0;
- TMP_FREE (marker);
- return;
- }
-
- if (res->_mp_alloc < size)
- {
- /* We have to allocate more space for RES. If any of the input
- parameters are identical to RES, defer deallocation of the old
- space. */
-
- if (rp == ep || rp == mp || rp == bp)
- {
- free_me = rp;
- free_me_size = res->_mp_alloc;
- }
- else
- (*_mp_free_func) (rp, res->_mp_alloc * BYTES_PER_MP_LIMB);
-
- rp = (mp_ptr) (*_mp_allocate_func) (size * BYTES_PER_MP_LIMB);
- res->_mp_alloc = size;
- res->_mp_d = rp;
- }
- else
- {
- /* Make BASE, EXP and MOD not overlap with RES. */
- if (rp == bp)
- {
- /* RES and BASE are identical. Allocate temp. space for BASE. */
- bp = (mp_ptr) TMP_ALLOC (bsize * BYTES_PER_MP_LIMB);
- MPN_COPY (bp, rp, bsize);
- }
- if (rp == ep)
- {
- /* RES and EXP are identical. Allocate temp. space for EXP. */
- ep = (mp_ptr) TMP_ALLOC (esize * BYTES_PER_MP_LIMB);
- MPN_COPY (ep, rp, esize);
- }
- if (rp == mp)
- {
- /* RES and MOD are identical. Allocate temporary space for MOD. */
- mp = (mp_ptr) TMP_ALLOC (msize * BYTES_PER_MP_LIMB);
- MPN_COPY (mp, rp, msize);
- }
- }
-
- MPN_COPY (rp, bp, bsize);
- rsize = bsize;
-
- {
- mp_size_t i;
- mp_ptr xp = (mp_ptr) TMP_ALLOC (2 * (msize + 1) * BYTES_PER_MP_LIMB);
- int c;
- mp_limb_t e;
- mp_limb_t carry_limb;
-
- negative_result = (ep[0] & 1) && base->_mp_size < 0;
-
- i = esize - 1;
- e = ep[i];
- count_leading_zeros (c, e);
- e = (e << c) << 1; /* shift the exp bits to the left, lose msb */
- c = BITS_PER_MP_LIMB - 1 - c;
-
- /* Main loop.
-
- Make the result be pointed to alternately by XP and RP. This
- helps us avoid block copying, which would otherwise be necessary
- with the overlap restrictions of mpn_divmod. With 50% probability
- the result after this loop will be in the area originally pointed
- by RP (==RES->_mp_d), and with 50% probability in the area originally
- pointed to by XP. */
-
- for (;;)
- {
- while (c != 0)
- {
- mp_ptr tp;
- mp_size_t xsize;
-
- mpn_mul_n (xp, rp, rp, rsize);
- xsize = 2 * rsize;
- if (xsize > msize)
- {
- mpn_divmod (xp + msize, xp, xsize, mp, msize);
- xsize = msize;
- }
-
- tp = rp; rp = xp; xp = tp;
- rsize = xsize;
-
- if ((mp_limb_signed_t) e < 0)
- {
- mpn_mul (xp, rp, rsize, bp, bsize);
- xsize = rsize + bsize;
- if (xsize > msize)
- {
- mpn_divmod (xp + msize, xp, xsize, mp, msize);
- xsize = msize;
- }
-
- tp = rp; rp = xp; xp = tp;
- rsize = xsize;
- }
- e <<= 1;
- c--;
- }
-
- i--;
- if (i < 0)
- break;
- e = ep[i];
- c = BITS_PER_MP_LIMB;
- }
-
- /* We shifted MOD, the modulo reduction argument, left MOD_SHIFT_CNT
- steps. Adjust the result by reducing it with the original MOD.
-
- Also make sure the result is put in RES->_mp_d (where it already
- might be, see above). */
-
- if (mod_shift_cnt != 0)
- {
- carry_limb = mpn_lshift (res->_mp_d, rp, rsize, mod_shift_cnt);
- rp = res->_mp_d;
- if (carry_limb != 0)
- {
- rp[rsize] = carry_limb;
- rsize++;
- }
- }
- else
- {
- MPN_COPY (res->_mp_d, rp, rsize);
- rp = res->_mp_d;
- }
-
- if (rsize >= msize)
- {
- mpn_divmod (rp + msize, rp, rsize, mp, msize);
- rsize = msize;
- }
-
- /* Remove any leading zero words from the result. */
- if (mod_shift_cnt != 0)
- mpn_rshift (rp, rp, rsize, mod_shift_cnt);
- MPN_NORMALIZE (rp, rsize);
- }
-
- if (negative_result && rsize != 0)
- {
- if (mod_shift_cnt != 0)
- mpn_rshift (mp, mp, msize, mod_shift_cnt);
- mpn_sub (rp, mp, msize, rp, rsize);
- rsize = msize;
- MPN_NORMALIZE (rp, rsize);
- }
- res->_mp_size = rsize;
-
- if (free_me != NULL)
- (*_mp_free_func) (free_me, free_me_size * BYTES_PER_MP_LIMB);
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpz/powm_ui.c b/gnu/lib/libgmp/mpz/powm_ui.c
deleted file mode 100644
index 596815a..0000000
--- a/gnu/lib/libgmp/mpz/powm_ui.c
+++ /dev/null
@@ -1,234 +0,0 @@
-/* mpz_powm_ui(res,base,exp,mod) -- Set RES to (base**exp) mod MOD.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-void
-#if __STDC__
-mpz_powm_ui (mpz_ptr res, mpz_srcptr base, unsigned long int exp, mpz_srcptr mod)
-#else
-mpz_powm_ui (res, base, exp, mod)
- mpz_ptr res;
- mpz_srcptr base;
- unsigned long int exp;
- mpz_srcptr mod;
-#endif
-{
- mp_ptr rp, mp, bp;
- mp_size_t msize, bsize, rsize;
- mp_size_t size;
- int mod_shift_cnt;
- int negative_result;
- mp_limb_t *free_me = NULL;
- size_t free_me_size;
- TMP_DECL (marker);
-
- msize = ABS (mod->_mp_size);
- size = 2 * msize;
-
- rp = res->_mp_d;
-
- if (msize == 0)
- msize = 1 / msize; /* provoke a signal */
-
- if (exp == 0)
- {
- rp[0] = 1;
- res->_mp_size = (msize == 1 && (mod->_mp_d)[0] == 1) ? 0 : 1;
- return;
- }
-
- TMP_MARK (marker);
-
- /* Normalize MOD (i.e. make its most significant bit set) as required by
- mpn_divmod. This will make the intermediate values in the calculation
- slightly larger, but the correct result is obtained after a final
- reduction using the original MOD value. */
-
- mp = (mp_ptr) TMP_ALLOC (msize * BYTES_PER_MP_LIMB);
- count_leading_zeros (mod_shift_cnt, mod->_mp_d[msize - 1]);
- if (mod_shift_cnt != 0)
- mpn_lshift (mp, mod->_mp_d, msize, mod_shift_cnt);
- else
- MPN_COPY (mp, mod->_mp_d, msize);
-
- bsize = ABS (base->_mp_size);
- if (bsize > msize)
- {
- /* The base is larger than the module. Reduce it. */
-
- /* Allocate (BSIZE + 1) with space for remainder and quotient.
- (The quotient is (bsize - msize + 1) limbs.) */
- bp = (mp_ptr) TMP_ALLOC ((bsize + 1) * BYTES_PER_MP_LIMB);
- MPN_COPY (bp, base->_mp_d, bsize);
- /* We don't care about the quotient, store it above the remainder,
- at BP + MSIZE. */
- mpn_divmod (bp + msize, bp, bsize, mp, msize);
- bsize = msize;
- /* Canonicalize the base, since we are going to multiply with it
- quite a few times. */
- MPN_NORMALIZE (bp, bsize);
- }
- else
- bp = base->_mp_d;
-
- if (bsize == 0)
- {
- res->_mp_size = 0;
- TMP_FREE (marker);
- return;
- }
-
- if (res->_mp_alloc < size)
- {
- /* We have to allocate more space for RES. If any of the input
- parameters are identical to RES, defer deallocation of the old
- space. */
-
- if (rp == mp || rp == bp)
- {
- free_me = rp;
- free_me_size = res->_mp_alloc;
- }
- else
- (*_mp_free_func) (rp, res->_mp_alloc * BYTES_PER_MP_LIMB);
-
- rp = (mp_ptr) (*_mp_allocate_func) (size * BYTES_PER_MP_LIMB);
- res->_mp_alloc = size;
- res->_mp_d = rp;
- }
- else
- {
- /* Make BASE, EXP and MOD not overlap with RES. */
- if (rp == bp)
- {
- /* RES and BASE are identical. Allocate temp. space for BASE. */
- bp = (mp_ptr) TMP_ALLOC (bsize * BYTES_PER_MP_LIMB);
- MPN_COPY (bp, rp, bsize);
- }
- if (rp == mp)
- {
- /* RES and MOD are identical. Allocate temporary space for MOD. */
- mp = (mp_ptr) TMP_ALLOC (msize * BYTES_PER_MP_LIMB);
- MPN_COPY (mp, rp, msize);
- }
- }
-
- MPN_COPY (rp, bp, bsize);
- rsize = bsize;
-
- {
- mp_ptr xp = (mp_ptr) TMP_ALLOC (2 * (msize + 1) * BYTES_PER_MP_LIMB);
- int c;
- mp_limb_t e;
- mp_limb_t carry_limb;
-
- negative_result = (exp & 1) && base->_mp_size < 0;
-
- e = exp;
- count_leading_zeros (c, e);
- e = (e << c) << 1; /* shift the exp bits to the left, lose msb */
- c = BITS_PER_MP_LIMB - 1 - c;
-
- /* Main loop.
-
- Make the result be pointed to alternately by XP and RP. This
- helps us avoid block copying, which would otherwise be necessary
- with the overlap restrictions of mpn_divmod. With 50% probability
- the result after this loop will be in the area originally pointed
- by RP (==RES->_mp_d), and with 50% probability in the area originally
- pointed to by XP. */
-
- while (c != 0)
- {
- mp_ptr tp;
- mp_size_t xsize;
-
- mpn_mul_n (xp, rp, rp, rsize);
- xsize = 2 * rsize;
- if (xsize > msize)
- {
- mpn_divmod (xp + msize, xp, xsize, mp, msize);
- xsize = msize;
- }
-
- tp = rp; rp = xp; xp = tp;
- rsize = xsize;
-
- if ((mp_limb_signed_t) e < 0)
- {
- mpn_mul (xp, rp, rsize, bp, bsize);
- xsize = rsize + bsize;
- if (xsize > msize)
- {
- mpn_divmod (xp + msize, xp, xsize, mp, msize);
- xsize = msize;
- }
-
- tp = rp; rp = xp; xp = tp;
- rsize = xsize;
- }
- e <<= 1;
- c--;
- }
-
- /* We shifted MOD, the modulo reduction argument, left MOD_SHIFT_CNT
- steps. Adjust the result by reducing it with the original MOD.
-
- Also make sure the result is put in RES->_mp_d (where it already
- might be, see above). */
-
- if (mod_shift_cnt != 0)
- {
- carry_limb = mpn_lshift (res->_mp_d, rp, rsize, mod_shift_cnt);
- rp = res->_mp_d;
- if (carry_limb != 0)
- {
- rp[rsize] = carry_limb;
- rsize++;
- }
- }
- else
- {
- MPN_COPY (res->_mp_d, rp, rsize);
- rp = res->_mp_d;
- }
-
- if (rsize >= msize)
- {
- mpn_divmod (rp + msize, rp, rsize, mp, msize);
- rsize = msize;
- }
-
- /* Remove any leading zero words from the result. */
- if (mod_shift_cnt != 0)
- mpn_rshift (rp, rp, rsize, mod_shift_cnt);
- MPN_NORMALIZE (rp, rsize);
- }
-
- res->_mp_size = negative_result == 0 ? rsize : -rsize;
-
- if (free_me != NULL)
- (*_mp_free_func) (free_me, free_me_size * BYTES_PER_MP_LIMB);
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpz/pprime_p.c b/gnu/lib/libgmp/mpz/pprime_p.c
deleted file mode 100644
index 494de14..0000000
--- a/gnu/lib/libgmp/mpz/pprime_p.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/* mpz_probab_prime_p --
- An implementation of the probabilistic primality test found in Knuth's
- Seminumerical Algorithms book. If the function mpz_probab_prime_p()
- returns 0 then n is not prime. If it returns 1, then n is 'probably'
- prime. The probability of a false positive is (1/4)**reps, where
- reps is the number of internal passes of the probabilistic algorithm.
- Knuth indicates that 25 passes are reasonable.
-
-Copyright (C) 1991, 1993, 1994 Free Software Foundation, Inc.
-Contributed by John Amanatides.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-
-static int
-possibly_prime (n, n_minus_1, x, y, q, k)
- mpz_srcptr n;
- mpz_srcptr n_minus_1;
- mpz_ptr x;
- mpz_ptr y;
- mpz_srcptr q;
- unsigned long int k;
-{
- unsigned long int i;
-
- /* find random x s.t. 1 < x < n */
- do
- {
- mpz_random (x, mpz_size (n));
- mpz_mmod (x, x, n);
- }
- while (mpz_cmp_ui (x, 1L) <= 0);
-
- mpz_powm (y, x, q, n);
-
- if (mpz_cmp_ui (y, 1L) == 0 || mpz_cmp (y, n_minus_1) == 0)
- return 1;
-
- for (i = 1; i < k; i++)
- {
- mpz_powm_ui (y, y, 2L, n);
- if (mpz_cmp (y, n_minus_1) == 0)
- return 1;
- if (mpz_cmp_ui (y, 1L) == 0)
- return 0;
- }
- return 0;
-}
-
-int
-#if __STDC__
-mpz_probab_prime_p (mpz_srcptr m, int reps)
-#else
-mpz_probab_prime_p (m, reps)
- mpz_srcptr m;
- int reps;
-#endif
-{
- mpz_t n, n_minus_1, x, y, q;
- int i, is_prime;
- unsigned long int k;
-
- mpz_init (n);
- /* Take the absolute value of M, to handle positive and negative primes. */
- mpz_abs (n, m);
-
- if (mpz_cmp_ui (n, 3L) <= 0)
- {
- mpz_clear (n);
- return mpz_cmp_ui (n, 1L) > 0;
- }
-
- if ((mpz_get_ui (n) & 1) == 0)
- {
- mpz_clear (n);
- return 0; /* even */
- }
-
- mpz_init (n_minus_1);
- mpz_sub_ui (n_minus_1, n, 1L);
- mpz_init (x);
- mpz_init (y);
-
- /* find q and k, s.t. n = 1 + 2**k * q */
- mpz_init_set (q, n_minus_1);
- k = mpz_scan1 (q, 0);
- mpz_tdiv_q_2exp (q, q, k);
-
- is_prime = 1;
- for (i = 0; i < reps && is_prime; i++)
- is_prime &= possibly_prime (n, n_minus_1, x, y, q, k);
-
- mpz_clear (n_minus_1);
- mpz_clear (n);
- mpz_clear (x);
- mpz_clear (y);
- mpz_clear (q);
- return is_prime;
-}
diff --git a/gnu/lib/libgmp/mpz/random.c b/gnu/lib/libgmp/mpz/random.c
deleted file mode 100644
index ab41eef..0000000
--- a/gnu/lib/libgmp/mpz/random.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* mpz_random -- Generate a random mpz_t of specified size.
- This function is non-portable and generates poor random numbers.
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-void
-#if __STDC__
-mpz_random (mpz_ptr x, mp_size_t size)
-#else
-mpz_random (x, size)
- mpz_ptr x;
- mp_size_t size;
-#endif
-{
- mp_size_t i;
- mp_limb_t ran;
- mp_ptr xp;
- mp_size_t abs_size;
-
- abs_size = ABS (size);
-
- if (x->_mp_alloc < abs_size)
- _mpz_realloc (x, abs_size);
-
- xp = x->_mp_d;
-
- for (i = 0; i < abs_size; i++)
- {
- ran = urandom ();
- xp[i] = ran;
- }
-
- MPN_NORMALIZE (xp, abs_size);
- x->_mp_size = size < 0 ? -abs_size : abs_size;
-}
diff --git a/gnu/lib/libgmp/mpz/random2.c b/gnu/lib/libgmp/mpz/random2.c
deleted file mode 100644
index 725a8b4..0000000
--- a/gnu/lib/libgmp/mpz/random2.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* mpz_random2 -- Generate a positive random mpz_t of specified size, with
- long runs of consecutive ones and zeros in the binary representation.
- Meant for testing of other MP routines.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_random2 (mpz_ptr x, mp_size_t size)
-#else
-mpz_random2 (x, size)
- mpz_ptr x;
- mp_size_t size;
-#endif
-{
- mp_size_t abs_size;
-
- abs_size = ABS (size);
- if (abs_size != 0)
- {
- if (x->_mp_alloc < abs_size)
- _mpz_realloc (x, abs_size);
-
- mpn_random2 (x->_mp_d, abs_size);
- }
-
- x->_mp_size = size;
-}
diff --git a/gnu/lib/libgmp/mpz/realloc.c b/gnu/lib/libgmp/mpz/realloc.c
deleted file mode 100644
index 2c2a5da..0000000
--- a/gnu/lib/libgmp/mpz/realloc.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/* _mpz_realloc -- make the mpz_t have NEW_SIZE digits allocated.
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void *
-#if __STDC__
-_mpz_realloc (mpz_ptr m, mp_size_t new_size)
-#else
-_mpz_realloc (m, new_size)
- mpz_ptr m;
- mp_size_t new_size;
-#endif
-{
- /* Never allocate zero space. */
- if (new_size == 0)
- new_size = 1;
-
- m->_mp_d = (mp_ptr) (*_mp_reallocate_func) (m->_mp_d,
- m->_mp_alloc * BYTES_PER_MP_LIMB,
- new_size * BYTES_PER_MP_LIMB);
- m->_mp_alloc = new_size;
-
-#if 0
- /* This might break some code that reads the size field after
- reallocation, in the case the reallocated destination and a
- source argument are identical. */
- if (ABS (m->_mp_size) > new_size)
- m->_mp_size = 0;
-#endif
-
- return (void *) m->_mp_d;
-}
diff --git a/gnu/lib/libgmp/mpz/scan0.c b/gnu/lib/libgmp/mpz/scan0.c
deleted file mode 100644
index 8e45aa3..0000000
--- a/gnu/lib/libgmp/mpz/scan0.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* mpz_scan0(op, startbit) -- Scan for the next set bit, starting at startbit.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-unsigned long int
-#if __STDC__
-mpz_scan0 (mpz_srcptr u, unsigned long int starting_bit)
-#else
-mpz_scan0 (u, starting_bit)
- mpz_srcptr u;
- unsigned long int starting_bit;
-#endif
-{
- return mpn_scan0 (u->_mp_d, starting_bit);
-}
diff --git a/gnu/lib/libgmp/mpz/scan1.c b/gnu/lib/libgmp/mpz/scan1.c
deleted file mode 100644
index 6ecb0aa..0000000
--- a/gnu/lib/libgmp/mpz/scan1.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* mpz_scan1(op, startbit) -- Scan for the next set bit, starting at startbit.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-unsigned long int
-#if __STDC__
-mpz_scan1 (mpz_srcptr u, unsigned long int starting_bit)
-#else
-mpz_scan1 (u, starting_bit)
- mpz_srcptr u;
- unsigned long int starting_bit;
-#endif
-{
- return mpn_scan1 (u->_mp_d, starting_bit);
-}
diff --git a/gnu/lib/libgmp/mpz/set.c b/gnu/lib/libgmp/mpz/set.c
deleted file mode 100644
index d94ab74..0000000
--- a/gnu/lib/libgmp/mpz/set.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* mpz_set (dest_integer, src_integer) -- Assign DEST_INTEGER from SRC_INTEGER.
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_set (mpz_ptr w, mpz_srcptr u)
-#else
-mpz_set (w, u)
- mpz_ptr w;
- mpz_srcptr u;
-#endif
-{
- mp_ptr wp, up;
- mp_size_t usize, size;
-
- usize = u->_mp_size;
- size = ABS (usize);
-
- if (w->_mp_alloc < size)
- _mpz_realloc (w, size);
-
- wp = w->_mp_d;
- up = u->_mp_d;
-
- MPN_COPY (wp, up, size);
- w->_mp_size = usize;
-}
diff --git a/gnu/lib/libgmp/mpz/set_d.c b/gnu/lib/libgmp/mpz/set_d.c
deleted file mode 100644
index c09b1d9..0000000
--- a/gnu/lib/libgmp/mpz/set_d.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/* mpz_set_d(integer, val) -- Assign INTEGER with a double value VAL.
-
-Copyright (C) 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_set_d (mpz_ptr r, double d)
-#else
-mpz_set_d (r, d)
- mpz_ptr r;
- double d;
-#endif
-{
- int negative;
- mp_size_t size;
- mp_limb_t tp[3];
- mp_ptr rp;
-
- negative = d < 0;
- d = ABS (d);
-
- /* Handle small arguments quickly. */
- if (d < MP_BASE_AS_DOUBLE)
- {
- mp_limb_t tmp;
- tmp = d;
- PTR(r)[0] = tmp;
- SIZ(r) = negative ? -(tmp != 0) : (tmp != 0);
- return;
- }
-
- size = __gmp_extract_double (tp, d);
-
- if (ALLOC(r) < size)
- _mpz_realloc (r, size);
-
- rp = PTR (r);
-
-#if BITS_PER_MP_LIMB == 32
- switch (size)
- {
- default:
- MPN_ZERO (rp, size - 3);
- rp += size - 3;
- case 3:
- rp[2] = tp[2];
- rp[1] = tp[1];
- rp[0] = tp[0];
- break;
- case 2:
- rp[1] = tp[2];
- rp[0] = tp[1];
- break;
- case 1:
- abort ();
- }
-#else
- switch (size)
- {
- default:
- MPN_ZERO (rp, size - 2);
- rp += size - 2;
- case 2:
- rp[1] = tp[1];
- rp[0] = tp[0];
- break;
- case 1:
- abort ();
- }
-#endif
-
- SIZ(r) = negative ? -size : size;
-}
diff --git a/gnu/lib/libgmp/mpz/set_f.c b/gnu/lib/libgmp/mpz/set_f.c
deleted file mode 100644
index 9547907..0000000
--- a/gnu/lib/libgmp/mpz/set_f.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* mpz_set_f (dest_integer, src_float) -- Assign DEST_INTEGER from SRC_FLOAT.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_set_f (mpz_ptr w, mpf_srcptr u)
-#else
-mpz_set_f (w, u)
- mpz_ptr w;
- mpf_srcptr u;
-#endif
-{
- mp_ptr wp, up;
- mp_size_t usize, size;
- mp_exp_t exp;
-
- usize = SIZ (u);
- size = ABS (usize);
- exp = EXP (u);
-
- if (w->_mp_alloc < exp)
- _mpz_realloc (w, exp);
-
- wp = w->_mp_d;
- up = u->_mp_d;
-
- if (exp <= 0)
- {
- SIZ (w) = 0;
- return;
- }
- if (exp < size)
- {
- MPN_COPY (wp, up + size - exp, exp);
- }
- else
- {
- MPN_ZERO (wp, exp - size);
- MPN_COPY (wp + exp - size, up, size);
- }
-
- w->_mp_size = usize >= 0 ? exp : -exp;
-}
diff --git a/gnu/lib/libgmp/mpz/set_q.c b/gnu/lib/libgmp/mpz/set_q.c
deleted file mode 100644
index 61bd5c7..0000000
--- a/gnu/lib/libgmp/mpz/set_q.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* mpz_set_q (dest_integer, src_rational) -- Assign DEST_INTEGER from
- SRC_rational.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_set_q (mpz_ptr w, mpq_srcptr u)
-#else
-mpz_set_q (w, u)
- mpz_ptr w;
- mpq_srcptr u;
-#endif
-{
- mpz_tdiv_q (w, mpq_numref (u), mpq_denref (u));
-}
diff --git a/gnu/lib/libgmp/mpz/set_si.c b/gnu/lib/libgmp/mpz/set_si.c
deleted file mode 100644
index 82a90a3..0000000
--- a/gnu/lib/libgmp/mpz/set_si.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/* mpz_set_si(integer, val) -- Assign INTEGER with a small value VAL.
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_set_si (mpz_ptr dest, signed long int val)
-#else
-mpz_set_si (dest, val)
- mpz_ptr dest;
- signed long int val;
-#endif
-{
- /* We don't check if the allocation is enough, since the rest of the
- package ensures it's at least 1, which is what we need here. */
- if (val > 0)
- {
- dest->_mp_d[0] = val;
- dest->_mp_size = 1;
- }
- else if (val < 0)
- {
- dest->_mp_d[0] = -val;
- dest->_mp_size = -1;
- }
- else
- dest->_mp_size = 0;
-}
diff --git a/gnu/lib/libgmp/mpz/set_str.c b/gnu/lib/libgmp/mpz/set_str.c
deleted file mode 100644
index d1334b1..0000000
--- a/gnu/lib/libgmp/mpz/set_str.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/* mpz_set_str(mp_dest, string, base) -- Convert the \0-terminated
- string STRING in base BASE to multiple precision integer in
- MP_DEST. Allow white space in the string. If BASE == 0 determine
- the base in the C standard way, i.e. 0xhh...h means base 16,
- 0oo...o means base 8, otherwise assume base 10.
-
-Copyright (C) 1991, 1993, 1994, Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <ctype.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-static int
-digit_value_in_base (c, base)
- int c;
- int base;
-{
- int digit;
-
- if (isdigit (c))
- digit = c - '0';
- else if (islower (c))
- digit = c - 'a' + 10;
- else if (isupper (c))
- digit = c - 'A' + 10;
- else
- return -1;
-
- if (digit < base)
- return digit;
- return -1;
-}
-
-int
-#if __STDC__
-mpz_set_str (mpz_ptr x, const char *str, int base)
-#else
-mpz_set_str (x, str, base)
- mpz_ptr x;
- const char *str;
- int base;
-#endif
-{
- size_t str_size;
- char *s, *begs;
- size_t i;
- mp_size_t xsize;
- int c;
- int negative;
- TMP_DECL (marker);
-
- /* Skip whitespace. */
- do
- c = *str++;
- while (isspace (c));
-
- negative = 0;
- if (c == '-')
- {
- negative = 1;
- c = *str++;
- }
-
- if (digit_value_in_base (c, base == 0 ? 10 : base) < 0)
- return -1; /* error if no digits */
-
- /* If BASE is 0, try to find out the base by looking at the initial
- characters. */
- if (base == 0)
- {
- base = 10;
- if (c == '0')
- {
- base = 8;
- c = *str++;
- if (c == 'x' || c == 'X')
- {
- base = 16;
- c = *str++;
- }
- }
- }
-
- TMP_MARK (marker);
- str_size = strlen (str - 1);
- s = begs = (char *) TMP_ALLOC (str_size + 1);
-
- for (i = 0; i < str_size; i++)
- {
- if (!isspace (c))
- {
- int dig = digit_value_in_base (c, base);
- if (dig < 0)
- {
- TMP_FREE (marker);
- return -1;
- }
- *s++ = dig;
- }
- c = *str++;
- }
-
- str_size = s - begs;
-
- xsize = str_size / __mp_bases[base].chars_per_limb + 1;
- if (x->_mp_alloc < xsize)
- _mpz_realloc (x, xsize);
-
- xsize = mpn_set_str (x->_mp_d, (unsigned char *) begs, str_size, base);
- x->_mp_size = negative ? -xsize : xsize;
-
- TMP_FREE (marker);
- return 0;
-}
diff --git a/gnu/lib/libgmp/mpz/set_ui.c b/gnu/lib/libgmp/mpz/set_ui.c
deleted file mode 100644
index 73f6cf5..0000000
--- a/gnu/lib/libgmp/mpz/set_ui.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* mpz_set_ui(integer, val) -- Assign INTEGER with a small value VAL.
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_set_ui (mpz_ptr dest, unsigned long int val)
-#else
-mpz_set_ui (dest, val)
- mpz_ptr dest;
- unsigned long int val;
-#endif
-{
- /* We don't check if the allocation is enough, since the rest of the
- package ensures it's at least 1, which is what we need here. */
- if (val > 0)
- {
- dest->_mp_d[0] = val;
- dest->_mp_size = 1;
- }
- else
- dest->_mp_size = 0;
-}
diff --git a/gnu/lib/libgmp/mpz/setbit.c b/gnu/lib/libgmp/mpz/setbit.c
deleted file mode 100644
index af59e2c..0000000
--- a/gnu/lib/libgmp/mpz/setbit.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/* mpz_setbit -- set a specified bit.
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_setbit (mpz_ptr d, unsigned long int bit_index)
-#else
-mpz_setbit (d, bit_index)
- mpz_ptr d;
- unsigned long int bit_index;
-#endif
-{
- mp_size_t dsize = d->_mp_size;
- mp_ptr dp = d->_mp_d;
- mp_size_t limb_index;
-
- limb_index = bit_index / BITS_PER_MP_LIMB;
- if (dsize >= 0)
- {
- if (limb_index < dsize)
- {
- dp[limb_index] |= (mp_limb_t) 1 << (bit_index % BITS_PER_MP_LIMB);
- d->_mp_size = dsize;
- }
- else
- {
- /* Ugh. The bit should be set outside of the end of the
- number. We have to increase the size of the number. */
- if (d->_mp_alloc < limb_index + 1)
- {
- _mpz_realloc (d, limb_index + 1);
- dp = d->_mp_d;
- }
- MPN_ZERO (dp + dsize, limb_index - dsize);
- dp[limb_index] = (mp_limb_t) 1 << (bit_index % BITS_PER_MP_LIMB);
- d->_mp_size = limb_index + 1;
- }
- }
- else
- {
- mp_size_t zero_bound;
-
- /* Simulate two's complement arithmetic, i.e. simulate
- 1. Set OP = ~(OP - 1) [with infinitely many leading ones].
- 2. set the bit.
- 3. Set OP = ~OP + 1. */
-
- dsize = -dsize;
-
- /* No upper bound on this loop, we're sure there's a non-zero limb
- sooner ot later. */
- for (zero_bound = 0; ; zero_bound++)
- if (dp[zero_bound] != 0)
- break;
-
- if (limb_index > zero_bound)
- {
- if (limb_index < dsize)
- dp[limb_index] &= ~((mp_limb_t) 1 << (bit_index % BITS_PER_MP_LIMB));
- else
- ;
- }
- else if (limb_index == zero_bound)
- {
- dp[limb_index] = ((dp[limb_index] - 1)
- & ~((mp_limb_t) 1 << (bit_index % BITS_PER_MP_LIMB))) + 1;
- if (dp[limb_index] == 0)
- {
- mp_size_t i;
- for (i = limb_index + 1; i < dsize; i++)
- {
- dp[i] += 1;
- if (dp[i] != 0)
- goto fin;
- }
- /* We got carry all way out beyond the end of D. Increase
- its size (and allocation if necessary). */
- dsize++;
- if (d->_mp_alloc < dsize)
- {
- _mpz_realloc (d, dsize);
- dp = d->_mp_d;
- }
- dp[i] = 1;
- d->_mp_size = -dsize;
- fin:;
- }
- }
- else
- ;
- }
-}
diff --git a/gnu/lib/libgmp/mpz/size.c b/gnu/lib/libgmp/mpz/size.c
deleted file mode 100644
index 0b09fbe..0000000
--- a/gnu/lib/libgmp/mpz/size.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* mpz_size(x) -- return the number of lims currently used by the
- value of integer X.
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-size_t
-#if __STDC__
-mpz_size (mpz_srcptr x)
-#else
-mpz_size (x)
- mpz_srcptr x;
-#endif
-{
- return ABS (x->_mp_size);
-}
diff --git a/gnu/lib/libgmp/mpz/sizeinbase.c b/gnu/lib/libgmp/mpz/sizeinbase.c
deleted file mode 100644
index 51bd555..0000000
--- a/gnu/lib/libgmp/mpz/sizeinbase.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/* mpz_sizeinbase(x, base) -- return an approximation to the number of
- character the integer X would have printed in base BASE. The
- approximation is never too small.
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-size_t
-#if __STDC__
-mpz_sizeinbase (mpz_srcptr x, int base)
-#else
-mpz_sizeinbase (x, base)
- mpz_srcptr x;
- int base;
-#endif
-{
- mp_size_t size = ABS (x->_mp_size);
- int lb_base, cnt;
- size_t totbits;
-
- /* Special case for X == 0. */
- if (size == 0)
- return 1;
-
- /* Calculate the total number of significant bits of X. */
- count_leading_zeros (cnt, x->_mp_d[size - 1]);
- totbits = size * BITS_PER_MP_LIMB - cnt;
-
- if ((base & (base - 1)) == 0)
- {
- /* Special case for powers of 2, giving exact result. */
-
- count_leading_zeros (lb_base, base);
- lb_base = BITS_PER_MP_LIMB - lb_base - 1;
-
- return (totbits + lb_base - 1) / lb_base;
- }
- else
- return (size_t) (totbits * __mp_bases[base].chars_per_bit_exactly) + 1;
-}
diff --git a/gnu/lib/libgmp/mpz/sqrt.c b/gnu/lib/libgmp/mpz/sqrt.c
deleted file mode 100644
index 44c554e..0000000
--- a/gnu/lib/libgmp/mpz/sqrt.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/* mpz_sqrt(root, u) -- Set ROOT to floor(sqrt(U)).
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_sqrt (mpz_ptr root, mpz_srcptr op)
-#else
-mpz_sqrt (root, op)
- mpz_ptr root;
- mpz_srcptr op;
-#endif
-{
- mp_size_t op_size, root_size;
- mp_ptr root_ptr, op_ptr;
- mp_ptr free_me = NULL;
- mp_size_t free_me_size;
- TMP_DECL (marker);
-
- TMP_MARK (marker);
- op_size = op->_mp_size;
- if (op_size < 0)
- op_size = 1 / (op_size > 0); /* Divide by zero for negative OP. */
-
- /* The size of the root is accurate after this simple calculation. */
- root_size = (op_size + 1) / 2;
-
- root_ptr = root->_mp_d;
- op_ptr = op->_mp_d;
-
- if (root->_mp_alloc < root_size)
- {
- if (root_ptr == op_ptr)
- {
- free_me = root_ptr;
- free_me_size = root->_mp_alloc;
- }
- else
- (*_mp_free_func) (root_ptr, root->_mp_alloc * BYTES_PER_MP_LIMB);
-
- root->_mp_alloc = root_size;
- root_ptr = (mp_ptr) (*_mp_allocate_func) (root_size * BYTES_PER_MP_LIMB);
- root->_mp_d = root_ptr;
- }
- else
- {
- /* Make OP not overlap with ROOT. */
- if (root_ptr == op_ptr)
- {
- /* ROOT and OP are identical. Allocate temporary space for OP. */
- op_ptr = (mp_ptr) TMP_ALLOC (op_size * BYTES_PER_MP_LIMB);
- /* Copy to the temporary space. Hack: Avoid temporary variable
- by using ROOT_PTR. */
- MPN_COPY (op_ptr, root_ptr, op_size);
- }
- }
-
- mpn_sqrtrem (root_ptr, NULL, op_ptr, op_size);
-
- root->_mp_size = root_size;
-
- if (free_me != NULL)
- (*_mp_free_func) (free_me, free_me_size * BYTES_PER_MP_LIMB);
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpz/sqrtrem.c b/gnu/lib/libgmp/mpz/sqrtrem.c
deleted file mode 100644
index 757cc5d..0000000
--- a/gnu/lib/libgmp/mpz/sqrtrem.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/* mpz_sqrtrem(root,rem,x) -- Set ROOT to floor(sqrt(X)) and REM
- to the remainder, i.e. X - ROOT**2.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-#ifndef BERKELEY_MP
-void
-#if __STDC__
-mpz_sqrtrem (mpz_ptr root, mpz_ptr rem, mpz_srcptr op)
-#else
-mpz_sqrtrem (root, rem, op)
- mpz_ptr root;
- mpz_ptr rem;
- mpz_srcptr op;
-#endif
-#else /* BERKELEY_MP */
-void
-#if __STDC__
-msqrt (mpz_srcptr op, mpz_ptr root, mpz_ptr rem)
-#else
-msqrt (op, root, rem)
- mpz_srcptr op;
- mpz_ptr root;
- mpz_ptr rem;
-#endif
-#endif /* BERKELEY_MP */
-{
- mp_size_t op_size, root_size, rem_size;
- mp_ptr root_ptr, op_ptr;
- mp_ptr free_me = NULL;
- mp_size_t free_me_size;
- TMP_DECL (marker);
-
- TMP_MARK (marker);
- op_size = op->_mp_size;
- if (op_size < 0)
- op_size = 1 / (op_size > 0); /* Divide by zero for negative OP. */
-
- if (rem->_mp_alloc < op_size)
- _mpz_realloc (rem, op_size);
-
- /* The size of the root is accurate after this simple calculation. */
- root_size = (op_size + 1) / 2;
-
- root_ptr = root->_mp_d;
- op_ptr = op->_mp_d;
-
- if (root->_mp_alloc < root_size)
- {
- if (root_ptr == op_ptr)
- {
- free_me = root_ptr;
- free_me_size = root->_mp_alloc;
- }
- else
- (*_mp_free_func) (root_ptr, root->_mp_alloc * BYTES_PER_MP_LIMB);
-
- root->_mp_alloc = root_size;
- root_ptr = (mp_ptr) (*_mp_allocate_func) (root_size * BYTES_PER_MP_LIMB);
- root->_mp_d = root_ptr;
- }
- else
- {
- /* Make OP not overlap with ROOT. */
- if (root_ptr == op_ptr)
- {
- /* ROOT and OP are identical. Allocate temporary space for OP. */
- op_ptr = (mp_ptr) TMP_ALLOC (op_size * BYTES_PER_MP_LIMB);
- /* Copy to the temporary space. Hack: Avoid temporary variable
- by using ROOT_PTR. */
- MPN_COPY (op_ptr, root_ptr, op_size);
- }
- }
-
- rem_size = mpn_sqrtrem (root_ptr, rem->_mp_d, op_ptr, op_size);
-
- root->_mp_size = root_size;
-
- /* Write remainder size last, to enable us to define this function to
- give only the square root remainder, if the user calls if with
- ROOT == REM. */
- rem->_mp_size = rem_size;
-
- if (free_me != NULL)
- (*_mp_free_func) (free_me, free_me_size * BYTES_PER_MP_LIMB);
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpz/sub.c b/gnu/lib/libgmp/mpz/sub.c
deleted file mode 100644
index 56ef1a1..0000000
--- a/gnu/lib/libgmp/mpz/sub.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/* mpz_sub -- Subtract two integers.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-#ifndef BERKELEY_MP
-void
-#if __STDC__
-mpz_sub (mpz_ptr w, mpz_srcptr u, mpz_srcptr v)
-#else
-mpz_sub (w, u, v)
- mpz_ptr w;
- mpz_srcptr u;
- mpz_srcptr v;
-#endif
-#else /* BERKELEY_MP */
-void
-#if __STDC__
-msub (mpz_srcptr u, mpz_srcptr v, mpz_ptr w)
-#else
-msub (u, v, w)
- mpz_srcptr u;
- mpz_srcptr v;
- mpz_ptr w;
-#endif
-#endif /* BERKELEY_MP */
-{
- mp_srcptr up, vp;
- mp_ptr wp;
- mp_size_t usize, vsize, wsize;
- mp_size_t abs_usize;
- mp_size_t abs_vsize;
-
- usize = u->_mp_size;
- vsize = -v->_mp_size; /* The "-" makes the difference from mpz_add */
- abs_usize = ABS (usize);
- abs_vsize = ABS (vsize);
-
- if (abs_usize < abs_vsize)
- {
- /* Swap U and V. */
- {const __mpz_struct *t = u; u = v; v = t;}
- {mp_size_t t = usize; usize = vsize; vsize = t;}
- {mp_size_t t = abs_usize; abs_usize = abs_vsize; abs_vsize = t;}
- }
-
- /* True: ABS_USIZE >= ABS_VSIZE. */
-
- /* If not space for w (and possible carry), increase space. */
- wsize = abs_usize + 1;
- if (w->_mp_alloc < wsize)
- _mpz_realloc (w, wsize);
-
- /* These must be after realloc (u or v may be the same as w). */
- up = u->_mp_d;
- vp = v->_mp_d;
- wp = w->_mp_d;
-
- if ((usize ^ vsize) < 0)
- {
- /* U and V have different sign. Need to compare them to determine
- which operand to subtract from which. */
-
- /* This test is right since ABS_USIZE >= ABS_VSIZE. */
- if (abs_usize != abs_vsize)
- {
- mpn_sub (wp, up, abs_usize, vp, abs_vsize);
- wsize = abs_usize;
- MPN_NORMALIZE (wp, wsize);
- if (usize < 0)
- wsize = -wsize;
- }
- else if (mpn_cmp (up, vp, abs_usize) < 0)
- {
- mpn_sub_n (wp, vp, up, abs_usize);
- wsize = abs_usize;
- MPN_NORMALIZE (wp, wsize);
- if (usize >= 0)
- wsize = -wsize;
- }
- else
- {
- mpn_sub_n (wp, up, vp, abs_usize);
- wsize = abs_usize;
- MPN_NORMALIZE (wp, wsize);
- if (usize < 0)
- wsize = -wsize;
- }
- }
- else
- {
- /* U and V have same sign. Add them. */
- mp_limb_t cy_limb = mpn_add (wp, up, abs_usize, vp, abs_vsize);
- wp[abs_usize] = cy_limb;
- wsize = abs_usize + cy_limb;
- if (usize < 0)
- wsize = -wsize;
- }
-
- w->_mp_size = wsize;
-}
diff --git a/gnu/lib/libgmp/mpz/sub_ui.c b/gnu/lib/libgmp/mpz/sub_ui.c
deleted file mode 100644
index 7dea4b6..0000000
--- a/gnu/lib/libgmp/mpz/sub_ui.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/* mpz_sub_ui -- Subtract an unsigned one-word integer from an MP_INT.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_sub_ui (mpz_ptr w, mpz_srcptr u, unsigned long int v)
-#else
-mpz_sub_ui (w, u, v)
- mpz_ptr w;
- mpz_srcptr u;
- unsigned long int v;
-#endif
-{
- mp_srcptr up;
- mp_ptr wp;
- mp_size_t usize, wsize;
- mp_size_t abs_usize;
-
- usize = u->_mp_size;
- abs_usize = ABS (usize);
-
- /* If not space for W (and possible carry), increase space. */
- wsize = abs_usize + 1;
- if (w->_mp_alloc < wsize)
- _mpz_realloc (w, wsize);
-
- /* These must be after realloc (U may be the same as W). */
- up = u->_mp_d;
- wp = w->_mp_d;
-
- if (abs_usize == 0)
- {
- wp[0] = v;
- w->_mp_size = -(v != 0);
- return;
- }
-
- if (usize < 0)
- {
- mp_limb_t cy;
- cy = mpn_add_1 (wp, up, abs_usize, v);
- wp[abs_usize] = cy;
- wsize = -(abs_usize + cy);
- }
- else
- {
- /* The signs are different. Need exact comparison to determine
- which operand to subtract from which. */
- if (abs_usize == 1 && up[0] < v)
- {
- wp[0] = v - up[0];
- wsize = -1;
- }
- else
- {
- mpn_sub_1 (wp, up, abs_usize, v);
- /* Size can decrease with at most one limb. */
- wsize = abs_usize - (wp[abs_usize - 1] == 0);
- }
- }
-
- w->_mp_size = wsize;
-}
diff --git a/gnu/lib/libgmp/mpz/tdiv_q.c b/gnu/lib/libgmp/mpz/tdiv_q.c
deleted file mode 100644
index b4d3636..0000000
--- a/gnu/lib/libgmp/mpz/tdiv_q.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/* mpz_tdiv_q -- divide two integers and produce a quotient.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-void
-#if __STDC__
-mpz_tdiv_q (mpz_ptr quot, mpz_srcptr num, mpz_srcptr den)
-#else
-mpz_tdiv_q (quot, num, den)
- mpz_ptr quot;
- mpz_srcptr num;
- mpz_srcptr den;
-#endif
-{
- mp_srcptr np, dp;
- mp_ptr qp, rp;
- mp_size_t nsize = num->_mp_size;
- mp_size_t dsize = den->_mp_size;
- mp_size_t qsize, rsize;
- mp_size_t sign_quotient = nsize ^ dsize;
- unsigned normalization_steps;
- mp_limb_t q_limb;
- TMP_DECL (marker);
-
- nsize = ABS (nsize);
- dsize = ABS (dsize);
-
- /* Ensure space is enough for quotient. */
-
- qsize = nsize - dsize + 1; /* qsize cannot be bigger than this. */
- if (qsize <= 0)
- {
- quot->_mp_size = 0;
- return;
- }
-
- if (quot->_mp_alloc < qsize)
- _mpz_realloc (quot, qsize);
-
- qp = quot->_mp_d;
- np = num->_mp_d;
- dp = den->_mp_d;
-
- /* Optimize division by a single-limb divisor. */
- if (dsize == 1)
- {
- mpn_divmod_1 (qp, np, nsize, dp[0]);
- qsize -= qp[qsize - 1] == 0;
- quot->_mp_size = sign_quotient >= 0 ? qsize : -qsize;
- return;
- }
-
- TMP_MARK (marker);
-
- rp = (mp_ptr) TMP_ALLOC ((nsize + 1) * BYTES_PER_MP_LIMB);
-
- count_leading_zeros (normalization_steps, dp[dsize - 1]);
-
- /* Normalize the denominator, i.e. make its most significant bit set by
- shifting it NORMALIZATION_STEPS bits to the left. Also shift the
- numerator the same number of steps (to keep the quotient the same!). */
- if (normalization_steps != 0)
- {
- mp_ptr tp;
- mp_limb_t nlimb;
-
- /* Shift up the denominator setting the most significant bit of
- the most significant word. Use temporary storage not to clobber
- the original contents of the denominator. */
- tp = (mp_ptr) TMP_ALLOC (dsize * BYTES_PER_MP_LIMB);
- mpn_lshift (tp, dp, dsize, normalization_steps);
- dp = tp;
-
- /* Shift up the numerator, possibly introducing a new most
- significant word. Move the shifted numerator in the remainder
- meanwhile. */
- nlimb = mpn_lshift (rp, np, nsize, normalization_steps);
- if (nlimb != 0)
- {
- rp[nsize] = nlimb;
- rsize = nsize + 1;
- }
- else
- rsize = nsize;
- }
- else
- {
- /* The denominator is already normalized, as required. Copy it to
- temporary space if it overlaps with the quotient. */
- if (dp == qp)
- {
- dp = (mp_ptr) TMP_ALLOC (dsize * BYTES_PER_MP_LIMB);
- MPN_COPY ((mp_ptr) dp, qp, dsize);
- }
-
- /* Move the numerator to the remainder. */
- MPN_COPY (rp, np, nsize);
- rsize = nsize;
- }
-
- q_limb = mpn_divmod (qp, rp, rsize, dp, dsize);
-
- qsize = rsize - dsize;
- if (q_limb)
- {
- qp[qsize] = q_limb;
- qsize += 1;
- }
-
- quot->_mp_size = sign_quotient >= 0 ? qsize : -qsize;
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/mpz/tdiv_q_2exp.c b/gnu/lib/libgmp/mpz/tdiv_q_2exp.c
deleted file mode 100644
index e70d810..0000000
--- a/gnu/lib/libgmp/mpz/tdiv_q_2exp.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/* mpz_tdiv_q_2exp -- Divide an integer by 2**CNT. Round the quotient
- towards -infinity.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_tdiv_q_2exp (mpz_ptr w, mpz_srcptr u, unsigned long int cnt)
-#else
-mpz_tdiv_q_2exp (w, u, cnt)
- mpz_ptr w;
- mpz_srcptr u;
- unsigned long int cnt;
-#endif
-{
- mp_size_t usize, wsize;
- mp_size_t limb_cnt;
-
- usize = u->_mp_size;
- limb_cnt = cnt / BITS_PER_MP_LIMB;
- wsize = ABS (usize) - limb_cnt;
- if (wsize <= 0)
- w->_mp_size = 0;
- else
- {
- mp_ptr wp;
- mp_srcptr up;
-
- if (w->_mp_alloc < wsize)
- _mpz_realloc (w, wsize);
-
- wp = w->_mp_d;
- up = u->_mp_d;
-
- cnt %= BITS_PER_MP_LIMB;
- if (cnt != 0)
- {
- mpn_rshift (wp, up + limb_cnt, wsize, cnt);
- wsize -= wp[wsize - 1] == 0;
- }
- else
- {
- MPN_COPY_INCR (wp, up + limb_cnt, wsize);
- }
-
- w->_mp_size = usize >= 0 ? wsize : -wsize;
- }
-}
diff --git a/gnu/lib/libgmp/mpz/tdiv_q_ui.c b/gnu/lib/libgmp/mpz/tdiv_q_ui.c
deleted file mode 100644
index 9048e0a..0000000
--- a/gnu/lib/libgmp/mpz/tdiv_q_ui.c
+++ /dev/null
@@ -1,63 +0,0 @@
-/* mpz_tdiv_q_ui(quot, dividend, divisor_limb)
- -- Divide DIVIDEND by DIVISOR_LIMB and store the result in QUOT.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_tdiv_q_ui (mpz_ptr quot, mpz_srcptr dividend, unsigned long int divisor)
-#else
-mpz_tdiv_q_ui (quot, dividend, divisor)
- mpz_ptr quot;
- mpz_srcptr dividend;
- unsigned long int divisor;
-#endif
-{
- mp_size_t dividend_size;
- mp_size_t size;
- mp_ptr quot_ptr;
-
- dividend_size = dividend->_mp_size;
- size = ABS (dividend_size);
-
- if (size == 0)
- {
- quot->_mp_size = 0;
- return;
- }
-
- /* No need for temporary allocation and copying if QUOT == DIVIDEND as
- the divisor is just one limb, and thus no intermediate remainders
- need to be stored. */
-
- if (quot->_mp_alloc < size)
- _mpz_realloc (quot, size);
-
- quot_ptr = quot->_mp_d;
-
- mpn_divmod_1 (quot_ptr, dividend->_mp_d, size, (mp_limb_t) divisor);
-
- /* The quotient is SIZE limbs, but the most significant might be zero. */
- size -= quot_ptr[size - 1] == 0;
- quot->_mp_size = dividend_size >= 0 ? size : -size;
-}
diff --git a/gnu/lib/libgmp/mpz/tdiv_qr.c b/gnu/lib/libgmp/mpz/tdiv_qr.c
deleted file mode 100644
index 500e199..0000000
--- a/gnu/lib/libgmp/mpz/tdiv_qr.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* mpz_tdiv_qr(quot,rem,dividend,divisor) -- Set QUOT to DIVIDEND/DIVISOR,
- and REM to DIVIDEND mod DIVISOR.
-
-Copyright (C) 1991, 1993, 1994 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-void
-#if __STDC__
-mpz_tdiv_qr (mpz_ptr quot, mpz_ptr rem, mpz_srcptr num, mpz_srcptr den)
-#else
-mpz_tdiv_qr (quot, rem, num, den)
- mpz_ptr quot;
- mpz_ptr rem;
- mpz_srcptr num;
- mpz_srcptr den;
-#endif
-
-#define COMPUTE_QUOTIENT
-#include "dmincl.c"
diff --git a/gnu/lib/libgmp/mpz/tdiv_qr_ui.c b/gnu/lib/libgmp/mpz/tdiv_qr_ui.c
deleted file mode 100644
index cb5041c..0000000
--- a/gnu/lib/libgmp/mpz/tdiv_qr_ui.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/* mpz_tdiv_qr_ui(quot,rem,dividend,short_divisor) --
- Set QUOT to DIVIDEND / SHORT_DIVISOR
- and REM to DIVIDEND mod SHORT_DIVISOR.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_tdiv_qr_ui (mpz_ptr quot, mpz_ptr rem, mpz_srcptr dividend, unsigned long int divisor)
-#else
-mpz_tdiv_qr_ui (quot, rem, dividend, divisor)
- mpz_ptr quot;
- mpz_ptr rem;
- mpz_srcptr dividend;
- unsigned long int divisor;
-#endif
-{
- mp_size_t dividend_size;
- mp_size_t size;
- mp_ptr quot_ptr;
- mp_limb_t remainder_limb;
-
- dividend_size = dividend->_mp_size;
- size = ABS (dividend_size);
-
- if (size == 0)
- {
- quot->_mp_size = 0;
- rem->_mp_size = 0;
- return;
- }
-
- /* No need for temporary allocation and copying if QUOT == DIVIDEND as
- the divisor is just one limb, and thus no intermediate remainders
- need to be stored. */
-
- if (quot->_mp_alloc < size)
- _mpz_realloc (quot, size);
-
- quot_ptr = quot->_mp_d;
-
- remainder_limb = mpn_divmod_1 (quot_ptr, dividend->_mp_d, size,
- (mp_limb_t) divisor);
-
- if (remainder_limb == 0)
- rem->_mp_size = 0;
- else
- {
- /* Store the single-limb remainder. We don't check if there's space
- for just one limb, since no function ever makes zero space. */
- rem->_mp_size = dividend_size >= 0 ? 1 : -1;
- rem->_mp_d[0] = remainder_limb;
- }
-
- /* The quotient is SIZE limbs, but the most significant might be zero. */
- size -= quot_ptr[size - 1] == 0;
- quot->_mp_size = dividend_size >= 0 ? size : -size;
-}
diff --git a/gnu/lib/libgmp/mpz/tdiv_r.c b/gnu/lib/libgmp/mpz/tdiv_r.c
deleted file mode 100644
index 813a0d4..0000000
--- a/gnu/lib/libgmp/mpz/tdiv_r.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* mpz_tdiv_r(rem, dividend, divisor) -- Set REM to DIVIDEND mod DIVISOR.
-
-Copyright (C) 1991, 1993, 1994 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-void
-#if __STDC__
-mpz_tdiv_r (mpz_ptr rem, mpz_srcptr num, mpz_srcptr den)
-#else
-mpz_tdiv_r (rem, num, den)
- mpz_ptr rem;
- mpz_srcptr num;
- mpz_srcptr den;
-#endif
-
-#undef COMPUTE_QUOTIENT
-#include "dmincl.c"
diff --git a/gnu/lib/libgmp/mpz/tdiv_r_2exp.c b/gnu/lib/libgmp/mpz/tdiv_r_2exp.c
deleted file mode 100644
index 99d617e..0000000
--- a/gnu/lib/libgmp/mpz/tdiv_r_2exp.c
+++ /dev/null
@@ -1,79 +0,0 @@
-/* mpz_tdiv_r_2exp -- Divide a integer by 2**CNT and produce a remainder.
-
-Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_tdiv_r_2exp (mpz_ptr res, mpz_srcptr in, unsigned long int cnt)
-#else
-mpz_tdiv_r_2exp (res, in, cnt)
- mpz_ptr res;
- mpz_srcptr in;
- unsigned long int cnt;
-#endif
-{
- mp_size_t in_size = ABS (in->_mp_size);
- mp_size_t res_size;
- mp_size_t limb_cnt = cnt / BITS_PER_MP_LIMB;
- mp_srcptr in_ptr = in->_mp_d;
-
- if (in_size > limb_cnt)
- {
- /* The input operand is (probably) greater than 2**CNT. */
- mp_limb_t x;
-
- x = in_ptr[limb_cnt] & (((mp_limb_t) 1 << cnt % BITS_PER_MP_LIMB) - 1);
- if (x != 0)
- {
- res_size = limb_cnt + 1;
- if (res->_mp_alloc < res_size)
- _mpz_realloc (res, res_size);
-
- res->_mp_d[limb_cnt] = x;
- }
- else
- {
- res_size = limb_cnt;
- MPN_NORMALIZE (in_ptr, res_size);
-
- if (res->_mp_alloc < res_size)
- _mpz_realloc (res, res_size);
-
- limb_cnt = res_size;
- }
- }
- else
- {
- /* The input operand is smaller than 2**CNT. We perform a no-op,
- apart from that we might need to copy IN to RES. */
- res_size = in_size;
- if (res->_mp_alloc < res_size)
- _mpz_realloc (res, res_size);
-
- limb_cnt = res_size;
- }
-
- if (res != in)
- MPN_COPY (res->_mp_d, in->_mp_d, limb_cnt);
- res->_mp_size = in->_mp_size >= 0 ? res_size : -res_size;
-}
diff --git a/gnu/lib/libgmp/mpz/tdiv_r_ui.c b/gnu/lib/libgmp/mpz/tdiv_r_ui.c
deleted file mode 100644
index 0428b52..0000000
--- a/gnu/lib/libgmp/mpz/tdiv_r_ui.c
+++ /dev/null
@@ -1,64 +0,0 @@
-/* mpz_tdiv_r_ui(rem, dividend, divisor_limb)
- -- Set REM to DIVDEND mod DIVISOR_LIMB.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-void
-#if __STDC__
-mpz_tdiv_r_ui (mpz_ptr rem, mpz_srcptr dividend, unsigned long int divisor)
-#else
-mpz_tdiv_r_ui (rem, dividend, divisor)
- mpz_ptr rem;
- mpz_srcptr dividend;
- unsigned long int divisor;
-#endif
-{
- mp_size_t dividend_size;
- mp_size_t size;
- mp_limb_t remainder_limb;
-
- dividend_size = dividend->_mp_size;
- size = ABS (dividend_size);
-
- if (size == 0)
- {
- rem->_mp_size = 0;
- return;
- }
-
- /* No need for temporary allocation and copying if QUOT == DIVIDEND as
- the divisor is just one limb, and thus no intermediate remainders
- need to be stored. */
-
- remainder_limb = mpn_mod_1 (dividend->_mp_d, size, (mp_limb_t) divisor);
-
- if (remainder_limb == 0)
- rem->_mp_size = 0;
- else
- {
- /* Store the single-limb remainder. We don't check if there's space
- for just one limb, since no function ever makes zero space. */
- rem->_mp_size = dividend_size >= 0 ? 1 : -1;
- rem->_mp_d[0] = remainder_limb;
- }
-}
diff --git a/gnu/lib/libgmp/mpz/tests/Makefile.in b/gnu/lib/libgmp/mpz/tests/Makefile.in
deleted file mode 100644
index 5a0cf59..0000000
--- a/gnu/lib/libgmp/mpz/tests/Makefile.in
+++ /dev/null
@@ -1,126 +0,0 @@
-# Makefile for mpz/tests for GNU MP
-
-srcdir = .
-
-CC = gcc
-
-TEST_LIBS = ../../libgmp.a
-INCLUDES = -I../../mpn -I$(srcdir)/../..
-CFLAGS = -g -O
-
-.c.o:
- $(CC) -c $(INCLUDES) $(CFLAGS) $(XCFLAGS) $<
-
-TEST_SRCS = t-mul.c t-tdiv.c t-tdiv_ui.c t-fdiv.c t-fdiv_ui.c t-gcd.c \
- t-gcd2.c dive.c t-sqrtrem.c convert.c io.c logic.c t-powm.c t-powm_ui.c \
- reuse.c
-TEST_OBJS = t-mul.o t-tdiv.o t-tdiv_ui.o t-fdiv.o t-fdiv_ui.o t-gcd.o \
- t-gcd2.o dive.o t-sqrtrem.o convert.o io.o logic.o t-powm.o t-powm_ui.o \
- reuse.o
-TESTS = t-mul t-tdiv t-tdiv_ui t-fdiv t-fdiv_ui t-gcd t-gcd2 \
- dive t-sqrtrem convert io logic t-powm t-powm_ui reuse
-
-check: Makefile st-mul st-tdiv st-tdiv_ui st-fdiv st-fdiv_ui st-gcd st-gcd2 st-dive \
- st-sqrtrem st-convert st-io st-logic st-powm st-powm_ui st-reuse
- @echo "The tests passed."
-
-st-mul: t-mul
- ./t-mul
- touch $@
-st-tdiv: t-tdiv
- ./t-tdiv
- touch $@
-st-tdiv_ui: t-tdiv_ui
- ./t-tdiv_ui
- touch $@
-st-fdiv: t-fdiv
- ./t-fdiv
- touch $@
-st-fdiv_ui: t-fdiv_ui
- ./t-fdiv_ui
- touch $@
-st-gcd: t-gcd
- ./t-gcd
- touch $@
-st-gcd2: t-gcd2
- ./t-gcd2
- touch $@
-st-dive: dive
- ./dive
- touch $@
-st-sqrtrem: t-sqrtrem
- ./t-sqrtrem
- touch $@
-st-convert: convert
- ./convert
- touch $@
-st-io: io
- ./io
- touch $@
-st-logic: logic
- ./logic
- touch $@
-st-powm: t-powm
- ./t-powm
- touch $@
-st-powm_ui: t-powm_ui
- ./t-powm_ui
- touch $@
-st-reuse: reuse
- ./reuse
- touch $@
-
-t-mul: t-mul.o $(TEST_LIBS)
- $(CC) -o $@ $@.o $(TEST_LIBS) $(CFLAGS)
-t-tdiv: t-tdiv.o $(TEST_LIBS)
- $(CC) -o $@ $@.o $(TEST_LIBS) $(CFLAGS)
-t-tdiv_ui: t-tdiv_ui.o $(TEST_LIBS)
- $(CC) -o $@ $@.o $(TEST_LIBS) $(CFLAGS)
-t-fdiv: t-fdiv.o $(TEST_LIBS)
- $(CC) -o $@ $@.o $(TEST_LIBS) $(CFLAGS)
-t-fdiv_ui: t-fdiv_ui.o $(TEST_LIBS)
- $(CC) -o $@ $@.o $(TEST_LIBS) $(CFLAGS)
-t-gcd: t-gcd.o $(TEST_LIBS)
- $(CC) -o $@ $@.o $(TEST_LIBS) $(CFLAGS)
-t-gcd2: t-gcd2.o $(TEST_LIBS)
- $(CC) -o $@ $@.o $(TEST_LIBS) $(CFLAGS)
-dive: dive.o $(TEST_LIBS)
- $(CC) -o $@ $@.o $(TEST_LIBS) $(CFLAGS)
-t-sqrtrem: t-sqrtrem.o $(TEST_LIBS)
- $(CC) -o $@ $@.o $(TEST_LIBS) $(CFLAGS)
-convert: convert.o $(TEST_LIBS)
- $(CC) -o $@ $@.o $(TEST_LIBS) $(CFLAGS)
-io: io.o $(TEST_LIBS)
- $(CC) -o $@ $@.o $(TEST_LIBS) $(CFLAGS)
-logic: logic.o $(TEST_LIBS)
- $(CC) -o $@ $@.o $(TEST_LIBS) $(CFLAGS)
-t-powm: t-powm.o $(TEST_LIBS)
- $(CC) -o $@ $@.o $(TEST_LIBS) $(CFLAGS)
-t-powm_ui: t-powm_ui.o $(TEST_LIBS)
- $(CC) -o $@ $@.o $(TEST_LIBS) $(CFLAGS)
-reuse: reuse.o $(TEST_LIBS)
- $(CC) -o $@ $@.o $(TEST_LIBS) $(CFLAGS)
-
-t-mul.o: $(srcdir)/t-mul.c
-t-tdiv.o: $(srcdir)/t-tdiv.c
-t-tdiv_ui.o: $(srcdir)/t-tdiv_ui.c
-t-fdiv.o: $(srcdir)/t-fdiv.c
-t-fdiv_ui.o: $(srcdir)/t-fdiv_ui.c
-t-gcd.o: $(srcdir)/t-gcd.c
-t-gcd2.o: $(srcdir)/t-gcd2.c
-dive.o: $(srcdir)/dive.c
-t-sqrtrem.o: $(srcdir)/t-sqrtrem.c
-convert.o: $(srcdir)/convert.c
-io.o: $(srcdir)/io.c
-logic.o: $(srcdir)/logic.c
-t-powm.o: $(srcdir)/t-powm.c
-t-powm_ui.o: $(srcdir)/t-powm_ui.c
-reuse.o: $(srcdir)/reuse.c
-
-clean mostlyclean:
- rm -f *.o st-* $(TESTS)
-distclean maintainer-clean: clean
- rm -f Makefile config.status
-
-Makefile: $(srcdir)/Makefile.in
- $(SHELL) ./config.status
diff --git a/gnu/lib/libgmp/mpz/tests/configure.in b/gnu/lib/libgmp/mpz/tests/configure.in
deleted file mode 100644
index dacc177..0000000
--- a/gnu/lib/libgmp/mpz/tests/configure.in
+++ /dev/null
@@ -1,11 +0,0 @@
-# This file is a shell script that supplies the information necessary
-# to tailor a template configure script into the configure script
-# appropriate for this directory. For more information, check any
-# existing configure script.
-
-srctrigger=t-mul.c
-srcname="gmp/mpz/tests"
-
-# per-host:
-
-# per-target:
diff --git a/gnu/lib/libgmp/mpz/tests/convert.c b/gnu/lib/libgmp/mpz/tests/convert.c
deleted file mode 100644
index 1d82370..0000000
--- a/gnu/lib/libgmp/mpz/tests/convert.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/* Test conversion using mpz_get_str and mpz_set_str.
-
-Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-void debug_mp ();
-
-#ifndef SIZE
-#define SIZE 32
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- MP_INT op1, op2;
- mp_size_t size;
- int i;
- int reps = 100000;
- char *str;
- int base;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpz_init (&op1);
- mpz_init (&op2);
-
- for (i = 0; i < reps; i++)
- {
- size = urandom () % SIZE - SIZE/2;
-
- mpz_random2 (&op1, size);
- base = urandom () % 36 + 1;
- if (base == 1)
- base = 0;
-
- str = mpz_get_str ((char *) 0, base, &op1);
- mpz_set_str (&op2, str, base);
- free (str);
-
- if (mpz_cmp (&op1, &op2))
- {
- fprintf (stderr, "ERROR\n");
- fprintf (stderr, "op1 = "); debug_mp (&op1, -16);
- fprintf (stderr, "base = %d\n", base);
- abort ();
- }
- }
-
- exit (0);
-}
-
-void
-debug_mp (x, base)
- MP_INT *x;
-{
- mpz_out_str (stderr, base, x); fputc ('\n', stderr);
-}
diff --git a/gnu/lib/libgmp/mpz/tests/dive.c b/gnu/lib/libgmp/mpz/tests/dive.c
deleted file mode 100644
index 8d3516d..0000000
--- a/gnu/lib/libgmp/mpz/tests/dive.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Test mpz_mul, mpz_divexact.
-
-Copyright (C) 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-void debug_mp ();
-
-#ifndef SIZE
-#define SIZE 32
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mpz_t op1, op2;
- mpz_t prod, quot;
- mp_size_t size;
- int i;
- int reps = 100000;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpz_init (op1);
- mpz_init (op2);
- mpz_init (prod);
- mpz_init (quot);
-
- for (i = 0; i < reps; i++)
- {
- size = urandom () % SIZE - SIZE/2;
- mpz_random2 (op1, size);
-
- do
- {
- size = urandom () % SIZE - SIZE/2;
- mpz_random2 (op2, size);
- }
- while (mpz_cmp_ui (op2, 0) == 0);
-
- mpz_mul (prod, op1, op2);
-
- mpz_divexact (quot, prod, op2);
- if (mpz_cmp (quot, op1) != 0)
- dump_abort (quot, op1);
- }
-
- exit (0);
-}
-
-dump_abort (op1, op2)
- mpz_t op1, op2;
-{
- fprintf (stderr, "ERROR\n");
- fprintf (stderr, "ref = "); debug_mp (op1, -16);
- fprintf (stderr, "wrong = "); debug_mp (op2, -16);
- abort();
-}
-
-void
-debug_mp (x, base)
- mpz_t x;
-{
- mpz_out_str (stderr, base, x); fputc ('\n', stderr);
-}
diff --git a/gnu/lib/libgmp/mpz/tests/io-binary.c b/gnu/lib/libgmp/mpz/tests/io-binary.c
deleted file mode 100644
index c28f2a5..0000000
--- a/gnu/lib/libgmp/mpz/tests/io-binary.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/* Test mpz_inp_binary and mpz_out_binary.
-
- We write and read back some test strings, and both compare
- the numerical result, and make sure the pattern on file is
- what we expect. The latter is important for compatibility
- between machines with different word sizes. */
-
-#include <stdio.h>
-#include "gmp.h"
-
-FILE *file;
-
-test (str, binary_len, binary_str)
- char *str;
- int binary_len;
- char *binary_str;
-{
- mpz_t x, y;
- int n_written;
- char buf[100];
-
- mpz_init_set_str (x, str, 0);
- mpz_init (y);
-
- fseek (file, 0, SEEK_SET);
- mpz_out_binary (file, x);
- n_written = ftell (file);
- if (n_written != binary_len)
- abort ();
-
- fseek (file, 0, SEEK_SET);
- mpz_inp_binary (y, file);
- if (n_written != ftell (file))
- abort ();
- if (mpz_cmp (x, y) != 0)
- abort ();
-
- fseek (file, 0, SEEK_SET);
- fread (buf, n_written, 1, file);
- if (memcmp (buf, binary_str, binary_len) != 0)
- abort ();
-
- mpz_clear (x);
-}
-
-main ()
-{
- file = fopen ("xtmpfile", "w+");
-
- test ("0", 4,
- "\000\000\000\000");
-
- test ("1", 5,
- "\000\000\000\001\001");
- test ("0x123", 6,
- "\000\000\000\002\001\043");
- test ("0xdeadbeef", 8,
- "\000\000\000\004\336\255\276\357");
- test ("0xbabefaced", 9,
- "\000\000\000\005\013\253\357\254\355");
- test ("0x123456789facade0", 12,
- "\000\000\000\010\022\064\126\170\237\254\255\340");
-
- test ("-1", 5,
- "\377\377\377\377\001");
- test ("-0x123", 6,
- "\377\377\377\376\001\043");
- test ("-0xdeadbeef", 8,
- "\377\377\377\374\336\255\276\357");
- test ("-0xbabefaced", 9,
- "\377\377\377\373\013\253\357\254\355");
- test ("-0x123456789facade0", 12,
- "\377\377\377\370\022\064\126\170\237\254\255\340");
-
- exit (0);
-}
diff --git a/gnu/lib/libgmp/mpz/tests/io.c b/gnu/lib/libgmp/mpz/tests/io.c
deleted file mode 100644
index 3dfa9a5..0000000
--- a/gnu/lib/libgmp/mpz/tests/io.c
+++ /dev/null
@@ -1,86 +0,0 @@
-/* Test conversion and I/O using mpz_out_str and mpz_inp_str.
-
-Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-void debug_mp ();
-
-#ifndef SIZE
-#define SIZE 16
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- MP_INT op1, op2;
- mp_size_t size;
- int i;
- int reps = 10000;
- FILE *fsin, *fsout;
- int fd[2];
- int base;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpz_init (&op1);
- mpz_init (&op2);
-
- pipe (fd);
- fsin = fdopen (fd[0], "r");
- fsout = fdopen (fd[1], "w");
-
- for (i = 0; i < reps; i++)
- {
- size = urandom () % SIZE - SIZE/2;
-
- mpz_random2 (&op1, size);
- base = urandom () % 36 + 1;
- if (base == 1)
- base = 0;
-
- mpz_out_str (fsout, base, &op1);
- putc (' ', fsout);
- fflush (fsout);
- mpz_inp_str (&op2, fsin, base);
-
- if (mpz_cmp (&op1, &op2))
- {
- fprintf (stderr, "ERROR\n");
- fprintf (stderr, "op1 = "); debug_mp (&op1, -16);
- fprintf (stderr, "base = %d\n", base);
- abort ();
- }
- }
-
- exit (0);
-}
-
-void
-debug_mp (x, base)
- MP_INT *x;
-{
- mpz_out_str (stderr, base, x); fputc ('\n', stderr);
-}
diff --git a/gnu/lib/libgmp/mpz/tests/logic.c b/gnu/lib/libgmp/mpz/tests/logic.c
deleted file mode 100644
index 41a8cac..0000000
--- a/gnu/lib/libgmp/mpz/tests/logic.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/* Test mpz_com, mpz_and, and mpz_ior.
-
-Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-void debug_mp ();
-
-#ifndef SIZE
-#define SIZE 16
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mpz_t x, y, r1, r2;
- mpz_t t1, t2, t3, t4;
- mp_size_t xsize, ysize;
- int i;
- int reps = 100000;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpz_init (x);
- mpz_init (y);
- mpz_init (r1);
- mpz_init (r2);
- mpz_init (t1);
- mpz_init (t2);
- mpz_init (t3);
- mpz_init (t4);
-
- for (i = 0; i < reps; i++)
- {
- xsize = urandom () % SIZE - SIZE/2;
- mpz_random2 (x, xsize);
-
- ysize = urandom () % SIZE - SIZE/2;
- mpz_random2 (y, ysize);
-
- mpz_com (r1, x);
- mpz_com (r1, r1);
- if (mpz_cmp (r1, x) != 0)
- dump_abort ();
-
- mpz_com (r1, y);
- mpz_com (r2, r1);
- if (mpz_cmp (r2, y) != 0)
- dump_abort ();
-
- mpz_com (t1, x);
- mpz_com (t2, y);
- mpz_and (t3, t1, t2);
- mpz_com (r1, t3);
- mpz_ior (r2, x, y);
- if (mpz_cmp (r1, r2) != 0)
- dump_abort ();
-
- mpz_com (t1, x);
- mpz_com (t2, y);
- mpz_ior (t3, t1, t2);
- mpz_com (r1, t3);
- mpz_and (r2, x, y);
- if (mpz_cmp (r1, r2) != 0)
- dump_abort ();
- }
-
- exit (0);
-}
-
-dump_abort ()
-{
- abort();
-}
-
-void
-debug_mp (x, base)
- MP_INT *x;
-{
- mpz_out_str (stderr, base, x); fputc ('\n', stderr);
-}
diff --git a/gnu/lib/libgmp/mpz/tests/reuse.c b/gnu/lib/libgmp/mpz/tests/reuse.c
deleted file mode 100644
index 52fc5a5..0000000
--- a/gnu/lib/libgmp/mpz/tests/reuse.c
+++ /dev/null
@@ -1,135 +0,0 @@
-/* Test that routines allow reusing a source variable as destination. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-#ifndef SIZE
-#define SIZE 16
-#endif
-
-#if __STDC__
-typedef void (*dss_func) (mpz_ptr, mpz_srcptr, mpz_srcptr);
-#else
-typedef void (*dss_func) ();
-#endif
-
-dss_func dss_funcs[] =
-{
- mpz_add, mpz_and, mpz_cdiv_q, mpz_cdiv_r, mpz_fdiv_q, mpz_fdiv_r,
- mpz_gcd, mpz_ior, mpz_mul, mpz_sub, mpz_tdiv_q, mpz_tdiv_r
-};
-
-char *dss_func_names[] =
-{
- "mpz_add", "mpz_and", "mpz_cdiv_q", "mpz_cdiv_r", "mpz_fdiv_q", "mpz_fdiv_r",
- "mpz_gcd", "mpz_ior", "mpz_mul", "mpz_sub", "mpz_tdiv_q", "mpz_tdiv_r"
-};
-
-char dss_func_division[] = {0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1};
-
-#if 0
-mpz_divexact /* requires special operands */
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- int i;
- int pass, reps = 10000;
- mpz_t in1, in2, out1;
- mpz_t res1, res2, res3;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpz_init (in1);
- mpz_init (in2);
- mpz_init (out1);
- mpz_init (res1);
- mpz_init (res2);
- mpz_init (res3);
-
- for (pass = 1; pass <= reps; pass++)
- {
- mpz_random (in1, urandom () % SIZE - SIZE/2);
- mpz_random (in2, urandom () % SIZE - SIZE/2);
-
- for (i = 0; i < sizeof (dss_funcs) / sizeof (dss_func); i++)
- {
- if (dss_func_division[i] && mpz_cmp_ui (in2, 0) == 0)
- continue;
-
- (dss_funcs[i]) (res1, in1, in2);
-
- mpz_set (out1, in1);
- (dss_funcs[i]) (out1, out1, in2);
- mpz_set (res2, out1);
-
- mpz_set (out1, in2);
- (dss_funcs[i]) (out1, in1, out1);
- mpz_set (res3, out1);
-
- if (mpz_cmp (res1, res2) != 0)
- dump_abort (dss_func_names[i], in1, in2);
- if (mpz_cmp (res1, res3) != 0)
- dump_abort (dss_func_names[i], in1, in2);
- }
- }
-
- exit (0);
-}
-
-dump_abort (name, in1, in2)
- char *name;
- mpz_t in1, in2;
-{
- printf ("failure in %s (", name);
- mpz_out_str (stdout, -16, in1);
- printf (" ");
- mpz_out_str (stdout, -16, in2);
- printf (")\n");
- abort ();
-}
-
-#if 0
-void mpz_add_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-void mpz_div_2exp _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-void mpz_mod_2exp _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-void mpz_mul_2exp _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-void mpz_mul_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-void mpz_pow_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-void mpz_sub_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-void mpz_tdiv_q_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-void mpz_tdiv_r_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-
-void mpz_abs _PROTO ((mpz_ptr, mpz_srcptr));
-void mpz_com _PROTO ((mpz_ptr, mpz_srcptr));
-void mpz_sqrt _PROTO ((mpz_ptr, mpz_srcptr));
-void mpz_neg _PROTO ((mpz_ptr, mpz_srcptr));
-
-void mpz_tdiv_qr_ui _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int));
-
-void mpz_powm_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int, mpz_srcptr));
-
-void mpz_gcdext _PROTO ((mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-void mpz_cdiv_qr _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
-void mpz_fdiv_qr _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
-void mpz_tdiv_qr _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr));
-
-void mpz_powm _PROTO ((mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr));
-
-void mpz_sqrtrem _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr));
-
-unsigned long int mpz_cdiv_qr_ui _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int));
-unsigned long int mpz_fdiv_qr_ui _PROTO ((mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int));
-
-unsigned long int mpz_cdiv_q_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-unsigned long int mpz_cdiv_r_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-unsigned long int mpz_fdiv_q_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-unsigned long int mpz_fdiv_r_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-unsigned long int mpz_gcd_ui _PROTO ((mpz_ptr, mpz_srcptr, unsigned long int));
-#endif
diff --git a/gnu/lib/libgmp/mpz/tests/t-fdiv.c b/gnu/lib/libgmp/mpz/tests/t-fdiv.c
deleted file mode 100644
index 9de22d7..0000000
--- a/gnu/lib/libgmp/mpz/tests/t-fdiv.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/* Test mpz_abs, mpz_add, mpz_cmp, mpz_cmp_ui, mpz_fdiv_qr, mpz_fdiv_q,
- mpz_fdiv_r, mpz_mul.
-
-Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-void debug_mp ();
-
-#ifndef SIZE
-#define SIZE 16
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mpz_t dividend, divisor;
- mpz_t quotient, remainder;
- mpz_t quotient2, remainder2;
- mpz_t temp;
- mp_size_t dividend_size, divisor_size;
- int i;
- int reps = 100000;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpz_init (dividend);
- mpz_init (divisor);
- mpz_init (quotient);
- mpz_init (remainder);
- mpz_init (quotient2);
- mpz_init (remainder2);
- mpz_init (temp);
-
- for (i = 0; i < reps; i++)
- {
- dividend_size = urandom () % SIZE - SIZE/2;
- mpz_random2 (dividend, dividend_size);
-
- divisor_size = urandom () % SIZE - SIZE/2;
- mpz_random2 (divisor, divisor_size);
- if (mpz_cmp_ui (divisor, 0) == 0)
- continue;
-
- mpz_fdiv_qr (quotient, remainder, dividend, divisor);
- mpz_fdiv_q (quotient2, dividend, divisor);
- mpz_fdiv_r (remainder2, dividend, divisor);
-
- /* First determine that the quotients and remainders computed
- with different functions are equal. */
- if (mpz_cmp (quotient, quotient2) != 0)
- dump_abort (dividend, divisor);
- if (mpz_cmp (remainder, remainder2) != 0)
- dump_abort (dividend, divisor);
-
- /* Check if the sign of the quotient is correct. */
- if (mpz_cmp_ui (quotient, 0) != 0)
- if ((mpz_cmp_ui (quotient, 0) < 0)
- != ((mpz_cmp_ui (dividend, 0) ^ mpz_cmp_ui (divisor, 0)) < 0))
- dump_abort (dividend, divisor);
-
- /* Check if the remainder has the same sign as the divisor
- (quotient rounded towards minus infinity). */
- if (mpz_cmp_ui (remainder, 0) != 0)
- if ((mpz_cmp_ui (remainder, 0) < 0) != (mpz_cmp_ui (divisor, 0) < 0))
- dump_abort (dividend, divisor);
-
- mpz_mul (temp, quotient, divisor);
- mpz_add (temp, temp, remainder);
- if (mpz_cmp (temp, dividend) != 0)
- dump_abort (dividend, divisor);
-
- mpz_abs (temp, divisor);
- mpz_abs (remainder, remainder);
- if (mpz_cmp (remainder, temp) >= 0)
- dump_abort (dividend, divisor);
- }
-
- exit (0);
-}
-
-dump_abort (dividend, divisor)
- mpz_t dividend, divisor;
-{
- fprintf (stderr, "ERROR\n");
- fprintf (stderr, "dividend = "); debug_mp (dividend, -16);
- fprintf (stderr, "divisor = "); debug_mp (divisor, -16);
- abort();
-}
-
-void
-debug_mp (x, base)
- mpz_t x;
-{
- mpz_out_str (stderr, base, x); fputc ('\n', stderr);
-}
diff --git a/gnu/lib/libgmp/mpz/tests/t-fdiv_ui.c b/gnu/lib/libgmp/mpz/tests/t-fdiv_ui.c
deleted file mode 100644
index 74ba9fc..0000000
--- a/gnu/lib/libgmp/mpz/tests/t-fdiv_ui.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Test mpz_abs, mpz_add, mpz_cmp, mpz_cmp_ui, mpz_fdiv_qr_ui, mpz_fdiv_q_ui,
- mpz_fdiv_r_ui, mpz_mul, mpz_mul_ui.
-
-Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-void debug_mp ();
-
-#ifndef SIZE
-#define SIZE 16
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mpz_t dividend;
- mpz_t quotient, remainder;
- mpz_t quotient2, remainder2;
- mpz_t temp;
- mp_size_t dividend_size;
- mp_limb_t divisor;
- int i;
- int reps = 100000;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpz_init (dividend);
- mpz_init (quotient);
- mpz_init (remainder);
- mpz_init (quotient2);
- mpz_init (remainder2);
- mpz_init (temp);
-
- for (i = 0; i < reps; i++)
- {
- dividend_size = urandom () % SIZE - SIZE/2;
- mpz_random2 (dividend, dividend_size);
-
- divisor = urandom ();
- if (divisor == 0)
- continue;
-
- mpz_fdiv_qr_ui (quotient, remainder, dividend, divisor);
- mpz_fdiv_q_ui (quotient2, dividend, divisor);
- mpz_fdiv_r_ui (remainder2, dividend, divisor);
-
- /* First determine that the quotients and remainders computed
- with different functions are equal. */
- if (mpz_cmp (quotient, quotient2) != 0)
- dump_abort (dividend, divisor);
- if (mpz_cmp (remainder, remainder2) != 0)
- dump_abort (dividend, divisor);
-
- /* Check if the sign of the quotient is correct. */
- if (mpz_cmp_ui (quotient, 0) != 0)
- if ((mpz_cmp_ui (quotient, 0) < 0)
- != (mpz_cmp_ui (dividend, 0) < 0))
- dump_abort (dividend, divisor);
-
- /* Check if the remainder has the same sign as the divisor
- (quotient rounded towards minus infinity). */
- if (mpz_cmp_ui (remainder, 0) != 0)
- if (mpz_cmp_ui (remainder, 0) < 0)
- dump_abort (dividend, divisor);
-
- mpz_mul_ui (temp, quotient, divisor);
- mpz_add (temp, temp, remainder);
- if (mpz_cmp (temp, dividend) != 0)
- dump_abort (dividend, divisor);
-
- mpz_abs (remainder, remainder);
- if (mpz_cmp_ui (remainder, divisor) >= 0)
- dump_abort (dividend, divisor);
- }
-
- exit (0);
-}
-
-dump_abort (dividend, divisor)
- mpz_t dividend;
- mp_limb_t divisor;
-{
- fprintf (stderr, "ERROR\n");
- fprintf (stderr, "dividend = "); debug_mp (dividend, -16);
- fprintf (stderr, "divisor = %lX\n", divisor);
- abort();
-}
-
-void
-debug_mp (x, base)
- mpz_t x;
-{
- mpz_out_str (stderr, base, x); fputc ('\n', stderr);
-}
diff --git a/gnu/lib/libgmp/mpz/tests/t-gcd.c b/gnu/lib/libgmp/mpz/tests/t-gcd.c
deleted file mode 100644
index d9a7884..0000000
--- a/gnu/lib/libgmp/mpz/tests/t-gcd.c
+++ /dev/null
@@ -1,132 +0,0 @@
-/* Test mpz_gcd, mpz_gcdext, mpz_mul, mpz_tdiv_r, mpz_add, mpz_cmp,
- mpz_cmp_ui, mpz_init_set, mpz_set, mpz_clear.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-void mpz_refgcd (), debug_mp ();
-
-#ifndef SIZE
-#define SIZE 256 /* really needs to be this large to exercise corner cases! */
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mpz_t op1, op2;
- mpz_t refgcd, gcd, s, t;
- mpz_t temp1, temp2;
- mp_size_t op1_size, op2_size;
- int i;
- int reps = 1000;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpz_init (op1);
- mpz_init (op2);
- mpz_init (refgcd);
- mpz_init (gcd);
- mpz_init (temp1);
- mpz_init (temp2);
- mpz_init (s);
- mpz_init (t);
-
- for (i = 0; i < reps; i++)
- {
- op1_size = urandom () % SIZE - SIZE/2;
- op2_size = urandom () % SIZE - SIZE/2;
-
- mpz_random2 (op1, op1_size);
- mpz_random2 (op2, op2_size);
-
- mpz_refgcd (refgcd, op1, op2);
-
- mpz_gcd (gcd, op1, op2);
- if (mpz_cmp (refgcd, gcd))
- dump_abort (op1, op2);
-
- mpz_gcdext (gcd, s, t, op1, op2);
- if (mpz_cmp (refgcd, gcd))
- dump_abort (op1, op2);
-
- mpz_mul (temp1, s, op1);
- mpz_mul (temp2, t, op2);
- mpz_add (gcd, temp1, temp2);
- if (mpz_cmp (refgcd, gcd))
- dump_abort (op1, op2);
- }
-
- exit (0);
-}
-
-void
-mpz_refgcd (g, x, y)
- mpz_t g;
- mpz_t x, y;
-{
- mpz_t xx, yy;
-
- mpz_init (xx);
- mpz_init (yy);
-
- mpz_abs (xx, x);
- mpz_abs (yy, y);
-
- for (;;)
- {
- if (mpz_cmp_ui (yy, 0) == 0)
- {
- mpz_set (g, xx);
- break;
- }
- mpz_tdiv_r (xx, xx, yy);
- if (mpz_cmp_ui (xx, 0) == 0)
- {
- mpz_set (g, yy);
- break;
- }
- mpz_tdiv_r (yy, yy, xx);
- }
-
- mpz_clear (xx);
- mpz_clear (yy);
-}
-
-dump_abort (op1, op2)
- mpz_t op1, op2;
-{
- fprintf (stderr, "ERROR\n");
- fprintf (stderr, "op1 = "); debug_mp (op1, -16);
- fprintf (stderr, "op2 = "); debug_mp (op2, -16);
- abort();
-}
-
-void
-debug_mp (x, base)
- mpz_t x;
-{
- mpz_out_str (stderr, base, x); fputc ('\n', stderr);
-}
diff --git a/gnu/lib/libgmp/mpz/tests/t-gcd2.c b/gnu/lib/libgmp/mpz/tests/t-gcd2.c
deleted file mode 100644
index b7ad67c..0000000
--- a/gnu/lib/libgmp/mpz/tests/t-gcd2.c
+++ /dev/null
@@ -1,137 +0,0 @@
-/* Test mpz_gcd, mpz_gcdext, mpz_mul, mpz_tdiv_r, mpz_add, mpz_cmp,
- mpz_cmp_ui, mpz_init_set, mpz_set, mpz_clear.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-void mpz_refgcd (), debug_mp ();
-
-#ifndef SIZE
-#define SIZE 128
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mpz_t op1, op2, x;
- mpz_t refgcd, gcd, s, t;
- mpz_t temp1, temp2;
- mp_size_t op1_size, op2_size, x_size;
- int i;
- int reps = 1000;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpz_init (op1);
- mpz_init (op2);
- mpz_init (x);
- mpz_init (refgcd);
- mpz_init (gcd);
- mpz_init (temp1);
- mpz_init (temp2);
- mpz_init (s);
- mpz_init (t);
-
- for (i = 0; i < reps; i++)
- {
- op1_size = urandom () % SIZE - SIZE/2;
- op2_size = urandom () % SIZE - SIZE/2;
- x_size = urandom () % SIZE/2;
-
- mpz_random2 (op1, op1_size);
- mpz_random2 (op2, op2_size);
- mpz_random2 (x, x_size);
- mpz_mul (op1, op1, x);
- mpz_mul (op2, op2, x);
-
- mpz_refgcd (refgcd, op1, op2);
-
- mpz_gcd (gcd, op1, op2);
- if (mpz_cmp (refgcd, gcd))
- dump_abort (op1, op2);
-
- mpz_gcdext (gcd, s, t, op1, op2);
- if (mpz_cmp (refgcd, gcd))
- dump_abort (op1, op2);
-
- mpz_mul (temp1, s, op1);
- mpz_mul (temp2, t, op2);
- mpz_add (gcd, temp1, temp2);
- if (mpz_cmp (refgcd, gcd))
- dump_abort (op1, op2);
- }
-
- exit (0);
-}
-
-void
-mpz_refgcd (g, x, y)
- mpz_t g;
- mpz_t x, y;
-{
- mpz_t xx, yy;
-
- mpz_init (xx);
- mpz_init (yy);
-
- mpz_abs (xx, x);
- mpz_abs (yy, y);
-
- for (;;)
- {
- if (mpz_cmp_ui (yy, 0) == 0)
- {
- mpz_set (g, xx);
- break;
- }
- mpz_tdiv_r (xx, xx, yy);
- if (mpz_cmp_ui (xx, 0) == 0)
- {
- mpz_set (g, yy);
- break;
- }
- mpz_tdiv_r (yy, yy, xx);
- }
-
- mpz_clear (xx);
- mpz_clear (yy);
-}
-
-dump_abort (op1, op2)
- mpz_t op1, op2;
-{
- fprintf (stderr, "ERROR\n");
- fprintf (stderr, "op1 = "); debug_mp (op1, -16);
- fprintf (stderr, "op2 = "); debug_mp (op2, -16);
- abort();
-}
-
-void
-debug_mp (x, base)
- mpz_t x;
-{
- mpz_out_str (stderr, base, x); fputc ('\n', stderr);
-}
diff --git a/gnu/lib/libgmp/mpz/tests/t-mul.c b/gnu/lib/libgmp/mpz/tests/t-mul.c
deleted file mode 100644
index b200cd7..0000000
--- a/gnu/lib/libgmp/mpz/tests/t-mul.c
+++ /dev/null
@@ -1,261 +0,0 @@
-/* Test mpz_add, mpz_cmp, mpz_cmp_ui, mpz_divmod, mpz_mul.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-#include "urandom.h"
-
-void debug_mp ();
-mp_size_t _mpn_mul_classic ();
-void mpz_refmul ();
-
-#ifndef SIZE
-#define SIZE 128
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mpz_t multiplier, multiplicand;
- mpz_t product, ref_product;
- mpz_t quotient, remainder;
- mp_size_t multiplier_size, multiplicand_size;
- int i;
- int reps = 10000;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpz_init (multiplier);
- mpz_init (multiplicand);
- mpz_init (product);
- mpz_init (ref_product);
- mpz_init (quotient);
- mpz_init (remainder);
-
- for (i = 0; i < reps; i++)
- {
- multiplier_size = urandom () % SIZE - SIZE/2;
- multiplicand_size = urandom () % SIZE - SIZE/2;
-
- mpz_random2 (multiplier, multiplier_size);
- mpz_random2 (multiplicand, multiplicand_size);
-
- mpz_mul (product, multiplier, multiplicand);
- mpz_refmul (ref_product, multiplier, multiplicand);
- if (mpz_cmp_ui (multiplicand, 0) != 0)
- mpz_divmod (quotient, remainder, product, multiplicand);
-
- if (mpz_cmp (product, ref_product))
- dump_abort (multiplier, multiplicand);
-
- if (mpz_cmp_ui (multiplicand, 0) != 0)
- if (mpz_cmp_ui (remainder, 0) || mpz_cmp (quotient, multiplier))
- dump_abort (multiplier, multiplicand);
- }
-
- exit (0);
-}
-
-void
-mpz_refmul (w, u, v)
- mpz_t w;
- const mpz_t u;
- const mpz_t v;
-{
- mp_size_t usize = u->_mp_size;
- mp_size_t vsize = v->_mp_size;
- mp_size_t wsize;
- mp_size_t sign_product;
- mp_ptr up, vp;
- mp_ptr wp;
- mp_ptr free_me = NULL;
- size_t free_me_size;
- TMP_DECL (marker);
-
- TMP_MARK (marker);
- sign_product = usize ^ vsize;
- usize = ABS (usize);
- vsize = ABS (vsize);
-
- if (usize < vsize)
- {
- /* Swap U and V. */
- {const __mpz_struct *t = u; u = v; v = t;}
- {mp_size_t t = usize; usize = vsize; vsize = t;}
- }
-
- up = u->_mp_d;
- vp = v->_mp_d;
- wp = w->_mp_d;
-
- /* Ensure W has space enough to store the result. */
- wsize = usize + vsize;
- if (w->_mp_alloc < wsize)
- {
- if (wp == up || wp == vp)
- {
- free_me = wp;
- free_me_size = w->_mp_alloc;
- }
- else
- (*_mp_free_func) (wp, w->_mp_alloc * BYTES_PER_MP_LIMB);
-
- w->_mp_alloc = wsize;
- wp = (mp_ptr) (*_mp_allocate_func) (wsize * BYTES_PER_MP_LIMB);
- w->_mp_d = wp;
- }
- else
- {
- /* Make U and V not overlap with W. */
- if (wp == up)
- {
- /* W and U are identical. Allocate temporary space for U. */
- up = (mp_ptr) TMP_ALLOC (usize * BYTES_PER_MP_LIMB);
- /* Is V identical too? Keep it identical with U. */
- if (wp == vp)
- vp = up;
- /* Copy to the temporary space. */
- MPN_COPY (up, wp, usize);
- }
- else if (wp == vp)
- {
- /* W and V are identical. Allocate temporary space for V. */
- vp = (mp_ptr) TMP_ALLOC (vsize * BYTES_PER_MP_LIMB);
- /* Copy to the temporary space. */
- MPN_COPY (vp, wp, vsize);
- }
- }
-
- wsize = _mpn_mul_classic (wp, up, usize, vp, vsize);
- w->_mp_size = sign_product < 0 ? -wsize : wsize;
- if (free_me != NULL)
- (*_mp_free_func) (free_me, free_me_size * BYTES_PER_MP_LIMB);
-
- TMP_FREE (marker);
-}
-
-mp_size_t
-_mpn_mul_classic (prodp, up, usize, vp, vsize)
- mp_ptr prodp;
- mp_srcptr up;
- mp_size_t usize;
- mp_srcptr vp;
- mp_size_t vsize;
-{
- mp_size_t i, j;
- mp_limb_t prod_low, prod_high;
- mp_limb_t cy_dig;
- mp_limb_t v_limb, c;
-
- if (vsize == 0)
- return 0;
-
- /* Offset UP and PRODP so that the inner loop can be faster. */
- up += usize;
- prodp += usize;
-
- /* Multiply by the first limb in V separately, as the result can
- be stored (not added) to PROD. We also avoid a loop for zeroing. */
- v_limb = vp[0];
- cy_dig = 0;
- j = -usize;
- do
- {
- umul_ppmm (prod_high, prod_low, up[j], v_limb);
- add_ssaaaa (cy_dig, prodp[j], prod_high, prod_low, 0, cy_dig);
- j++;
- }
- while (j < 0);
-
- prodp[j] = cy_dig;
- prodp++;
-
- /* For each iteration in the outer loop, multiply one limb from
- U with one limb from V, and add it to PROD. */
- for (i = 1; i < vsize; i++)
- {
- v_limb = vp[i];
- cy_dig = 0;
- j = -usize;
-
- /* Inner loops. Simulate the carry flag by jumping between
- these loops. The first is used when there was no carry
- in the previois iteration; the second when there was carry. */
-
- do
- {
- umul_ppmm (prod_high, prod_low, up[j], v_limb);
- add_ssaaaa (cy_dig, prod_low, prod_high, prod_low, 0, cy_dig);
- c = prodp[j];
- prod_low += c;
- prodp[j] = prod_low;
- if (prod_low < c)
- goto cy_loop;
- ncy_loop:
- j++;
- }
- while (j < 0);
-
- prodp[j] = cy_dig;
- prodp++;
- continue;
-
- do
- {
- umul_ppmm (prod_high, prod_low, up[j], v_limb);
- add_ssaaaa (cy_dig, prod_low, prod_high, prod_low, 0, cy_dig);
- c = prodp[j];
- prod_low += c + 1;
- prodp[j] = prod_low;
- if (prod_low > c)
- goto ncy_loop;
- cy_loop:
- j++;
- }
- while (j < 0);
-
- cy_dig += 1;
- prodp[j] = cy_dig;
- prodp++;
- }
-
- return usize + vsize - (cy_dig == 0);
-}
-
-dump_abort (multiplier, multiplicand)
- mpz_t multiplier, multiplicand;
-{
- fprintf (stderr, "ERROR\n");
- fprintf (stderr, "multiplier = "); debug_mp (multiplier, -16);
- fprintf (stderr, "multiplicand = "); debug_mp (multiplicand, -16);
- abort();
-}
-
-void
-debug_mp (x, base)
- mpz_t x;
-{
- mpz_out_str (stderr, base, x); fputc ('\n', stderr);
-}
diff --git a/gnu/lib/libgmp/mpz/tests/t-powm.c b/gnu/lib/libgmp/mpz/tests/t-powm.c
deleted file mode 100644
index 02d7ca5..0000000
--- a/gnu/lib/libgmp/mpz/tests/t-powm.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/* Test mpz_powm, mpz_mul. mpz_mod, mpz_mod_ui, mpz_div_ui.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-void debug_mp ();
-
-#ifndef SIZE
-#define SIZE 8
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mpz_t base, exp, mod;
- mpz_t r1, r2, t1, exp2, base2;
- mp_size_t base_size, exp_size, mod_size;
- int i;
- int reps = 10000;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpz_init (base);
- mpz_init (exp);
- mpz_init (mod);
- mpz_init (r1);
- mpz_init (r2);
- mpz_init (t1);
- mpz_init (exp2);
- mpz_init (base2);
-
- for (i = 0; i < reps; i++)
- {
- base_size = urandom () % SIZE - SIZE/2;
- mpz_random2 (base, base_size);
-
- exp_size = urandom () % SIZE;
- mpz_random2 (exp, exp_size);
-
- mod_size = urandom () % SIZE /* - SIZE/2 */;
- mpz_random2 (mod, mod_size);
- if (mpz_cmp_ui (mod, 0) == 0)
- continue;
-
- /* This is mathematically undefined. */
- if (mpz_cmp_ui (base, 0) == 0 && mpz_cmp_ui (exp, 0) == 0)
- continue;
-
-#if 0
- putc ('\n', stderr);
- debug_mp (base, -16);
- debug_mp (exp, -16);
- debug_mp (mod, -16);
-#endif
-
- mpz_powm (r1, base, exp, mod);
-
- mpz_set_ui (r2, 1);
- mpz_set (base2, base);
- mpz_set (exp2, exp);
-
- mpz_mod (r2, r2, mod); /* needed when exp==0 and mod==1 */
- while (mpz_cmp_ui (exp2, 0) != 0)
- {
- mpz_mod_ui (t1, exp2, 2);
- if (mpz_cmp_ui (t1, 0) != 0)
- {
- mpz_mul (r2, r2, base2);
- mpz_mod (r2, r2, mod);
- }
- mpz_mul (base2, base2, base2);
- mpz_mod (base2, base2, mod);
- mpz_div_ui (exp2, exp2, 2);
- }
-
-#if 0
- debug_mp (r1, -16);
- debug_mp (r2, -16);
-#endif
-
- if (mpz_cmp (r1, r2) != 0)
- abort ();
- }
-
- exit (0);
-}
-
-dump_abort (dividend, divisor)
- MP_INT *dividend, *divisor;
-{
- fprintf (stderr, "ERROR\n");
- fprintf (stderr, "dividend = "); debug_mp (dividend, -16);
- fprintf (stderr, "divisor = "); debug_mp (divisor, -16);
- abort();
-}
-
-void
-debug_mp (x, base)
- MP_INT *x;
-{
- mpz_out_str (stderr, base, x); fputc ('\n', stderr);
-}
diff --git a/gnu/lib/libgmp/mpz/tests/t-powm_ui.c b/gnu/lib/libgmp/mpz/tests/t-powm_ui.c
deleted file mode 100644
index b88fa98..0000000
--- a/gnu/lib/libgmp/mpz/tests/t-powm_ui.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/* Test mpz_powm_ui, mpz_mul. mpz_mod, mpz_mod_ui, mpz_div_ui.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-void debug_mp ();
-
-#ifndef SIZE
-#define SIZE 8
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mpz_t base, mod;
- mpz_t r1, r2, base2;
- mp_size_t base_size, mod_size;
- mp_limb_t exp, exp2;
- int i;
- int reps = 10000;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpz_init (base);
- mpz_init (mod);
- mpz_init (r1);
- mpz_init (r2);
- mpz_init (base2);
-
- for (i = 0; i < reps; i++)
- {
- base_size = urandom () % SIZE /* - SIZE/2 */;
- mpz_random2 (base, base_size);
-
- mpn_random2 (&exp, 1);
-
- mod_size = urandom () % SIZE /* - SIZE/2 */;
- mpz_random2 (mod, mod_size);
- if (mpz_cmp_ui (mod, 0) == 0)
- continue;
-
- /* This is mathematically undefined. */
- if (mpz_cmp_ui (base, 0) == 0 && exp == 0)
- continue;
-
-#if 0
- putc ('\n', stderr);
- debug_mp (base, -16);
- debug_mp (mod, -16);
-#endif
-
- mpz_powm_ui (r1, base, (unsigned long int) exp, mod);
-
- mpz_set_ui (r2, 1);
- mpz_set (base2, base);
- exp2 = exp;
-
- mpz_mod (r2, r2, mod); /* needed when exp==0 and mod==1 */
- while (exp2 != 0)
- {
- if (exp2 % 2 != 0)
- {
- mpz_mul (r2, r2, base2);
- mpz_mod (r2, r2, mod);
- }
- mpz_mul (base2, base2, base2);
- mpz_mod (base2, base2, mod);
- exp2 = exp2 / 2;
- }
-
-#if 0
- debug_mp (r1, -16);
- debug_mp (r2, -16);
-#endif
-
- if (mpz_cmp (r1, r2) != 0)
- abort ();
- }
-
- exit (0);
-}
-
-dump_abort (dividend, divisor)
- MP_INT *dividend, *divisor;
-{
- fprintf (stderr, "ERROR\n");
- fprintf (stderr, "dividend = "); debug_mp (dividend, -16);
- fprintf (stderr, "divisor = "); debug_mp (divisor, -16);
- abort();
-}
-
-void
-debug_mp (x, base)
- MP_INT *x;
-{
- mpz_out_str (stderr, base, x); fputc ('\n', stderr);
-}
diff --git a/gnu/lib/libgmp/mpz/tests/t-sqrtrem.c b/gnu/lib/libgmp/mpz/tests/t-sqrtrem.c
deleted file mode 100644
index f5fcd09..0000000
--- a/gnu/lib/libgmp/mpz/tests/t-sqrtrem.c
+++ /dev/null
@@ -1,98 +0,0 @@
-/* Test mpz_add, mpz_add_ui, mpz_cmp, mpz_cmp, mpz_mul, mpz_sqrtrem.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-void debug_mp ();
-
-#ifndef SIZE
-#define SIZE 16
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mpz_t x2;
- mpz_t x, rem;
- mpz_t temp, temp2;
- mp_size_t x2_size;
- int i;
- int reps = 100000;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpz_init (x2);
- mpz_init (x);
- mpz_init (rem);
- mpz_init (temp);
- mpz_init (temp2);
-
- for (i = 0; i < reps; i++)
- {
- x2_size = urandom () % SIZE;
-
- mpz_random2 (x2, x2_size);
-
- mpz_sqrtrem (x, rem, x2);
- mpz_mul (temp, x, x);
-
- /* Is square of result > argument? */
- if (mpz_cmp (temp, x2) > 0)
- dump_abort (x2, x, rem);
-
- mpz_add_ui (temp2, x, 1);
- mpz_mul (temp2, temp2, temp2);
-
- /* Is square of (result + 1) <= argument? */
- if (mpz_cmp (temp2, x2) <= 0)
- dump_abort (x2, x, rem);
-
- mpz_add (temp2, temp, rem);
-
- /* Is the remainder wrong? */
- if (mpz_cmp (x2, temp2) != 0)
- dump_abort (x2, x, rem);
- }
-
- exit (0);
-}
-
-dump_abort (x2, x, rem)
- mpz_t x2, x, rem;
-{
- fprintf (stderr, "ERROR\n");
- fprintf (stderr, "x2 = "); debug_mp (x2, -16);
- fprintf (stderr, "x = "); debug_mp (x, -16);
- fprintf (stderr, "remainder = "); debug_mp (rem, -16);
- abort();
-}
-
-void
-debug_mp (x, base)
- mpz_t x;
-{
- mpz_out_str (stderr, base, x); fputc ('\n', stderr);
-}
diff --git a/gnu/lib/libgmp/mpz/tests/t-tdiv.c b/gnu/lib/libgmp/mpz/tests/t-tdiv.c
deleted file mode 100644
index d646ed8..0000000
--- a/gnu/lib/libgmp/mpz/tests/t-tdiv.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/* Test mpz_abs, mpz_add, mpz_cmp, mpz_cmp_ui, mpz_tdiv_qr, mpz_tdiv_q,
- mpz_tdiv_r, mpz_mul.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-void debug_mp ();
-
-#ifndef SIZE
-#define SIZE 16
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mpz_t dividend, divisor;
- mpz_t quotient, remainder;
- mpz_t quotient2, remainder2;
- mpz_t temp;
- mp_size_t dividend_size, divisor_size;
- int i;
- int reps = 100000;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpz_init (dividend);
- mpz_init (divisor);
- mpz_init (quotient);
- mpz_init (remainder);
- mpz_init (quotient2);
- mpz_init (remainder2);
- mpz_init (temp);
-
- for (i = 0; i < reps; i++)
- {
- dividend_size = urandom () % SIZE - SIZE/2;
- mpz_random2 (dividend, dividend_size);
-
- divisor_size = urandom () % SIZE - SIZE/2;
- mpz_random2 (divisor, divisor_size);
- if (mpz_cmp_ui (divisor, 0) == 0)
- continue;
-
- mpz_tdiv_qr (quotient, remainder, dividend, divisor);
- mpz_tdiv_q (quotient2, dividend, divisor);
- mpz_tdiv_r (remainder2, dividend, divisor);
-
- /* First determine that the quotients and remainders computed
- with different functions are equal. */
- if (mpz_cmp (quotient, quotient2) != 0)
- dump_abort (dividend, divisor);
- if (mpz_cmp (remainder, remainder2) != 0)
- dump_abort (dividend, divisor);
-
- /* Check if the sign of the quotient is correct. */
- if (mpz_cmp_ui (quotient, 0) != 0)
- if ((mpz_cmp_ui (quotient, 0) < 0)
- != ((mpz_cmp_ui (dividend, 0) ^ mpz_cmp_ui (divisor, 0)) < 0))
- dump_abort (dividend, divisor);
-
- /* Check if the remainder has the same sign as the dividend
- (quotient rounded towards 0). */
- if (mpz_cmp_ui (remainder, 0) != 0)
- if ((mpz_cmp_ui (remainder, 0) < 0) != (mpz_cmp_ui (dividend, 0) < 0))
- dump_abort (dividend, divisor);
-
- mpz_mul (temp, quotient, divisor);
- mpz_add (temp, temp, remainder);
- if (mpz_cmp (temp, dividend) != 0)
- dump_abort (dividend, divisor);
-
- mpz_abs (temp, divisor);
- mpz_abs (remainder, remainder);
- if (mpz_cmp (remainder, temp) >= 0)
- dump_abort (dividend, divisor);
- }
-
- exit (0);
-}
-
-dump_abort (dividend, divisor)
- mpz_t dividend, divisor;
-{
- fprintf (stderr, "ERROR\n");
- fprintf (stderr, "dividend = "); debug_mp (dividend, -16);
- fprintf (stderr, "divisor = "); debug_mp (divisor, -16);
- abort();
-}
-
-void
-debug_mp (x, base)
- mpz_t x;
-{
- mpz_out_str (stderr, base, x); fputc ('\n', stderr);
-}
diff --git a/gnu/lib/libgmp/mpz/tests/t-tdiv_ui.c b/gnu/lib/libgmp/mpz/tests/t-tdiv_ui.c
deleted file mode 100644
index 8d73b11..0000000
--- a/gnu/lib/libgmp/mpz/tests/t-tdiv_ui.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Test mpz_abs, mpz_add, mpz_cmp, mpz_cmp_ui, mpz_tdiv_qr_ui, mpz_tdiv_q_ui,
- mpz_tdiv_r_ui, mpz_mul_ui.
-
-Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-void debug_mp ();
-
-#ifndef SIZE
-#define SIZE 16
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- mpz_t dividend;
- mpz_t quotient, remainder;
- mpz_t quotient2, remainder2;
- mpz_t temp;
- mp_size_t dividend_size;
- mp_limb_t divisor;
- int i;
- int reps = 100000;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpz_init (dividend);
- mpz_init (quotient);
- mpz_init (remainder);
- mpz_init (quotient2);
- mpz_init (remainder2);
- mpz_init (temp);
-
- for (i = 0; i < reps; i++)
- {
- dividend_size = urandom () % SIZE - SIZE/2;
- mpz_random2 (dividend, dividend_size);
-
- divisor = urandom ();
- if (divisor == 0)
- continue;
-
- mpz_tdiv_qr_ui (quotient, remainder, dividend, divisor);
- mpz_tdiv_q_ui (quotient2, dividend, divisor);
- mpz_tdiv_r_ui (remainder2, dividend, divisor);
-
- /* First determine that the quotients and remainders computed
- with different functions are equal. */
- if (mpz_cmp (quotient, quotient2) != 0)
- dump_abort (dividend, divisor);
- if (mpz_cmp (remainder, remainder2) != 0)
- dump_abort (dividend, divisor);
-
- /* Check if the sign of the quotient is correct. */
- if (mpz_cmp_ui (quotient, 0) != 0)
- if ((mpz_cmp_ui (quotient, 0) < 0)
- != (mpz_cmp_ui (dividend, 0) < 0))
- dump_abort (dividend, divisor);
-
- /* Check if the remainder has the same sign as the dividend
- (quotient rounded towards 0). */
- if (mpz_cmp_ui (remainder, 0) != 0)
- if ((mpz_cmp_ui (remainder, 0) < 0) != (mpz_cmp_ui (dividend, 0) < 0))
- dump_abort (dividend, divisor);
-
- mpz_mul_ui (temp, quotient, divisor);
- mpz_add (temp, temp, remainder);
- if (mpz_cmp (temp, dividend) != 0)
- dump_abort (dividend, divisor);
-
- mpz_abs (remainder, remainder);
- if (mpz_cmp_ui (remainder, divisor) >= 0)
- dump_abort (dividend, divisor);
- }
-
- exit (0);
-}
-
-dump_abort (dividend, divisor)
- mpz_t dividend;
- mp_limb_t divisor;
-{
- fprintf (stderr, "ERROR\n");
- fprintf (stderr, "dividend = "); debug_mp (dividend, -16);
- fprintf (stderr, "divisor = %lX\n", divisor);
- abort();
-}
-
-void
-debug_mp (x, base)
- mpz_t x;
-{
- mpz_out_str (stderr, base, x); fputc ('\n', stderr);
-}
diff --git a/gnu/lib/libgmp/mpz/ui_pow_ui.c b/gnu/lib/libgmp/mpz/ui_pow_ui.c
deleted file mode 100644
index 19baca1..0000000
--- a/gnu/lib/libgmp/mpz/ui_pow_ui.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/* mpz_ui_pow_ui(res, base, exp) -- Set RES to BASE**EXP.
-
-Copyright (C) 1991, 1993, 1994, 1996 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Library General Public License as published by
-the Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.
-
-The GNU MP Library 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 Library General Public
-License for more details.
-
-You should have received a copy of the GNU Library General Public License
-along with the GNU MP Library; see the file COPYING.LIB. If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA. */
-
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-
-void
-#if __STDC__
-mpz_ui_pow_ui (mpz_ptr r, unsigned long int b, unsigned long int e)
-#else
-mpz_ui_pow_ui (r, b, e)
- mpz_ptr r;
- unsigned long int b;
- unsigned long int e;
-#endif
-{
- mp_ptr rp, tp, xp;
- mp_size_t rsize;
- int cnt, i;
- mp_limb_t blimb = b;
- TMP_DECL (marker);
-
- /* Single out cases that give result == 0 or 1. These tests are here
- to simplify the general code below, not to optimize. */
- if (e == 0)
- {
- r->_mp_d[0] = 1;
- r->_mp_size = 1;
- return;
- }
- if (blimb == 0)
- {
- r->_mp_size = 0;
- return;
- }
-
- if (blimb < 0x100)
- {
- /* Estimate space requirements accurately. Using the code from the
- `else' path would over-estimate space requirements wildly. */
- float lb = __mp_bases[blimb].chars_per_bit_exactly;
- rsize = 2 + ((mp_size_t) (e / lb) / BITS_PER_MP_LIMB);
- }
- else
- {
- /* Over-estimate space requirements somewhat. */
- count_leading_zeros (cnt, blimb);
- rsize = e - cnt * e / BITS_PER_MP_LIMB + 1;
- }
-
- TMP_MARK (marker);
-
- /* The two areas are used to alternatingly hold the input and recieve the
- product for mpn_mul. (This scheme is used to fulfill the requirements
- of mpn_mul; that the product space may not be the same as any of the
- input operands.) */
- rp = (mp_ptr) TMP_ALLOC (rsize * BYTES_PER_MP_LIMB);
- tp = (mp_ptr) TMP_ALLOC (rsize * BYTES_PER_MP_LIMB);
-
- rp[0] = blimb;
- rsize = 1;
- count_leading_zeros (cnt, e);
-
- for (i = BITS_PER_MP_LIMB - cnt - 2; i >= 0; i--)
- {
- mpn_mul_n (tp, rp, rp, rsize);
- rsize = 2 * rsize;
- rsize -= tp[rsize - 1] == 0;
- xp = tp; tp = rp; rp = xp;
-
- if ((e & ((mp_limb_t) 1 << i)) != 0)
- {
- mp_limb_t cy;
- cy = mpn_mul_1 (tp, rp, rsize, blimb);
- if (cy != 0)
- {
- tp[rsize] = cy;
- rsize++;
- }
- xp = tp; tp = rp; rp = xp;
- }
- }
-
- /* Now then we know the exact space requirements, reallocate if
- necessary. */
- if (r->_mp_alloc < rsize)
- _mpz_realloc (r, rsize);
-
- MPN_COPY (r->_mp_d, rp, rsize);
- r->_mp_size = rsize;
- TMP_FREE (marker);
-}
diff --git a/gnu/lib/libgmp/tests/Makefile b/gnu/lib/libgmp/tests/Makefile
deleted file mode 100644
index 06a6749..0000000
--- a/gnu/lib/libgmp/tests/Makefile
+++ /dev/null
@@ -1,66 +0,0 @@
-# Makefile for tests for GNU MP
-
-# Copyright (C) 1991, 1993 Free Software Foundation, Inc.
-
-# This file is part of the GNU MP Library.
-
-# The GNU MP Library is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# The GNU MP Library 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 General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with the GNU MP Library; see the file COPYING. If not, write to
-# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-.PATH: ${.CURDIR}/.. ${.OBJDIR} ${.OBJDIR}/../libgmp
-
-CC = gcc
-
-TEST_LIBS = -lgmp
-OPT = -O -g
-CFLAGS = -I${.CURDIR} -I${.CURDIR}/.. -I${.OBJDIR}/.. -I${.CURDIR}/../libgmp -I${.OBJDIR}/../libgmp $(OPT)
-
-TEST_SRCS = tst-mul.c tst-dm.c tst-dm_ui.c tst-mdm.c tst-mdm_ui.c tst-gcd.c \
- tst-sqrtrem.c tst-convert.c
-TEST_OBJS = tst-mul.o tst-dm.o tst-dm_ui.o tst-mdm.o tst-mdm_ui.o tst-gcd.o \
- tst-sqrtrem.o tst-convert.o
-TESTS = tst-mul tst-dm tst-dm_ui tst-mdm tst-mdm_ui tst-gcd \
- tst-sqrtrem tst-convert
-
-tests: $(TESTS)
- for i in $(TESTS); do echo $$i; ./$$i; done
-
-tst-mul: tst-mul.o $(TEST_LIBS)
- $(CC) $(CFLAGS) -o $@ $@.o $(TEST_LIBS)
-tst-dm: tst-dm.o $(TEST_LIBS)
- $(CC) $(CFLAGS) -o $@ $@.o $(TEST_LIBS)
-tst-dm_ui: tst-dm_ui.o $(TEST_LIBS)
- $(CC) $(CFLAGS) -o $@ $@.o $(TEST_LIBS)
-tst-mdm: tst-mdm.o $(TEST_LIBS)
- $(CC) $(CFLAGS) -o $@ $@.o $(TEST_LIBS)
-tst-mdm_ui: tst-mdm_ui.o $(TEST_LIBS)
- $(CC) $(CFLAGS) -o $@ $@.o $(TEST_LIBS)
-tst-gcd: tst-gcd.o $(TEST_LIBS)
- $(CC) $(CFLAGS) -o $@ $@.o $(TEST_LIBS)
-tst-sqrtrem: tst-sqrtrem.o $(TEST_LIBS)
- $(CC) $(CFLAGS) -o $@ $@.o $(TEST_LIBS)
-tst-convert: tst-convert.o $(TEST_LIBS)
- $(CC) $(CFLAGS) -o $@ $@.o $(TEST_LIBS)
-
-$(TEST_PREFIX)clean:
- rm -f $(TESTS) $(TEST_OBJS) core
-
-tst-convert.o : tst-convert.c gmp.h urandom.h
-tst-dm.o : tst-dm.c gmp.h urandom.h
-tst-dm_ui.o : tst-dm_ui.c gmp.h urandom.h
-tst-gcd.o : tst-gcd.c gmp.h urandom.h
-tst-mdm.o : tst-mdm.c gmp.h urandom.h
-tst-mdm_ui.o : tst-mdm_ui.c gmp.h urandom.h
-tst-mul.o : tst-mul.c gmp.h gmp-impl.h gmp-mparam.h longlong.h urandom.h
-tst-sqrtrem.o : tst-sqrtrem.c gmp.h urandom.h
diff --git a/gnu/lib/libgmp/tests/Makefile.GNU b/gnu/lib/libgmp/tests/Makefile.GNU
deleted file mode 100644
index aa18015..0000000
--- a/gnu/lib/libgmp/tests/Makefile.GNU
+++ /dev/null
@@ -1,64 +0,0 @@
-# Makefile for tests for GNU MP
-
-# Copyright (C) 1991, 1993 Free Software Foundation, Inc.
-
-# This file is part of the GNU MP Library.
-
-# The GNU MP Library is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# The GNU MP Library 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 General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with the GNU MP Library; see the file COPYING. If not, write to
-# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
-
-CC = gcc
-
-TEST_LIBS = ../libgmp.a
-OPT = -O -g
-CFLAGS = -I. -I.. $(OPT)
-
-TEST_SRCS = tst-mul.c tst-dm.c tst-dm_ui.c tst-mdm.c tst-mdm_ui.c tst-gcd.c \
- tst-sqrtrem.c tst-convert.c
-TEST_OBJS = tst-mul.o tst-dm.o tst-dm_ui.o tst-mdm.o tst-mdm_ui.o tst-gcd.o \
- tst-sqrtrem.o tst-convert.o
-TESTS = tst-mul tst-dm tst-dm_ui tst-mdm tst-mdm_ui tst-gcd \
- tst-sqrtrem tst-convert
-
-tests: $(TESTS)
- for i in $(TESTS); do echo $$i; ./$$i; done
-
-tst-mul: tst-mul.o $(TEST_LIBS)
- $(CC) $(CFLAGS) -o $@ $@.o $(TEST_LIBS)
-tst-dm: tst-dm.o $(TEST_LIBS)
- $(CC) $(CFLAGS) -o $@ $@.o $(TEST_LIBS)
-tst-dm_ui: tst-dm_ui.o $(TEST_LIBS)
- $(CC) $(CFLAGS) -o $@ $@.o $(TEST_LIBS)
-tst-mdm: tst-mdm.o $(TEST_LIBS)
- $(CC) $(CFLAGS) -o $@ $@.o $(TEST_LIBS)
-tst-mdm_ui: tst-mdm_ui.o $(TEST_LIBS)
- $(CC) $(CFLAGS) -o $@ $@.o $(TEST_LIBS)
-tst-gcd: tst-gcd.o $(TEST_LIBS)
- $(CC) $(CFLAGS) -o $@ $@.o $(TEST_LIBS)
-tst-sqrtrem: tst-sqrtrem.o $(TEST_LIBS)
- $(CC) $(CFLAGS) -o $@ $@.o $(TEST_LIBS)
-tst-convert: tst-convert.o $(TEST_LIBS)
- $(CC) $(CFLAGS) -o $@ $@.o $(TEST_LIBS)
-
-$(TEST_PREFIX)clean:
- rm -f $(TESTS) $(TEST_OBJS) core
-
-tst-convert.o : tst-convert.c ../gmp.h urandom.h
-tst-dm.o : tst-dm.c ../gmp.h urandom.h
-tst-dm_ui.o : tst-dm_ui.c ../gmp.h urandom.h
-tst-gcd.o : tst-gcd.c ../gmp.h urandom.h
-tst-mdm.o : tst-mdm.c ../gmp.h urandom.h
-tst-mdm_ui.o : tst-mdm_ui.c ../gmp.h urandom.h
-tst-mul.o : tst-mul.c ../gmp.h ../gmp-impl.h ../gmp-mparam.h ../longlong.h urandom.h
-tst-sqrtrem.o : tst-sqrtrem.c ../gmp.h urandom.h
diff --git a/gnu/lib/libgmp/tests/tst-convert.c b/gnu/lib/libgmp/tests/tst-convert.c
deleted file mode 100644
index bbc0dab..0000000
--- a/gnu/lib/libgmp/tests/tst-convert.c
+++ /dev/null
@@ -1,80 +0,0 @@
-/* Test mpz_add, mpz_cmp, mpz_cmp_ui, mpz_gcd, mpz_gcdext, mpz_get_str,
- mpz_mod, mpz_mul, mpz_set_str.
-
-Copyright (C) 1993 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-The GNU MP Library 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 General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with the GNU MP Library; see the file COPYING. If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-void debug_mp ();
-
-#ifndef SIZE
-#define SIZE 8
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- MP_INT op1, op2;
- mp_size size;
- int i;
- int reps = 100000;
- char *str;
- int base;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpz_init (&op1);
- mpz_init (&op2);
-
- for (i = 0; i < reps; i++)
- {
- size = urandom () % SIZE - SIZE/2;
-
- mpz_random2 (&op1, size);
- base = urandom () % 36 + 1;
- if (base == 1)
- base = 0;
-
- str = mpz_get_str ((char *) 0, base, &op1);
- mpz_set_str (&op2, str, base);
- free (str);
-
- if (mpz_cmp (&op1, &op2))
- {
- fprintf (stderr, "ERROR\n");
- fprintf (stderr, "op1 = "); debug_mp (&op1, -16);
- fprintf (stderr, "base = %d\n", base);
- abort ();
- }
- }
-
- exit (0);
-}
-
-void
-debug_mp (x, base)
- MP_INT *x;
-{
- mpz_out_str (stderr, base, x); fputc ('\n', stderr);
-}
diff --git a/gnu/lib/libgmp/tests/tst-dm.c b/gnu/lib/libgmp/tests/tst-dm.c
deleted file mode 100644
index 92c4194..0000000
--- a/gnu/lib/libgmp/tests/tst-dm.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Test mpz_abs, mpz_add, mpz_cmp, mpz_cmp_ui, mpz_div, mpz_divmod, mpz_mod,
- mpz_mul.
-
-Copyright (C) 1991, 1993 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-The GNU MP Library 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 General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with the GNU MP Library; see the file COPYING. If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-void debug_mp ();
-
-#ifndef SIZE
-#define SIZE 8
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- MP_INT dividend, divisor;
- MP_INT quotient, remainder;
- MP_INT quotient2, remainder2;
- MP_INT temp;
- mp_size dividend_size, divisor_size;
- int i;
- int reps = 100000;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpz_init (&dividend);
- mpz_init (&divisor);
- mpz_init (&quotient);
- mpz_init (&remainder);
- mpz_init (&quotient2);
- mpz_init (&remainder2);
- mpz_init (&temp);
-
- for (i = 0; i < reps; i++)
- {
- dividend_size = urandom () % SIZE - SIZE/2;
- mpz_random2 (&dividend, dividend_size);
-
- divisor_size = urandom () % SIZE - SIZE/2;
- mpz_random2 (&divisor, divisor_size);
- if (mpz_cmp_ui (&divisor, 0) == 0)
- continue;
-
- mpz_divmod (&quotient, &remainder, &dividend, &divisor);
- mpz_div (&quotient2, &dividend, &divisor);
- mpz_mod (&remainder2, &dividend, &divisor);
-
- /* First determine that the quotients and remainders computed
- with different functions are equal. */
- if (mpz_cmp (&quotient, &quotient2) != 0)
- dump_abort (&dividend, &divisor);
- if (mpz_cmp (&remainder, &remainder2) != 0)
- dump_abort (&dividend, &divisor);
-
- /* Check if the sign of the quotient is correct. */
- if (mpz_cmp_ui (&quotient, 0) != 0)
- if ((mpz_cmp_ui (&quotient, 0) < 0)
- != ((mpz_cmp_ui (&dividend, 0) ^ mpz_cmp_ui (&divisor, 0)) < 0))
- dump_abort (&dividend, &divisor);
-
- /* Check if the remainder has the same sign as the dividend
- (quotient rounded towards 0). */
- if (mpz_cmp_ui (&remainder, 0) != 0)
- if ((mpz_cmp_ui (&remainder, 0) < 0) != (mpz_cmp_ui (&dividend, 0) < 0))
- dump_abort (&dividend, &divisor);
-
- mpz_mul (&temp, &quotient, &divisor);
- mpz_add (&temp, &temp, &remainder);
- if (mpz_cmp (&temp, &dividend) != 0)
- dump_abort (&dividend, &divisor);
-
- mpz_abs (&temp, &divisor);
- mpz_abs (&remainder, &remainder);
- if (mpz_cmp (&remainder, &temp) >= 0)
- dump_abort (&dividend, &divisor);
- }
-
- exit (0);
-}
-
-dump_abort (dividend, divisor)
- MP_INT *dividend, *divisor;
-{
- fprintf (stderr, "ERROR\n");
- fprintf (stderr, "dividend = "); debug_mp (dividend, -16);
- fprintf (stderr, "divisor = "); debug_mp (divisor, -16);
- abort();
-}
-
-void
-debug_mp (x, base)
- MP_INT *x;
-{
- mpz_out_str (stderr, base, x); fputc ('\n', stderr);
-}
diff --git a/gnu/lib/libgmp/tests/tst-dm_ui.c b/gnu/lib/libgmp/tests/tst-dm_ui.c
deleted file mode 100644
index 9f69841..0000000
--- a/gnu/lib/libgmp/tests/tst-dm_ui.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/* Test mpz_abs, mpz_add, mpz_cmp, mpz_cmp_ui, mpz_div, mpz_div_ui,
- mpz_divmod, mpz_divmod_ui, mpz_mod, mpz_mod_ui, mpz_mul, mpz_mul_ui.
-
-Copyright (C) 1993 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-The GNU MP Library 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 General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with the GNU MP Library; see the file COPYING. If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-void debug_mp ();
-
-#ifndef SIZE
-#define SIZE 8
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- MP_INT dividend;
- MP_INT quotient, remainder;
- MP_INT quotient2, remainder2;
- MP_INT temp;
- mp_size dividend_size;
- mp_limb divisor;
- int i;
- int reps = 100000;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpz_init (&dividend);
- mpz_init (&quotient);
- mpz_init (&remainder);
- mpz_init (&quotient2);
- mpz_init (&remainder2);
- mpz_init (&temp);
-
- for (i = 0; i < reps; i++)
- {
- dividend_size = urandom () % SIZE - SIZE/2;
- mpz_random2 (&dividend, dividend_size);
-
- divisor = urandom ();
- if (divisor == 0)
- continue;
-
- mpz_divmod_ui (&quotient, &remainder, &dividend, divisor);
- mpz_div_ui (&quotient2, &dividend, divisor);
- mpz_mod_ui (&remainder2, &dividend, divisor);
-
- /* First determine that the quotients and remainders computed
- with different functions are equal. */
- if (mpz_cmp (&quotient, &quotient2) != 0)
- dump_abort (&dividend, divisor);
- if (mpz_cmp (&remainder, &remainder2) != 0)
- dump_abort (&dividend, divisor);
-
- /* Check if the sign of the quotient is correct. */
- if (mpz_cmp_ui (&quotient, 0) != 0)
- if ((mpz_cmp_ui (&quotient, 0) < 0)
- != (mpz_cmp_ui (&dividend, 0) < 0))
- dump_abort (&dividend, divisor);
-
- /* Check if the remainder has the same sign as the dividend
- (quotient rounded towards 0). */
- if (mpz_cmp_ui (&remainder, 0) != 0)
- if ((mpz_cmp_ui (&remainder, 0) < 0) != (mpz_cmp_ui (&dividend, 0) < 0))
- dump_abort (&dividend, divisor);
-
- mpz_mul_ui (&temp, &quotient, divisor);
- mpz_add (&temp, &temp, &remainder);
- if (mpz_cmp (&temp, &dividend) != 0)
- dump_abort (&dividend, divisor);
-
- mpz_abs (&remainder, &remainder);
- if (mpz_cmp_ui (&remainder, divisor) >= 0)
- dump_abort (&dividend, divisor);
- }
-
- exit (0);
-}
-
-dump_abort (dividend, divisor)
- MP_INT *dividend;
- mp_limb divisor;
-{
- fprintf (stderr, "ERROR\n");
- fprintf (stderr, "dividend = "); debug_mp (dividend, -16);
- fprintf (stderr, "divisor = %lX\n", divisor);
- abort();
-}
-
-void
-debug_mp (x, base)
- MP_INT *x;
-{
- mpz_out_str (stderr, base, x); fputc ('\n', stderr);
-}
diff --git a/gnu/lib/libgmp/tests/tst-gcd.c b/gnu/lib/libgmp/tests/tst-gcd.c
deleted file mode 100644
index 166aa56..0000000
--- a/gnu/lib/libgmp/tests/tst-gcd.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/* Test mpz_gcd, mpz_gcdext, mpz_mul, mpz_mod, mpz_add, mpz_cmp,
- mpz_cmp_ui. mpz_init_set, mpz_set, mpz_clear.
-
-Copyright (C) 1991, 1993 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-The GNU MP Library 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 General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with the GNU MP Library; see the file COPYING. If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-void mpz_refgcd (), debug_mp ();
-
-#ifndef SIZE
-#define SIZE 8
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- MP_INT op1, op2;
- MP_INT refgcd, gcd, s, t;
- MP_INT temp1, temp2;
- mp_size op1_size, op2_size;
- int i;
- int reps = 10000;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpz_init (&op1);
- mpz_init (&op2);
- mpz_init (&refgcd);
- mpz_init (&gcd);
- mpz_init (&temp1);
- mpz_init (&temp2);
- mpz_init (&s);
- mpz_init (&t);
-
- for (i = 0; i < reps; i++)
- {
- op1_size = urandom () % SIZE;
- op2_size = urandom () % SIZE;
-
- mpz_random2 (&op1, op1_size);
- mpz_random2 (&op2, op2_size);
-
- mpz_refgcd (&refgcd, &op1, &op2);
-
- mpz_gcd (&gcd, &op1, &op2);
- if (mpz_cmp (&refgcd, &gcd))
- dump_abort (&op1, &op2);
-
- mpz_gcdext (&gcd, &s, &t, &op1, &op2);
- if (mpz_cmp (&refgcd, &gcd))
- dump_abort (&op1, &op2);
-
- mpz_mul (&temp1, &s, &op1);
- mpz_mul (&temp2, &t, &op2);
- mpz_add (&gcd, &temp1, &temp2);
- if (mpz_cmp (&refgcd, &gcd))
- dump_abort (&op1, &op2);
- }
-
- exit (0);
-}
-
-void
-mpz_refgcd (g, x, y)
- MP_INT *g;
- MP_INT *x, *y;
-{
- MP_INT xx, yy;
-
- mpz_init (&xx);
- mpz_init (&yy);
-
- mpz_abs (&xx, x);
- mpz_abs (&yy, y);
-
- for (;;)
- {
- if (mpz_cmp_ui (&yy, 0) == 0)
- {
- mpz_set (g, &xx);
- break;
- }
- mpz_mod (&xx, &xx, &yy);
- if (mpz_cmp_ui (&xx, 0) == 0)
- {
- mpz_set (g, &yy);
- break;
- }
- mpz_mod (&yy, &yy, &xx);
- }
-
- mpz_clear (&xx);
- mpz_clear (&yy);
-}
-
-dump_abort (op1, op2)
- MP_INT *op1, *op2;
-{
- fprintf (stderr, "ERROR\n");
- fprintf (stderr, "op1 = "); debug_mp (op1, -16);
- fprintf (stderr, "op2 = "); debug_mp (op2, -16);
- abort();
-}
-
-void
-debug_mp (x, base)
- MP_INT *x;
-{
- mpz_out_str (stderr, base, x); fputc ('\n', stderr);
-}
diff --git a/gnu/lib/libgmp/tests/tst-mdm.c b/gnu/lib/libgmp/tests/tst-mdm.c
deleted file mode 100644
index a515ddf..0000000
--- a/gnu/lib/libgmp/tests/tst-mdm.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Test mpz_abs, mpz_add, mpz_cmp, mpz_cmp_ui, mpz_divmod, mpz_mdiv,
- mpz_mdivmod, mpz_mmod, mpz_mul.
-
-Copyright (C) 1993 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-The GNU MP Library 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 General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with the GNU MP Library; see the file COPYING. If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-void debug_mp ();
-
-#ifndef SIZE
-#define SIZE 8
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- MP_INT dividend, divisor;
- MP_INT quotient, remainder;
- MP_INT quotient2, remainder2;
- MP_INT temp;
- mp_size dividend_size, divisor_size;
- int i;
- int reps = 100000;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpz_init (&dividend);
- mpz_init (&divisor);
- mpz_init (&quotient);
- mpz_init (&remainder);
- mpz_init (&quotient2);
- mpz_init (&remainder2);
- mpz_init (&temp);
-
- for (i = 0; i < reps; i++)
- {
- dividend_size = urandom () % SIZE - SIZE/2;
- mpz_random2 (&dividend, dividend_size);
-
- divisor_size = urandom () % SIZE - SIZE/2;
- mpz_random2 (&divisor, divisor_size);
- if (mpz_cmp_ui (&divisor, 0) == 0)
- continue;
-
- mpz_mdivmod (&quotient, &remainder, &dividend, &divisor);
- mpz_mdiv (&quotient2, &dividend, &divisor);
- mpz_mmod (&remainder2, &dividend, &divisor);
-
- /* First determine that the quotients and remainders computed
- with different functions are equal. */
- if (mpz_cmp (&quotient, &quotient2) != 0)
- dump_abort (&dividend, &divisor);
- if (mpz_cmp (&remainder, &remainder2) != 0)
- dump_abort (&dividend, &divisor);
-
- /* Check if the sign of the quotient is correct. */
- if (mpz_cmp_ui (&quotient, 0) != 0)
- if ((mpz_cmp_ui (&quotient, 0) < 0)
- != ((mpz_cmp_ui (&dividend, 0) ^ mpz_cmp_ui (&divisor, 0)) < 0))
- dump_abort (&dividend, &divisor);
-
- /* Check if the remainder has the same sign as the divisor
- (quotient rounded towards minus infinity). */
- if (mpz_cmp_ui (&remainder, 0) != 0)
- if ((mpz_cmp_ui (&remainder, 0) < 0) != (mpz_cmp_ui (&divisor, 0) < 0))
- dump_abort (&dividend, &divisor);
-
- mpz_mul (&temp, &quotient, &divisor);
- mpz_add (&temp, &temp, &remainder);
- if (mpz_cmp (&temp, &dividend) != 0)
- dump_abort (&dividend, &divisor);
-
- mpz_abs (&temp, &divisor);
- mpz_abs (&remainder, &remainder);
- if (mpz_cmp (&remainder, &temp) >= 0)
- dump_abort (&dividend, &divisor);
- }
-
- exit (0);
-}
-
-dump_abort (dividend, divisor)
- MP_INT *dividend, *divisor;
-{
- fprintf (stderr, "ERROR\n");
- fprintf (stderr, "dividend = "); debug_mp (dividend, -16);
- fprintf (stderr, "divisor = "); debug_mp (divisor, -16);
- abort();
-}
-
-void
-debug_mp (x, base)
- MP_INT *x;
-{
- mpz_out_str (stderr, base, x); fputc ('\n', stderr);
-}
diff --git a/gnu/lib/libgmp/tests/tst-mdm_ui.c b/gnu/lib/libgmp/tests/tst-mdm_ui.c
deleted file mode 100644
index 26befbe..0000000
--- a/gnu/lib/libgmp/tests/tst-mdm_ui.c
+++ /dev/null
@@ -1,116 +0,0 @@
-/* Test mpz_abs, mpz_add, mpz_cmp. mpz_cmp_si, mpz_cmp_ui, mpz_divmod,
- mpz_mdiv_ui, mpz_mdivmod_ui, mpz_mmod_ui, mpz_mul, mpz_mul_ui.
-
-Copyright (C) 1993 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-The GNU MP Library 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 General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with the GNU MP Library; see the file COPYING. If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-void debug_mp ();
-
-#ifndef SIZE
-#define SIZE 8
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- MP_INT dividend;
- MP_INT quotient, remainder;
- MP_INT quotient2, remainder2;
- MP_INT temp;
- mp_size dividend_size;
- mp_limb divisor;
- int i;
- int reps = 100000;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpz_init (&dividend);
- mpz_init (&quotient);
- mpz_init (&remainder);
- mpz_init (&quotient2);
- mpz_init (&remainder2);
- mpz_init (&temp);
-
- for (i = 0; i < reps; i++)
- {
- dividend_size = urandom () % SIZE - SIZE/2;
- mpz_random2 (&dividend, dividend_size);
-
- divisor = urandom ();
- if (divisor == 0)
- continue;
-
- mpz_mdivmod_ui (&quotient, &remainder, &dividend, divisor);
- mpz_mdiv_ui (&quotient2, &dividend, divisor);
- mpz_mmod_ui (&remainder2, &dividend, divisor);
-
- /* First determine that the quotients and remainders computed
- with different functions are equal. */
- if (mpz_cmp (&quotient, &quotient2) != 0)
- dump_abort (&dividend, divisor);
- if (mpz_cmp (&remainder, &remainder2) != 0)
- dump_abort (&dividend, divisor);
-
- /* Check if the sign of the quotient is correct. */
- if (mpz_cmp_ui (&quotient, 0) != 0)
- if ((mpz_cmp_ui (&quotient, 0) < 0)
- != (mpz_cmp_ui (&dividend, 0) < 0))
- dump_abort (&dividend, divisor);
-
- /* Check if the remainder has the same sign as the divisor
- (quotient rounded towards minus infinity). */
- if (mpz_cmp_ui (&remainder, 0) != 0)
- if (mpz_cmp_ui (&remainder, 0) < 0)
- dump_abort (&dividend, divisor);
-
- mpz_mul_ui (&temp, &quotient, divisor);
- mpz_add (&temp, &temp, &remainder);
- if (mpz_cmp (&temp, &dividend) != 0)
- dump_abort (&dividend, divisor);
-
- mpz_abs (&remainder, &remainder);
- if (mpz_cmp_ui (&remainder, divisor) >= 0)
- dump_abort (&dividend, divisor);
- }
-
- exit (0);
-}
-
-dump_abort (dividend, divisor)
- MP_INT *dividend;
- mp_limb divisor;
-{
- fprintf (stderr, "ERROR\n");
- fprintf (stderr, "dividend = "); debug_mp (dividend, -16);
- fprintf (stderr, "divisor = %lX\n", divisor);
- abort();
-}
-
-void
-debug_mp (x, base)
- MP_INT *x;
-{
- mpz_out_str (stderr, base, x); fputc ('\n', stderr);
-}
diff --git a/gnu/lib/libgmp/tests/tst-mul.c b/gnu/lib/libgmp/tests/tst-mul.c
deleted file mode 100644
index 0eab422..0000000
--- a/gnu/lib/libgmp/tests/tst-mul.c
+++ /dev/null
@@ -1,261 +0,0 @@
-/* Test mpz_add, mpz_cmp, mpz_cmp_ui, mpz_divmod, mpz_mul.
-
-Copyright (C) 1991, 1993 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-The GNU MP Library 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 General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with the GNU MP Library; see the file COPYING. If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "longlong.h"
-#include "urandom.h"
-
-void debug_mp ();
-mp_size _mpn_mul_classic ();
-void mpz_refmul ();
-
-#ifndef SIZE
-#define SIZE 8
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- MP_INT multiplier, multiplicand;
- MP_INT product, ref_product;
- MP_INT quotient, remainder;
- mp_size multiplier_size, multiplicand_size;
- int i;
- int reps = 100000;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpz_init (&multiplier);
- mpz_init (&multiplicand);
- mpz_init (&product);
- mpz_init (&ref_product);
- mpz_init (&quotient);
- mpz_init (&remainder);
-
- for (i = 0; i < reps; i++)
- {
- multiplier_size = urandom () % SIZE - SIZE/2;
- multiplicand_size = urandom () % SIZE - SIZE/2;
-
- mpz_random2 (&multiplier, multiplier_size);
- mpz_random2 (&multiplicand, multiplicand_size);
-
- mpz_mul (&product, &multiplier, &multiplicand);
- mpz_refmul (&ref_product, &multiplier, &multiplicand);
- if (mpz_cmp_ui (&multiplicand, 0) != 0)
- mpz_divmod (&quotient, &remainder, &product, &multiplicand);
-
- if (mpz_cmp (&product, &ref_product))
- dump_abort (&multiplier, &multiplicand);
-
- if (mpz_cmp_ui (&multiplicand, 0) != 0)
- if (mpz_cmp_ui (&remainder, 0) || mpz_cmp (&quotient, &multiplier))
- dump_abort (&multiplier, &multiplicand);
- }
-
- exit (0);
-}
-
-void
-mpz_refmul (w, u, v)
- MP_INT *w;
- const MP_INT *u;
- const MP_INT *v;
-{
- mp_size usize = u->size;
- mp_size vsize = v->size;
- mp_size wsize;
- mp_size sign_product;
- mp_ptr up, vp;
- mp_ptr wp;
- mp_ptr free_me = NULL;
- size_t free_me_size;
-
- sign_product = usize ^ vsize;
- usize = ABS (usize);
- vsize = ABS (vsize);
-
- if (usize < vsize)
- {
- /* Swap U and V. */
- {const MP_INT *t = u; u = v; v = t;}
- {mp_size t = usize; usize = vsize; vsize = t;}
- }
-
- up = u->d;
- vp = v->d;
- wp = w->d;
-
- /* Ensure W has space enough to store the result. */
- wsize = usize + vsize;
- if (w->alloc < wsize)
- {
- if (wp == up || wp == vp)
- {
- free_me = wp;
- free_me_size = w->alloc;
- }
- else
- (*_mp_free_func) (wp, w->alloc * BYTES_PER_MP_LIMB);
-
- w->alloc = wsize;
- wp = (mp_ptr) (*_mp_allocate_func) (wsize * BYTES_PER_MP_LIMB);
- w->d = wp;
- }
- else
- {
- /* Make U and V not overlap with W. */
- if (wp == up)
- {
- /* W and U are identical. Allocate temporary space for U. */
- up = (mp_ptr) alloca (usize * BYTES_PER_MP_LIMB);
- /* Is V identical too? Keep it identical with U. */
- if (wp == vp)
- vp = up;
- /* Copy to the temporary space. */
- MPN_COPY (up, wp, usize);
- }
- else if (wp == vp)
- {
- /* W and V are identical. Allocate temporary space for V. */
- vp = (mp_ptr) alloca (vsize * BYTES_PER_MP_LIMB);
- /* Copy to the temporary space. */
- MPN_COPY (vp, wp, vsize);
- }
- }
-
- wsize = _mpn_mul_classic (wp, up, usize, vp, vsize);
- w->size = sign_product < 0 ? -wsize : wsize;
- if (free_me != NULL)
- (*_mp_free_func) (free_me, free_me_size * BYTES_PER_MP_LIMB);
-
- alloca (0);
-}
-
-mp_size
-_mpn_mul_classic (prodp, up, usize, vp, vsize)
- mp_ptr prodp;
- mp_srcptr up;
- mp_size usize;
- mp_srcptr vp;
- mp_size vsize;
-{
- mp_size n;
- mp_size prod_size;
- mp_limb cy;
- mp_size i, j;
- mp_limb prod_low, prod_high;
- mp_limb cy_dig;
- mp_limb v_limb, c;
-
- if (vsize == 0)
- return 0;
-
- /* Offset UP and PRODP so that the inner loop can be faster. */
- up += usize;
- prodp += usize;
-
- /* Multiply by the first limb in V separately, as the result can
- be stored (not added) to PROD. We also avoid a loop for zeroing. */
- v_limb = vp[0];
- cy_dig = 0;
- j = -usize;
- do
- {
- umul_ppmm (prod_high, prod_low, up[j], v_limb);
- add_ssaaaa (cy_dig, prodp[j], prod_high, prod_low, 0, cy_dig);
- j++;
- }
- while (j < 0);
-
- prodp[j] = cy_dig;
- prodp++;
-
- /* For each iteration in the outer loop, multiply one limb from
- U with one limb from V, and add it to PROD. */
- for (i = 1; i < vsize; i++)
- {
- v_limb = vp[i];
- cy_dig = 0;
- j = -usize;
-
- /* Inner loops. Simulate the carry flag by jumping between
- these loops. The first is used when there was no carry
- in the previois iteration; the second when there was carry. */
-
- do
- {
- umul_ppmm (prod_high, prod_low, up[j], v_limb);
- add_ssaaaa (cy_dig, prod_low, prod_high, prod_low, 0, cy_dig);
- c = prodp[j];
- prod_low += c;
- prodp[j] = prod_low;
- if (prod_low < c)
- goto cy_loop;
- ncy_loop:
- j++;
- }
- while (j < 0);
-
- prodp[j] = cy_dig;
- prodp++;
- continue;
-
- do
- {
- umul_ppmm (prod_high, prod_low, up[j], v_limb);
- add_ssaaaa (cy_dig, prod_low, prod_high, prod_low, 0, cy_dig);
- c = prodp[j];
- prod_low += c + 1;
- prodp[j] = prod_low;
- if (prod_low > c)
- goto ncy_loop;
- cy_loop:
- j++;
- }
- while (j < 0);
-
- cy_dig += 1;
- prodp[j] = cy_dig;
- prodp++;
- }
-
- return usize + vsize - (cy_dig == 0);
-}
-
-dump_abort (multiplier, multiplicand)
- MP_INT *multiplier, *multiplicand;
-{
- fprintf (stderr, "ERROR\n");
- fprintf (stderr, "multiplier = "); debug_mp (multiplier, -16);
- fprintf (stderr, "multiplicand = "); debug_mp (multiplicand, -16);
- abort();
-}
-
-void
-debug_mp (x, base)
- MP_INT *x;
-{
- mpz_out_str (stderr, base, x); fputc ('\n', stderr);
-}
diff --git a/gnu/lib/libgmp/tests/tst-pow_ui.c b/gnu/lib/libgmp/tests/tst-pow_ui.c
deleted file mode 100644
index c7d929a..0000000
--- a/gnu/lib/libgmp/tests/tst-pow_ui.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/* Test mpz_abs, mpz_add, mpz_cmp, mpz_cmp_ui, mpz_div, mpz_divmod, mpz_mod,
- mpz_mul.
-
-Copyright (C) 1991, 1993 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-The GNU MP Library 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 General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with the GNU MP Library; see the file COPYING. If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-void debug_mp ();
-
-#ifndef SIZE
-#define SIZE 8
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- MP_INT dividend, divisor;
- MP_INT quotient, remainder;
- MP_INT quotient2, remainder2;
- MP_INT temp;
- mp_size dividend_size, divisor_size;
- int i;
- int reps = 100000;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpz_init (&dividend);
- mpz_init (&divisor);
- mpz_init (&quotient);
- mpz_init (&remainder);
- mpz_init (&quotient2);
- mpz_init (&remainder2);
- mpz_init (&temp);
-
- for (i = 0; i < reps; i++)
- {
- base_size = urandom () % SIZE - SIZE/2;
- mpz_random2 (&base, base_size);
-
- divisor_size = urandom () % SIZE - SIZE/2;
- mpz_random2 (&divisor, divisor_size);
- if (mpz_cmp_ui (&divisor, 0) == 0)
- continue;
-
- exp_size = urandom () % SIZE/2;
- mpz_random2 (&exp, exp_size);
-
- mpz_powm (&result1, &base, &exp, &divisor);
- mpz_div (&quotient2, &dividend, &divisor);
- mpz_mod (&remainder2, &dividend, &divisor);
-
- /* First determine that the quotients and remainders computed
- with different functions are equal. */
- if (mpz_cmp (&quotient, &quotient2) != 0)
- dump_abort (&dividend, &divisor);
- if (mpz_cmp (&remainder, &remainder2) != 0)
- dump_abort (&dividend, &divisor);
-
- /* Check if the sign of the quotient is correct. */
- if (mpz_cmp_ui (&quotient, 0) != 0)
- if ((mpz_cmp_ui (&quotient, 0) < 0)
- != ((mpz_cmp_ui (&dividend, 0) ^ mpz_cmp_ui (&divisor, 0)) < 0))
- dump_abort (&dividend, &divisor);
-
- /* Check if the remainder has the same sign as the dividend
- (quotient rounded towards 0). */
- if (mpz_cmp_ui (&remainder, 0) != 0)
- if ((mpz_cmp_ui (&remainder, 0) < 0) != (mpz_cmp_ui (&dividend, 0) < 0))
- dump_abort (&dividend, &divisor);
-
- mpz_mul (&temp, &quotient, &divisor);
- mpz_add (&temp, &temp, &remainder);
- if (mpz_cmp (&temp, &dividend) != 0)
- dump_abort (&dividend, &divisor);
-
- mpz_abs (&temp, &divisor);
- mpz_abs (&remainder, &remainder);
- if (mpz_cmp (&remainder, &temp) >= 0)
- dump_abort (&dividend, &divisor);
- }
-
- exit (0);
-}
-
-dump_abort (dividend, divisor)
- MP_INT *dividend, *divisor;
-{
- fprintf (stderr, "ERROR\n");
- fprintf (stderr, "dividend = "); debug_mp (dividend, -16);
- fprintf (stderr, "divisor = "); debug_mp (divisor, -16);
- abort();
-}
-
-void
-debug_mp (x, base)
- MP_INT *x;
-{
- mpz_out_str (stderr, base, x); fputc ('\n', stderr);
-}
diff --git a/gnu/lib/libgmp/tests/tst-sqrtrem.c b/gnu/lib/libgmp/tests/tst-sqrtrem.c
deleted file mode 100644
index b62350a..0000000
--- a/gnu/lib/libgmp/tests/tst-sqrtrem.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/* Test mpz_add, mpz_add_ui, mpz_cmp, mpz_cmp, mpz_mul, mpz_sqrtrem.
-
-Copyright (C) 1991, 1993 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-The GNU MP Library 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 General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with the GNU MP Library; see the file COPYING. If not, write to
-the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
-
-#include <stdio.h>
-#include "gmp.h"
-#include "gmp-impl.h"
-#include "urandom.h"
-
-void debug_mp ();
-
-#ifndef SIZE
-#define SIZE 8
-#endif
-
-main (argc, argv)
- int argc;
- char **argv;
-{
- MP_INT x2;
- MP_INT x, rem;
- MP_INT temp, temp2;
- mp_size x2_size;
- int i;
- int reps = 100000;
-
- if (argc == 2)
- reps = atoi (argv[1]);
-
- mpz_init (&x2);
- mpz_init (&x);
- mpz_init (&rem);
- mpz_init (&temp);
- mpz_init (&temp2);
-
- for (i = 0; i < reps; i++)
- {
- x2_size = urandom () % SIZE;
-
- mpz_random2 (&x2, x2_size);
-
- mpz_sqrtrem (&x, &rem, &x2);
- mpz_mul (&temp, &x, &x);
-
- /* Is square of result > argument? */
- if (mpz_cmp (&temp, &x2) > 0)
- dump_abort (&x2, &x, &rem);
-
- mpz_add_ui (&temp2, &x, 1);
- mpz_mul (&temp2, &temp2, &temp2);
-
- /* Is square of (result + 1) <= argument? */
- if (mpz_cmp (&temp2, &x2) <= 0)
- dump_abort (&x2, &x, &rem);
-
- mpz_add (&temp2, &temp, &rem);
-
- /* Is the remainder wrong? */
- if (mpz_cmp (&x2, &temp2) != 0)
- dump_abort (&x2, &x, &rem);
- }
-
- exit (0);
-}
-
-dump_abort (x2, x, rem)
- MP_INT *x2, *x, *rem;
-{
- fprintf (stderr, "ERROR\n");
- fprintf (stderr, "x2 = "); debug_mp (x2, -16);
- fprintf (stderr, "x = "); debug_mp (x, -16);
- fprintf (stderr, "remainder = "); debug_mp (rem, -16);
- abort();
-}
-
-void
-debug_mp (x, base)
- MP_INT *x;
-{
- mpz_out_str (stderr, base, x); fputc ('\n', stderr);
-}
diff --git a/gnu/lib/libgmp/tests/urandom.h b/gnu/lib/libgmp/tests/urandom.h
deleted file mode 100644
index e018580..0000000
--- a/gnu/lib/libgmp/tests/urandom.h
+++ /dev/null
@@ -1,17 +0,0 @@
-#if defined (hpux) || defined (__alpha__)
-/* HPUX lacks random(). DEC Alpha's random() returns a double. */
-static inline unsigned long
-urandom ()
-{
- return mrand48 ();
-}
-#else
-long random ();
-
-static inline unsigned long
-urandom ()
-{
- /* random() returns 31 bits, we want 32. */
- return random() ^ (random() << 1);
-}
-#endif
OpenPOWER on IntegriCloud