Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Algebraic Integer Relation with LLL #40

Open
aidevnn opened this issue May 1, 2023 · 1 comment
Open

Algebraic Integer Relation with LLL #40

aidevnn opened this issue May 1, 2023 · 1 comment
Assignees
Labels
enhancement New feature or request

Comments

@aidevnn
Copy link
Owner

aidevnn commented May 1, 2023

public static ConcreteGroup<EPoly<Rational>> GaloisGroupLLL(KPoly<Rational> P, int O1, int O2)
{
Console.WriteLine(P);
GlobalStopWatch.AddLap();
var nRoots = FG.NRoots(P.ToBcPoly(O2));
GlobalStopWatch.Show("Roots");
var alpha = nRoots[0];
return GaloisGroupNumericRoots(alpha, nRoots, P, O1);
}
public static void Example3()
{
var x = FG.QPoly();
GlobalStopWatch.Restart();
var galGr = GaloisGroupLLL(x.Pow(6) + 108, O1: 50, O2: 75); // S3
DisplayGroup.HeadElements(galGr);
var X = FG.KPoly('X', galGr.Neutral());
Console.WriteLine("Prod[X - ri] = {0}", galGr.Aggregate(X.One, (acc, r) => acc * (X - r)));
GlobalStopWatch.Show("END"); // Time:242 ms
}

O1 represents the minimum number of digits required in the lattice, while O2 represents the maximum number of digits required for precise computation before populating the lattice, both of which are typically determined through trial and error. However, a more efficient approach involves using a minorant to predict O1 and O2 based on the polynomial degree and its coefficients. Although this method may be challenging, it represents a significant improvement for future applications.

@aidevnn aidevnn added the enhancement New feature or request label May 1, 2023
@aidevnn aidevnn self-assigned this May 1, 2023
@aidevnn
Copy link
Owner Author

aidevnn commented May 1, 2023

The normality of the polynomial P must also be checked before continuing with LLL.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Development

No branches or pull requests

1 participant