Codebase list eclib / 9c42157
New upstream version 20190205.1 Julien Puydt 5 years ago
38 changed file(s) with 456 addition(s) and 79 deletion(s). Raw diff Collapse all Expand all
22 # Process this file with autoconf to produce a configure script.
33
44 AC_PREREQ([2.65])
5 AC_INIT([eclib], [20180815], [john.cremona@gmail.com])
5 AC_INIT([eclib], [20190110], [john.cremona@gmail.com])
66 AM_INIT_AUTOMAKE([-Wall])
77 AC_MSG_NOTICE([Configuring eclib...])
88 AC_CONFIG_SRCDIR([libsrc])
3434 #
3535 # NB The suffix of the library name (libec.so here) is (c-a).a.r
3636
37 LT_CURRENT=4
37 LT_CURRENT=5
3838 LT_REVISION=0
3939 LT_AGE=0
4040 AC_SUBST(LT_CURRENT)
228228 no) mpfp=false ;;
229229 *) AC_MSG_ERROR([bad value ${enableval} for --enable-mpfp]) ;;
230230 esac],[mpfp=true])
231 AM_CONDITIONAL([NTL_ALL], [test x$mpfp = xtrue])
231 AM_CONDITIONAL([NO_MPFP], [test x$mpfp = xfalse])
232232
233233 AC_CONFIG_FILES([
234234 libsrc/Makefile
00 MWRANK MAJOR CHANGES MADE (other than bug fixes)
11
2 NB This file is incomplete, as I sometimes forget to update it, but
3 should log the major changes.
4
2 NB This file has not been updated since 2006. See git logs for all
3 more recent changes to eclib, including mwrank itself.
54
65 Oct 2006
76 ========
228228
229229 I no longer distribute binaries.
230230
231 It is recommended that you use the multi-precision version for curves
232 with large coefficients; otherwise results may be wrong. This is the
233 default and requires no special configuration.
231 It is recommended that you use the multi-precision floating point
232 version for curves with large coefficients; otherwise results may be
233 wrong. This is the default and requires no special configuration.
234234
235235 You can aid the factorization of large integers in several ways:
236236
9292 0: do no saturation at all
9393 n: use n as upper bound for saturation primes
9494 -1: allow progam to determine upper bound
95 autimatically (but that will be reduced to a
95 automatically (but that will be reduced to a
9696 default maximum of 100 if it is greater)
9797
9898 Last update: 2016-01-02
00 ## Process this file with automake to produce Makefile.in
11
2 if NTL_ALL
3 NTL_SWITCH = -D NTL_ALL
2 if NO_MPFP
3 MPFP_SWITCH="-DNO_MPFP"
4 else
5 MPFP_SWITCH=
46 endif
57
68 LDFLAGS_BOOST = $(BOOST_LDFLAGS) $(BOOST_ASIO_LDFLAGS) $(BOOST_THREAD_LDFLAGS)
79 BOOST_LIBS = $(BOOST_ASIO_LIB) $(BOOST_THREAD_LIB)
810
9 AM_CPPFLAGS = $(FLINT_CFLAGS) $(NTL_CFLAGS) $(PARI_CFLAGS) $(BOOST_CPPFLAGS) $(NTL_SWITCH) $(PTHREAD_CFLAGS)
10 AM_LDFLAGS = $(FLINT_LDFLAGS) $(NTL_LDFLAGS) $(PARI_LDFLAGS) $(BOOST_LDFLAGS) $(PTHREAD_CFLAGS)
11 LIBS = $(FLINT_LIBS) $(NTL_LIBS) $(PARI_LIBS) $(BOOST_LIBS)
11 AM_CPPFLAGS = $(FLINT_CFLAGS) $(NTL_CFLAGS) $(PARI_CFLAGS) $(BOOST_CPPFLAGS) $(MPFP_SWITCH) $(PTHREAD_CFLAGS)
12 AM_LDFLAGS = $(FLINT_LDFLAGS) $(NTL_LDFLAGS) $(PARI_LDFLAGS) $(LDFLAGS_BOOST) $(PTHREAD_CFLAGS) $(PTHREAD_LDFLAGS)
13 LIBS = $(FLINT_LIBS) $(NTL_LIBS) $(PARI_LIBS) $(BOOST_LIBS) $(PTHREAD_LIBS)
1214
1315 lib_LTLIBRARIES = libec.la
1416
2424 #include <eclib/interface.h>
2525 #include <eclib/bitspace.h>
2626
27 using namespace std;
27
2828
2929 bitspace::bitspace(long d)
3030 {
2525 //flags that this file has been included
2626
2727 #include <string>
28 using namespace std;
28 #include <eclib/templates.h>
29
2930
3031 #define USE_NEW_CODE_LETTERS
3132
0 // interface.h: used to provide common interface for LiDIA or NTL
0 // interface.h: used to provide common interface
11 //////////////////////////////////////////////////////////////////////////
22 //
33 // Copyright 1990-2012 John Cremona
2020 //
2121 //////////////////////////////////////////////////////////////////////////
2222
23 // The macro NTL_ALL can optionally be set. It controls whether most
23 // The macro NO_MPFP can optionally be set. It controls whether most
2424 // real and complex floating point functions are implemented using
25 // doubles and complex doubles (if not set) ot using NTL bigfloats
26 // (RR) and bigcomplexes (CC) (if set)
25 // doubles and complex doubles (if set) ot using NTL bigfloats
26 // (RR) and bigcomplexes (CC) (if not set, the default)
2727
2828 #ifndef _ECLIB_INTERFACE_H_
2929 #define _ECLIB_INTERFACE_H_
3030
31 #ifdef NTL_ALL
31 #ifndef NO_MPFP // the default is for this *not* to be set
3232 #define MPFP
3333 #endif
3434
4646 #include <ext/numeric>
4747 #endif
4848 #include <iterator>
49 using namespace std;
49
5050 #include <eclib/templates.h>
5151 #include <stdint.h>
5252
133133
134134 // Reals and Complexes
135135
136 #ifdef NTL_ALL
136 #ifdef MPFP
137137
138138 #include <NTL/RR.h>
139139 typedef RR bigfloat;
315315 {return is_approx_zero(z.real())&&is_approx_zero(z.imag());}
316316
317317 //////////////////////////////////////////////////////////////////
318 #endif // NTL_ALL
318 #endif // MPFP
319319 //////////////////////////////////////////////////////////////////
320320
321321 #undef setbit
2626
2727 #include <eclib/GetOpt.h>
2828 #include <iostream>
29 using namespace std;
29
3030
3131 #define DEFAULT_QUIET 0
3232 #define DEFAULT_VERBOSE 1
2525 //flags that this file has been included
2626
2727 #include <string>
28 using namespace std;
28 #include <eclib/templates.h>
2929
3030 string factor(const string n);
3131 int is_prime(const string p);
7070 friend long floor(const rational& r);
7171 friend long ceil(const rational& r);
7272 operator double(); // conversion operator
73 #ifdef NTL_ALL
73 #ifdef MPFP
7474 operator bigfloat(); // conversion operator
7575 #endif
7676 // Implementation
161161 }
162162
163163 inline rational::operator double() {return double(n)/double(d);}
164 #ifdef NTL_ALL
164 #ifdef MPFP
165165 inline rational::operator bigfloat() {return to_bigfloat(n)/to_bigfloat(d);}
166166 #endif
167167
2828 #include <set>
2929 #include <vector>
3030 #include <iterator>
31 using namespace std;
31 #include <complex>
32 #include <limits>
33 #include <map>
34 #include <unordered_map>
35 #include <algorithm>
36 #include <iomanip>
37
38 using std::string;
39 using std::vector;
40 using std::cout;
41 using std::cerr;
42 using std::cin;
43 using std::endl;
44 using std::flush;
45 using std::ios;
46 using std::ostream;
47 using std::istream;
48 using std::ifstream;
49 using std::stringstream;
50 using std::istringstream;
51 using std::ostringstream;
52 using std::ofstream;
53 using std::ios_base;
54 using std::numeric_limits;
55 using std::ostream_iterator;
56 using std::complex;
57 using std::ws;
58 using std::skipws;
59 using std::map;
60 using std::unordered_map;
61 using std::min;
62 using std::max;
63 using std::ptr_fun;
64 using std::pair;
65 using std::sort;
66 using std::abs;
67 using std::binary_function;
68 using std::setw;
69
3270
3371 template <class T >
3472 inline ostream& operator<<(ostream& os, const vector<T>& v)
9393 {
9494 double bd = cps_real(I2bigfloat(getb2(CD)),I2bigfloat(getb4(CD)),
9595 I2bigfloat(getb6(CD)),I2bigfloat(getb8(CD)));
96 if (bd==0) bd=0; // otherwise the output sometimes prints as "-0"
96 if (abs(bd) < 1e-30) bd=0; // otherwise the output sometimes prints as "-0"
9797 return bd;
9898 }
9999
150150 cout<<"sum so far = "<<bd<<endl;
151151 #endif
152152 }
153 if (bd==0) bd=0; // otherwise the output sometimes prints as "-0"
153 if (abs(bd) < 1e-30) bd=0; // otherwise the output sometimes prints as "-0"
154154 return bd;
155155 }
156156
6565
6666 // Reals and Complexes
6767
68 #ifdef NTL_ALL
68 #ifdef MPFP
6969
7070 RR Pi()
7171 {
306306 return is;
307307 }
308308
309 #endif // NTL_ALL
309 #endif // MPFP
310310
311311 string getenv_with_default(string env_var, string def_val)
312312 {
2323
2424 #include <iostream> // for debugging only
2525 #include <cmath>
26 using namespace std;
26
27 #include <eclib/templates.h>
2728 #include <eclib/kbessel.h>
2829 #ifndef M_LN2
2930 #define M_LN2 0.69314718055994530942
790790 // general functions
791791 //
792792
793 #if defined(NTL_ALL)
793 #ifdef MPFP
794794 bigint Iround(bigfloat x) {return RoundToZZ(x);}
795795 bigint Ifloor(bigfloat x) {return FloorToZZ(x);}
796796 bigint Iceil (bigfloat x) {return CeilToZZ(x);}
424424 int upper, bigfloat upper_bound, int posxonly)
425425 {
426426 // Adjust bounds so exact roots are not missed by rounding error
427 #if !defined(NTL_ALL)
427 #ifndef MPFP
428428 bigfloat eps_adjust(to_bigfloat(0.000001));
429429 if(lower) lower_bound-=eps_adjust;
430430 if(upper) upper_bound+=eps_adjust;
8989 void P2Point::getrealcoordinates(bigfloat&x, bigfloat& y) const
9090 {
9191 RR zp=to_RR(Z);
92 #ifdef NTL_ALL
92 #ifdef MPFP
9393 x=to_RR(X)/zp;
9494 y=to_RR(Y)/zp;
9595 #else
100100 cout<<"realifying P="<<P<<" (NTL version)"<<endl;
101101 cout<<"Real point = ("<<x<<","<<y<<")"<<endl;
102102 #endif
103 #ifndef NTL_ALL
103 #ifndef MPFP
104104 if((abs(x)==INFINITY)||(abs(y)==INFINITY))
105105 {
106106 cout<<"After converting P to doubles, ";
2828 //#define DEBUG_GPFACT
2929
3030 #include <iostream>
31 using namespace std;
31
3232
3333 string
3434 factor(const string n)
198198 // cout << "[attempting to divide by "<<p<<" using bit precision "
199199 // <<bit_precision()<<"]"<<endl;
200200 Pi=division_points(*E,Q,p);
201 #ifdef NTL_ALL // try again with higher precision
201 #ifdef MPFP // try again with higher precision
202202 if(Pi.size()==0)
203203 {
204204 prec = original_prec = bit_precision();
218218 if(verbose>0)
219219 {
220220 cout<<"...but it isn't! (this may be due to insufficient precision:";
221 #ifdef NTL_ALL
221 #ifdef MPFP
222222 cout << " bit precision " <<prec<<" was used)"<<endl;
223223 #else
224224 cout << " standard double precision was used)"<<endl;
814814 bit_array *surv;
815815 long i;
816816 surv = survivors; // &survivors[0];
817 if(!use_odd_nums && !b&1)
817 if(!use_odd_nums && !(b&1))
818818 for(i = range; i; i--) *surv++ = QS_HALF_MASK;
819819 else
820820 for(i = range; i; i--) *surv++ = ~bit_zero;
2121 //////////////////////////////////////////////////////////////////////////
2222
2323 #include <iostream>
24 #include <eclib/templates.h>
2425
25 using namespace std;
2626
2727 void show_version()
2828 {
2929 cerr << "Version compiled on " << __DATE__ << " at " << __TIME__ << " by GCC " << __VERSION__ << "\n";
30 #ifdef NTL_ALL
30 #ifdef MPFP
3131 cerr << "using NTL bigints and NTL real and complex multiprecision floating point";
3232 #else
3333 cerr << "using NTL bigints but no multiprecision floating point";
0 # ===========================================================================
1 # http://www.gnu.org/software/autoconf-archive/ax_pthread.html
2 # ===========================================================================
3 #
4 # SYNOPSIS
5 #
6 # AX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
7 #
8 # DESCRIPTION
9 #
10 # This macro figures out how to build C programs using POSIX threads. It
11 # sets the PTHREAD_LIBS output variable to the threads library and linker
12 # flags, and the PTHREAD_CFLAGS output variable to any special C compiler
13 # flags that are needed. (The user can also force certain compiler
14 # flags/libs to be tested by setting these environment variables.)
15 #
16 # Also sets PTHREAD_CC to any special C compiler that is needed for
17 # multi-threaded programs (defaults to the value of CC otherwise). (This
18 # is necessary on AIX to use the special cc_r compiler alias.)
19 #
20 # NOTE: You are assumed to not only compile your program with these flags,
21 # but also link it with them as well. e.g. you should link with
22 # $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
23 #
24 # If you are only building threads programs, you may wish to use these
25 # variables in your default LIBS, CFLAGS, and CC:
26 #
27 # LIBS="$PTHREAD_LIBS $LIBS"
28 # CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
29 # CC="$PTHREAD_CC"
30 #
31 # In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
32 # has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name
33 # (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
34 #
35 # Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
36 # PTHREAD_PRIO_INHERIT symbol is defined when compiling with
37 # PTHREAD_CFLAGS.
38 #
39 # ACTION-IF-FOUND is a list of shell commands to run if a threads library
40 # is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
41 # is not found. If ACTION-IF-FOUND is not specified, the default action
42 # will define HAVE_PTHREAD.
43 #
44 # Please let the authors know if this macro fails on any platform, or if
45 # you have any other suggestions or comments. This macro was based on work
46 # by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help
47 # from M. Frigo), as well as ac_pthread and hb_pthread macros posted by
48 # Alejandro Forero Cuervo to the autoconf macro repository. We are also
49 # grateful for the helpful feedback of numerous users.
50 #
51 # Updated for Autoconf 2.68 by Daniel Richard G.
52 #
53 # LICENSE
54 #
55 # Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
56 # Copyright (c) 2011 Daniel Richard G. <skunk@iSKUNK.ORG>
57 #
58 # This program is free software: you can redistribute it and/or modify it
59 # under the terms of the GNU General Public License as published by the
60 # Free Software Foundation, either version 3 of the License, or (at your
61 # option) any later version.
62 #
63 # This program is distributed in the hope that it will be useful, but
64 # WITHOUT ANY WARRANTY; without even the implied warranty of
65 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
66 # Public License for more details.
67 #
68 # You should have received a copy of the GNU General Public License along
69 # with this program. If not, see <http://www.gnu.org/licenses/>.
70 #
71 # As a special exception, the respective Autoconf Macro's copyright owner
72 # gives unlimited permission to copy, distribute and modify the configure
73 # scripts that are the output of Autoconf when processing the Macro. You
74 # need not follow the terms of the GNU General Public License when using
75 # or distributing such scripts, even though portions of the text of the
76 # Macro appear in them. The GNU General Public License (GPL) does govern
77 # all other use of the material that constitutes the Autoconf Macro.
78 #
79 # This special exception to the GPL applies to versions of the Autoconf
80 # Macro released by the Autoconf Archive. When you make and distribute a
81 # modified version of the Autoconf Macro, you may extend this special
82 # exception to the GPL to apply to your modified version as well.
83
84 #serial 21
85
86 AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
87 AC_DEFUN([AX_PTHREAD], [
88 AC_REQUIRE([AC_CANONICAL_HOST])
89 AC_LANG_PUSH([C])
90 ax_pthread_ok=no
91
92 # We used to check for pthread.h first, but this fails if pthread.h
93 # requires special compiler flags (e.g. on True64 or Sequent).
94 # It gets checked for in the link test anyway.
95
96 # First of all, check if the user has set any of the PTHREAD_LIBS,
97 # etcetera environment variables, and if threads linking works using
98 # them:
99 if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
100 save_CFLAGS="$CFLAGS"
101 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
102 save_LIBS="$LIBS"
103 LIBS="$PTHREAD_LIBS $LIBS"
104 AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
105 AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes])
106 AC_MSG_RESULT([$ax_pthread_ok])
107 if test x"$ax_pthread_ok" = xno; then
108 PTHREAD_LIBS=""
109 PTHREAD_CFLAGS=""
110 fi
111 LIBS="$save_LIBS"
112 CFLAGS="$save_CFLAGS"
113 fi
114
115 # We must check for the threads library under a number of different
116 # names; the ordering is very important because some systems
117 # (e.g. DEC) have both -lpthread and -lpthreads, where one of the
118 # libraries is broken (non-POSIX).
119
120 # Create a list of thread flags to try. Items starting with a "-" are
121 # C compiler flags, and other items are library names, except for "none"
122 # which indicates that we try without any flags at all, and "pthread-config"
123 # which is a program returning the flags for the Pth emulation library.
124
125 ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
126
127 # The ordering *is* (sometimes) important. Some notes on the
128 # individual items follow:
129
130 # pthreads: AIX (must check this before -lpthread)
131 # none: in case threads are in libc; should be tried before -Kthread and
132 # other compiler flags to prevent continual compiler warnings
133 # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
134 # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
135 # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
136 # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
137 # -pthreads: Solaris/gcc
138 # -mthreads: Mingw32/gcc, Lynx/gcc
139 # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
140 # doesn't hurt to check since this sometimes defines pthreads too;
141 # also defines -D_REENTRANT)
142 # ... -mt is also the pthreads flag for HP/aCC
143 # pthread: Linux, etcetera
144 # --thread-safe: KAI C++
145 # pthread-config: use pthread-config program (for GNU Pth library)
146
147 case ${host_os} in
148 solaris*)
149
150 # On Solaris (at least, for some versions), libc contains stubbed
151 # (non-functional) versions of the pthreads routines, so link-based
152 # tests will erroneously succeed. (We need to link with -pthreads/-mt/
153 # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather
154 # a function called by this macro, so we could check for that, but
155 # who knows whether they'll stub that too in a future libc.) So,
156 # we'll just look for -pthreads and -lpthread first:
157
158 ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
159 ;;
160
161 darwin*)
162 ax_pthread_flags="-pthread $ax_pthread_flags"
163 ;;
164 esac
165
166 # Clang doesn't consider unrecognized options an error unless we specify
167 # -Werror. We throw in some extra Clang-specific options to ensure that
168 # this doesn't happen for GCC, which also accepts -Werror.
169
170 AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags])
171 save_CFLAGS="$CFLAGS"
172 ax_pthread_extra_flags="-Werror"
173 CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument"
174 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int foo(void);],[foo()])],
175 [AC_MSG_RESULT([yes])],
176 [ax_pthread_extra_flags=
177 AC_MSG_RESULT([no])])
178 CFLAGS="$save_CFLAGS"
179
180 if test x"$ax_pthread_ok" = xno; then
181 for flag in $ax_pthread_flags; do
182
183 case $flag in
184 none)
185 AC_MSG_CHECKING([whether pthreads work without any flags])
186 ;;
187
188 -*)
189 AC_MSG_CHECKING([whether pthreads work with $flag])
190 PTHREAD_CFLAGS="$flag"
191 ;;
192
193 pthread-config)
194 AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
195 if test x"$ax_pthread_config" = xno; then continue; fi
196 PTHREAD_CFLAGS="`pthread-config --cflags`"
197 PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
198 ;;
199
200 *)
201 AC_MSG_CHECKING([for the pthreads library -l$flag])
202 PTHREAD_LIBS="-l$flag"
203 ;;
204 esac
205
206 save_LIBS="$LIBS"
207 save_CFLAGS="$CFLAGS"
208 LIBS="$PTHREAD_LIBS $LIBS"
209 CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags"
210
211 # Check for various functions. We must include pthread.h,
212 # since some functions may be macros. (On the Sequent, we
213 # need a special flag -Kthread to make this header compile.)
214 # We check for pthread_join because it is in -lpthread on IRIX
215 # while pthread_create is in libc. We check for pthread_attr_init
216 # due to DEC craziness with -lpthreads. We check for
217 # pthread_cleanup_push because it is one of the few pthread
218 # functions on Solaris that doesn't have a non-functional libc stub.
219 # We try pthread_create on general principles.
220 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
221 static void routine(void *a) { a = 0; }
222 static void *start_routine(void *a) { return a; }],
223 [pthread_t th; pthread_attr_t attr;
224 pthread_create(&th, 0, start_routine, 0);
225 pthread_join(th, 0);
226 pthread_attr_init(&attr);
227 pthread_cleanup_push(routine, 0);
228 pthread_cleanup_pop(0) /* ; */])],
229 [ax_pthread_ok=yes],
230 [])
231
232 LIBS="$save_LIBS"
233 CFLAGS="$save_CFLAGS"
234
235 AC_MSG_RESULT([$ax_pthread_ok])
236 if test "x$ax_pthread_ok" = xyes; then
237 break;
238 fi
239
240 PTHREAD_LIBS=""
241 PTHREAD_CFLAGS=""
242 done
243 fi
244
245 # Various other checks:
246 if test "x$ax_pthread_ok" = xyes; then
247 save_LIBS="$LIBS"
248 LIBS="$PTHREAD_LIBS $LIBS"
249 save_CFLAGS="$CFLAGS"
250 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
251
252 # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
253 AC_MSG_CHECKING([for joinable pthread attribute])
254 attr_name=unknown
255 for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
256 AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
257 [int attr = $attr; return attr /* ; */])],
258 [attr_name=$attr; break],
259 [])
260 done
261 AC_MSG_RESULT([$attr_name])
262 if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
263 AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name],
264 [Define to necessary symbol if this constant
265 uses a non-standard name on your system.])
266 fi
267
268 AC_MSG_CHECKING([if more special flags are required for pthreads])
269 flag=no
270 case ${host_os} in
271 aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
272 osf* | hpux*) flag="-D_REENTRANT";;
273 solaris*)
274 if test "$GCC" = "yes"; then
275 flag="-D_REENTRANT"
276 else
277 # TODO: What about Clang on Solaris?
278 flag="-mt -D_REENTRANT"
279 fi
280 ;;
281 esac
282 AC_MSG_RESULT([$flag])
283 if test "x$flag" != xno; then
284 PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
285 fi
286
287 AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
288 [ax_cv_PTHREAD_PRIO_INHERIT], [
289 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
290 [[int i = PTHREAD_PRIO_INHERIT;]])],
291 [ax_cv_PTHREAD_PRIO_INHERIT=yes],
292 [ax_cv_PTHREAD_PRIO_INHERIT=no])
293 ])
294 AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"],
295 [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])])
296
297 LIBS="$save_LIBS"
298 CFLAGS="$save_CFLAGS"
299
300 # More AIX lossage: compile with *_r variant
301 if test "x$GCC" != xyes; then
302 case $host_os in
303 aix*)
304 AS_CASE(["x/$CC"],
305 [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
306 [#handle absolute path differently from PATH based program lookup
307 AS_CASE(["x$CC"],
308 [x/*],
309 [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
310 [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
311 ;;
312 esac
313 fi
314 fi
315
316 test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
317
318 AC_SUBST([PTHREAD_LIBS])
319 AC_SUBST([PTHREAD_CFLAGS])
320 AC_SUBST([PTHREAD_CC])
321
322 # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
323 if test x"$ax_pthread_ok" = xyes; then
324 ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
325 :
326 else
327 ax_pthread_ok=no
328 $2
329 fi
330 AC_LANG_POP
331 ])dnl AX_PTHREAD
00 ## Process this file with automake to produce Makefile.in
11
22 prog_input_dir = $(srcdir)/in
3 if NTL_ALL
4 NTL_SWITCH = -D NTL_ALL
3 if NO_MPFP
4 prog_output_dir = $(srcdir)/out_no_ntl
5 MPFP_SWITCH="-DNO_MPFP"
6 else
57 prog_output_dir = $(srcdir)/out_ntl
6 else
7 prog_output_dir = $(srcdir)/out_no_ntl
8 MPFP_SWITCH=
89 endif
910
1011 LDFLAGS_BOOST = $(BOOST_LDFLAGS) $(BOOST_ASIO_LDFLAGS) $(BOOST_THREAD_LDFLAGS)
1112 BOOST_LIBS = $(BOOST_ASIO_LIB) $(BOOST_THREAD_LIB)
1213
13 AM_CPPFLAGS = -I$(top_srcdir)/libsrc $(FLINT_CFLAGS) $(NTL_CFLAGS) $(PARI_CFLAGS) $(BOOST_CPPFLAGS) $(NTL_SWITCH) $(PTHREAD_CFLAGS)
14 AM_LDFLAGS = $(FLINT_LDFLAGS) $(NTL_LDFLAGS) $(PARI_LDFLAGS) $(BOOST_LDFLAGS) $(PTHREAD_CFLAGS)
15 LIBS = $(top_builddir)/libsrc/libec.la $(FLINT_LIBS) $(PARI_LIBS) $(NTL_LIBS) $(BOOST_LIBS)
14 AM_CPPFLAGS = -I$(top_srcdir)/libsrc $(FLINT_CFLAGS) $(NTL_CFLAGS) $(PARI_CFLAGS) $(BOOST_CPPFLAGS) $(MPFP_SWITCH) $(PTHREAD_CFLAGS)
15 AM_LDFLAGS = $(FLINT_LDFLAGS) $(NTL_LDFLAGS) $(PARI_LDFLAGS) $(LDFLAGS_BOOST) $(PTHREAD_CFLAGS) $(PTHREAD_LDFLAGS)
16 LIBS = $(top_builddir)/libsrc/libec.la $(FLINT_LIBS) $(PARI_LIBS) $(NTL_LIBS) $(BOOST_LIBS) $(PTHREAD_LIBS)
1617
1718 check_run = echo "Testing $${prog}..."; ./$${prog}$(EXEEXT) < $(prog_input_dir)/$${prog}.in > $${prog}.testout 2>/dev/null && diff $${prog}.testout $(prog_output_dir)/$${prog}.out || exit $$?
1819
4343 cout << "Output new eigs to screen (1/0)? "; cin>>showeigs;
4444 cout << "Display newforms (1/0)? "; cin>>showforms;
4545 cout << "Attempt curve construction (1/0)? "; cin>>findcurves;
46 #ifdef NTL_ALL
46 #ifdef MPFP
4747 if(findcurves) set_precision(60);
4848 #endif
4949 #ifdef AUTOLOOP
3939 int verbose = (opt.get_verbose());
4040 //opt.show();
4141 if(!opt.get_quiet()) {opt.banner(1); show_version();}
42 #if defined(NTL_ALL)
42 #ifdef MPFP
4343 long bit_precision=opt.get_precision();
4444 set_precision(bit_precision);
45 if(verbose) cerr<<"Using NTL multiprecision floating point with "
45 if(verbose) cerr<<"Using multiprecision floating point with "
4646 << bit_precision <<" bits precision.\n";
4747 #else
4848 cout.precision(15);
3737
3838 int main()
3939 {
40 #ifdef NTL_ALL
40 #ifdef MPFP
4141 set_precision(70);
4242 #endif
4343 initprimes("PRIMES",0);
00 ## Process this file with automake to produce Makefile.in
11
2 if NTL_ALL
3 NTL_SWITCH = -D NTL_ALL
2 if NO_MPFP
3 test_input_dir = $(srcdir)/in_no_ntl
4 test_output_dir = $(srcdir)/out_no_ntl
5 MPFP_SWITCH="-DNO_MPFP"
6 else
47 test_input_dir = $(srcdir)/in_ntl
58 test_output_dir = $(srcdir)/out_ntl
6 else
7 test_input_dir = $(srcdir)/in_no_ntl
8 test_output_dir = $(srcdir)/out_no_ntl
9 MPFP_SWITCH=
910 endif
1011
1112 LDFLAGS_BOOST = $(BOOST_LDFLAGS) $(BOOST_ASIO_LDFLAGS) $(BOOST_THREAD_LDFLAGS)
1213 BOOST_LIBS = $(BOOST_ASIO_LIB) $(BOOST_THREAD_LIB)
1314
14 AM_CPPFLAGS = -I$(top_srcdir)/libsrc $(FLINT_CFLAGS) $(NTL_CFLAGS) $(PARI_CFLAGS) $(BOOST_CPPFLAGS) $(NTL_SWITCH) $(PTHREAD_CFLAGS)
15 AM_LDFLAGS = $(FLINT_LDFLAGS) $(NTL_LDFLAGS) $(PARI_LDFLAGS) $(BOOST_LDFLAGS) $(PTHREAD_CFLAGS)
16 LIBS = $(top_builddir)/libsrc/libec.la $(FLINT_LIBS) $(PARI_LIBS) $(NTL_LIBS) $(BOOST_LIBS)
15 AM_CPPFLAGS = -I$(top_srcdir)/libsrc $(FLINT_CFLAGS) $(NTL_CFLAGS) $(PARI_CFLAGS) $(BOOST_CPPFLAGS) $(MPFP_SWITCH) $(PTHREAD_CFLAGS)
16 AM_LDFLAGS = $(FLINT_LDFLAGS) $(NTL_LDFLAGS) $(PARI_LDFLAGS) $(LDFLAGS_BOOST) $(PTHREAD_CFLAGS) $(PTHREAD_LDFLAGS)
17 LIBS = $(top_builddir)/libsrc/libec.la $(FLINT_LIBS) $(PARI_LIBS) $(NTL_LIBS) $(BOOST_LIBS) $(PTHREAD_LIBS)
1718
1819 check_run = echo "Testing $${prog}..."; ./$${prog}$(EXEEXT) < $(test_input_dir)/$${prog}.in > $${prog}.testout 2>/dev/null && diff $${prog}.testout $(test_output_dir)/$${prog}.out || exit $$?
1920
2828 #include <eclib/getcurve.h>
2929
3030 int main(){
31 #ifdef NTL_ALL
31 #ifdef MPFP
3232 set_precision("Enter precision in bits");
3333 #endif
3434 int verbose=0;
2626 int main(void)
2727 {
2828 set_precision("Enter precision in bits");
29 #ifdef NTL_ALL
29 #ifdef MPFP
3030 long original_output_precision = RR::OutputPrecision();
3131 RR::SetOutputPrecision(original_output_precision-1);
3232 #endif
33 bigfloat x=to_bigfloat(3.125), y=to_bigfloat(4.25);
34
33 bigfloat x=to_bigfloat(double(3.125)), y=to_bigfloat(4.25);
3534 bigcomplex z = bigcomplex(x,y);
3635 bigcomplex a = bigcomplex(to_bigfloat(1),to_bigfloat(1));
3736 bigcomplex b = bigcomplex(to_bigfloat(2),to_bigfloat(1));
8786 for(iroot=0; iroot<4; iroot++) cout<<croots[iroot]<<"\n";
8887 cout<<endl;
8988
90 #ifdef NTL_ALL
89 #ifdef MPFP
9190 RR::SetOutputPrecision(original_output_precision);
9291 #endif
9392
4040
4141 int main()
4242 {
43 #ifdef NTL_ALL
43 #ifdef MPFP
4444 set_precision("Enter precision in bits");
4545 #endif
4646 cin.flags( cin.flags() | ios::dec );
6666 }
6767
6868 int main(){
69 #ifdef NTL_ALL
69 #ifdef MPFP
7070 // set_precision("Enter precision in bits");
7171 set_precision(175);
7272 long original_output_precision = RR::OutputPrecision();
180180 test3(cd,cp,5);cout<<endl;
181181 */
182182
183 #ifdef NTL_ALL
183 #ifdef MPFP
184184 RR::SetOutputPrecision(original_output_precision);
185185 #endif
186186
2424 #include <eclib/points.h>
2525
2626 int main(){
27 #ifdef NTL_ALL
27 #ifdef MPFP
2828 set_precision(350);
2929 #endif
3030 initprimes("PRIMES",1);
5050
5151 int main()
5252 {
53 #ifdef NTL_ALL
53 #ifdef MPFP
5454 set_precision(100);
5555 #endif
5656 initprimes("PRIMES",0);
2626
2727 int main(){
2828 cerr<<"Program to find and/or count torsion on a curve.\n\n";
29 #ifdef NTL_ALL
29 #ifdef MPFP
3030 set_precision("Enter precision in bits");
3131 #endif
3232 cerr<<"Enter 0 for short output (#torsion only)\n";
2727 #include <eclib/getcurve.h>
2828
2929 int main(){
30 #ifdef NTL_ALL
30 #ifdef MPFP
3131 set_precision("Enter precision in bits");
3232 long original_output_precision = RR::OutputPrecision();
3333 RR::SetOutputPrecision(original_output_precision-3);
5151 Curve EE = cp.trans_to_curve();
5252 cout << "Curve from periods: " << EE << endl;
5353 }
54 #ifdef NTL_ALL
54 #ifdef MPFP
5555 RR::SetOutputPrecision(original_output_precision);
5656 #endif
5757
2424 #include <eclib/points.h>
2525
2626 int main(){
27 // set_precision("Enter precision in bits");
27 #ifdef MPFP
2828 set_precision(100);
29 #else
30 set_precision("Enter precision in bits");
31 #endif
2932 initprimes("PRIMES",1);
3033
3134 Curve c(BIGINT(0),BIGINT(0),BIGINT(1),BIGINT(-7),BIGINT(6));
5151
5252 int main()
5353 {
54 #ifdef NTL_ALL
54 #ifdef MPFP
5555 // set_precision("Enter precision in bits");
5656 set_precision(350);
5757 #endif