On Fri, Mar 07, 2025 at 01:39:53PM +0100, 'Ralf Hemmecke' via FriCAS - computer algebra system wrote: > I have given x: AlgebraicNumber and know already that the value is real.
But how do you "know" this? We discussed several times the problem: algebraically conjugates of an algebraic number are indistinguishable. So your "know" may mean on of several things: - you look for real conjugate - you know that all conjugates are real - there is exactly one real conjugate - you have some rules that choose real conjugate As an example consider p6 := legendre(6)$PolynomialNumberTheoryFunctions a := rootOf(p6) Which of the real roots of p6 do you want (all conjugates are real)? Similarly b := sqrt(a) Do you "know" that b is real (6 conjugates are imaginary, 6 are real). Or consider c := rootOf(x^3 - x + 4) Do you "know" that c is real (there is exactly one real root). > 1) Is there a function that given x and an eps:Fraction(Integer) returns > two rational bounds l,u such that l<=x<=u and u-l<eps without going > via Float? > > 2) Is there an a function to convert x to > RealClosure(Fraction(Integer))? > > I am actually interested only in (1), but while looking for it, I came > across RealClosure und found that quite interesting and maybe the function > approximate [1] is close to what I want. Answer really depends on what you mean by "know". And the most efficient way to get resulut is likely to use floating point approximations. For example, if you are statisfied with "random" real conjugate one way to go is to find minimal polynomial, then use Sturm sequences or rule of signs and bisection to find bounds on a real root. Using some numeric root finding method is likely to be more efficient (but mostly symbolic approach may be easier to program). Currently it seems that we do not have a function to compute minimal polynomial. For kernels this could be done based on definingPolynomial, in general we would need some extra linear algebra. Actually, if you want easy coding simplest way could go via setting a _system_ of equations for your number and using 'solve'. All this in general will give you a list of values (possible solutions) and you will need to use your "know" to decide which one you want. -- Waldek Hebisch -- You received this message because you are subscribed to the Google Groups "FriCAS - computer algebra system" group. To unsubscribe from this group and stop receiving emails from it, send an email to fricas-devel+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/fricas-devel/Z8r03PddOvZG8-iF%40fricas.org.