Karim Belabas on Wed, 07 Aug 2024 16:25:32 +0200


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

Re: bnfisintnorm/bnfisnorm and availability of units


* Max Alekseyev [2024-08-06 19:06]:
> 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.

Indeed (and as the error message indicates): in the generic case,
- units are *not* a prerequisite for bnfisintnorm().
- units *are* a prerequisite for bnfisnorm().

> Do I miss something here?

Why not use

  b = bnfinit(x^2 - s, 1);

? The construction bnfinit(,1) may be slower in general; but it's much safer.

In any case, when you run into an error anyway, there are two options
1) try it :-), or 2) increase the working precision. Both methods have
pros and cons.

Cheers,

    K.B.

> 
> 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>
-- 
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/