Karim Belabas on Wed, 07 Aug 2024 18:33:31 +0200


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: bnfisintnorm/bnfisnorm and availability of units


* Charles Greathouse [2024-08-06 20:56]:
> bnfisintnorm also has issues if you lower the precision to 19 digits. The
> question then becomes, not why does one need units, but why does one need
> that at higher precision?

The non-trivial ingredient in bnfisintnorm() is bnfisprincipal(), which
must be applied to a number of ideals.

*If* the precision is high enough in the original 'bnf', then these
computations succeed and we get the answer. Else the function must
recompute the bnf to a higher accuracy (and try again), which requires
units in algebraic form, so we fail with an error message which
pinpoints the problem:

 *** bnfisintnorm: precision too low in makeunits [cannot get units, use bnfinit(,1)]

So, same answer as for Max: just use bnfinit(x^2-s, 1) 

Cheers,

      K.B.

> On Tue, Aug 6, 2024 at 1:06 PM Max Alekseyev <maxale@gmail.com> wrote:
> 
> > Hello,
> >
> > I'm puzzled by the code example quoted below. Why does bnfisintnorm()
> > run fine, but bnfisnorm() complains about missing units?
> > I'd assume that units are a prerequisite for both these functions, but it
> > turns out not to be the case. Do I miss something here?
> >
> > Regards,
> > Max
> >
> > ===
> > ? s=216145205;
> > ? b=bnfinit(x^2-s);
> > ? bnfisintnorm(b,s-1)
> > %4 = [-411706627786612628571*x - 6052860449312256784985647,
> > -411706627786612628571*x + 6052860449312256784985647]
> > ? bnfisnorm(b,s-1)
> >   ***   at top-level: bnfisnorm(b,s-1)
> >   ***                 ^----------------
> >   *** bnfisnorm: precision too low in makeunits [cannot get units, use
> > bnfinit(,1)].
> >   ***   Break loop: type 'break' to go back to GP prompt
> > break>
> >

    K.B.
-- 
Pr. Karim Belabas, U. Bordeaux, Vice-président en charge du Numérique
Institut de Mathématiques de Bordeaux UMR 5251 - (+33) 05 40 00 29 77
http://www.math.u-bordeaux.fr/~kbelabas/