mirror of
https://github.com/vale981/arb
synced 2025-03-04 17:01:40 -05:00
modular_j, modular_delta: detect real output
This commit is contained in:
parent
7711297f62
commit
adf3650500
3 changed files with 23 additions and 1 deletions
|
@ -17,6 +17,15 @@ acb_modular_delta(acb_t z, const acb_t tau, slong prec)
|
||||||
psl2z_t g;
|
psl2z_t g;
|
||||||
arf_t one_minus_eps;
|
arf_t one_minus_eps;
|
||||||
acb_t tau_prime, t1, t2, t3, t4, q;
|
acb_t tau_prime, t1, t2, t3, t4, q;
|
||||||
|
int real;
|
||||||
|
|
||||||
|
if (!arb_is_positive(acb_imagref(tau)) || !arb_is_finite(acb_realref(tau)))
|
||||||
|
{
|
||||||
|
acb_indeterminate(z);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
real = arb_is_int_2exp_si(acb_realref(tau), -1);
|
||||||
|
|
||||||
psl2z_init(g);
|
psl2z_init(g);
|
||||||
arf_init(one_minus_eps);
|
arf_init(one_minus_eps);
|
||||||
|
@ -52,6 +61,8 @@ acb_modular_delta(acb_t z, const acb_t tau, slong prec)
|
||||||
}
|
}
|
||||||
|
|
||||||
acb_set(z, t1);
|
acb_set(z, t1);
|
||||||
|
if (real)
|
||||||
|
arb_zero(acb_imagref(z));
|
||||||
|
|
||||||
psl2z_clear(g);
|
psl2z_clear(g);
|
||||||
arf_clear(one_minus_eps);
|
arf_clear(one_minus_eps);
|
||||||
|
|
|
@ -29,7 +29,6 @@ acb_modular_eisenstein(acb_ptr r, const acb_t tau, slong len, slong prec)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
real = arb_is_int_2exp_si(acb_realref(tau), -1);
|
real = arb_is_int_2exp_si(acb_realref(tau), -1);
|
||||||
|
|
||||||
psl2z_init(g);
|
psl2z_init(g);
|
||||||
|
|
|
@ -17,6 +17,15 @@ acb_modular_j(acb_t z, const acb_t tau, slong prec)
|
||||||
psl2z_t g;
|
psl2z_t g;
|
||||||
arf_t one_minus_eps;
|
arf_t one_minus_eps;
|
||||||
acb_t tau_prime, t2, t3, t4, q;
|
acb_t tau_prime, t2, t3, t4, q;
|
||||||
|
int real;
|
||||||
|
|
||||||
|
if (!arb_is_positive(acb_imagref(tau)) || !arb_is_finite(acb_realref(tau)))
|
||||||
|
{
|
||||||
|
acb_indeterminate(z);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
real = arb_is_int_2exp_si(acb_realref(tau), -1);
|
||||||
|
|
||||||
psl2z_init(g);
|
psl2z_init(g);
|
||||||
arf_init(one_minus_eps);
|
arf_init(one_minus_eps);
|
||||||
|
@ -59,6 +68,9 @@ acb_modular_j(acb_t z, const acb_t tau, slong prec)
|
||||||
acb_div(z, t2, z, prec);
|
acb_div(z, t2, z, prec);
|
||||||
acb_mul_2exp_si(z, z, 5);
|
acb_mul_2exp_si(z, z, 5);
|
||||||
|
|
||||||
|
if (real)
|
||||||
|
arb_zero(acb_imagref(z));
|
||||||
|
|
||||||
psl2z_clear(g);
|
psl2z_clear(g);
|
||||||
arf_clear(one_minus_eps);
|
arf_clear(one_minus_eps);
|
||||||
acb_clear(tau_prime);
|
acb_clear(tau_prime);
|
||||||
|
|
Loading…
Add table
Reference in a new issue