Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Converting a symbolic exression to an element of a number field

At some point in a calculation in the symbolic ring I end up with some numbers which are complex rationals of the form (a/b + I*(c/d). At this point I would like to no longer treat them as symbolic expressions and rather work with them in a more well behaved field. Since all of the computation I will be doing will keep things as complex rationals it seems like the number field QQ[I] is my best option.

My question is: How can I convert a symbolic expression like SR(2/3+4/5*I) to an element of QQ[I]. In general, there is no coercion from the symbolic ring to a number field, but in this special case there is a pretty clear map I would like to use.

Converting a symbolic exression to an element of a number field

At some point in a calculation in the symbolic ring I end up with some numbers which are complex rationals of the form (a/b + I*(c/d). At this point I would like to no longer treat them as symbolic expressions and rather work with them in a more well behaved field. Since all of the computation I will be doing will keep things as complex rationals it seems like the number field QQ[I] is my best option.

My question is: is: How can I convert a symbolic expression like SR(2/3+4/5*I) to an element of QQ[I]. In general, there is no coercion from the symbolic ring to a number field, but in this special case there is a pretty clear map I would like to use.

Edit: I suppose since the map from the symbolic ring to the number field depends on an assumed embedding of the number field in the complex numbers, this might not be doable in any clean way. For now the following helper function works

def SRtoQQI(v, imGen):      # imGen = the immaginary unit in a ring QQ[I]
    rp = QQ(v.real_part())  # get real part of input
    ip = QQ(v.imag_part())  # get immaginary part of input
    return rp + ip*imGen    # combine parts to get output

I am still interested to know if there is a build in way maybe, making use of the embedding maps from QQ[I] to SR.

Converting a symbolic exression to an element of a number field

At some point in a calculation in the symbolic ring I end up with some numbers which are complex rationals of the form (a/b + I*(c/d). At this point I would like to no longer treat them as symbolic expressions and rather work with them in a more well behaved field. Since all of the computation I will be doing will keep things as complex rationals it seems like the number field QQ[I] is my best option.

My question is: How can I convert a symbolic expression like SR(2/3+4/5*I) to an element of QQ[I]. In general, there is no coercion from the symbolic ring to a number field, but in this special case there is a pretty clear map I would like to use.

Edit: I suppose since the map from the symbolic ring to the number field depends on an assumed embedding of the number field in the complex numbers, this might not be doable in any clean way. For now the following helper function works

def SRtoQQI(v, imGen):      # imGen = the immaginary unit in a ring QQ[I]
    rp = QQ(v.real_part())  # get real part of input
    ip = QQ(v.imag_part())  # get immaginary part of input
    return rp + ip*imGen    # combine parts to get output

I am still interested to know if there is a build in way maybe, way, maybe making use of the embedding maps from QQ[I] to SR.

Converting a symbolic exression to an element of a number field

At some point in a calculation in the symbolic ring I end up with some numbers which are complex rationals of the form (a/b + I*(c/d). At this point I would like to no longer treat them as symbolic expressions and rather work with them in a more well behaved field. Since all of the computation I will be doing will keep things as complex rationals it seems like the number field QQ[I] is my best option.

My question is: How can I convert a symbolic expression like SR(2/3+4/5*I) to an element of QQ[I]. In general, there is no coercion from the symbolic ring to a number field, but in this special case there is a pretty clear map I would like to use.

Edit: I suppose since the map from the symbolic ring to the number field depends on an assumed embedding of the number field in the complex numbers, this might not be doable in any clean way. For now the following helper function works

def SRtoQQI(v, imGen):      # imGen = the immaginary unit in a ring QQ[I]
    rp = QQ(v.real_part())  # get real part of input
    ip = QQ(v.imag_part())  # get immaginary part of input
    return rp + ip*imGen    # combine parts to get output

I am still interested to know if there is a build in way, maybe making use of the embedding maps from QQ[I] to SR.