Alexei Sheplyakov
58de93cddb
Remove CL_REQUIRE/CL_PROVIDE(cl_I_factorial) as it's not really necessary.
factorial() is the only function which uses fakul_table[] array, so move
it into that function in order to avoid possible static initialization
order problems.
17 years ago
Alexei Sheplyakov
2ee2f08875
Replace CL_REQUIRE/CL_PROVIDE(cl_MI) with portable code.
The order of initialization of non-local objects in different compilation units
is not specified in C++. Hence special care should be taken to avoid static
initialization order fiasco. CLN solved the problem with some evil (GCC
specific, and even GCC-version-specific) hack. Replace it with a technique
similar to one used in STL to initialize std::cout and friends.
17 years ago
Alexei Sheplyakov
ec25de1e6c
Replace CL_REQUIRE/CL_PROVIDE(cl_RA_ring) with portable code.
The order of initialization of non-local objects in different compilation units
is not specified in C++. Hence special care should be taken to avoid static
initialization order fiasco. CLN solved the problem with some evil (GCC
specific, and even GCC-version-specific) hack. Replace it with a technique
similar to one used in STL to initialize std::cout and friends.
17 years ago
Alexei Sheplyakov
ae1b7178f7
Replace CL_REQUIRE/CL_PROVIDE(cl_I_ring) with portable code.
The order of initialization of non-local objects in different compilation units
is not specified in C++. Hence special care should be taken to avoid static
initialization order fiasco. CLN solved the problem with some evil (GCC
specific, and even GCC-version-specific) hack. Replace it with a technique
similar to one used in STL to initialize std::cout and friends.
17 years ago
Alexei Sheplyakov
311046b5c7
Replace CL_REQUIRE/CL_PROVIDE(cl_R_ring) with portable code.
The order of initialization of non-local objects in different compilation units
is not specified in C++. Hence special care should be taken to avoid static
initialization order fiasco. CLN solved the problem with some evil (GCC
specific, and even GCC-version-specific) hack. Replace it with a technique
similar to one used in STL to initialize std::cout and friends.
17 years ago
Alexei Sheplyakov
7f619754e2
Replace CL_REQUIRE/CL_PROVIDE(cl_LF_globals) with portable code.
The order of initialization of non-local objects in different compilation units
is not specified in C++. Hence special care should be taken to avoid static
initialization order fiasco. CLN solved the problem with some evil (GCC
specific, and even GCC-version-specific) hack. Replace it with a technique
similar to one used in STL to initialize std::cout and friends.
17 years ago
Alexei Sheplyakov
74ff6e9338
Replace CL_REQUIRE/CL_PROVIDE(cl_FF_globals) with portable code.
The order of initialization of non-local objects in different compilation units
is not specified in C++. Hence special care should be taken to avoid static
initialization order fiasco. CLN solved the problem with some evil (GCC
specific, and even GCC-version-specific) hack. Replace it with a technique
similar to one used in STL to initialize std::cout and friends.
17 years ago
Alexei Sheplyakov
88f748dfb4
Get rid of CL_REQUIRE/CL_PROVIDE(cl_ieee).
While at it, remove work around for ancient (fixed in 8+ years) glibc/Linux
bug (the kernel and/or libc was initializing FPU into non-IEEE mode, so division
by 0 resulted in SIGFPE instead of NaN).
17 years ago
Alexei Sheplyakov
018b445aa3
Replace CL_REQUIRE/CL_PROVIDE(cl_DF_globals) with portable code.
The order of initialization of non-local objects in different compilation units
is not specified in C++. Hence special care should be taken to avoid static
initialization order fiasco. CLN solved the problem with some evil (GCC
specific, and even GCC-version-specific) hack. Replace it with a technique
similar to one used in STL to initialize std::cout and friends.
17 years ago
Alexei Sheplyakov
da9fbcea6c
Replace CL_REQUIRE/CL_PROVIDE(cl_C_ring) with portable code.
The order of initialization of non-local objects in different compilation units
is not specified in C++. Hence special care should be taken to avoid static
initialization order fiasco. CLN solved the problem with some evil (GCC
specific, and even GCC-version-specific) hack. Replace it with a technique
similar to one used in STL to initialize std::cout and friends.
17 years ago
Alexei Sheplyakov
67afbefaff
Replace CL_REQUIRE/CL_PROVIDE(cl_symbol) with portable code.
The order of initialization of non-local objects in different compilation units
is not specified in C++. Hence special care should be taken to avoid static
initialization order fiasco. CLN solved the problem with some evil (GCC
specific, and even GCC-version-specific) hack. Replace it with a technique
similar to one used in STL to initialize std::cout and friends.
17 years ago
Alexei Sheplyakov
d03e58e766
Replace CL_REQUIRE/CL_PROVIDE(cl_st_null) with portable code.
The order of initialization of non-local objects in different compilation units
is not specified in C++. Hence special care should be taken to avoid static
initialization order fiasco. CLN solved the problem with some evil (GCC
specific, and even GCC-version-specific) hack. Replace it with a technique
similar to one used in STL to initialize std::cout and friends.
17 years ago
Alexei Sheplyakov
eb8b5fefdb
Replace CL_REQUIRE/CL_PROVIDE(cl_no_ring) with portable code.
The order of initialization of non-local objects in different compilation units
is not specified in C++. Hence special care should be taken to avoid static
initialization order fiasco. CLN solved the problem with some evil (GCC
specific, and even GCC-version-specific) hack. Replace it with a technique
similar to one used in STL to initialize std::cout and friends.
17 years ago
Alexei Sheplyakov
6e18082d67
Replace CL_REQUIRE/CL_PROVIDE(cl_random_def) with portable code.
The order of initialization of non-local objects in different compilation units
is not specified in C++. Hence special care should be taken to avoid static
initialization order fiasco. CLN solved the problem with some evil (GCC
specific, and even GCC-version-specific) hack. Replace it with a technique
similar to one used in STL to initialize std::cout and friends.
17 years ago
Alexei Sheplyakov
040ed6f6ed
Replace CL_REQUIRE/CL_PROVIDE(cl_prin_globals) with portable code.
The order of initialization of non-local objects in different compilation units
is not specified in C++. Hence special care should be taken to avoid static
initialization order fiasco. CLN solved the problem with some evil (GCC
specific, and even GCC-version-specific) hack. Replace it with a technique
similar to one used in STL to initialize std::cout and friends.
17 years ago
Alexei Sheplyakov
e94c6a2bfb
replace CL_REQUIRE/CL_PROVIDE(cl_0_ring) with (more) portable code.
The order of initialization of non-local objects in different compilation units
is not specified in C++. Hence special care should be taken to avoid static
initialization order fiasco. CLN solved the problem with some evil (GCC
specific, and even GCC-version-specific) hack. Replace it with a technique
similar to one used in STL to initialize std::cout and friends.
17 years ago
Richard Kreckel
d7dbc185bc
Fix sparc64 build with -DNO_ASM and reduce compiler warnings.
17 years ago
Richard Kreckel
3a8c34e9a6
Make index variables uintC.
17 years ago
Richard Kreckel
27e3a2ba76
Avoid compiler warning about ignored 'flatten' attribute directive.
17 years ago
Richard Kreckel
98bc175431
Enable modifying operators by default.
17 years ago
Bruno Haible
137d5f385f
Avoid gcc warnings about type-punning and "... break strict-aliasing rules".
17 years ago
Richard Kreckel
962a167b47
* include/cln/float.h (cos_sin_t, cosh_sinh_t): Add default ctor.
17 years ago
Richard Kreckel
8b3d91dec7
Cater to the fact that g++ 4.3 will use a different naming for
the global constructor suffix in shared and static objects.
* m4/c++-constructors.m4 (CL_GLOBAL_CONSTRUCTORS): Add test for
the global constructor suffix, define CL_GLOBAL_CONSTRUCTOR_SUFFIX_PIC
and CL_GLOBAL_CONSTRUCTOR_SUFFIX_NOPIC appropriately.
* include/cln/config.h.in: Provide templates to be filled in by
configure.
* include/cln/modules.h (CL_PROVIDE, CL_REQUIRE): Use
CL_GLOBAL_CONSTRUCTOR_SUFFIX_PIC, CL_GLOBAL_CONSTRUCTOR_SUFFIX_NOPIC.
17 years ago
Richard Kreckel
f7e7eacb92
* include/cln/integer.h: Fix minor documentation typos.
17 years ago
Richard Kreckel
eefd94b485
* include/cln/types.h ([su]intE): 64-bit exponents for MIPS and RS6000.
17 years ago
Richard Kreckel
b62e4af28f
* include/cln/object.h: Don't redefine cl_word_alignment on sparc64.
* src/base/digitseq/cl_asm_sparc64_.cc: Declare use of global
register %g2 as scratch register within this file.
Reported by Paul Irofti <bulibuta@gmail.com> and Sven Verdoolaege
<skimo@kotnet.org>.
17 years ago
Richard Kreckel
c371715132
* include/cln/modules.h (CL_JUMP_TO): Use a pc relative jump on m68k.
See <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=388000 >.
17 years ago
Richard Kreckel
665c18cd37
* */*: Convert encoding from ISO 8859-1 to UTF-8.
17 years ago
Richard Kreckel
5370ad8054
* */*: Remove cl_boolean, cl_true, and cl_false in favor of built-in
C++ bool, true, and false.
18 years ago
Richard Kreckel
c486b78a1a
Remove exception hooks in favor of real C++ exceptions:
* include/cln/exception.h: New file...
* include/cln/cln.h: ...included here...
* include/cln/rational.h: ...and here.
* include/cln/abort.h: Removed.
* include/cln/integer.h (ash_exception, exquo_exception): Add exception
types.
* include/cln/float.h (floating_point_exception,
floating_point_nan_exception, floating_point_overflow_exception,
floating_point_underflow_exception): Likewise.
* include/cln/number_io.h (read_number_exception,
read_number_bad_syntax_exception, read_number_junk_exception,
read_number_eof_exception): Likewise.
* include/cln/object.h (CL_DEFINE_CONVERTER): Replace dynamic assertion
with a compile-time assertion.
* include/cln/GV.h: Replace nonreturning functions with exceptions.
* include/cln/modinteger.h: Likewise.
* include/cln/SV.h: Likewise.
* include/cln/ring.h: Likewise.
* include/cln/string.h: Likewise.
* include/cln/univpoly.h: Likewise.
* src/base/cl_abort.cc: Removed.
* src/base/cl_N_err_d0.cc: Removed.
* src/base/cl_d0_exception.cc: New file.
* src/base/cl_as_err.cc: Removed.
* src/base/cl_as_exception.cc: New file.
* src/base/cl_notreached.cc: Removed.
* src/base/cl_notreached_exception.cc: New file.
* src/base/input/cl_read_err_bad.cc: Removed.
* src/base/input/cl_read_bad_syntax_exception.cc: New file.
* src/base/input/cl_read_err_junk.cc: Removed.
* src/base/input/cl_read_junk_exception.cc: New file.
* src/base/input/cl_read_err_eof.cc: Removed.
* src/base/input/cl_read_eof_exception.cc: New file.
* src/base/cl_N.h (cl_as_error): Removed (see cln/exception.h).
* src/base/macros.h (NOTREACHED): Throw.
* src/base/cl_malloc.cc (xmalloc): Throw.
* src/base/digitseq/cl_2DS_div.cc: Throw.
* src/base/digitseq/cl_DS_div.cc: Throw.
* src/base/digitseq/cl_DS_mul.cc: Throw.
* src/base/digitseq/cl_DS_mul_fftc.h: Throw.
* src/base/digitseq/cl_DS_mul_fftcs.h: Throw.
* src/base/digitseq/cl_DS_mul_fftm.h: Throw.
* src/base/digitseq/cl_DS_mul_fftp.h: Throw.
* src/base/digitseq/cl_DS_mul_fftp3.h: Throw.
* src/base/digitseq/cl_DS_mul_fftp3m.h: Throw.
* src/base/digitseq/cl_DS_mul_fftr.h: Throw.
* src/base/digitseq/cl_DS_mul_nuss.h: Throw.
* src/base/digitseq/cl_DS_recipsqrt.cc: Throw.
* src/base/digitseq/cl_DS_sqrt.cc: Throw.
* src/base/hash/cl_hash.h: Throw.
* src/base/hash/cl_hash1.h: Throw.
* src/base/hash/cl_hash1weak.h: Throw.
* src/base/hash/cl_hash2.h: Throw.
* src/base/hash/cl_hash2weak.h: Throw.
* src/base/hash/cl_hashset.h: Throw.
* src/base/hash/cl_hashuniq.h: Throw.
* src/base/hash/cl_hashuniqweak.h: Throw.
* src/base/proplist/cl_pl_add.cc: Throw.
* src/base/ring/cl_no_ring.cc: Throw.
* src/base/string/cl_spushstring.h: Throw.
* src/base/symbol/cl_symbol.cc: Throw.
* src/integer/bitwise/cl_I_ash.h: Removed (see cln/integer.h.)
* src/integer/bitwise/cl_I_asherr.cc: Removed.
* src/integer/bitwise/cl_I_ash_exception.cc: New file.
* src/integer/division/cl_I_exquoerr.cc: Removed.
* src/integer/division/cl_I_exquo_exception.cc: New file.
* src/integer/cl_I.h: Throw.
* src/integer/division/cl_I_exquopos.cc: Throw.
* src/integer/bitwise/cl_I_logbitp_I.cc: Throw.
* src/integer/bitwise/cl_I_ash.cc: Throw.
* src/integer/bitwise/cl_I_ash_I.cc: Throw.
* src/integer/division/cl_I_exquo.cc: Throw.
* src/integer/gcd/cl_I_gcd_aux2.cc: Throw.
* src/integer/conv/cl_I_to_L.cc: Throw.
* src/integer/conv/cl_I_to_Q.cc: Throw.
* src/integer/conv/cl_I_to_UL.cc: Throw.
* src/integer/conv/cl_I_to_UQ.cc: Throw.
* src/integer/conv/cl_I_to_digits.cc: Throw.
* src/integer/elem/cl_I_div.cc: Throw.
* src/integer/algebraic/cl_I_sqrt.cc: Throw.
* src/integer/input/cl_I_read.cc: Throw.
* src/integer/input/cl_I_read_stream.cc: Throw.
* src/integer/misc/cl_I_as.cc: Throw.
* src/rational/elem/cl_RA_from_I_I_div.cc: Throw.
* src/rational/elem/cl_RA_recip.cc: Throw.
* src/rational/input/cl_RA_read.cc: Throw.
* src/rational/input/cl_RA_read_stream.cc: Throw.
* src/rational/input/cl_RA_readparsed.cc: Throw.
* src/rational/misc/cl_RA_as.cc: Throw.
* src/float/base/cl_F_err_nan.cc: Removed.
* src/float/base/cl_F_nan_exception.cc: New file.
* src/float/base/cl_F_err_un.cc: Removed.
* src/float/base/cl_F_underflow_exception.cc: New file.
* src/float/base/cl_F_err_ov.cc: Removed.
* src/float/base/cl_F_overflow_exception.cc: New file.
* src/float/cl_F.h (cl_error_floating_point_nan,
cl_error_floating_point_overflow, cl_error_floating_point_underflow):
Removed (see cln/float.h.)
* src/float/sfloat/cl_SF.h: Throw.
* src/float/sfloat/elem/cl_SF_div.cc: Throw.
* src/float/sfloat/elem/cl_SF_from_RA.cc: Throw.
* src/float/sfloat/elem/cl_SF_scale.cc: Throw.
* src/float/sfloat/elem/cl_SF_scale_I.cc: Throw.
* src/float/sfloat/misc/cl_SF_as.cc: Throw.
* src/float/ffloat/cl_FF.h: Throw.
* src/float/ffloat/conv/cl_FF_from_float.cc: Throw.
* src/float/ffloat/elem/cl_FF_div.cc: Throw.
* src/float/ffloat/elem/cl_FF_from_RA.cc: Throw.
* src/float/ffloat/elem/cl_FF_scale.cc: Throw.
* src/float/ffloat/elem/cl_FF_scale_I.cc: Throw.
* src/float/ffloat/misc/cl_FF_as.cc: Throw.
* src/float/dfloat/cl_DF.h: Throw.
* src/float/dfloat/conv/cl_DF_from_double.cc: Throw.
* src/float/dfloat/elem/cl_DF_div.cc: Throw.
* src/float/dfloat/elem/cl_DF_from_RA.cc: Throw.
* src/float/dfloat/elem/cl_DF_scale.cc: Throw.
* src/float/dfloat/elem/cl_DF_scale_I.cc: Throw.
* src/float/dfloat/misc/cl_DF_as.cc: Throw.
* src/float/lfloat/algebraic/cl_LF_sqrt.cc: Throw.
* src/float/lfloat/elem/cl_LF_1plus.cc: Throw.
* src/float/lfloat/elem/cl_LF_I_div.cc: Throw.
* src/float/lfloat/elem/cl_LF_I_mul.cc: Throw.
* src/float/lfloat/elem/cl_LF_div.cc: Throw.
* src/float/lfloat/elem/cl_LF_from_I.cc: Throw.
* src/float/lfloat/elem/cl_LF_mul.cc: Throw.
* src/float/lfloat/elem/cl_LF_scale.cc: Throw.
* src/float/lfloat/elem/cl_LF_scale_I.cc: Throw.
* src/float/lfloat/elem/cl_LF_square.cc: Throw.
* src/float/lfloat/misc/cl_LF_as.cc: Throw.
* src/float/lfloat/misc/cl_LF_shorten.cc: Throw.
* src/float/lfloat/misc/cl_LF_shortenrel.cc: Throw.
* src/float/lfloat/misc/cl_LF_shortenwith.cc: Throw.
* src/float/input/cl_F_read.cc: Throw.
* src/float/input/cl_F_read_stream.cc: Throw.
* src/float/misc/cl_F_as.cc: Throw.
* src/float/misc/cl_F_shortenrel.cc: Throw.
* src/float/transcendental/cl_LF_coshsinh_aux.cc: Throw.
* src/float/transcendental/cl_LF_cossin_aux.cc: Throw.
* src/float/transcendental/cl_LF_exp_aux.cc: Throw.
* src/float/transcendental/cl_LF_ratseries_a.cc: Throw.
* src/float/transcendental/cl_LF_ratseries_ab.cc: Throw.
* src/float/transcendental/cl_LF_ratseries_b.cc: Throw.
* src/float/transcendental/cl_LF_ratseries_p.cc: Throw.
* src/float/transcendental/cl_LF_ratseries_pa.cc: Throw.
* src/float/transcendental/cl_LF_ratseries_pab.cc: Throw.
* src/float/transcendental/cl_LF_ratseries_pb.cc: Throw.
* src/float/transcendental/cl_LF_ratseries_pq.cc: Throw.
* src/float/transcendental/cl_LF_ratseries_pqa.cc: Throw.
* src/float/transcendental/cl_LF_ratseries_pqab.cc: Throw.
* src/float/transcendental/cl_LF_ratseries_pqb.cc: Throw.
* src/float/transcendental/cl_LF_ratseries_q.cc: Throw.
* src/float/transcendental/cl_LF_ratseries_qa.cc: Throw.
* src/float/transcendental/cl_LF_ratseries_qab.cc: Throw.
* src/float/transcendental/cl_LF_ratseries_qb.cc: Throw.
* src/float/transcendental/cl_LF_ratseries_stream_pq.cc: Throw.
* src/float/transcendental/cl_LF_ratseries_stream_pqa.cc: Throw.
* src/float/transcendental/cl_LF_ratseries_stream_pqab.cc: Throw.
* src/float/transcendental/cl_LF_ratseries_stream_pqb.cc: Throw.
* src/float/transcendental/cl_LF_ratsumseries_pqcd_aux.cc: Throw.
* src/float/transcendental/cl_LF_ratsumseries_pqd.cc: Throw.
* src/float/transcendental/cl_LF_ratsumseries_pqd_aux.cc: Throw.
* src/float/transcendental/cl_LF_zeta_int.cc: Throw.
* src/real/elem/cl_R_div.cc: Throw.
* src/real/format-output/cl_fmt_cardinal.cc: Throw.
* src/real/format-output/cl_fmt_newroman.cc: Throw.
* src/real/format-output/cl_fmt_oldroman.cc: Throw.
* src/real/input/cl_R_read.cc: Throw.
* src/real/input/cl_R_read_stream.cc: Throw.
* src/real/misc/cl_R_as.cc: Throw.
* src/real/random/cl_R_random.cc: Throw.
* src/real/transcendental/cl_R_atan2.cc: Throw.
* src/real/transcendental/cl_R_log.cc: Throw.
* src/complex/input/cl_N_read.cc: Throw.
* src/complex/input/cl_N_read_stream.cc: Throw.
* src/complex/misc/cl_N_as.cc: Throw.
* src/complex/transcendental/cl_C_atanh_aux.cc: Throw.
* src/complex/transcendental/cl_C_expt_C.cc: Throw.
* src/complex/transcendental/cl_C_log.cc: Throw.
* src/complex/transcendental/cl_C_log2.cc: Throw.
* src/numtheory/cl_nt_cornacchia1.cc: Throw.
* src/numtheory/cl_nt_cornacchia4.cc: Throw.
* src/numtheory/cl_nt_isprobprime.cc: Throw.
* src/numtheory/cl_nt_jacobi.cc: Throw.
* src/numtheory/cl_nt_jacobi_low.cc: Throw.
* src/numtheory/cl_nt_sqrtmodp.cc: Throw.
* src/modinteger/cl_MI.cc: Throw.
* src/modinteger/cl_MI_int.h: Throw.
* src/modinteger/cl_MI_montgom.h: Throw.
* src/modinteger/cl_MI_pow2.h: Throw.
* src/modinteger/cl_MI_rshift.cc: Throw.
* src/modinteger/cl_MI_std.h: Throw.
* src/polynomial/elem/cl_UP_GF2.h: Throw.
* src/polynomial/elem/cl_UP_MI.h: Throw.
* src/polynomial/elem/cl_UP_gen.h: Throw.
* src/polynomial/elem/cl_UP_named.cc: Throw.
* src/polynomial/elem/cl_UP_no_ring.cc (uninitialized_error,
uninitialized_ring): Removed (see cln/ring.h.)
* src/polynomial/elem/cl_UP_number.h: Throw.
* src/polynomial/elem/cl_UP_unnamed.cc: Throw.
* src/vector/cl_GV_I.cc: Throw.
* src/vector/cl_GV_number.cc: Throw.
* tests/timediv2adic-compare.cc: Use default abort(), not cl_abort().
* tests/timeprint-compare.cc: Likewise.
* tests/timerecip2adic-compare.cc: Likewise.
* doc/cln.tex: Document the exception classes.
* examples/contfrac.cc: Use try/catch instead of setjmp/longjmp.
* INSTALL: undocument -fno-exceptions.
* README: Add exceptions to list of used C++ features.
18 years ago
Richard Kreckel
749cf017b2
* include/cln/integer.h (cl_I_to_E, cl_I_to_UE): New functions.
* src/float/transcendental/cl_LF_exp_aux.cc: Make lq argument an uintE.
* src/float/transcendental/cl_LF_cossin_aux.cc: Likewise.
* src/float/transcendental/cl_LF_coshsinh_aux.cc: Likewise.
* src/float/transcendental/cl_F_tran.h: Change declaration of lq.
* src/float/transcendental/cl_F_lnx.cc: Fix some exponent types.
* src/float/transcendental/cl_F_expx.cc: Likewise.
* src/float/transcendental/cl_F_sinh.cc: Likewise.
* src/float/transcendental/cl_F_atanx.cc: Likewise.
* src/float/transcendental/cl_F_coshsinh.cc: Likewise.
* src/float/transcendental/cl_LF_cossin.cc: Likewise.
* src/float/transcendental/cl_LF_coshsinh.cc: Likewise.
18 years ago
Richard Kreckel
e528307482
Extend the exponent range from 32 bits to 64 bits on selected platforms.
* include/cln/number.h: Add signatures for operations with long long.
* include/cln/complex_class.h: Likewise.
* include/cln/real_class.h: Likewise.
* include/cln/real.h: Likewise.
* include/cln/rational_class.h: Likewise.
* include/cln/rational.h: Likewise.
* include/cln/integer_class.h: Likewise.
* include/cln/integer.h: Likewise.
* include/cln/float.h: Likewise.
* include/cln/lfloat.h: Likewise.
* include/cln/types.h (sintE and uintE): New types for exponents.
* include/cln/*float.h: Use the new types for exponents.
* include/cln/floatformat.h (float_format_t): Make underlying type
compatible with sintE.
* doc/cln.tex: Document changed float_exponent return value.
* src/float/cl_F.h: Likewise.
* src/float/ffloat/misc/cl_FF_exponent.cc: Likewise.
* src/float/input/cl_F_read.cc: Likewise.
* src/float/lfloat/cl_LF.h: Likewise.
* src/float/lfloat/cl_LF_impl.h: Likewise.
* src/float/lfloat/algebraic/cl_LF_sqrt.cc: Likewise.
* src/float/lfloat/elem/cl_LF_1plus.cc: Likewise.
* src/float/lfloat/elem/cl_LF_I_div.cc: Likewise.
* src/float/lfloat/elem/cl_LF_I_mul.cc: Likewise.
* src/float/lfloat/elem/cl_LF_compare.cc: Likewise.
* src/float/lfloat/elem/cl_LF_div.cc: Likewise.
* src/float/lfloat/elem/cl_LF_from_I.cc: Likewise.
* src/float/lfloat/elem/cl_LF_fround.cc: Likewise.
* src/float/lfloat/elem/cl_LF_ftrunc.cc: Likewise.
* src/float/lfloat/elem/cl_LF_futrunc.cc: Likewise.
* src/float/lfloat/elem/cl_LF_mul.cc: Likewise.
* src/float/lfloat/elem/cl_LF_scale.cc: Likewise.
* src/float/lfloat/elem/cl_LF_scale_I.cc: Likewise.
* src/float/lfloat/elem/cl_LF_square.cc: Likewise.
* src/float/lfloat/elem/cl_LF_to_I.cc: Likewise.
* src/float/lfloat/misc/cl_LF_decode.cc: Likewise.
* src/float/lfloat/misc/cl_LF_exponent.cc: Likewise.
* src/float/lfloat/misc/cl_LF_idecode.cc: Likewise.
* src/float/lfloat/misc/cl_LF_shortenrel.cc: Likewise.
* src/float/lfloat/misc/cl_LF_shortenwith.cc: Likewise.
* src/float/misc/cl_F_decode.cc: Likewise.
* src/float/misc/cl_F_exponent.cc: Likewise.
* src/float/misc/cl_F_shortenrel.cc: Likewise.
* src/float/misc/cl_float_format.cc: Likewise.
* src/float/output/cl_F_dprint.cc: Likewise.
* src/float/sfloat/misc/cl_SF_exponent.cc: Likewise.
* src/float/transcendental/cl_F_atanhx.cc: Likewise.
* src/float/transcendental/cl_F_atanx.cc: Likewise.
* src/float/transcendental/cl_F_cosh.cc: Likewise.
* src/float/transcendental/cl_F_expx.cc: Likewise.
* src/float/transcendental/cl_F_lnx.cc: Likewise.
* src/float/transcendental/cl_F_sinhx.cc: Likewise.
* src/float/transcendental/cl_F_sinx.cc: Likewise.
* src/float/transcendental/cl_LF_pi.cc: Likewise.
* src/integer/cl_I.h: Likewise.
* src/complex/algebraic/cl_LF_hypot.cc: Likewise.
* src/complex/elem/division/cl_C_LF_recip.cc: Likewise.
* src/float/dfloat/misc/cl_DF_exponent.cc: Likewise.
* src/integer/conv/cl_I_from_Q2.cc: Added.
* src/base/cl_low.h (isqrtC): New function, for 64 bit falls back to...
* src/base/low/cl_low_isqrt.cc (isqrt): ...this new implementation.
* src/base/cl_macros.h (bitc): Make sure 64 bit is used if required by
exponent operations.
* examples/pi.cc: Support more than 646456614 decimal digits.
18 years ago
Richard Kreckel
1ba8e03a8f
* m4/general.m4 (CL_CANONICAL_HOST_CPU): Force host_cpu=i386 for x86_64
if userland is 32 bit.
* include/cln/config.h.in: Simplify __x86_64__ selection.
* src/base/digitseq/cl_asm_x86_64_.cc: Remove.
19 years ago
Richard Kreckel
5d7684ba82
* include/cln/modules.h (CL_JUMP_TO): Fix for Intel Mac.
19 years ago
Richard Kreckel
c84c6db5d5
2006-04-25 Bruno Haible <bruno@clisp.org>
Richard B. Kreckel <kreckel@ginac.de>
Make it theoretically possible to use bignums and long-floats with
more than 2^32 significant digits or bits.
* doc/cln.tex (logcount): Change return type to uintC.
(struct cl_byte): Change elements to uintC.
(integer_length, ord2, power2p): Change return type to uintC.
(scale_float): Change argument type to sintC.
(float_digits, float_precision): Change return type to uintC.
* examples/atan_recip.cc: Use uintC instead of uintL where appropriate.
* examples/atanh_recip.cc: Likewise.
* include/cln/GV.h: Likewise.
* include/cln/GV_complex.h: Likewise.
* include/cln/GV_integer.h: Likewise.
* include/cln/GV_modinteger.h: Likewise.
* include/cln/GV_number.h: Likewise.
* include/cln/GV_rational.h: Likewise.
* include/cln/GV_real.h: Likewise.
* include/cln/SV.h: Likewise.
* include/cln/SV_complex.h: Likewise.
* include/cln/SV_integer.h: Likewise.
* include/cln/SV_number.h: Likewise.
* include/cln/SV_rational.h: Likewise.
* include/cln/SV_real.h: Likewise.
* include/cln/SV_ringelt.h: Likewise.
* include/cln/dfloat.h: Likewise.
* include/cln/ffloat.h: Likewise.
* include/cln/float.h: Likewise.
* include/cln/integer.h: Likewise.
* include/cln/lfloat.h: Likewise.
* include/cln/modinteger.h: Likewise.
* include/cln/sfloat.h: Likewise.
* src/base/cl_low.h (integerlengthC): New macro.
* src/base/digitseq/cl_2DS_div.cc: Use uintC instead of uintL where
appropriate.
* src/base/digitseq/cl_2DS_recip.cc: Likewise.
* src/base/digitseq/cl_DS.h: Likewise.
* src/base/digitseq/cl_DS_mul.c: Likewise.
* src/base/digitseq/cl_DS_mul_fftc.h: Likewise.
* src/base/digitseq/cl_DS_mul_fftcs.h: Likewise.
* src/base/digitseq/cl_DS_mul_fftm.h: Likewise.
* src/base/digitseq/cl_DS_mul_fftp.h: Likewise.
* src/base/digitseq/cl_DS_mul_fftp3.h: Likewise.
* src/base/digitseq/cl_DS_mul_fftp3m.h: Likewise.
* src/base/digitseq/cl_DS_mul_fftr.h: Likewise.
* src/base/digitseq/cl_DS_mul_kara.h: Likewise.
* src/base/digitseq/cl_DS_mul_nuss.h: Likewise.
* src/base/digitseq/cl_DS_recip.cc: Likewise.
* src/base/digitseq/cl_DS_recipsqrt.cc: Likewise.
* src/base/digitseq/cl_DS_sqrt.cc: Likewise.
* src/base/digitseq/cl_DS_trandom.cc: Likewise.
* src/complex/input/cl_N_read.cc: Likewise.
* src/complex/transcendental/cl_C_asinh_aux.cc: Likewise.
* src/complex/transcendental/cl_C_expt_C.cc: Likewise.
* src/float/cl_F.h: Likewise.
* src/float/conv/cl_F_from_F_f.cc: Likewise.
* src/float/conv/cl_F_from_I_f.cc: Likewise.
* src/float/conv/cl_F_from_RA_f.cc: Likewise.
* src/float/dfloat/conv/cl_I_to_double.cc: Likewise.
* src/float/dfloat/conv/cl_RA_to_double.cc: Likewise.
* src/float/dfloat/elem/cl_DF_from_I.cc: Likewise.
* src/float/dfloat/elem/cl_DF_from_RA.cc: Likewise.
* src/float/dfloat/elem/cl_DF_scale.cc: Likewise.
* src/float/dfloat/misc/cl_DF_digits.cc: Likewise.
* src/float/dfloat/misc/cl_DF_precision.cc: Likewise.
* src/float/elem/cl_F_scale.cc: Likewise.
* src/float/ffloat/conv/cl_I_to_float.cc: Likewise.
* src/float/ffloat/conv/cl_RA_to_float.cc: Likewise.
* src/float/ffloat/elem/cl_FF_from_I.cc: Likewise.
* src/float/ffloat/elem/cl_FF_from_RA.cc: Likewise.
* src/float/ffloat/elem/cl_FF_scale.cc: Likewise.
* src/float/ffloat/misc/cl_FF_digits.cc: Likewise.
* src/float/ffloat/misc/cl_FF_precision.cc: Likewise.
* src/float/input/cl_F_read.cc: Likewise.
* src/float/lfloat/algebraic/cl_LF_sqrt.cc: Likewise.
* src/float/lfloat/elem/cl_LF_1plus.cc: Likewise.
* src/float/lfloat/elem/cl_LF_I_div.cc: Likewise.
* src/float/lfloat/elem/cl_LF_I_mul.cc: Likewise.
* src/float/lfloat/elem/cl_LF_div.cc: Likewise.
* src/float/lfloat/elem/cl_LF_from_I.cc: Likewise.
* src/float/lfloat/elem/cl_LF_from_RA.cc: Likewise.
* src/float/lfloat/elem/cl_LF_fround.cc: Likewise.
* src/float/lfloat/elem/cl_LF_ftrunc.cc: Likewise.
* src/float/lfloat/elem/cl_LF_futrunc.cc: Likewise.
* src/float/lfloat/elem/cl_LF_scale.cc: Likewise.
* src/float/lfloat/elem/cl_LF_to_I.cc: Likewise.
* src/float/lfloat/misc/cl_LF_digits.cc: Likewise.
* src/float/lfloat/misc/cl_LF_idecode.cc: Likewise.
* src/float/lfloat/misc/cl_LF_leninc.cc: Likewise.
* src/float/lfloat/misc/cl_LF_lenincx.cc: Likewise.
* src/float/lfloat/misc/cl_LF_precision.cc: Likewise.
* src/float/lfloat/misc/cl_LF_shortenrel.cc: Likewise.
* src/float/lfloat/misc/cl_LF_shortenwith.cc: Likewise.
* src/float/misc/cl_F_digits.cc: Likewise.
* src/float/misc/cl_F_epsneg.cc: Likewise.
* src/float/misc/cl_F_epspos.cc: Likewise.
* src/float/misc/cl_F_leastneg.cc: Likewise.
* src/float/misc/cl_F_leastpos.cc: Likewise.
* src/float/misc/cl_F_mostneg.cc: Likewise.
* src/float/misc/cl_F_mostpos.cc: Likewise.
* src/float/misc/cl_F_precision.cc: Likewise.
* src/float/misc/cl_F_rational.cc: Likewise.
* src/float/misc/cl_F_shortenrel.cc: Likewise.
* src/float/output/cl_F_dprint.cc: Likewise.
* src/float/random/cl_F_random.cc: Likewise.
* src/float/sfloat/elem/cl_SF_from_I.cc: Likewise.
* src/float/sfloat/elem/cl_SF_from_RA.cc: Likewise.
* src/float/sfloat/elem/cl_SF_scale.cc: Likewise.
* src/float/sfloat/misc/cl_SF_digits.cc: Likewise.
* src/float/sfloat/misc/cl_SF_precision.cc: Likewise.
* src/float/transcendental/cl_F_atanhx.cc: Likewise.
* src/float/transcendental/cl_F_atanx.cc: Likewise.
* src/float/transcendental/cl_F_catalanconst_f.cc: Likewise.
* src/float/transcendental/cl_F_cos.cc: Likewise.
* src/float/transcendental/cl_F_cosh.cc: Likewise.
* src/float/transcendental/cl_F_coshsinh.cc: Likewise.
* src/float/transcendental/cl_F_cossin.cc: Likewise.
* src/float/transcendental/cl_F_eulerconst_f.cc: Likewise.
* src/float/transcendental/cl_F_exp1_f.cc: Likewise.
* src/float/transcendental/cl_F_expx.cc: Likewise.
* src/float/transcendental/cl_F_ln10_f.cc: Likewise.
* src/float/transcendental/cl_F_ln2_f.cc: Likewise.
* src/float/transcendental/cl_F_lnx.cc: Likewise.
* src/float/transcendental/cl_F_pi_f.cc: Likewise.
* src/float/transcendental/cl_F_sin.cc: Likewise.
* src/float/transcendental/cl_F_sinh.cc: Likewise.
* src/float/transcendental/cl_F_sinhx.cc: Likewise.
* src/float/transcendental/cl_F_sinx.cc: Likewise.
* src/float/transcendental/cl_F_tran.h: Likewise.
* src/float/transcendental/cl_F_zeta_int_f.cc: Likewise.
* src/float/transcendental/cl_LF_atan_recip.cc: Likewise.
* src/float/transcendental/cl_LF_atanh_recip.cc: Likewise.
* src/float/transcendental/cl_LF_catalanconst.cc: Likewise.
* src/float/transcendental/cl_LF_coshsinh_aux.cc: Likewise.
* src/float/transcendental/cl_LF_cossin_aux.cc: Likewise.
* src/float/transcendental/cl_LF_eulerconst.cc: Likewise.
* src/float/transcendental/cl_LF_exp1.cc: Likewise.
* src/float/transcendental/cl_LF_exp_aux.cc: Likewise.
* src/float/transcendental/cl_LF_pi.cc: Likewise.
* src/float/transcendental/cl_LF_ratseries.cc: Likewise.
* src/float/transcendental/cl_LF_ratseries_.cc: Likewise.
* src/float/transcendental/cl_LF_ratseries_a.cc: Likewise.
* src/float/transcendental/cl_LF_ratseries_ab.cc: Likewise.
* src/float/transcendental/cl_LF_ratseries_b.cc: Likewise.
* src/float/transcendental/cl_LF_ratseries_p.cc: Likewise.
* src/float/transcendental/cl_LF_ratseries_pa.cc: Likewise.
* src/float/transcendental/cl_LF_ratseries_pab.cc: Likewise.
* src/float/transcendental/cl_LF_ratseries_pb.cc: Likewise.
* src/float/transcendental/cl_LF_ratseries_pq.cc: Likewise.
* src/float/transcendental/cl_LF_ratseries_pqa.cc: Likewise.
* src/float/transcendental/cl_LF_ratseries_pqab.cc: Likewise.
* src/float/transcendental/cl_LF_ratseries_pqb.cc: Likewise.
* src/float/transcendental/cl_LF_ratseries_q.cc: Likewise.
* src/float/transcendental/cl_LF_ratseries_qa.cc: Likewise.
* src/float/transcendental/cl_LF_ratseries_qab.cc: Likewise.
* src/float/transcendental/cl_LF_ratseries_qb.cc: Likewise.
* src/float/transcendental/cl_LF_ratseries_stream_pq.cc: Likewise.
* src/float/transcendental/cl_LF_ratseries_stream_pqa.cc: Likewise.
* src/float/transcendental/cl_LF_ratseries_stream_pqab.cc: Likewise.
* src/float/transcendental/cl_LF_ratseries_stream_pqb.cc: Likewise.
* src/float/transcendental/cl_LF_ratsumseries_pqcd.cc: Likewise.
* src/float/transcendental/cl_LF_ratsumseries_pqcd_aux.cc: Likewise.
* src/float/transcendental/cl_LF_ratsumseries_pqd.cc: Likewise.
* src/float/transcendental/cl_LF_ratsumseries_pqd_aux.cc: Likewise.
* src/float/transcendental/cl_LF_tran.h: Likewise.
* src/float/transcendental/cl_LF_zeta3.cc: Likewise.
* src/float/transcendental/cl_LF_zeta_int.cc: Likewise.
* src/integer/algebraic/cl_I_rootp_I.cc: Likewise.
* src/integer/algebraic/cl_I_rootp_aux.cc: Likewise.
* src/integer/bitwise/cl_I_ash.cc: Likewise.
* src/integer/bitwise/cl_I_ash_I.cc: Likewise.
* src/integer/bitwise/cl_I_byte.h: Likewise.
* src/integer/bitwise/cl_I_fullbyte.cc: Likewise.
* src/integer/bitwise/cl_I_ilength.cc: Likewise.
* src/integer/bitwise/cl_I_ldb.cc: Likewise.
* src/integer/bitwise/cl_I_ldbtest.cc: Likewise.
* src/integer/bitwise/cl_I_ldbx.cc: Likewise.
* src/integer/bitwise/cl_I_ldbxtest.cc: Likewise.
* src/integer/bitwise/cl_I_logbitp.cc: Likewise.
* src/integer/bitwise/cl_I_logbitp_I.cc: Likewise.
* src/integer/bitwise/cl_I_logcount.cc: Likewise.
* src/integer/bitwise/cl_I_mkf.cc: Likewise.
* src/integer/bitwise/cl_I_mkfx.cc: Likewise.
* src/integer/cl_I.h: Likewise.
* src/integer/conv/cl_I_to_digits.cc: Likewise.
* src/integer/conv/cl_I_digits_need.cc: Likewise.
* src/integer/conv/cl_I_from_digits.cc: Likewise.
* src/integer/gcd/cl_I_gcd.cc: Likewise.
* src/integer/gcd/cl_I_xgcd.cc: Likewise.
* src/integer/misc/cl_I_eqhashcode.cc: Likewise.
* src/integer/misc/cl_I_ord2.cc: Likewise.
* src/integer/misc/cl_I_power2p.cc: Likewise.
* src/integer/output/cl_I_cached_power.h (cached_power_table): allow
for 40 elements.
* src/integer/output/cl_I_decstring.cc: Use uintC instead of uintL
where appropriate.
* src/integer/output/cl_I_print.cc: Likewise.
* src/integer/output/cl_I_print_string.cc: Likewise.
* src/modinteger/cl_MI.cc: Likewise.
* src/modinteger/cl_MI_lshift.cc: Likewise.
* src/modinteger/cl_MI_montgom.h: Likewise.
* src/modinteger/cl_MI_pow2.h: Likewise.
* src/modinteger/cl_MI_pow2m1.h: Likewise.
* src/modinteger/cl_MI_pow2p1.h: Likewise.
* src/modinteger/cl_MI_rshift.cc: Likewise.
* src/modinteger/cl_MI_std.h: Likewise.
* src/numtheory/cl_IF_millerrabin.cc: Likewise.
* src/numtheory/cl_nt_isprobprime.cc: Likewise.
* src/numtheory/cl_nt_sqrtmodp.cc: Likewise.
* src/polynomial/elem/cl_UP_GF2.h: Likewise.
* src/real/conv/cl_F_from_R_f.cc: Likewise.
* src/real/format-output/cl_fmt_floatstring.cc: Likewise.
* src/real/input/cl_R_read.cc: Likewise.
* src/vector/cl_GV_I.cc: Likewise.
* src/vector/cl_GV_I_copy.cc: Likewise.
* src/vector/cl_GV_number.cc: Likewise.
* src/vector/cl_GV_number_copy.cc: Likewise.
* src/vector/cl_SV_copy.cc: Likewise.
* src/vector/cl_SV_number.cc: Likewise.
* src/vector/cl_SV_ringelt.cc: Likewise.
* tests/main.cc: Likewise.
* tests/test_I_ilength.cc: Likewise.
* tests/test_I_ord2.cc: Likewise.
19 years ago
Richard Kreckel
6fdd87f5e7
* Cumulative patch including Bruno's work on large fixnums on 64 bit machines.
19 years ago
Richard Kreckel
8d0e9dadb8
* include/cln/modules.h (CL_OUTPUT_LABEL): Work around redundant
duplication of basic blocks on m68k.
20 years ago
Richard Kreckel
8dd3e6cf4b
* include/cln/modules.h (CL_JUMP_TO): Fix mips* brokenness.
20 years ago
Bruno Haible
134b80ebc1
Work around g++ 4.0 "duplicated labels" problem.
20 years ago
Richard Kreckel
e269351d54
The patch of 2005-05-01 made it impossible to test the type of a cl_UP
by comparing with &cl_class_univpoly_ring. We need an alternative:
* include/cln/object.h (cl_class_flags_modint_ring): New #define...
* src/polynomial/elem/cl_UP.cc (cl_class_univpoly_ring): ...used here.
* src/polynomial/elem/cl_UP_GF2.h: Likewise.
* src/polynomial/elem/cl_UP_MI.h: Likewise.
* src/polynomial/elem/cl_UP_gen.h: Likewise.
* src/polynomial/elem/cl_UP_number.h: Likewise.
20 years ago
Richard Kreckel
a130a4bad5
*** empty log message ***
20 years ago
Richard Kreckel
77bcf72d79
* include/cln/config.h.in: Add support for PowerPC 64 CPU.
* include/cln/modules.h: Likewise.
* include/cln/object.h: Likewise.
* include/cln/types.h: Likewise.
20 years ago
Richard Kreckel
2ebe834823
Make out of the box build on x86_64 system with complete 32 bit
userland possible
* include/cln/config.h.in: Don't #define __x86_64__ when
__i386__ is defined.
* src/base/digitseq/cl_asm_x86_64_.cc: New file.
* doc/cln.tex: Revert workaround description introduced 2005-05-02.
20 years ago
Richard Kreckel
6d4cabf35e
Fix crashes in find_univpoly_ring and related functions
* include/cln/modinteger.h: Remove vptr from cl_heap_modint_ring;
remove declaration of cl_class cl_class_modint_ring.
* include/cln/univpoly.h: Remove vptr from cl_heap_univpoly_ring;
remove declaration of cl_class_univpoly_ring.
* include/cln/object.h: cl_class_flags_modint_ring: New #define...
* src/modinteger/cl_MI.cc: ...used in cl_class_modint_ring.
* src/modinteger/cl_MI_fix16.h: No vptr, but static dtor and type flag.
* src/modinteger/cl_MI_fix29.h: Likewise.
* src/modinteger/cl_MI_fix32.h: Likewise.
* src/modinteger/cl_MI_int32.h: Likewise.
* src/modinteger/cl_MI_montgom.h: Likewise.
* src/modinteger/cl_MI_pow2: Likewise.
* src/modinteger/cl_MI_pow2m1.h: Likewise.
* src/modinteger/cl_MI_pow2p1.h: Likewise.
* src/modinteger/cl_MI_std.h: Likewise.
* src/polynomial/elem/cl_UP.cc (cl_make_univpoly_ring): Compare with
cl_class_flags_modint_ring, not with cl_class_modint_ring.
* src/polynomial/elem/cl_UP_GF2.h (cl_class_num_univpoly_ring): New.
* src/polynomial/elem/cl_UP_MI.h (cl_class_modint_univpoly_ring): New.
* src/polynomial/elem/cl_UP_gen.h (cl_class_gen_univpoly_ring): New.
* src/polynomial/elem/cl_UP_number.h (cl_class_num_univpoly_ring): New.
Reported by Ralf Goertz <R_Goertz@web.de>.
20 years ago
Richard Kreckel
63aedca00b
* include/cln/string.h: Declare cl_string.
20 years ago
Richard Kreckel
1f0efb29d4
Disambiguate binary operators of CLN types with float/double
* include/cln/dfloat.h: Add binary operator overloads for arguments of
type double.
* include/cln/ffloat.h: Likewise, for arguments of type float.
* include/cln/float.h: Likewise, both for arguments of types double and
float.
* include/cln/real.h: Likewise.
Reported by Isidro Cachadiña Gutiérrez <icacha@unex.es>.
----------------------------------------------------------------------
include/cln/dfloat.h include/cln/ffloat.h CVS: include/cln/float.h
include/cln/real.h CVS:
----------------------------------------------------------------------
20 years ago
Richard Kreckel
b8a5b7150b
* include/cln/types.h: Use 64 bit digits on x86_64 CPU.
20 years ago
Richard Kreckel
089003015a
Support for little-endian Mips, second shot
* src/base/digitseq/cl_asm_mipsel_.cc: New file...
* src/base/digitseq/cl_asm_cc: ...used here.
* src/base/digitseq/cl_asm.h: Include cl_asm_mips.h for any endianness.
* include/cln/object.h: Set alignment for mipsel explicitly.
20 years ago
Richard Kreckel
abbb561b2c
Support for little-endian Mips
* include/cln/config.h.in: Add __mipsel__.
* include/cln/modules.h: For Mips, this is endianness-agnostic.
* src/base/digitseq/cl_asm_.cc, src/base/digitseq/cl_asm.h:
Mask out assembler for little-endian Mips.
21 years ago
Bruno Haible
2b4e46a517
Fix link error on MacOS X.
21 years ago