!is_a<print_latex>(c)) {
cln::print_real(c.s, ourflags, x);
} else { // rational output in LaTeX context
+ if (x < 0)
+ c.s << "-";
c.s << "\\frac{";
- cln::print_real(c.s, ourflags, cln::numerator(cln::the<cln::cl_RA>(x)));
+ cln::print_real(c.s, ourflags, cln::abs(cln::numerator(cln::the<cln::cl_RA>(x))));
c.s << "}{";
cln::print_real(c.s, ourflags, cln::denominator(cln::the<cln::cl_RA>(x)));
c.s << '}';
c.s.precision(16);
else
c.s.precision(7);
- if (this->is_rational() && !this->is_integer()) {
+ if (is_a<print_csrc_cl_N>(c) && this->is_integer()) {
+ c.s << "cln::cl_I(\"";
+ const cln::cl_R r = cln::realpart(cln::the<cln::cl_N>(value));
+ print_real_number(c,r);
+ c.s << "\")";
+ } else if (this->is_rational() && !this->is_integer()) {
if (compare(_num0) > 0) {
c.s << "(";
if (is_a<print_csrc_cl_N>(c))
c.s << ")";
} else {
if (is_a<print_csrc_cl_N>(c))
- c.s << "cln::cl_F(\"" << evalf() << "\")";
+ c.s << "cln::cl_F(\"" << evalf() << "_" << Digits << "\")";
else
c.s << to_double();
}