I recall there is an algorithm involving lattices that would tell me if a given number(approximation) is an algebraic number or not, along with the exact algebraic form of the number. Is there any tool (Gap, Mathematica, python package, etc) that has an implementation of this?
I have numbers which I can approximate to any degree of accuracy I want and I would like to know if they are algebraic or not.
Yes, there is an implementation in Magma called
MinimalPolynomial(there is also a deprecated commandPowerRelation). It takes as arguments the floating point approximation and a bound on the degree of the desired minimal polynomial. You can try it out using the online Magma calculator.Here's an example recognizing $\sqrt{2}$. First let's get its floating point approximation.
This outputs
Now we compute a likely algebraic relation
which outputs
which is the polynomial $x^2 - 2$ and the error.
As others have pointed out, this command won't tell you for certain that your floating point number is algebraic; it simply says that there exists an algebraic number of degree $\leq d$ whose floating point approximation (under an embedding into $\mathbb{C}$) is close to the given approximation, and whose minimal polynomial is small, in some sense. The key is the LLL algorithm, which finds short vectors relative to a lattice.