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/