Bill Allombert on Tue, 29 Sep 2020 20:20:55 +0200


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

Re: size of the coefficients returned by bnfisnorm()


On Tue, Sep 29, 2020 at 01:49:34PM -0400, Max Alekseyev wrote:
> In the following example bnfisnorm() returns an answer with coefficients
> with quite large numerators/denominators, while smaller ones exist.
> Is there a way to minimize those?
> 
> ?  bnfisnorm( bnfinit( x^2 + 2537 ), 2021 )
> %148 = [Mod(256420604537/291038813883*x + 2091491150354/291038813883, x^2 +
> 2537), 1]
> ?  norm( Mod(50/57*x + 473/57, x^2 + 2537) )
> %149 = 2021

I do not know how to reduce it, but you can use qfsolve and qfparams
in this special case (ternary quadratic form):

? M=matdiagonal([1,2537,-2021]);
? S = qfsolve(M)
%2 = [903,-10,23]~
? norm(Mod((-10*x+903)/23,x^2 + 2537))
%3 = 2021
? R = b^2*qfparam(M,S)*[1,a/b,(a/b)^2]~
%4 =
[2290911*b^2+7966180*a*b+6925193*a^2,25370*b^2+88322*a*b+76870*a^2,58351*b^2+202960*a*b+176487*a^2]~
? norm(Mod((R[2]*x+R[1])/R[3],x^2 + 2537))
%5 = 2021

Now, assuming you want to minimize the denominator:
? Q=Qfb(58351,202960,176487);
? qfbredsl2(Q)
%8 = [Qfb(23,8,111),[-40,-7;23,4]]

So the minimum is 23 which is reached with a=23, b=-40.

Cheers,
Bill.