44#include <cln/output.h>
45#include <cln/integer_io.h>
46#include <cln/integer_ring.h>
47#include <cln/rational_io.h>
48#include <cln/rational_ring.h>
49#include <cln/lfloat_class.h>
50#include <cln/lfloat_io.h>
51#include <cln/real_io.h>
52#include <cln/real_ring.h>
53#include <cln/complex_io.h>
54#include <cln/complex_ring.h>
55#include <cln/numtheory.h>
96 if (i < (1L << (cl_value_len-1)) && i >= -(1L << (cl_value_len-1)))
99 value = cln::cl_I(
static_cast<long>(i));
114#if cl_value_len >= 32
115 value = cln::cl_I(i);
117 if (i < (1UL << (cl_value_len-1)))
118 value = cln::cl_I(i);
120 value = cln::cl_I(
static_cast<unsigned long>(i));
128 value = cln::cl_I(i);
135 value = cln::cl_I(i);
141 value = cln::cl_I(i);
147 value = cln::cl_I(i);
157 throw std::overflow_error(
"division by zero");
168 value = cln::cl_float(d, cln::default_float_format);
177 cln::cl_N ctorval = 0;
182 std::string::size_type delim;
185 if (ss.at(0) !=
'+' && ss.at(0) !=
'-' && ss.at(0) !=
'#')
190 while ((delim = ss.find(
"e"))!=std::string::npos)
191 ss.replace(delim,1,
"E");
197 bool imaginary =
false;
198 delim = ss.find_first_of(std::string(
"+-"),1);
200 if (delim!=std::string::npos && ss.at(delim-1)==
'E')
201 delim = ss.find_first_of(std::string(
"+-"),delim+1);
202 term = ss.substr(0,delim);
203 if (delim!=std::string::npos)
204 ss = ss.substr(delim);
206 if (term.find(
"I")!=std::string::npos) {
208 term.erase(term.find(
"I"),1);
210 if (term.find(
"*")!=std::string::npos)
211 term.erase(term.find(
"*"),1);
217 if (term.find(
'.')!=std::string::npos || term.find(
'E')!=std::string::npos) {
228 if (term.find(
"E")==std::string::npos)
231 term = term.replace(term.find(
"E"),1,
"e");
233 term +=
"_" + std::to_string((
unsigned)
Digits);
236 ctorval = ctorval + cln::complex(cln::cl_I(0),cln::cl_F(term.c_str()));
238 ctorval = ctorval + cln::cl_F(term.c_str());
242 ctorval = ctorval + cln::complex(cln::cl_I(0),cln::cl_R(term.c_str()));
244 ctorval = ctorval + cln::cl_R(term.c_str());
246 }
while (delim != std::string::npos);
270 cln::cl_F
x = cln::cl_float(dec.mantissa, cln::default_float_format);
271 x = cln::scale_float(
x, dec.exponent);
272 cln::cl_F sign = cln::cl_float(dec.sign, cln::default_float_format);
273 x = cln::float_sign(sign,
x);
282 cln::cl_idecoded_float dec;
283 s >> dec.sign >> dec.mantissa >> dec.exponent;
290 inherited::read_archive(
n, sym_lst);
295 if (
n.find_string(
"number", str)) {
296 std::istringstream s(str);
310 value = cln::complex(re, im);
317 value = cln::complex(re, im);
324 value = cln::complex(re, im);
339 const cln::cl_idecoded_float dec = cln::integer_decode_float(cln::the<cln::cl_F>(
n));
340 s << dec.sign <<
' ' << dec.mantissa <<
' ' << dec.exponent;
345 inherited::archive(
n);
349 const cln::cl_R re = cln::realpart(
value);
350 const cln::cl_R im = cln::imagpart(
value);
351 const bool re_rationalp = cln::instanceof(re, cln::cl_RA_ring);
352 const bool im_rationalp = cln::instanceof(im, cln::cl_RA_ring);
356 std::ostringstream s;
357 if (re_rationalp && im_rationalp)
359 else if (zerop(im)) {
363 }
else if (re_rationalp) {
369 }
else if (im_rationalp) {
382 n.add_string(
"number", s.str());
398 cln::cl_print_flags ourflags;
399 if (cln::instanceof(
x, cln::cl_RA_ring)) {
401 if (cln::instanceof(
x, cln::cl_I_ring) ||
402 !is_a<print_latex>(
c)) {
403 cln::print_real(
c.s, ourflags,
x);
408 cln::print_real(
c.s, ourflags, cln::abs(cln::numerator(cln::the<cln::cl_RA>(
x))));
410 cln::print_real(
c.s, ourflags, cln::denominator(cln::the<cln::cl_RA>(
x)));
417 ourflags.default_float_format = cln::float_format(cln::the<cln::cl_F>(
x));
418 cln::print_real(
c.s, ourflags,
x);
429 const int max_cln_int = 536870911;
430 if (
x >= cln::cl_I(-max_cln_int) &&
x <= cln::cl_I(max_cln_int))
431 c.s << cln::cl_I_to_int(
x) <<
".0";
433 c.s << cln::double_approx(
x);
441 if (cln::instanceof(
x, cln::cl_I_ring)) {
446 }
else if (cln::instanceof(
x, cln::cl_RA_ring)) {
449 const cln::cl_I
numer = cln::numerator(cln::the<cln::cl_RA>(
x));
450 const cln::cl_I
denom = cln::denominator(cln::the<cln::cl_RA>(
x));
465 c.s << cln::double_approx(
x);
469template<
typename T1,
typename T2>
470static inline bool coerce(T1& dst,
const T2& arg);
480 static const cln::cl_I cl_max_int =
481 (cln::cl_I)(
long)(std::numeric_limits<int>::max());
482 static const cln::cl_I cl_min_int =
483 (cln::cl_I)(
long)(std::numeric_limits<int>::min());
484 if ((arg >= cl_min_int) && (arg <= cl_max_int)) {
485 dst = cl_I_to_int(arg);
494 static const cln::cl_I cl_max_uint =
495 (cln::cl_I)(
unsigned long)(std::numeric_limits<unsigned int>::max());
496 if ((! minusp(arg)) && (arg <= cl_max_uint)) {
497 dst = cl_I_to_uint(arg);
508 if (cln::instanceof(
x, cln::cl_I_ring)) {
512 if (
coerce(dst, cln::the<cln::cl_I>(
x))) {
515 c.s <<
'(' << dst <<
')';
520 c.s <<
"cln::cl_I(\"";
524 }
else if (cln::instanceof(
x, cln::cl_RA_ring)) {
527 cln::cl_print_flags ourflags;
528 c.s <<
"cln::cl_RA(\"";
529 cln::print_rational(
c.s, ourflags, cln::the<cln::cl_RA>(
x));
535 c.s <<
"cln::cl_F(\"";
543 const cln::cl_R
r = cln::realpart(
value);
544 const cln::cl_R i = cln::imagpart(
value);
567 c.s <<
"-" << imag_sym;
570 c.s << mul_sym << imag_sym;
584 c.s <<
"-" << imag_sym;
587 c.s << mul_sym << imag_sym;
591 c.s <<
"+" << imag_sym;
595 c.s << mul_sym << imag_sym;
616 std::ios::fmtflags oldflags =
c.s.flags();
617 c.s.setf(std::ios::scientific);
618 int oldprec =
c.s.precision();
621 if (is_a<print_csrc_double>(
c))
622 c.s.precision(std::numeric_limits<double>::digits10 + 1);
624 c.s.precision(std::numeric_limits<float>::digits10 + 1);
634 c.s <<
"std::complex<";
635 if (is_a<print_csrc_double>(
c))
647 c.s.precision(oldprec);
660 c.s <<
"cln::complex(";
670 c.s << std::string(level,
' ') <<
value
671 <<
" (" << class_name() <<
")" <<
" @" <<
this
672 << std::hex <<
", hash=0x" <<
hashvalue <<
", flags=0x" <<
flags << std::dec
678 c.s << class_name() <<
"('";
744 return n==0 ? *this :
_ex0;
755 if (!is_exactly_a<numeric>(other))
757 const numeric &o = ex_to<numeric>(other);
796 return numeric(cln::cl_float(1.0, cln::default_float_format) *
value);
891 if (cln::zerop(other.
value))
892 throw std::overflow_error(
"numeric::div(): division by zero");
906 if (cln::zerop(
value)) {
907 if (cln::zerop(other.
value))
908 throw std::domain_error(
"numeric::eval(): pow(0,0) is undefined");
909 else if (cln::zerop(cln::realpart(other.
value)))
910 throw std::domain_error(
"numeric::eval(): pow(0,I) is undefined");
911 else if (cln::minusp(cln::realpart(other.
value)))
912 throw std::overflow_error(
"numeric::eval(): division by zero");
933 return dynallocate<numeric>(
value + other.
value);
948 return dynallocate<numeric>(
value - other.
value);
965 return dynallocate<numeric>(
value * other.
value);
981 if (cln::zerop(cln::the<cln::cl_N>(other.
value)))
982 throw std::overflow_error(
"division by zero");
984 return dynallocate<numeric>(
value / other.
value);
1000 if (cln::zerop(
value)) {
1001 if (cln::zerop(other.
value))
1002 throw std::domain_error(
"numeric::eval(): pow(0,0) is undefined");
1003 else if (cln::zerop(cln::realpart(other.
value)))
1004 throw std::domain_error(
"numeric::eval(): pow(0,I) is undefined");
1005 else if (cln::minusp(cln::realpart(other.
value)))
1006 throw std::overflow_error(
"numeric::eval(): division by zero");
1011 return dynallocate<numeric>(cln::expt(
value, other.
value));
1054 if (cln::zerop(
value))
1055 throw std::overflow_error(
"numeric::inverse(): division by zero");
1064{ cln::cl_R
r = cln::realpart(
value);
1079 if (cln::zerop(
value))
1081 cln::cl_R
r = cln::realpart(
value);
1082 if (!cln::zerop(
r)) {
1088 if (cln::plusp(cln::imagpart(
value)))
1106 if (cln::instanceof(
value, cln::cl_R_ring) &&
1107 cln::instanceof(other.
value, cln::cl_R_ring))
1109 return cln::compare(cln::the<cln::cl_R>(
value), cln::the<cln::cl_R>(other.
value));
1112 cl_signean real_cmp = cln::compare(cln::realpart(
value), cln::realpart(other.
value));
1116 return cln::compare(cln::imagpart(
value), cln::imagpart(other.
value));
1130 return cln::zerop(
value);
1137 if (cln::instanceof(
value, cln::cl_R_ring))
1138 return cln::plusp(cln::the<cln::cl_R>(
value));
1146 if (cln::instanceof(
value, cln::cl_R_ring))
1147 return cln::minusp(cln::the<cln::cl_R>(
value));
1155 return cln::instanceof(
value, cln::cl_I_ring);
1162 return (cln::instanceof(
value, cln::cl_I_ring) && cln::plusp(cln::the<cln::cl_I>(
value)));
1169 return (cln::instanceof(
value, cln::cl_I_ring) && !cln::minusp(cln::the<cln::cl_I>(
value)));
1176 return (cln::instanceof(
value, cln::cl_I_ring) && cln::evenp(cln::the<cln::cl_I>(
value)));
1183 return (cln::instanceof(
value, cln::cl_I_ring) && cln::oddp(cln::the<cln::cl_I>(
value)));
1192 return (cln::instanceof(
value, cln::cl_I_ring)
1193 && cln::plusp(cln::the<cln::cl_I>(
value))
1194 && cln::isprobprime(cln::the<cln::cl_I>(
value)));
1202 return cln::instanceof(
value, cln::cl_RA_ring);
1209 return cln::instanceof(
value, cln::cl_R_ring);
1229 if (cln::instanceof(
value, cln::cl_I_ring))
1232 if (cln::instanceof(cln::realpart(
value), cln::cl_I_ring) &&
1233 cln::instanceof(cln::imagpart(
value), cln::cl_I_ring))
1244 if (cln::instanceof(
value, cln::cl_RA_ring))
1247 if (cln::instanceof(cln::realpart(
value), cln::cl_RA_ring) &&
1248 cln::instanceof(cln::imagpart(
value), cln::cl_RA_ring))
1261 return (cln::the<cln::cl_R>(
value) < cln::the<cln::cl_R>(other.
value));
1262 throw std::invalid_argument(
"numeric::operator<(): complex inequality");
1272 return (cln::the<cln::cl_R>(
value) <= cln::the<cln::cl_R>(other.
value));
1273 throw std::invalid_argument(
"numeric::operator<=(): complex inequality");
1283 return (cln::the<cln::cl_R>(
value) > cln::the<cln::cl_R>(other.
value));
1284 throw std::invalid_argument(
"numeric::operator>(): complex inequality");
1294 return (cln::the<cln::cl_R>(
value) >= cln::the<cln::cl_R>(other.
value));
1295 throw std::invalid_argument(
"numeric::operator>=(): complex inequality");
1305 return cln::cl_I_to_int(cln::the<cln::cl_I>(
value));
1315 return cln::cl_I_to_long(cln::the<cln::cl_I>(
value));
1324 return cln::double_approx(cln::realpart(
value));
1357 if (cln::instanceof(
value, cln::cl_I_ring))
1360 else if (cln::instanceof(
value, cln::cl_RA_ring))
1361 return numeric(cln::numerator(cln::the<cln::cl_RA>(
value)));
1364 const cln::cl_RA
r = cln::the<cln::cl_RA>(cln::realpart(
value));
1365 const cln::cl_RA i = cln::the<cln::cl_RA>(cln::imagpart(
value));
1366 if (cln::instanceof(
r, cln::cl_I_ring) && cln::instanceof(i, cln::cl_I_ring))
1368 if (cln::instanceof(
r, cln::cl_I_ring) && cln::instanceof(i, cln::cl_RA_ring))
1369 return numeric(cln::complex(
r*cln::denominator(i), cln::numerator(i)));
1370 if (cln::instanceof(
r, cln::cl_RA_ring) && cln::instanceof(i, cln::cl_I_ring))
1371 return numeric(cln::complex(cln::numerator(
r), i*cln::denominator(
r)));
1372 if (cln::instanceof(
r, cln::cl_RA_ring) && cln::instanceof(i, cln::cl_RA_ring)) {
1373 const cln::cl_I s = cln::lcm(cln::denominator(
r), cln::denominator(i));
1374 return numeric(cln::complex(cln::numerator(
r)*(cln::exquo(s,cln::denominator(
r))),
1375 cln::numerator(i)*(cln::exquo(s,cln::denominator(i)))));
1388 if (cln::instanceof(
value, cln::cl_I_ring))
1391 if (cln::instanceof(
value, cln::cl_RA_ring))
1392 return numeric(cln::denominator(cln::the<cln::cl_RA>(
value)));
1395 const cln::cl_RA
r = cln::the<cln::cl_RA>(cln::realpart(
value));
1396 const cln::cl_RA i = cln::the<cln::cl_RA>(cln::imagpart(
value));
1397 if (cln::instanceof(
r, cln::cl_I_ring) && cln::instanceof(i, cln::cl_I_ring))
1399 if (cln::instanceof(
r, cln::cl_I_ring) && cln::instanceof(i, cln::cl_RA_ring))
1400 return numeric(cln::denominator(i));
1401 if (cln::instanceof(
r, cln::cl_RA_ring) && cln::instanceof(i, cln::cl_I_ring))
1402 return numeric(cln::denominator(
r));
1403 if (cln::instanceof(
r, cln::cl_RA_ring) && cln::instanceof(i, cln::cl_RA_ring))
1404 return numeric(cln::lcm(cln::denominator(
r), cln::denominator(i)));
1419 if (cln::instanceof(
value, cln::cl_I_ring))
1420 return cln::integer_length(cln::the<cln::cl_I>(
value));
1440 return numeric(cln::exp(
x.to_cl_N()));
1452 throw pole_error(
"log(): logarithmic pole",0);
1453 return numeric(cln::log(
x.to_cl_N()));
1462 return numeric(cln::sin(
x.to_cl_N()));
1471 return numeric(cln::cos(
x.to_cl_N()));
1480 return numeric(cln::tan(
x.to_cl_N()));
1489 return numeric(cln::asin(
x.to_cl_N()));
1498 return numeric(cln::acos(
x.to_cl_N()));
1512 throw pole_error(
"atan(): logarithmic pole",0);
1513 return numeric(cln::atan(
x.to_cl_N()));
1529 return numeric(cln::atan(cln::the<cln::cl_R>(
x.to_cl_N()),
1530 cln::the<cln::cl_R>(y.
to_cl_N())));
1536 const cln::cl_N aux_p =
x.to_cl_N()+cln::complex(0,1)*y.
to_cl_N();
1537 if (cln::zerop(aux_p)) {
1539 throw pole_error(
"atan(): logarithmic pole",0);
1541 const cln::cl_N aux_m =
x.to_cl_N()-cln::complex(0,1)*y.
to_cl_N();
1542 if (cln::zerop(aux_m)) {
1544 throw pole_error(
"atan(): logarithmic pole",0);
1546 return numeric(cln::complex(0,-1)*cln::log(aux_p/cln::sqrt(aux_p*aux_m)));
1555 return numeric(cln::sinh(
x.to_cl_N()));
1564 return numeric(cln::cosh(
x.to_cl_N()));
1573 return numeric(cln::tanh(
x.to_cl_N()));
1582 return numeric(cln::asinh(
x.to_cl_N()));
1591 return numeric(cln::acosh(
x.to_cl_N()));
1600 return numeric(cln::atanh(
x.to_cl_N()));
1633 const cln::float_format_t &prec)
1637 cln::cl_N num = cln::complex(cln::cl_float(1, prec), 0);
1646 }
while (acc != acc+aug);
1652 const cln::float_format_t &prec)
1654 const cln::cl_R re = cln::realpart(
x);
1655 const cln::cl_R im = cln::imagpart(
x);
1656 if (re > cln::cl_F(
".5"))
1660 - cln::log(
x)*cln::log(1-
x));
1661 if ((re <= 0 && cln::abs(im) > cln::cl_F(
".75")) || (re < cln::cl_F(
"-.5")))
1663 return(- cln::square(cln::log(1-
x))/2
1665 if (re > 0 && cln::abs(im) > cln::cl_LF(
".75"))
1685 cln::float_format_t prec = cln::default_float_format;
1687 if (!instanceof(realpart(
value), cln::cl_RA_ring))
1688 prec = cln::float_format(cln::the<cln::cl_F>(cln::realpart(
value)));
1689 else if (!instanceof(imagpart(
value), cln::cl_RA_ring))
1690 prec = cln::float_format(cln::the<cln::cl_F>(cln::imagpart(
value)));
1693 return cln::zeta(2, prec);
1695 if (cln::abs(
value) > 1)
1697 return(- cln::square(cln::log(-
value))/2
1698 - cln::zeta(2, prec)
1706 const cln::cl_N x_ =
x.to_cl_N();
1709 const cln::cl_N result =
Li2_(x_);
1724 const int aux = (int)(cln::double_approx(cln::the<cln::cl_R>(
x.to_cl_N())));
1725 if (cln::zerop(
x.to_cl_N()-aux))
1726 return numeric(cln::zeta(aux));
1772 cln::cl_N A = (*current_vector)[0];
1774 for (
int i=1; i<size; ++i)
1786 coeffs =
new std::vector<cln::cl_N>[4];
1787 std::vector<cln::cl_N> coeffs_12(12);
1789 coeffs_12[0] =
"1.000000000000000002194974863102775496587";
1790 coeffs_12[1] =
"133550.502942477423232096703994753698903";
1791 coeffs_12[2] =
"-492930.93529936026920053070245469905582";
1792 coeffs_12[3] =
"741287.473697611642492293025524275986598";
1793 coeffs_12[4] =
"-585097.37760399665198416642641725036094";
1794 coeffs_12[5] =
"260425.270330385275465083772352301818652";
1795 coeffs_12[6] =
"-65413.3533961142651069690504470463782994";
1796 coeffs_12[7] =
"8801.45963508441793636152568413199291892";
1797 coeffs_12[8] =
"-564.805024129362118607692062642312799553";
1798 coeffs_12[9] =
"13.80379833961490898061357227729422691903";
1799 coeffs_12[10] =
"-0.0807817619724537563116612761921260762075";
1800 coeffs_12[11] =
"3.47974801622326717770813986587340515986E-5";
1801 coeffs[0].swap(coeffs_12);
1802 std::vector<cln::cl_N> coeffs_30(30);
1804 coeffs_30[0] =
"1.0000000000000000000000000000000000000000000000445658922238202528026977308762";
1805 coeffs_30[1] =
"1.40445649204966682962030786915579421135474600150789821268713805046080310901683E13";
1806 coeffs_30[2] =
"-1.4473384178280338809560100504713144673757322488310852336205875273000116908753E14";
1807 coeffs_30[3] =
"6.9392104219998816400402602197781299548036066538116472480223222192156630720206E14";
1808 coeffs_30[4] =
"-2.05552680548452350127164925238339710431333013110755662640014074226849466382297E15";
1809 coeffs_30[5] =
"4.21346047774975891986783355395961145235696863271597017695734168781011785582523E15";
1810 coeffs_30[6] =
"-6.3439111294220458481092019992445750626799029041090235945435769621790257585491E15";
1811 coeffs_30[7] =
"7.2684029986336427327225410026373012514882246322145965580608264703248155838791E15";
1812 coeffs_30[8] =
"-6.4784969409198000751978874152931803231807770528527455966624850088042561231024E15";
1813 coeffs_30[9] =
"4.5545745239457403086706103662737668418631761744785802123770605916210445083544E15";
1814 coeffs_30[10] =
"-2.54592491966737919409139938046543941491145224466411852277136834553178078105403E15";
1815 coeffs_30[11] =
"1.1356718195163150156198936885250451780214219874255251444701005988134747787666E15";
1816 coeffs_30[12] =
"-4.04275236298036712070700727222520609783336229393218886420197964965371362011123E14";
1817 coeffs_30[13] =
"1.14472757259832757229433124273590647229089622322597383276758880048004748372644E14";
1818 coeffs_30[14] =
"-2.56166271828342920179612184110684658183432315551120625854181503468327037516717E13";
1819 coeffs_30[15] =
"4.4861708254018935131376878973710146069395814469656232761173409397653101421558E12";
1820 coeffs_30[16] =
"-6.0657495816705687896607821799338217335976369800808791959096705890743701166037E11";
1821 coeffs_30[17] =
"6.21975328147406581536747878587069711930541459818297675578654403265380823122363E10";
1822 coeffs_30[18] =
"-4.7255003764027411113501086372508071116675161078057298991208060427341079636661E9";
1823 coeffs_30[19] =
"2.5814613908651936680441351265410235295992556406609945442133129515256889464315E8";
1824 coeffs_30[20] =
"-9752115.5047412418881417732027953903591189993329461844657371497174389592441887";
1825 coeffs_30[21] =
"242056.60372411758318197954509546521913927205056839365620249547101194072057318";
1826 coeffs_30[22] =
"-3686.17673045938850138289555088011327333352145765167200561022138925168680049115";
1827 coeffs_30[23] =
"31.3494924501834034405048975310989414795238339283146314931357877820190435258517";
1828 coeffs_30[24] =
"-0.130254774344853676030752542814176943723937677940441021884132211221409382350105";
1829 coeffs_30[25] =
"2.16625679868432886771581352257834967866602495378408740265571976698475288337338E-4";
1830 coeffs_30[26] =
"-1.05077239977528252603869373455592388508233760416601143477182890107978206726294E-7";
1831 coeffs_30[27] =
"8.5728436055212340846907439451102962820713733082683634385104363203776378266115E-12";
1832 coeffs_30[28] =
"-3.9175430218003196379961975369936752665267219444417121562332986822123821080906E-17";
1833 coeffs_30[29] =
"1.06841715008998384033789050831892757796251622802680860264598247667384268519263E-24";
1834 coeffs[1].swap(coeffs_30);
1835 std::vector<cln::cl_N> coeffs_60(60);
1837 coeffs_60[0] =
"1.000000000000000000000000000000000000000000000000000000000000000000000000000000000000007301368866363013444179014835363181183419450549774";
1838 coeffs_60[1] =
"2.13152397525281235754468356918725048606852617746577461250754322057711822075135461598274984226013367948201688447853106595646692682568953E26";
1839 coeffs_60[2] =
"-4.548529924829267669336610112411669181387790087825260737133755173032543313325682598833009521765336124891170163525664509845740222794717604E27";
1840 coeffs_60[3] =
"4.6879437426294973235875133160595324795437824160731608900005486977197800919261614723948577079551305728583507312310069280623018775850412E28";
1841 coeffs_60[4] =
"-3.10861265267020467624457768823845414206135580030123228715133927538323570190367768297139526311161786169387040978744732051184844409191231E29";
1842 coeffs_60[5] =
"1.490599577483981276717037178787147902256911799467742317379590487947009001487476793680630580522955117318124168494382267800788736334308E30";
1843 coeffs_60[6] =
"-5.50755504045738806940255910881807353185463857314393682608295373644157298562106198431098170107741597645409216199785852260920496247655646E30";
1844 coeffs_60[7] =
"1.631668518639067070100242032960081591016027803392225476881353619523143028349554534276268195490790113905102273979193269720381236708853746E31";
1845 coeffs_60[8] =
"-3.9823057865511431381368541930378720290638930941334849821428293955264049587073723565727061718251925950255036781219414607001763225298119E31";
1846 coeffs_60[9] =
"8.16425963140638737297557821827674142140347732117757126331775708561852858085860735359056658172512163756926693444882201094206795155146202E31";
1847 coeffs_60[10] =
"-1.426548236351667330492229413193359354309705120770113917370333660827270957172393778178051742077714657388432785747112574456061555034588373E32";
1848 coeffs_60[11] =
"2.14821861694536170414714365485614715949416083667308573285807894910742621740039595483105992136915471547998283891842897000924199509164799E32";
1849 coeffs_60[12] =
"-2.81233281290021706519566203146379395136352592819625378308636458418501787286411189089807465993150834399778687427813779950602826375635436E32";
1850 coeffs_60[13] =
"3.222783358826786224404373038021509245352188734386849874296356404770508945395436142634892645963851510893216093037595555902121365717716154E32";
1851 coeffs_60[14] =
"-3.250409075716999887328836263791911196138647661969351655925350981785153422033954649154242209471752219326556302767677017396179477496948985E32";
1852 coeffs_60[15] =
"2.897783210826628399578158893643627107049805015801395657097255344786041806868455726759715576609013221857885740543509045196763816109465777E32";
1853 coeffs_60[16] =
"-2.29136919195969647663887561122314618826917230275433296293059354280077561407373070937197721317435316121212106870152659174216557412788874E32";
1854 coeffs_60[17] =
"1.611288006928200619663496306945576194382628760891807800193737346171844871295031418730500946186238469256168610033434708290528870722514911E32";
1855 coeffs_60[18] =
"-1.009632466053186015034182792930705530447465885425278324598880797572411588461783484686932989855033967294215840157892487264656571258327313E32";
1856 coeffs_60[19] =
"5.64520651042784179741815642438421132518008517154942873706221206276337451930555926854271086501686252334516011905237101877044320182980053E31";
1857 coeffs_60[20] =
"-2.81912877441595327683492797147781153304080114512116755424671954256427789550109614317215500473322621746416096887803928883800132453510579E31";
1858 coeffs_60[21] =
"1.257934257434294354026338893625531254891110662111965279263894740714811495074726866375858553579650295684850594211744093582249745250079168E31";
1859 coeffs_60[22] =
"-5.01544407232599962845688086323662774702854661522104499328570796808858930542190600193190967249971520736397504227594619670310759235566195E30";
1860 coeffs_60[23] =
"1.786035425040937365122699272239542501767986628253845452136132211710520249195280548478081559036323184490150479070929923213045153333111476E30";
1861 coeffs_60[24] =
"-5.67605430104368150038863866362066081946938075036837029856903803768657069745962581310398542442108872722631658677177822712376500859930109E29";
1862 coeffs_60[25] =
"1.607878222558573982505999018371559631909289246981490321219650132406126936263403946310818841465409950661433241956831540547593847161412447E29";
1863 coeffs_60[26] =
"-4.05332042374309456146169816144083508836132423024788116321074411679252452773181941601763924562378611113519038766273534176937279867894066E28";
1864 coeffs_60[27] =
"9.07493596543985672039002802030098143847503854224661484396413496012780904911929710460264147600378604646912175235271954302119768907744722E27";
1865 coeffs_60[28] =
"-1.800074018924350353143489874038038169034914082090587278672411654146678304871125651069902339241049552886098125667720181441150399048551683E27";
1866 coeffs_60[29] =
"3.154250688078046681602499411296013099183808016176992164829953752437167774310360166977972581670851790753785195101324694758021403186162394E26";
1867 coeffs_60[30] =
"-4.86629244083379932983782216256143990390210226006560452979433243294026128577640975980482675864760717747936401374948595060083674140963469E25";
1868 coeffs_60[31] =
"6.58428611248406176613133080039790689602908099995907522692286902207707012485115422092589779128693214784991500936878932461139361901566087E24";
1869 coeffs_60[32] =
"-7.77846893445970039116628280774361378296946997639645747353868461156972352366479641995295874152354776734003001337605345817120316052066992E23";
1870 coeffs_60[33] =
"7.98268735994772082084918485121285571015813651374688487489679943603727447378945977989630573952891101472578977333720105112837324185659362E22";
1871 coeffs_60[34] =
"-7.07562692971089746095546542541499489835693326760069291570193808615779224025348460132750549389189539682228913778397783434269420284483726E21";
1872 coeffs_60[35] =
"5.381346729881846847476909845563262674288431852755093265786345982700437823098162630059919716651136095720390719236493773958116646152386075E20";
1873 coeffs_60[36] =
"-3.4856856542678356876484367392130359114150104987588151214926676834365219571876912071608359944324610844909103855562977795837329347647911E19";
1874 coeffs_60[37] =
"1.90665542883474657677037950113781854248329048412482665873254624417996252139138481002200079466749149325431679310476862249520001277129217E18";
1875 coeffs_60[38] =
"-8.72254994006151131395107200045641306281165826830744222866994799005490857259177347821280095689079457417603257537321939951004603693393316E16";
1876 coeffs_60[39] =
"3.30066663941625244322555483012774856710545517350986120571194216206848716066355962922968824538055042855044917677713272771363157100391997E15";
1877 coeffs_60[40] =
"-1.020092089391030771746960980075254826475625668908623135552682999358854102567810002206013823466362488147261886160954607897574298699485318E14";
1878 coeffs_60[41] =
"2.537518136375035057088980117582986067754938584307761188810498418760131416720976321039509027979006220650166651208980823946300429957067604E12";
1879 coeffs_60[42] =
"-4.99523339577986301543863423322168947825482352498610406809585164155176248614834684219539096936869521198401912030883142734471627752449382E10";
1880 coeffs_60[43] =
"7.62961024898383965152735310352890448678585029645218309944823403624458716639413808284778269959424212699922000610764015063766429510499158E8";
1881 coeffs_60[44] =
"-8834336.1370238009649936481782352367054397712953420330251745022286767420934395739052638862442455545176778475848478708230456099596423988";
1882 coeffs_60[45] =
"75445.9196169409678879362111492280315111800786619928588067631801224813888137547544321383450353324917130013984795690223150786036557545929";
1883 coeffs_60[46] =
"-459.8458738886001056822131294892698769439281099450630714273592488999986769567563218319365007529495798105783705491469742412340762305916056";
1884 coeffs_60[47] =
"1.922366163948404706136462977961544621491268971185908661903800938507393909575693892375103171073678191394626251633433930639174604982075991";
1885 coeffs_60[48] =
"-0.00524987734300376305383172698735851896799115189212445098242699916121836353753886238290792298378658233479210271064792489583846726184351881";
1886 coeffs_60[49] =
"8.81521840386771771843311455937479573971716020932982441671173279504850522350287085310420429874536637110755391716691475171030099411021337E-6";
1887 coeffs_60[50] =
"-8.42883518072336499031504944519862331274440110738275125460829656821173301216150526266773841539372995424665091651911614576906895281293397E-9";
1888 coeffs_60[51] =
"4.1559932977982056953309753711587342647729282359841592558743510304569204546713517319749817560490538963802716194154620384631597656968764E-12";
1889 coeffs_60[52] =
"-9.26494376646923216540342478135986593801117330292329759013854851055518195892306285985326338987592590319793280515888731024676428929933443E-16";
1890 coeffs_60[53] =
"7.80165274836868312019654872701978288745672229459298320116385383568401529728308916875595120085091565550085090877341856355815270191309086E-20";
1891 coeffs_60[54] =
"-1.922049272463411538721456378153955404697617250978865956250065913541261535132290272529565880980548519758359440057376306817458561627984943E-24";
1892 coeffs_60[55] =
"9.46189821976955264154519811789356895736753858729897267240554901027053652869864043679401817030067356960879571432881603836052222728024736E-30";
1893 coeffs_60[56] =
"-5.06814507370603015985813829025522226614719112357562650414521252967497371724973383019436312018485582224796590023220166954083973156538672E-36";
1894 coeffs_60[57] =
"1.022249951013180267209479446016461291488484443236553319305574600271584296178678167457933405768832443689762998392188667506451117069946568E-43";
1895 coeffs_60[58] =
"-1.158776990252157075591666544736990249102708476419363164106801472497162421792350234416969073422311477683246469337273059290064112071625785E-47";
1896 coeffs_60[59] =
"4.27222387142756413870104074160770434521893587460314314301300261552300727494374933435001642531897059406263033431558827297492879960920275E-49";
1897 coeffs[2].swap(coeffs_60);
1898 std::vector<cln::cl_N> coeffs_120(120);
1900 coeffs_120[0] =
"1.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060166025676976656004344991957470171590616719251813003320122316373430327091055571";
1901 coeffs_120[1] =
"3.4497260317073952007403696383770947678893302981614719279265682622766639811173298171511730607823612517530376844024218507032522459279662180470113961839690189982241536061314319614353993672315096520499373373015802582693649149063603309572777186560148513524E52";
1902 coeffs_120[2] =
"-1.4975581565000729527538170857594663742319328925831469933998274880997450758924704742659571258591716460336677591345828722528085692201176737000527729600671680178988361119859420301844184208079614468449296788394212801103162564922199859549237082372776667464E54";
1903 coeffs_120[3] =
"3.1957762163065481328529158845807843312720427291703934903666695190945338610786360201875291048323381336567812569171891600400186742244091402566230953251621720778096033490814848238417212345597975915378369497445590090951446115848410773972658485451963575288E55";
1904 coeffs_120[4] =
"-4.4689623509319752841609439083871154399631153121231062689347162975834499076693093642474289117173045421812089871506249999929076992135798925381959196225961791389783472385803138226317976820364502651110639008585046458007356178875618627927171581950486124233E56";
1905 coeffs_120[5] =
"4.606068718424276543329442566011849623375399823565351941825685310847310447457609082356012685588953435307896055516214072529445026693975872604267789672469025113562486157850515006504573881812473997762948360804814769118883992998548055557441646946685125118E57";
1906 coeffs_120[6] =
"-3.7314461146854666499272326592212099391213696621869706562566612605818861385928266960370453310708465394226398321257508947092784006446784523328681347046673172481746936234783770854350210504707173921547794426833735429199925024679815789545465854297845328325E58";
1907 coeffs_120[7] =
"2.474425401670711256989398808079221298913654027234786607507813220440957186918973475366048940039541074278444160674001228864321389049663140487504402096319272526201782217412803784224929141788255724630940381342478088455751340159338461174261577243566175687E59";
1908 coeffs_120[8] =
"-1.3811875718622847750042362590249762290599823842851465148429257970104907280458901604054390293828410620002370526629527048636126473391278330353375163563724888073254512227198849135923692811222561965740181944727170495185714496890490479692693474125883791901E60";
1909 coeffs_120[9] =
"6.623089858532754482582703479109160446021743439335073883710993620625687271109284320721410901325182604938578905712329203551531862389936804947105415805829404869727743706364603519433193421234231031076682156125442577335383798263985569601899041876776866622E60";
1910 coeffs_120[10] =
"-2.7709515004299938864490083840820063124223529009388282231525445615826433364331567602934962481829061542793349831611106716261513624279121506887680318284535361848032886450351898892264386237450622827397559067350672965967202437971930333676917000390477963866E61";
1911 coeffs_120[11] =
"1.02386112293172223921263435003659366453292875147351461165091656394534393086780717052422266565203902889367201592668259202439166666819852985689989767402099479793087277263747942659943270101657408462079787397068550734516045511611701546009078868077038808757E62";
1912 coeffs_120[12] =
"-3.3740197731917655541744976218513993073761175468772389726802124778433432226803314067431898210976006853342921093194297198044021414900546886804610561082663076825192459864843102368108908666053756409152492134638014803233805912009476407113691438596300794146E62";
1913 coeffs_120[13] =
"9.996217786487670355655374796561399578704294298563457268841140703036898520360123177193155340144551120260016445533739357030180277693840431766824113840895797510199955331557143980793267795747200088810293047731873192410526786931879590684673414288653913515E62";
1914 coeffs_120[14] =
"-2.6804750990199908441443350402311488850281543531194918304012545530803283220192092419107511475988099394746800512008906823331244710178292896561401750166818497729239682879419868799442954945496319510685448344062610897698253544876306888341881254056091234759E63";
1915 coeffs_120[15] =
"6.5422964482833531603879610057815197301035372862466791995455246163778529556707384145891730234453157337303612060344197138180893720879196243783337539071284141345021864817147590781643393947019750353147151780290464319306645652085743359080495090595200531486E63";
1916 coeffs_120[16] =
"-1.4604487304348366496825146715570516556564950771546738885215899741781982964860978993963272314092830563320794184042847908967120542212316261920409301852237223308467032419706968676861616456179895880956772385510853673982424825597152850339588189159102980666E64";
1917 coeffs_120[17] =
"2.9942297466313630831467808691292548682230644559492580161942357031681185068971393754352871129412787966878287389513657398203481589163498279625760316093736277896138061249076616695157422053188087353540756151586375196486093987258640269607104978950906670704E64";
1918 coeffs_120[18] =
"-5.658399283776588293772725313973093187743120982052603944865098913586526167668102733207163739469977271584007101869254711458133873627143366757941713180350370056955237604551850024423889291598422917971467957836705917204903687959901869098540153925178692732E64";
1919 coeffs_120[19] =
"9.887368951584101622633538892976576123080629424367489037686110916264512731398396560326756128205833849608930564615629875435100785011872254223744155330328477703592008501954532369042429700051416733748454350165515933757314793533786385104271308839525639768E64";
1920 coeffs_120[20] =
"-1.6019504550228766725078575508839635707919311420327486864048705642201106895239857903763208049376932672160478820626774934879424498715258948985194011690204294886396827446040036506699933786721588971678753877371518212675519147446728054067639530675249526082E65";
1921 coeffs_120[21] =
"2.4124568469636899540706437405441629738413207418758399778576327598069435452295650039157974716832514441625728576753250737726840109004878753294786785674578138926529507088264657400701828947949531197915861820274684954206665488761473274445827472596875582911E65";
1922 coeffs_120[22] =
"-3.3841653726400000079488483558717068873181168418395106876260246491163166726612427450773591871178866824643300679819366574162583413250423974373322308130319007820863363304629451933781204964221002853140392226489420463827400812929748772154909106349410663293E65";
1923 coeffs_120[23] =
"4.4305670380812288478773282114598811227924298131011853412998479811262358077680067168455361591598296346480072528806092976336961470360354620203822421524751468329936930212919915114854135818230382164555078957880154875221176513434392525189922941290050575762E65";
1924 coeffs_120[24] =
"-5.4228176962574428947233160003094662570284359565811627941401342797491445636152854865132166939274138115146035207618348708829039395974942115203986578386666664945394109693178927438991059414217518334491360514633536224841961444935232548483014691997071543828E65";
1925 coeffs_120[25] =
"6.214554789078092267222051275213928685756510105900211846145778269883351640710249139978059486185007208670776100912863866582278800642692097830681092656540813877576256048148229340562594504915197956922387464825593941922429396202734006609196778697870436014E65";
1926 coeffs_120[26] =
"-6.6773485088895517986512141063848395783979405189075416643094283756118912554557672721632998501682483143868731647507940026369035991063923616298815637819145806214374157182512600196214559297579802178103007615921637577873304407436850546650711237281572008424E65";
1927 coeffs_120[27] =
"6.734925330317694704469314845373778479111077864464012553672292377883525864326847400954413754291163739900219432201437895152976917857427306427115230048061308424221525123820493252697918698598513232640014129066982507718245232516657455821629338155744427538E65";
1928 coeffs_120[28] =
"-6.383582878496429871173501676061533991181960023885889537277705274319508246322757005217436814481703326467002683699047193244918123789600842413060331898515872574523803039779899326755393070345055586059441271293717500426377884349137309244757708993087958455E65";
1929 coeffs_120[29] =
"5.6913529405959275511022780614007027176288843526260372650173869440228336395668389555081751187360483397341349300975285817498083216487282169140596290796279875175764991375447348355187090404486257481827615256024271536396461908482904537799521891879785332367E65";
1930 coeffs_120[30] =
"-4.776996734587211249165031248400648409423153869394988746115380756083311986805300361459383722536698540926452976310737678416019979202990255666249869917768885659350216400547190883549730059461513588008706974008085270389354525600694962352952715682056375518E65";
1931 coeffs_120[31] =
"3.7775367524287124255443145064623569295746034916892464094281613465046063954544055573214473155479196552309207209647540614474216985097792266203411723082566949978062697757983354600199199984244302856099811940389910544756210676400851240882142140969864764468E65";
1932 coeffs_120[32] =
"-2.8161966171919236962021901287860232075259781334554793534017516884995332700369401674058517414969240048359891934178343992080557338603528540157030635217682829894098359736903943078409166055640608627322968554856315650475005062493399450913753277478547118352E65";
1933 coeffs_120[33] =
"1.9804651678733327456903212258413521470612733719543558365536494344764973229749132899499862883369665827727506916597326744330471802598610837032598656197205238983585794266213317465548361566327435762497208877015986690267754534342053368396181078097467171858E65";
1934 coeffs_120[34] =
"-1.3144275813663231527166312401997093907605894997476799416306355417933431514642211250592825223377757973148122542735038736133300194844844655961425683877005418926364412294006123974642296395931311307760050290069031276972832755406161248577410950671224318855E65";
1935 coeffs_120[35] =
"8.2367260670024829522614096155108151082106397954565823313893008773930966293786646885943761866773022391428854862805955553810619924412431932999726399857050871862122529700098570542876369425991842818202826823540112018849926644955200888291063471724203391548E64";
1936 coeffs_120[36] =
"-4.8749964750377069822933994525197085013480654713783888755556109773660249389776804499013517227967180500633060271953473316017147397601291325922904139209860429881054757911243087427393920494271315804033914011087815785282473032714919188637172020633929566123E64";
1937 coeffs_120[37] =
"2.7259664773094932979328467102942769029907299417406744864696200699394594868759231280169149208728483197299648608091313447896342349454038879581019820193316159535211365363553004387852005780736869678460092714636910972426808304270369152189989142121207224142E64";
1938 coeffs_120[38] =
"-1.440426226855027726783521340050349148103881707415523724377763633849488875095817796257895327883428230885349760692732068174527147156893314818583058727424251827006457849321094911262818557954829248070170426870959233263267490276774734065709978749400927185E64";
1939 coeffs_120[39] =
"7.193790858249547212173205531149034887209275529426061411129294234841122474820371873361100215884757249851960370114629943083807936135915003201800204713978377250292881453568756354858194614039311248345228434431020394729104593125888325843724239404594830488E63";
1940 coeffs_120[40] =
"-3.3960029336234301755324970935705944032408435186630159101426062821929524761770439420961993430248258136340087498829339209014794230274407979103789924433683527009234592433480445831820377517333956042612961562022604325181492952329031432513768020816986814393E63";
1941 coeffs_120[41] =
"1.5154618904112106565112797443687014834429200069480460967081898435635890576815349145926430052596468033907024005478559584915319911380449387176530845634833237204659108290330613043367085829373476690728522550189678729181372902816898536141595215616716630939E63";
1942 coeffs_120[42] =
"-6.3927647843464050458917092484911245813170740434503951669888756878206365814594631676413018245438405308353724023007754523096143775098898268650326908751515418318201372985246418468844138298345777180517875695389655616000832495210812684049030674085212697428E62";
1943 coeffs_120[43] =
"2.5490394366379355452002449693074954071810215414182359403355645652443600688717811337587901850157210686351097591461582890354662732336749618027675479531031836144519267481752770036252137747675754903974915999567019837855523058289177148692481402871253211324E62";
1944 coeffs_120[44] =
"-9.606466879185328464666445215840505657671157752044466089989040292763536710311599947887918708456526669882072519263973105599580140713596301388561639705589314111762600854460059589939760935803484446888352368360433606245369171819922425771642408570388554052E61";
1945 coeffs_120[45] =
"3.4212392804723358445152430359637323789304939688937873921904941412927756295848104328630952153624979489607759834359194243032109828811134607612715016533909375981353098879969472700079242226099049323998286020341979178782935852542355220403299144612362244738E61";
1946 coeffs_120[46] =
"-1.15119134701605919461057899755821946453925102458815313053351247263978303346790555715641513756644038607667203392289423834966320935498856390723555744530789850290369071103208529608463210398231590077340268751005311531529356083188150256469829678612245577446E61";
1947 coeffs_120[47] =
"3.6588622583411432033523084711047679684233731128914152509273818448610176621874654252431411048902598388935105893946323641003087000410095802098177375492833543391040706755511234323104846636415419597151008153829618275459606044459923718022154035121167198784E60";
1948 coeffs_120[48] =
"-1.0981148514467449476248066871827754422009180048705085132882492434176164929454140182025449006310206725429473330511884213470600326782740663313311256352613244044500057688932314549669435095761340307817735687643806167483576999980691227831561891265615422486E60";
1949 coeffs_120[49] =
"3.110998209448997739767747906196101611409160829345058138064861244336130082424927251851805875584197897229644157110035272012393338413235208343342708685139492629786435072305986349067452739209758702078026647999828517440754895711519542954337931090643534216E59";
1950 coeffs_120[50] =
"-8.3162485922574890007748232799240657004521608654422032389269811102140449056333167761296051794842882201869698963586030628312914066893199727852512779320175952962772072653493447297721128265231294406156925752496310087025926300388984242024436858845487466277E58";
1951 coeffs_120[51] =
"2.0966904516945699848169820408710416999765756367767199815424586610234585829069218729220161654233351574517459523275756901094737085187558904179251813051891939079067686519817858153690134828671544815635956527611986498479411756457222935682849773436423295467E58";
1952 coeffs_120[52] =
"-4.983121305881207125553776640558094509942884568949257704810973508397697839859902664482541160531856121365759763455699578413261749913567077796586919935391984240753355552646184306812426079133011894826183873855851966310877619118554510972675999316631346679E57";
1953 coeffs_120[53] =
"1.1158023601951707374356047495258406415892974604387009613173591921419195864040428221070481312383179580486787822935456571355463718115785982888531393271665510645725283439572279946304699780331972095822869500426555507626639723865965516308476400920600382357E57";
1954 coeffs_120[54] =
"-2.3524850615012075127499506758220926725372558166170912192116695445007095502575329450463479860779122789467638956004572617263549199692255055063165454868102165975951768676031140009643202074220557325155838768661030361538572755082660730808847591840060467064E56";
1955 coeffs_120[55] =
"4.6669318431895615057208826641721251136909284138581355667925884903657855204100373961676117747969449100495897986226609480142908763981931305129946569690612924941456739524153327260627627771254850382983581593260532259539447965597396206625726656509884058042E55";
1956 coeffs_120[56] =
"-8.7053773217442419007560462613131691749734845382618514999712446313788486289774350240165530159591402631439776213579542026449818009956904779042347595401565525081115611496250192338958392965746523979241969677734430475813057146574920495171984815351708574336E54";
1957 coeffs_120[57] =
"1.5256552489620511464542280446639568546874380361953025589702692266626310669215652044048704882910412155084167930513006634430352568411276836880182348033924636960897794333644980768878022821035659978039286230061734024129667272393315169114199838321062607299E54";
1958 coeffs_120[58] =
"-2.5099934505534008439782195609383796207770494575364994376922414269548303512602084430128307108303305643530918354709126474742035537827601791192999467996479881350277448357927640707861695639576629921988481117017137420422963638277868648516492581097660522547E53";
1959 coeffs_120[59] =
"3.872963359882179682964169603201046384616694634651871844057456079738892419308420856725974686574980381399016464501318163662938118593626674643538005780375691959391996340141057698193381380484420715733863044826589570328349973407598034428591146829028071358E52";
1960 coeffs_120[60] =
"-5.59947633823301408044455223877913062308847941596689956112764416031828413291312481723036534632655608672535030921469531903033364444816678754679807809159478411100820014592865068932440734964265842594875758737421026093110624848762070026616564150314951394E51";
1961 coeffs_120[61] =
"7.57762861280525531438216991274899157834431478755285945898172885086150762425529113816148806028462888396660067975773261101497666568988246606837690320098870044112671149076084444095163491848634465373822951831018725769263871497616640732007420499659069842E50";
1962 coeffs_120[62] =
"-9.587786106526273406187878833167940811862067040706459726637556599860244751467528905534431960251166924163661188573831350928972391892492380823531476387272791432306808700507685765850397294118719242350333451452137838374120658600691461454898577711260078952E49";
1963 coeffs_120[63] =
"1.13288726401696728230264357306938076698155303500407071418573081766541065136778223998897791839613776442037036668986628122296219518360439574147622758002647495909592177914657175019781723803408732148262293125845657503039410078589916085532057725749397276232E49";
1964 coeffs_120[64] =
"-1.24849787223197441956280303618704887038709792250544105638342097080498907831514597860418910331910245753340059089147824955071899315894649696314820492532126554883819507650973976145456660786429117569053901704116877128391672511345177517877672824534972448216E48";
1965 coeffs_120[65] =
"1.2815463720972693091316233381473056495608681859925407504190742949467232967966271661733907550222983737930524555721493736920130260377888287772008209963158064973076933575966719577456540496444474944074979736374259087350416613616719928507635667369740203319E47";
1966 coeffs_120[66] =
"-1.2234887340201843394744986892310393596065877342193196880417674427168862926389642850813687099959036354499094230765541977493433449153438766822382486040215211159359175689369230076522107734270943423777076523650345103234411047700646432924770659676420158487E46";
1967 coeffs_120[67] =
"1.0847187881607033339631651118075716564835185723270640503055198532318419482330026641941088359447807553514405522074008969583213861070993661224871455023365601323302778638456843760403418046238489404394483720438784739822580385277055304353975028280477740796E45";
1968 coeffs_120[68] =
"-8.9160881476675795743767277986448579964735858351472748620623279571408606135698760493224031735408212513500922230670883171668702983221921543376953865813604783695111225412173880768170509738290662806468458720236121755965944855709552219268353813402612336565E43";
1969 coeffs_120[69] =
"6.782864920104031936272293608616215844503387641476821968620772153274069873138756405621471099960069602613619793775294358177761533027360002770186566164041138064221354961783144649476276625776241973967317262115970868665380343599565811072109785000646703404E42";
1970 coeffs_120[70] =
"-4.7667808452660756441368384708874451089976319738852731080495062883240643961463680300964077232336439626019128672679703771884184482488932861160134911816225569323838390204451496983578077563176966732010513231048738892639707790407292070646798259086924770995E41";
1971 coeffs_120[71] =
"3.0885057140860079424719232591765602418793465632939298397987628606701994268384966881159469651774584648643122830739130127593326652998108850492039117928976417052691273804304806596509726701594300563830431015215234640024338277573401498998072908815285293868E40";
1972 coeffs_120[72] =
"-1.8410405906573614531857309495652487774337134256805076777639383854080936219680656594060736479739035202182601529001321266214227848431889644620036213870966329509961114940541333851155401637197303308322414678191211465563854205816313387785764908216851396633E39";
1973 coeffs_120[73] =
"1.0073694433024942271325653907485159683302928496826793112696958500366488338508211620934892875328717073528902110227362794694820010124321343709182901273795782541866547318841893692957109947576483162095037812781379193423759617638948859880051822460818418552E38";
1974 coeffs_120[74] =
"-5.0475051506252944853315611134428802424958512917967945464108691542854207821486654807141339210375899950551724141366521361887864357385178212628348794663127149312605456165451981719848656127310229221238908657530297751682848475855876378576874607521597136906E36";
1975 coeffs_120[75] =
"2.3099766115359817610656986443137072041797751710805647712896098246833051023271876304983288225638204962631413469467959017768113430777226924099787875749611560913177631681394153889301715579572842026181746028117354815826836594637709952294015960031772162547E35";
1976 coeffs_120[76] =
"-9.629053850440590569772960665435833408449876392175761493622541259322053209458881628458334353756739601360772251654643632187697620334088992038575944303101187678397564511853344433267011583960451100374611538881978045643233876974513962362084978095067025623E33";
1977 coeffs_120[77] =
"3.6452126546120530579393646694066971671091434168707822859890104373691687449831950255953317231572802167174179528347370588567969602221261721708890001616085516755796796282628169745443137768549800602834096924025507345446292715781107949529692160434800323E32";
1978 coeffs_120[78] =
"-1.2492564030201607643388368733220662634846470405464496879151879822123866671204541555507638492613046717628358162773937737774832271305618491107140304474323049182605167775847584622690299098207979849043605983558768056117581593008210986863088433891075743152E31";
1979 coeffs_120[79] =
"3.8627447638297686357472526935538070834588578920414538227245516723308987020816841052950727259618753144711425856434270832495754300189881199851254605718213699755258867641301730599979474865704144160112269948588154919128986989885090481959424806312935273075E29";
1980 coeffs_120[80] =
"-1.0736758703963497284148841547397192249226725101007524773889805877171959717011395181953504058502607435217886087332761920207901621377557079619638699346496468750455986591040017334237734940082333954589067611955107878899677189289648293223359861027746438121E28";
1981 coeffs_120[81] =
"2.6722714785740082059347577649909834926335247252399259683264830680945466475595847553753509546415283809619181144796536494882020159787371993099998263815645014317923922311421330376008111312767167437401741178863083976628261471599264811824656877164988491393E26";
1982 coeffs_120[82] =
"-5.9304047185329750657632568788530498935629656326502947505210292278638825286675833282579834326765999907183142489791905921257123760969245535649745876992946512033156167841406724363867902645010435996961270021857807247440211477908060243655541266857227638988E24";
1983 coeffs_120[83] =
"1.16817022089143274700208191285335154155497013626172270535715899131321522799010543339535307798264602677955894930046454353008462671803498794203612585729705145312299224155123919877760274781582850868001155383467754608529345730226972329454404720862870618607E23";
1984 coeffs_120[84] =
"-2.03239515657536501213472165328009690017090356606547792466197690386716728380893226886179282271040418637806139515373566132123131620086873213475424131345589653019635327048678766191769576650893957440830876852296666120473866301097954633389040518870395767125E21";
1985 coeffs_120[85] =
"3.1065334503269182605978912331263087603258864771943471481540265718169544724355602987297631515907391374943512439350265433478241465606056187134785807375293801936399644663199667496663518171930757047012102683120173353568660795955174938680248863153863947508E19";
1986 coeffs_120[86] =
"-4.1476244154347831048636005592317388215032295704489937704602030038303705695463546496640638505584602502764898113504560236629804442607426019604639559875021291459916615723777004493344143132459204229291886967479716413925814352313734234340863490128872380307E17";
1987 coeffs_120[87] =
"4.8067293487250079673131214670887682215073707729621636364424152483295071605326220176372385638491275365750175037404843071051780212494354459897540110089573898336327006157766256896984455454193271731091632286742192439925748114360605084629432813597189767538E15";
1988 coeffs_120[88] =
"-4.8023544548381246628003457039588616467438691159189277447469028024236284353593054364114519649309416187375157096932150251663679454372678125518452171003992957433311257042292636706448339781439297178835786059318810522834929923770539615271536113963729385909E13";
1989 coeffs_120[89] =
"4.1055087514683476865343055835875083237542317413651906253058979029083965525058905726360233143503628224856307545474786181299719957472120906835233967660557875100202077212004953379299507351564181758434304881046845705855303854083493519588411179065109026834E11";
1990 coeffs_120[90] =
"-2.9787503393847675871205038539267895335240592213878943742323972872214441728681744433089698206110260166068266926018988659692353298939109421567999207730700359726920482465669373553804927535369930188390246988033893916611435406224816632683980860607732310186E9";
1991 coeffs_120[91] =
"1.8178328110729629877907010659834277046059726898311908447099830056830012488194646687474150289147446390570639168063598563291822008033517936194534129929881015025633519502485415000390171249019651579295905194415531994026553693578406432674734610095421683863E7";
1992 coeffs_120[92] =
"-92391.136314434380495997449781381513978328604842061708454699991154771188446049720445502194923435235472458378926242100033122111143321209059959788378033220861638093951546784186137626553022963832352496255851690092415165826965388502958309163995296640164754";
1993 coeffs_120[93] =
"386.82763074890451546182061419449593717951707520472938425276820204065379182568600735469831672149785863654956632602671563997131280046154927653332261114114005498875447205079045401364007035880825957300757663780618819785476980699579657587509130753204519233";
1994 coeffs_120[94] =
"-1.3181204292571874302358432444324779303744749959754136019600954846045028319805074783759764870805734807693739252625657350494147444011046941331047057337345953605042408524072436811726898109072388160378243068564382623631658424851676817690976343859083960324";
1995 coeffs_120[95] =
"0.003606538673252695455085947121496196507159591230095595764694813152630524319596509155920374890595867709349176662036024214476302717902368680224618116411588086562230407996267622244422187853090635901906175373997993725355114393033631058067900506212434600015";
1996 coeffs_120[96] =
"-7.805244503909439374422205381130511738566245024242591464192744568789876715121004646510755612128565674260161510215430132815223049297785205382643947556846567064565241387424696940674258789227398935846571768027456535982674711768030751512030174841314425949E-6";
1997 coeffs_120[97] =
"1.31373705470989377112938364152965446631228819123896570245455699237549295870321627234421140232628798373711221392827979836922621437205363811871692678679625916100572037589291239046725228767017131155814257944742981208252138821140381478767814046301821211856E-8";
1998 coeffs_120[98] =
"-1.6872873094408224472617181717534409090015431593544429529131126514352910895332010213914243717484771690790552077128803350550170014347729272790464826195676369023970955260051387240496705602732313607409271794413329062030561818907163134089683283286623809325E-11";
1999 coeffs_120[99] =
"1.6183083251905685095057354853863188515437903228178486856957070037813756492593759658405336450433607296873747595037080703825755020175480385843762609522889527239577435110258291566585028919336090916225831079571865425410181260759913688103716786795647286451E-14";
2000 coeffs_120[100] =
"-1.13097359411474028225398794102354853670936316496817819635688647804142428962171772690717075128208102537660772310780986623575005236651312181907812813813504742701120603881086064664411899253566047514905519888629604717647221817372977488600336785871295304013E-17";
2001 coeffs_120[101] =
"5.599216369109121957949255319730053610385733330502739423509794477602247233276045188197007198417289907263120960704056657544648432653622931077692740961599655386871075693202473992087883485704436336279135221721374640982826144708808646466699352755417123702E-21";
2002 coeffs_120[102] =
"-1.9009180102993021108185348502624676395148544369474718879637745630712451378711342634099259114111847962752555305470572286326367888004493816251811794947276966269738750207359305252041104539066278002044545942171476984766923991983055271262414217352967659228E-24";
2003 coeffs_120[103] =
"4.261262509940940316499754264112111685174274727656165126333137554124192224955656564229887938745508952447664695831728428607673797269945824475565104978593072684829487175697371245288754204324544164474840153141042852153497051337607734150135978754952561336E-28";
2004 coeffs_120[104] =
"-6.033854291373449912236926137860325602686312455380825767485673949251953414778800668020214699151728472172651816317924130614791108454134597377848088327850505473503152696524861086193124979489104732214189466703901268332265826882296309653009237279831825243E-32";
2005 coeffs_120[105] =
"5.1208402745272379096703574714836785944518835939702823617280147111145234914591060871138496110227453241036619229980622243972303295470574470937679143516006222494480144845809123492603651773613707216680534850900104861326332900592715684757980394834998321888E-36";
2006 coeffs_120[106] =
"-2.4463535717946588550832618025289907099586319384566637643650142186828541109926588999585266911960640972919441499109750654299062004147686492034166034659422424525984094382368955916181276646903453872999065929058429821759475215620044891133652431220664754175E-40";
2007 coeffs_120[107] =
"6.0973480699773886324239008989591793773608942051497498591908583910660358857815864266160341286217871697703362816166340947142517661604423899536979689047275448159991318658879804351288744125363072102852651926942302209139318098544348348564409845011546432615E-45";
2008 coeffs_120[108] =
"-7.2234185761285078775026471720270426097727212523472472797635230392183067756271499246654638332288950167477129840028892565652782123508855602380279653475510712205780583313834027906297063690370430285856541927759405826980856379432703473274890527421175151858E-50";
2009 coeffs_120[109] =
"3.6217112680215791206171182969894344487335819731880124290544082848140757826983885738735436324684863867140575000400288923606439193119990961489053513339202655922248092157737577138929144240507796562250602457839068582279379672722261563501188150876583184441E-55";
2010 coeffs_120[110] =
"-6.6329300032795486066608594142675837603786558782159646987663521197523704085781830169369726460621246948945196657495305819768951424025780824076252490918306538895670861455244641773606980519824591785816943621538721352987553804824051051144609050417497894495E-61";
2011 coeffs_120[111] =
"3.6664720904335295532012711597888717227860988776477301054518326674835421172405060906940404374163713097964932859351917152390238690399278248344863365606468942320103392909602843987855082225592776850615943708151738327210634139824601616072015258461809772448E-67";
2012 coeffs_120[112] =
"-4.7466013179695826928232672846686064011594588664906398407027593213652099998530859940288723349213099851532139911079905393494419637612780994270110734378146177806681489226896952731800026849872070824592339117757940119304241732812925979963178130104280115315E-74";
2013 coeffs_120[113] =
"1.0163707785221910939390789816391472677729665860532352695801597334766068288835382195560328979864550624486740471947632369344045378626680607890520366137741785540226552923584183986350590955499329375427326072319268396685478606934920507703868118038891818762E-81";
2014 coeffs_120[114] =
"-3.4814151260242800905467399051937942442621710748397374123807284826536707678408888416026868585492229216524609739211131993326633970334388991812593549702868877534701822990946125111761892723042376117665640296993581745994557803052315791392349639065203872505E-90";
2015 coeffs_120[115] =
"1.18525924288117432386770939895670573772658621857195305986011196724304231598127227408839423385042572374412446842112646168302015480830234100570192462192015131968307084609177540911503689228342834030959242458698413980031135644018348590823980902427540799814E-91";
2016 coeffs_120[116] =
"-8.5714961216566153236700116412888006837408819915951896129362859520462766617634320531162919426026429378433105901035364956643086394331335747930198070611009941831387116980941022864465946989065467218665543814574849964435089931072761832853235509961870476035E-93";
2017 coeffs_120[117] =
"4.5681983751743456413033268196376305093509590040595182930261094908859252761697530924655649930852283295534503341542929581967081012867692190108698698006237799801339418962091877730207560007839789937153876806052229193448161273005984514504886230869730232561E-94";
2018 coeffs_120[118] =
"-1.5943139155457706045530478744891549581317663177038648406493256399589001327414318955746453934207742828511041930090849236963271943244329753764497401819704943705370596846318480510254313447057477914171472190541408193443142906466279172123681623644325254209E-95";
2019 coeffs_120[119] =
"2.7319125666863032595604997603472305262880292377469053594326527505796348018540179196191192420176181194669607935656210005192217186286873953583571180312679155204061051208771126804209623533044988888808754656646355388901404252058383561064953226611421609762E-97";
2020 coeffs[3].swap(coeffs_120);
2025 cln::float_format_t prec = cln::default_float_format;
2026 if (!instanceof(realpart(
x), cln::cl_RA_ring))
2027 prec = cln::float_format(cln::the<cln::cl_F>(realpart(
x)));
2028 if (!instanceof(imagpart(
x), cln::cl_RA_ring))
2029 prec = cln::float_format(cln::the<cln::cl_F>(imagpart(
x)));
2043 cln::cl_N pi_val = cln::pi(prec);
2044 if (realpart(
x) < 0.5)
2045 return cln::log(pi_val) - cln::log(
sin(pi_val*
x))
2048 cln::cl_N temp =
x + lc.
get_order() - cln::cl_N(1)/2;
2049 cln::cl_N result =
log(cln::cl_I(2)*pi_val)/2
2050 + (
x-cln::cl_N(1)/2)*
log(temp)
2061 const cln::cl_N x_ =
x.to_cl_N();
2062 const cln::cl_N result =
lgamma(x_);
2071 cln::cl_N pi_val = cln::pi(prec);
2072 if (realpart(
x) < 0.5)
2073 return pi_val/(cln::sin(pi_val*
x))/
tgamma(1 -
x);
2075 cln::cl_N temp =
x + lc.
get_order() - cln::cl_N(1)/2;
2076 cln::cl_N result =
sqrt(cln::cl_I(2)*pi_val)
2077 * expt(temp,
x - cln::cl_N(1)/2)
2087 const cln::cl_N x_ =
x.to_cl_N();
2088 const cln::cl_N result =
tgamma(x_);
2114 if (!
n.is_nonneg_integer())
2115 throw std::range_error(
"numeric::factorial(): argument must be integer >= 0");
2116 return numeric(cln::factorial(
n.to_int()));
2131 if (!
n.is_nonneg_integer())
2132 throw std::range_error(
"numeric::doublefactorial(): argument must be integer >= -1");
2134 return numeric(cln::doublefactorial(
n.to_int()));
2146 if (
n.is_integer() &&
k.is_integer()) {
2147 if (
n.is_nonneg_integer()) {
2148 if (
k.compare(
n)!=1 &&
k.compare(*
_num0_p)!=-1)
2149 return numeric(cln::binomial(
n.to_int(),
k.to_int()));
2153 if (
k.is_nonneg_integer())
2161 throw std::range_error(
"numeric::binomial(): don't know how to evaluate that.");
2173 throw std::range_error(
"numeric::bernoulli(): argument must be integer >= 0");
2209 const unsigned n = nn.
to_int();
2213 return (
n==1) ? (*_num_1_2_p) : (*_num0_p);
2218 static std::vector< cln::cl_RA > results;
2219 static unsigned next_r = 0;
2223 results.push_back(cln::recip(cln::cl_RA(6)));
2229 results.reserve(
n/2);
2230 for (
unsigned p=next_r; p<=
n; p+=2) {
2232 cln::cl_RA b = cln::cl_RA(p-1)/-2;
2238 if (p < (1UL<<cl_value_len/2)) {
2239 for (
unsigned k=1;
k<=p/2-1; ++
k) {
2240 c = cln::exquo(
c * ((p+3-2*
k) * (p/2-
k+1)), (2*
k-1)*
k);
2241 b = b +
c*results[
k-1];
2244 for (
unsigned k=1;
k<=p/2-1; ++
k) {
2245 c = cln::exquo((
c * (p+3-2*
k)) * (p/2-
k+1), cln::cl_I(2*
k-1)*
k);
2246 b = b +
c*results[
k-1];
2249 results.push_back(-b/(p+1));
2264 if (!
n.is_integer())
2265 throw std::range_error(
"numeric::fibonacci(): argument must be integer");
2284 if (
n.is_negative()) {
2295 cln::cl_I
m = cln::the<cln::cl_I>(
n.to_cl_N()) >> 1L;
2296 for (uintL bit=cln::integer_length(
m); bit>0; --bit) {
2299 cln::cl_I u2 = cln::square(u);
2300 cln::cl_I v2 = cln::square(v);
2301 if (cln::logbitp(bit-1,
m)) {
2302 v = cln::square(u + v) - u2;
2305 u = v2 - cln::square(v - u);
2312 return numeric(u * ((v << 1) - u));
2314 return numeric(cln::square(u) + cln::square(v));
2321 return numeric(cln::abs(
x.to_cl_N()));
2336 cln::the<cln::cl_I>(b.
to_cl_N())));
2348 const cln::cl_I a = cln::the<cln::cl_I>(a_.
to_cl_N());
2349 const cln::cl_I b = cln::the<cln::cl_I>(b_.
to_cl_N());
2350 const cln::cl_I b2 = b >> 1;
2351 const cln::cl_I
m = cln::mod(a, b);
2352 const cln::cl_I m_b =
m - b;
2353 const cln::cl_I ret =
m > b2 ? m_b :
m;
2370 throw std::overflow_error(
"numeric::irem(): division by zero");
2373 cln::the<cln::cl_I>(b.
to_cl_N())));
2390 throw std::overflow_error(
"numeric::irem(): division by zero");
2392 const cln::cl_I_div_t rem_quo = cln::truncate2(cln::the<cln::cl_I>(a.
to_cl_N()),
2393 cln::the<cln::cl_I>(b.
to_cl_N()));
2394 q =
numeric(rem_quo.quotient);
2395 return numeric(rem_quo.remainder);
2411 throw std::overflow_error(
"numeric::iquo(): division by zero");
2414 cln::the<cln::cl_I>(b.
to_cl_N())));
2430 throw std::overflow_error(
"numeric::iquo(): division by zero");
2432 const cln::cl_I_div_t rem_quo = cln::truncate2(cln::the<cln::cl_I>(a.
to_cl_N()),
2433 cln::the<cln::cl_I>(b.
to_cl_N()));
2435 return numeric(rem_quo.quotient);
2451 cln::the<cln::cl_I>(b.
to_cl_N())));
2465 cln::the<cln::cl_I>(b.
to_cl_N())));
2481 return numeric(cln::sqrt(
x.to_cl_N()));
2488 if (
x.is_integer()) {
2490 cln::isqrt(cln::the<cln::cl_I>(
x.to_cl_N()), &root);
2500 return numeric(cln::pi(cln::default_float_format));
2507 return numeric(cln::eulerconst(cln::default_float_format));
2514 return numeric(cln::catalanconst(cln::default_float_format));
2526 throw(std::runtime_error(
"I told you not to do instantiate me!"));
2528 cln::default_float_format = cln::float_format(17);
2538 long digitsdiff = prec -
digits;
2540 cln::default_float_format = cln::float_format(prec);
2552_numeric_digits::operator long()
2555 return (
long)digits;
Archiving of GiNaC expressions.
#define GINAC_ASSERT(X)
Assertion macro for checking invariances.
This class is used to instantiate a global singleton object Digits which behaves just like Maple's Di...
_numeric_digits & operator=(long prec)
Assign a native long to global Digits object.
_numeric_digits()
_numeric_digits default ctor, checking for singleton invariance.
std::vector< digits_changed_callback > callbacklist
void print(std::ostream &os) const
Append global Digits object to ostream.
static bool too_late
Already one object present.
void add_callback(digits_changed_callback callback)
Add a new callback function.
long digits
Number of decimal digits.
This class stores all properties needed to record/retrieve the state of one object of class basic (or...
This class is the ABC (abstract base class) of GiNaC's class hierarchy.
const basic & setflag(unsigned f) const
Set some status_flags.
unsigned hashvalue
hash value
unsigned flags
of type status_flags
const basic & hold() const
Stop further evaluation.
virtual int compare_same_type(const basic &other) const
Returns order relation between two objects of same type.
Wrapper template for making GiNaC classes out of STL containers.
Exception class thrown by functions to signal unimplemented functionality so the expression may just ...
Lightweight wrapper for GiNaC's symbolic objects.
bool sufficiently_accurate(int digits)
cln::cl_N calc_lanczos_A(const cln::cl_N &) const
std::vector< cln::cl_N > * current_vector
static std::vector< cln::cl_N > * coeffs
This class is a wrapper around CLN-numbers within the GiNaC class hierarchy.
void do_print(const print_context &c, unsigned level) const
bool is_pos_integer() const
True if object is an exact integer greater than zero.
const numeric & operator=(int i)
void read_archive(const archive_node &n, lst &syms) override
Read (a.k.a.
const numeric & sub_dyn(const numeric &other) const
Numerical subtraction method.
unsigned calchash() const override
Compute the hash value of an object and if it makes sense to store it in the objects status_flags,...
bool is_equal_same_type(const basic &other) const override
Returns true if two objects of same type are equal.
const numeric sub(const numeric &other) const
Numerical subtraction method.
const numeric & mul_dyn(const numeric &other) const
Numerical multiplication method.
void do_print_csrc(const print_csrc &c, unsigned level) const
bool is_cinteger() const
True if object is element of the domain of integers extended by I, i.e.
unsigned precedence() const override
Return relative operator precedence (for parenthezing output).
bool is_polynomial(const ex &var) const override
Check whether this is a polynomial in the given variables.
numeric step() const
Return the step function of a numeric.
bool is_crational() const
True if object is an exact rational number, may even be complex (denominator may be unity).
ex imag_part() const override
bool is_rational() const
True if object is an exact rational number, may even be complex (denominator may be unity).
bool operator>(const numeric &other) const
Numerical comparison: greater.
void archive(archive_node &n) const override
Save (a.k.a.
bool info(unsigned inf) const override
Information about the object.
ex real_part() const override
int ldegree(const ex &s) const override
Return degree of lowest power in object s.
const numeric real() const
Real part of a number.
ex eval() const override
Evaluation of numbers doesn't do anything at all.
bool is_prime() const
Probabilistic primality test.
bool has(const ex &other, unsigned options=0) const override
Disassemble real part and imaginary part to scan for the occurrence of a single number.
long to_long() const
Converts numeric types to machine's long.
void do_print_latex(const print_latex &c, unsigned level) const
void do_print_tree(const print_tree &c, unsigned level) const
ex coeff(const ex &s, int n=1) const override
Return coefficient of degree n in object s.
const numeric & power_dyn(const numeric &other) const
Numerical exponentiation.
void do_print_python_repr(const print_python_repr &c, unsigned level) const
int compare(const numeric &other) const
This method establishes a canonical order on all numbers.
bool is_nonneg_integer() const
True if object is an exact integer greater or equal zero.
bool is_positive() const
True if object is not complex and greater than zero.
ex conjugate() const override
bool is_real() const
True if object is a real integer, rational or float (but not complex).
const numeric numer() const
Numerator.
bool is_integer() const
True if object is a non-complex integer.
const numeric power(const numeric &other) const
Numerical exponentiation.
ex evalf() const override
Cast numeric into a floating-point object.
const numeric denom() const
Denominator.
bool is_negative() const
True if object is not complex and less than zero.
bool is_odd() const
True if object is an exact odd integer.
cln::cl_N to_cl_N() const
Returns a new CLN object of type cl_N, representing the value of *this.
const numeric imag() const
Imaginary part of a number.
const numeric mul(const numeric &other) const
Numerical multiplication method.
bool is_even() const
True if object is an exact even integer.
const numeric & add_dyn(const numeric &other) const
Numerical addition method.
int degree(const ex &s) const override
Return degree of highest power in object s.
bool operator<=(const numeric &other) const
Numerical comparison: less or equal.
int csgn() const
Return the complex half-plane (left or right) in which the number lies.
bool operator==(const numeric &other) const
bool is_equal(const numeric &other) const
const numeric & div_dyn(const numeric &other) const
Numerical division method.
bool operator>=(const numeric &other) const
Numerical comparison: greater or equal.
bool operator!=(const numeric &other) const
int to_int() const
Converts numeric types to machine's int.
int int_length() const
Size in binary notation.
void print_numeric(const print_context &c, const char *par_open, const char *par_close, const char *imag_sym, const char *mul_sym, unsigned level) const
void do_print_csrc_cl_N(const print_csrc_cl_N &c, unsigned level) const
double to_double() const
Converts numeric types to machine's double.
const numeric inverse() const
Inverse of a number.
bool operator<(const numeric &other) const
Numerical comparison: less.
const numeric add(const numeric &other) const
Numerical addition method.
bool is_zero() const
True if object is zero.
const numeric div(const numeric &other) const
Numerical division method.
Exception class thrown when a singularity is encountered.
Base class for print_contexts.
std::ostream & s
stream to output to
Context for C source output using CLN numbers.
Base context for C source output.
Context for latex-parsable output.
Context for python-parsable output.
Context for tree-like output for debugging.
@ expanded
.expand(0) has already done its job (other expand() options ignore this flag)
@ evaluated
.eval() has already done its job
@ hash_calculated
.calchash() has already done its job
Interface to GiNaC's light-weight expression handles.
const numeric I
Imaginary unit.
const numeric atan(const numeric &x)
Numeric arcustangent.
std::ostream & operator<<(std::ostream &os, const archive_node &n)
Write archive_node to binary data stream.
ex denom(const ex &thisex)
unsigned golden_ratio_hash(uintptr_t n)
Truncated multiplication with golden ratio, for computing hash values.
const numeric bernoulli(const numeric &nn)
Bernoulli number.
const numeric cosh(const numeric &x)
Numeric hyperbolic cosine (trigonometric function).
const numeric mod(const numeric &a, const numeric &b)
Modulus (in positive representation).
const numeric abs(const numeric &x)
Absolute value.
ex EulerEvalf()
Floating point evaluation of Euler's constant gamma.
static void print_real_csrc(const print_context &c, const cln::cl_R &x)
Helper function to print real number in C++ source format.
const numeric asin(const numeric &x)
Numeric inverse sine (trigonometric function).
function zeta(const T1 &p1)
ex PiEvalf()
Floating point evaluation of Archimedes' constant Pi.
const numeric fibonacci(const numeric &n)
Fibonacci number.
const numeric doublefactorial(const numeric &n)
The double factorial combinatorial function.
const numeric tanh(const numeric &x)
Numeric hyperbolic tangent (trigonometric function).
const numeric Li2(const numeric &x)
const numeric acos(const numeric &x)
Numeric inverse cosine (trigonometric function).
ex gcd(const ex &a, const ex &b, ex *ca, ex *cb, bool check_args, unsigned options)
Compute GCD (Greatest Common Divisor) of multivariate polynomials a(X) and b(X) in Z[X].
bool coerce< int, cln::cl_I >(int &dst, const cln::cl_I &arg)
Check if CLN integer can be converted into int.
function psi(const T1 &p1)
const numeric sqrt(const numeric &x)
Numeric square root.
const numeric irem(const numeric &a, const numeric &b)
Numeric integer remainder.
const cln::cl_N tgamma(const cln::cl_N &x)
const numeric sinh(const numeric &x)
Numeric hyperbolic sine (trigonometric function).
void(* digits_changed_callback)(long)
Function pointer to implement callbacks in the case 'Digits' gets changed.
static const cln::cl_F make_real_float(const cln::cl_idecoded_float &dec)
Construct a floating point number from sign, mantissa, and exponent.
const numeric binomial(const numeric &n, const numeric &k)
The Binomial coefficients.
const numeric exp(const numeric &x)
Exponential function.
static cln::cl_N Li2_projection(const cln::cl_N &x, const cln::float_format_t &prec)
Folds Li2's argument inside a small rectangle to enhance convergence.
const numeric factorial(const numeric &n)
Factorial combinatorial function.
const numeric acosh(const numeric &x)
Numeric inverse hyperbolic cosine (trigonometric function).
const numeric cos(const numeric &x)
Numeric cosine (trigonometric function).
const numeric smod(const numeric &a_, const numeric &b_)
Modulus (in symmetric representation).
const numeric atanh(const numeric &x)
Numeric inverse hyperbolic tangent (trigonometric function).
print_func< print_context >(&varidx::do_print). print_func< print_latex >(&varidx
const cln::cl_N Li2_(const cln::cl_N &value)
Numeric evaluation of Dilogarithm.
ex lcm(const ex &a, const ex &b, bool check_args)
Compute LCM (Least Common Multiple) of multivariate polynomials in Z[X].
const numeric iquo(const numeric &a, const numeric &b)
Numeric integer quotient.
const numeric isqrt(const numeric &x)
Integer numeric square root.
const numeric log(const numeric &x)
Natural logarithm.
static void print_integer_csrc(const print_context &c, const cln::cl_I &x)
Helper function to print integer number in C++ source format.
_numeric_digits Digits
Accuracy in decimal digits.
const numeric sin(const numeric &x)
Numeric sine (trigonometric function).
static void print_real_number(const print_context &c, const cln::cl_R &x)
Helper function to print a real number in a nicer way than is CLN's default.
static void print_real_cl_N(const print_context &c, const cln::cl_R &x)
Helper function to print real number in C++ source format using cl_N types.
static void write_real_float(std::ostream &s, const cln::cl_R &n)
ex numer(const ex &thisex)
ex CatalanEvalf()
Floating point evaluation of Catalan's constant.
static cln::float_format_t guess_precision(const cln::cl_N &x)
const numeric asinh(const numeric &x)
Numeric inverse hyperbolic sine (trigonometric function).
const numeric tan(const numeric &x)
Numeric tangent (trigonometric function).
GINAC_IMPLEMENT_REGISTERED_CLASS_OPT_T(lst, basic, print_func< print_context >(&lst::do_print). print_func< print_tree >(&lst::do_print_tree)) template<> bool lst GINAC_BIND_UNARCHIVER(lst)
Specialization of container::info() for lst.
static const cln::cl_F read_real_float(std::istream &s)
Read serialized floating point number.
static bool coerce(T1 &dst, const T2 &arg)
const cln::cl_N lgamma(const cln::cl_N &x)
The Gamma function.
bool coerce< unsigned int, cln::cl_I >(unsigned int &dst, const cln::cl_I &arg)
static ex Li2_series(const ex &x, const relational &rel, int order, unsigned options)
Makes the interface to the underlying bignum package available.
Interface to GiNaC's overloaded operators.
#define GINAC_IMPLEMENT_REGISTERED_CLASS_OPT(classname, supername, options)
Macro for inclusion in the implementation of each registered class.
Interface to several small and furry utilities needed within GiNaC but not of any interest to the use...