Max Alekseyev on Sun, 31 Oct 2021 03:12:47 +0100


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

Re: size of the coefficients returned by bnfisnorm()


Dear Bill,

I did not have a chance to thank you for your suggestion on reducing coefficients of bnfisnorm() based on qfparam(), but now I have a similar question about qfparam() itself.
Consider an example:

? G = matdiagonal([650, -104329, -104329]);
? M = qfparam(G, qfsolve(G))
%1 =
[-33698267 -161709950 -194002198]
[  -521645   -2487100   -2964370]
[ -2608225  -12519480  -15023350]

I claim that the following matrix works equally well (i.e. it could have been returned by qfparam), but it has much smaller entries:

? M2 = [323, 0, 323; 5, 50, -5; 25,- 10, - 25]
%2 =
[323   0 323]
[  5  50  -5]
[ 25 -10 -25]

So, I wonder about an approach to reduce the coefficients of the matrix returned by qfparam(), at least in the case of diagonal matrix G.

Regards,
Max

On Tue, Sep 29, 2020 at 2:58 PM Bill Allombert <Bill.Allombert@math.u-bordeaux.fr> wrote:
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.