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.