Macaulay2 Engine
Loading...
Searching...
No Matches

◆ elem_text_out()

void RingZZ::elem_text_out ( buffer & o,
const ring_elem f,
bool p_one = true,
bool p_plus = false,
bool p_parens = false ) const
virtual

Implements Ring.

Definition at line 77 of file ZZ.cpp.

82{
83 (void) p_parens;
84 mpz_srcptr a = ap.get_mpz();
85
86 char s[1000];
87 char *str;
88
89 bool is_neg = (mask_mpz_cmp_si(a, 0) == -1);
90 bool is_one = (mask_mpz_cmp_si(a, 1) == 0 || mask_mpz_cmp_si(a, -1) == 0);
91
92 int size = static_cast<int>(mpz_sizeinbase(a, 10)) + 2;
93
94 char *allocstr = (size > 1000 ? newarray_atomic(char, size) : s);
95
96 if (!is_neg && p_plus) o << '+';
97 if (is_one)
98 {
99 if (is_neg) o << '-';
100 if (p_one) o << '1';
101 }
102 else
103 {
104 str = mpz_get_str(allocstr, 10, a);
105 o << str;
106 }
107 if (size > 1000) freemem(allocstr);
108}
int mask_mpz_cmp_si(mpz_srcptr x, long int i)
Definition ZZ.hpp:53
void freemem(void *s)
Definition m2-mem.cpp:103
void size_t s
Definition m2-mem.cpp:271
#define newarray_atomic(T, len)
Definition newdelete.hpp:91

References freemem(), ring_elem::get_mpz(), mask_mpz_cmp_si(), newarray_atomic, and s.