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.

Reply via email to