uint32_t Lib_Arb_SizeInBase10(ArbPtr x, int32_t n, uint32_t flags) { char * src = arb_get_str((arb_ptr) x, n, flags); uint32_t res = strlen(src) + 1; free(src); return res; }
void arb_fprintn(FILE * file, const arb_t x, slong digits, ulong flags) { char * s = arb_get_str(x, digits, flags); flint_fprintf(file, "%s", s); flint_free(s); }
char * Lib_Arb_Get_Str(char * dest , ArbPtr x, int32_t n, uint32_t flags) { char * src = arb_get_str((arb_ptr) x, n, flags); char * res = strcpy(dest, src); free(src); return res; }
std::string renf_elem_class::to_string(int flags) const noexcept { std::string s; assert(!((flags & EANTIC_STR_D) && (flags & EANTIC_STR_ARB))); // call to renf_elem_get_str_pretty if (nf == nullptr) { if (flags & EANTIC_STR_ALG) { char * u = fmpq_get_str(nullptr, 10, b); s += u; flint_free(u); if (flags & (EANTIC_STR_D | EANTIC_STR_ARB)) s += " ~ "; } if (flags & EANTIC_STR_D) { char * u = (char *) flint_malloc(20 * sizeof(char)); sprintf(u, "%lf", fmpq_get_d(b)); s += u; flint_free(u); } if (flags & EANTIC_STR_ARB) { char * u; arb_t x; arb_init(x); arb_set_fmpq(x, b, 128); u = arb_get_str(x, 64, 0); s += u; arb_clear(x); flint_free(u); } } else { char * u = renf_elem_get_str_pretty(renf_elem_t(), parent().gen_name().c_str(), parent().renf_t(), 10, flags); s += u; flint_free(u); } if (flags != EANTIC_STR_ALG && flags != EANTIC_STR_D && flags != EANTIC_STR_ARB) return "(" + s + ")"; else return s; }
int main() { flint_rand_t state; slong iter; flint_printf("get_str...."); fflush(stdout); flint_randinit(state); /* just test no crashing... */ for (iter = 0; iter < 10000 * arb_test_multiplier(); iter++) { arb_t x; char * s; slong n; arb_init(x); arb_randtest_special(x, state, 1 + n_randint(state, 1000), 1 + n_randint(state, 100)); n = 1 + n_randint(state, 300); s = arb_get_str(x, n, (n_randint(state, 2) * ARB_STR_MORE) | (n_randint(state, 2) * ARB_STR_NO_RADIUS) | (ARB_STR_CONDENSE * n_randint(state, 50))); flint_free(s); arb_clear(x); } for (iter = 0; iter < 100000 * arb_test_multiplier(); iter++) { arb_t x, y; char * s; slong n, prec; int conversion_error; arb_init(x); arb_init(y); arb_randtest_special(x, state, 1 + n_randint(state, 1000), 1 + n_randint(state, 100)); arb_randtest_special(y, state, 1 + n_randint(state, 1000), 1 + n_randint(state, 100)); n = 1 + n_randint(state, 300); prec = 2 + n_randint(state, 1000); s = arb_get_str(x, n, n_randint(state, 2) * ARB_STR_MORE); conversion_error = arb_set_str(y, s, prec); if (conversion_error || !arb_contains(y, x)) { flint_printf("FAIL (roundtrip) iter = %wd\n", iter); flint_printf("x = "); arb_printd(x, 50); flint_printf("\n\n"); flint_printf("s = %s", s); flint_printf("\n\n"); flint_printf("y = "); arb_printd(y, 50); flint_printf("\n\n"); abort(); } flint_free(s); arb_clear(x); arb_clear(y); } flint_randclear(state); flint_cleanup(); flint_printf("PASS\n"); return EXIT_SUCCESS; }