Alexei Sheplyakov
5ec5ca2758
Get rid of CL_REQUIRE/CL_PROVIDE(cl_F_ln2_var).
Turn cl_[SDFL]F_ln2 global variables into functions (which return a constant
reference to the static value) in order to avoid static initialization order
problems.
17 years ago
Alexei Sheplyakov
7069712895
Get rid of CL_REQUIRE/CL_PROVIDE(cl_F_pi_var).
Turn cl_[SDFL]F_pi global variables into functions (which return a constant
reference to the static value) in order to avoid static initialization order
problems.
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
Richard Kreckel
c706f4b04e
Re-esatblish 1.2.0 ABI, broken 2008-02-22 [Alexei Sheplyakov].
* src/float/input/cl_F_readparsed.cc: Add obsolete signature with index
args uintL.
* src/integer/input/cl_I_readparsed.cc: Likewise.
* src/rational/input/cl_RA_readparsed.cc: Likewise.
17 years ago
Richard Kreckel
1d962ba9ca
Re-establish ABI, broken 2008-01-20.
* src/float/ffloat/conv/cl_FF_from_float.cc: Add obsolete signature of
cl_float_to_FF_pointer.
* src/float/dfloat/conv/cl_DF_from_double.cc: Add obsolete signature of
cl_double_to_DF_pointer.
17 years ago
Bruno Haible
f3f282f3c6
Fix hack from 2008-01-20 that broke on ARM.
17 years ago
Richard Kreckel
3a8c34e9a6
Make index variables uintC.
17 years ago
Bruno Haible
758fdfc575
Avoid gcc warning about "unused variable".
18 years ago
Bruno Haible
11c6b0b290
Avoid gcc warnings about "statement without effect".
18 years ago
Bruno Haible
137d5f385f
Avoid gcc warnings about type-punning and "... break strict-aliasing rules".
18 years ago
Richard Kreckel
ce250e91fb
Fix linking problems on some platforms caused by inline/non-inline versions
of same functions (obsoletes MAYBE_INLINE) [by Alexei Sheplyakov].
18 years ago
Richard Kreckel
8f3cb84552
* Fix missing templatization of truncated series.
18 years ago
Richard Kreckel
76ff0ad8c1
Make some functions more memory efficient:
* src/float/transcendental/cl_LF_tran.h (eval_rational_series): The
evaluation of streamed rational series may profit from shift-counting Q,
too. Introduce a template parameter to determine whether shift-counting
is to be used or not.
* src/float/transcendental/cl_LF_ratseries_pqb.cc: Introduce template
parameter.
* src/float/transcendental/cl_LF_ratseries_pqa.cc: Likewise.
* src/float/transcendental/cl_LF_ratseries_pqab.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_q.cc: Likewise, added
overload for streamed expansion.
* src/float/transcendental/cl_LF_ratseries_qb.cc: Likewise.
* src/float/transcendental/cl_LF_ratseries_pq.cc: Introduce template
parameter, added overload for streamed expansion using shift-counts.
* src/float/transcendental/cl_LF_zeta3.cc: Adapt to above changes.
* src/float/transcendental/cl_LF_pi.cc: Likewise.
* src/float/transcendental/cl_LF_eulerconst.cc: Likewise.
* src/float/transcendental/cl_LF_catalanconst.cc: Likewise.
* src/float/transcendental/cl_LF_cossin_aux.cc: Likewise.
* src/float/transcendental/cl_LF_coshsinh_aux.cc: Likewise.
* src/float/transcendental/cl_LF_atanh_recip.cc: Use streamed series.
* src/float/transcendental/cl_LF_atan_recip.cc: Likewise.
* src/float/transcendental/cl_LF_exp1.cc: Likewise.
* src/float/transcendental/cl_LF_exp_aux.cc: Likewise.
* src/float/transcendental/cl_LF_ratseries.cc: Removed.
18 years ago
Richard Kreckel
f56b40a316
* Fix typos in dead code introduced in CLN 1.1.0.
18 years ago
Richard Kreckel
3c77def744
* src/float/transcendental/cl_F_lnx.cc: Make actuallen of type uintC.
* src/float/transcendental/cl_F_expx.cc: Likewise.
* src/float/transcendental/cl_F_sinhx.cc: Likewise.
* src/float/transcendental/cl_F_sinx.cc: Likewise.
18 years ago
Richard Kreckel
e9d3c7fabf
* src/float/lfloat/cl_LF.h (cl_heap_lfloat): Change len type to uintC.
18 years ago
Richard Kreckel
a5a43ddb1b
Fix compilation on CYGWIN:
* src/float/transcendental/cl_LF_zeta_int.cc: Avoid leading underscores
in variable names.
* src/float/transcendental/cl_LF_eulerconst.cc: Likewise.
Reported by Chris Bouchard <cbouchrd@uiuc.edu>.
18 years ago
Richard Kreckel
665c18cd37
* */*: Convert encoding from ISO 8859-1 to UTF-8.
18 years ago
Richard Kreckel
962f4b052d
Truncated binary splitting for even more memory efficiency:
* src/float/transcendental/cl_LF_tran.h: Added new overloads. See below.
* src/float/transcendental/cl_LF_ratseries_stream_pq.cc: Removed and
moved everything to...
* src/float/transcendental/cl_LF_ratseries_pq.cc: ...here. Added an
overload for truncated expansion.
* src/float/transcendental/cl_LF_ratseries_stream_pqa.cc: Removed and
moved everything to...
* src/float/transcendental/cl_LF_ratseries_pqa.cc: ...here. Added an
overload for truncated expansion.
* src/float/transcendental/cl_LF_ratseries_stream_pqb.cc: Removed and
moved everything to...
* src/float/transcendental/cl_LF_ratseries_pqb.cc: ...here. Added an
overload for truncated expansion.
* src/float/transcendental/cl_LF_ratseries_stream_pqab.cc: Removed and
moved everything to...
* src/float/transcendental/cl_LF_ratseries_pqab.cc: ...here. Added an
overload for truncated expansion.
* src/float/transcendental/cl_LF_ratsumseries_pqcd_aux.cc: Added
overloads for streamed and truncated expansion.
* src/float/transcendental/cl_LF_ratsumseries_pqcd.cc: Likewise.
* src/float/transcendental/cl_LF_ratsumseries_stream_pqd_aux.cc: Removed
and moved everything to...
* src/float/transcendental/cl_LF_ratsumseries_pqd_aux.cc: ...here. Added
an overload for truncated expansion.
* src/float/transcendental/cl_LF_ratsumseries_stream_pqd.cc: Removed
and moved everything to...
* src/float/transcendental/cl_LF_ratsumseries_pqd.cc: ...here. Added an
overload for truncated expansion.
* src/float/transcendental/cl_LF_pi.cc: Use truncated series.
* src/float/transcendental/cl_LF_catalanconst.cc: Likewise.
* src/float/transcendental/cl_LF_eulerconst.cc: Likewise.
* src/float/transcendental/cl_LF_zeta_int.cc: Likewise.
* src/float/transcendental/cl_LF_zeta3.cc: Likewise.
18 years ago
Richard Kreckel
4109ef07d7
More memory efficient Euler-Mascheroni constant:
* src/float/transcendental/cl_LF_tran.h (cl_pqd_series_stream): New.
* src/float/transcendental/cl_LF_ratsumseries_stream_pqd.cc: New file.
* src/float/transcendental/cl_LF_ratsumseries_stream_pqd_aux.cc: New file.
* src/float/transcendental/cl_LF_eulerconst.cc: Compute series coefficients
on demand, using a series stream object.
18 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
Bruno Haible
308a067c42
Add reference to Lupas' paper.
18 years ago
Richard Kreckel
38f5f03b3f
More memory efficient constants:
* src/float/transcendental/cl_LF_pi.cc (compute_pi_ramanujan_163_fast):
Compute series coefficients on demand, using a series stream object.
* src/float/transcendental/cl_LF_zeta3.cc (zeta3): Likewise.
* src/float/transcendental/cl_LF_catalanconst.cc
(compute_catalanconst_ramanujan_fast): Likewise.
(compute_catalanconst_lupas): New function.
(compute_catalanconst): Simplify, based on new benchmark.
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.
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
Bruno Haible
c4e47eb4f1
Make the long-float overflow check work on 64-bit platforms.
20 years ago
Richard Kreckel
7792c43d12
* src/integer/input/cl_I_read_stream.cc (read_integer): Fix a bug
that caused radix specifiers to not work when reading from a stream.
* src/rational/input/cl_RA_read_stream.cc (read_rational): Likewise.
* src/real/input/cl_R_read_stream.cc (read_real): Likewise.
* src/float/input/cl_F_read_stream.cc (read_float): Likewise.
* src/complex/input/cl_N_read_stream.cc (read_complex): Likewise.
21 years ago
Richard Kreckel
541905ab43
* Remove unused labels.
21 years ago
Richard Kreckel
a8369235e2
* Change all C include headers to ISO style within C++ code.
21 years ago
Bruno Haible
ffca5a5837
Fix a bug occurring with extremely high exponents.
21 years ago
Bruno Haible
b68181a566
Fix an extreme case in long-float multiplication.
21 years ago
Bruno Haible
9d39b1f00e
Force link-time references despite optimizations done by g++.
23 years ago
Richard Kreckel
660c19b019
* revert broken indentation.
24 years ago
Richard Kreckel
b485d76c78
* src/float/transcendental/cl_F_sinx.cc (sinx_naive): For small
values of x, return square(x) instead of x.
* src/float/transcendental/cl_F_sinhx.cc (sinhx_naive): Likewise.
24 years ago
Bruno Haible
85764f37ef
Add a literature reference for the formula.
24 years ago
Richard Kreckel
fbb507f3fd
* src/float/base/cl_ieee.cc: try to do magic to the FPU only if
_FPU_IEEE is really defined.
* include/cln/modules.h: change assembler labels from `label' to
`label:' on hppa, needed by Linux (see comment).
* autoconf/acinclude.m4: new file (for storing CLN-specific macros).
* Makefile.devel: adjusted.
* autoconf/aclocal.m4: regenerate.
* src/base/low/cl_low_mul.cc: moved POD variables that are declared
extern "C" elsewhere out of the namespace.
* src/base/low/cl_low_div.cc: Likewise.
24 years ago
Richard Kreckel
bc79110a42
* autoconf/floatparam.c (double_wordorder_bigendian_p): new symbol.
* src/float/dfloat/cl_DF.h: Check for double_wordorder_bigendian_p.
24 years ago
Richard Kreckel
f3b29e52ea
* */*: cl_istream -> std::istream, cl_ostream -> std::ostream.
25 years ago
Richard Kreckel
f57f23a99a
* */*: Removed problematic stdin, stdout and stderr definitions.
Use std::cin, std::cout, std::cerr instead (obsoletes 2000-10-29).
25 years ago
Richard Kreckel
2f48af8059
* include/cln/object.h (cl_combine): define additional signatures, if
HAVE_LONGLONG is defined, in order to keep the compiler happy.
* src/base/cl_macros.h: include "cln/types.h", since we need HAVE_DD...
* src/base/cl_macros.h (bit): ...for this macro...
* src/base/cl_macros.h (minus_bit): ...and this one.
* src/base/cl_low.h: include "cln/types.h", since we need HAVE_DD...
* src/base/cl_low.h (logcount_64): ...for this macro.
* src/base/random/cl_UL_random.cc (random32): if HAVE_DD a is an ULL.
* src/integer/gcd/cl_I_gcd_aux2.cc (floorDD): fixed algorithmic bug
that turned up when intDsize==32 and cl_word_size==64.
* src/float/dfloat/elem/cl_DF_div.cc (operator/): fixed a missing cast
to uint64 that turned up when intDsize==32 and cl_word_size==64.
25 years ago
Richard Kreckel
f24a1dab87
* include/cln/number.h (As): Fix it in namespace by suffixing `_As'
to the appropiate method instead of prefixing `as_'.
* src/complex/misc/cl_N_as.cc (cl_N_As): Likewise.
* src/real/misc/cl_R_as.cc (cl_R_As): Likewise.
* src/rational/misc/cl_RA_as.cc (cl_RA_As): Likewise.
* src/integer/misc/cl_I_as.cc (cl_I_As): Likewise.
* src/float/misc/cl_F_as.cc (cl_F_As): Likewise.
* src/float/sfloat/misc/cl_SF_as.cc (cl_SF_As): Likewise.
* src/float/lfloat/misc/cl_LF_as.cc (cl_LF_As): Likewise.
* src/float/ffloat/misc/cl_FF_as.cc (cl_FF_As): Likewise.
* src/float/dfloat/misc/cl_DF_as.cc (cl_DF_As): Likewise.
25 years ago
Richard Kreckel
850abfde7f
* All Files have been modified for inclusion of namespace cln;
I am too lazy for a detailed discussion of all the changes.
Many identifiers got their `cl_' stripped off. Ok, this is a
clumpsy CVS log-entry. Promise: more will soon go into the
file ChangeLog. I apologize for the inconvenience. :-(
25 years ago
Bruno Haible
53cf241b08
Accept floats with 1.2L0_100 syntax when reading from streams, not only when
reading from strings.
25 years ago
Bruno Haible
9c6ab33803
Distinguish between cl_word_size and the ABI's pointer size.
25 years ago