Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

I guess what you want is to work in the so-called Algebraic Real Field:

sage: AA
Algebraic Real Field
sage: R.<x> = AA[]
sage: p = x^2-3
sage: p.factor()
(x - 1.732050807568878?) * (x + 1.732050807568878?)
sage: q = x^2-5
sage: q.factor()
(x - 2.236067977499790?) * (x + 2.236067977499790?)

Note that the printed values are actually exact values (the ? indicates this fact), and you can compute radical expressions for them like this:

sage: f0 = p.factor()[0][0].constant_coefficient()
sage: f0
-1.732050807568878?
sage: f0.radical_expression()
-sqrt(3)

I do not know if it is possible to obtain directly the factorization of p with coefficients expressed as a list of radicals, but you can construct such a representation quite easily (by hand).

I guess what you want is to work in the so-called Algebraic Real Field:

sage: AA
Algebraic Real Field
sage: R.<x> = AA[]
sage: p = x^2-3
sage: p.factor()
(x - 1.732050807568878?) * (x + 1.732050807568878?)
sage: q = x^2-5
sage: q.factor()
(x - 2.236067977499790?) * (x + 2.236067977499790?)

Note that even though the printed values contain a limited number of digits, they are actually internally exact values represented (the ? indicates this fact), and you can compute radical expressions for them like this:

sage: f0 = p.factor()[0][0].constant_coefficient()
sage: f0
-1.732050807568878?
sage: f0.radical_expression()
-sqrt(3)

I do not know if it is possible to obtain directly the factorization of p with coefficients expressed as a list of radicals, but you can construct such a representation quite easily (by hand).

I guess what you want is to work in the so-called Algebraic Real Field:

sage: AA
Algebraic Real Field
sage: R.<x> = AA[]
sage: p = x^2-3
sage: p.factor()
(x - 1.732050807568878?) * (x + 1.732050807568878?)
sage: q = x^2-5
sage: q.factor()
(x - 2.236067977499790?) * (x + 2.236067977499790?)

Note that even though the printed values contain a limited number of digits, they are internally exact exactly represented (the ? indicates this fact), and you can for instance compute radical expressions for them like this:

sage: f0 = p.factor()[0][0].constant_coefficient()
sage: f0
-1.732050807568878?
sage: f0.radical_expression()
-sqrt(3)

I do not know if it is possible to obtain directly the factorization of p with coefficients expressed as a list of radicals, but you can construct such a representation quite easily (by hand).

I guess Though it is not exactly what you want is are looking for, an approach may be to work in the so-called Algebraic Real Field:Field which contains the constructible numbers:

sage: AA
Algebraic Real Field
sage: R.<x> = AA[]
sage: p = x^2-3
sage: p.factor()
(x - 1.732050807568878?) * (x + 1.732050807568878?)
sage: q = x^2-5
sage: q.factor()
(x - 2.236067977499790?) * (x + 2.236067977499790?)

Note that even though the printed values contain a limited number of digits, they are internally exactly represented (the ? indicates this fact), and you can for instance compute radical expressions for them like this:

sage: f0 = p.factor()[0][0].constant_coefficient()
sage: f0
-1.732050807568878?
sage: f0.radical_expression()
-sqrt(3)

I do not know if it is possible to obtain directly the factorization of p with coefficients expressed as a list of radicals, but you can construct such a representation quite easily (by hand).