Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

How do I do computations in a quaternion algebara over a complex field?

If I enter

Q.<i,j,k> = QuaternionAlgebra(CC,1,1)

there is no problem. I can then type something like

(2+i+j)*(3*i-j)

and get the appropriate answer

2.00000000000000 + 6.00000000000000*i + (-2.00000000000000)*j + (-4.00000000000000)*k

The problem comes when I want to use non-real numbers. If I type

i*sqrt(-1)

then I get

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-1-0b500ba4930f> in <module>()
      1 Q = QuaternionAlgebra(CC,Integer(1),Integer(1), names=('i', 'j', 'k',)); (i, j, k,) = Q._first_ngens(3)
----> 2 i*sqrt(-Integer(1))

/home/sc_serv/sage/local/lib/python2.7/site-packages/sage/structure/element.so in sage.structure.element.RingElement.__mul__ (/home/sc_serv/sage/src/build/cythonized/sage/structure/element.c:17265)()

/home/sc_serv/sage/local/lib/python2.7/site-packages/sage/structure/coerce.so in sage.structure.coerce.CoercionModel_cache_maps.bin_op (/home/sc_serv/sage/src/build/cythonized/sage/structure/coerce.c:9721)()

TypeError: unsupported operand parent(s) for '*': 'Quaternion Algebra (1.00000000000000, 1.00000000000000) with base ring Complex Field with 53 bits of precision' and 'Symbolic Ring'

As a matter of fact, something similar happens if I type

i*sqrt(2)

which is not imaginary... I also tried typing

I*i

and get a similar error message. Since I am supposedly working in the quaternion algebra over the complex numbers, how do I specify arbitrary complex coefficients?

How do I do computations Computing in a quaternion algebara algebra over a complex field?

If I enter

Q.<i,j,k> = QuaternionAlgebra(CC,1,1)

there is no problem. I can then type something like

(2+i+j)*(3*i-j)

and get the appropriate answer

2.00000000000000 + 6.00000000000000*i + (-2.00000000000000)*j + (-4.00000000000000)*k

The problem comes when I want to use non-real numbers. If I type

i*sqrt(-1)

then I get

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-1-0b500ba4930f> in <module>()
      1 Q = QuaternionAlgebra(CC,Integer(1),Integer(1), names=('i', 'j', 'k',)); (i, j, k,) = Q._first_ngens(3)
----> 2 i*sqrt(-Integer(1))

/home/sc_serv/sage/local/lib/python2.7/site-packages/sage/structure/element.so in sage.structure.element.RingElement.__mul__ (/home/sc_serv/sage/src/build/cythonized/sage/structure/element.c:17265)()

/home/sc_serv/sage/local/lib/python2.7/site-packages/sage/structure/coerce.so in sage.structure.coerce.CoercionModel_cache_maps.bin_op (/home/sc_serv/sage/src/build/cythonized/sage/structure/coerce.c:9721)()

TypeError: unsupported operand parent(s) for '*': 'Quaternion Algebra (1.00000000000000, 1.00000000000000) with base ring Complex Field with 53 bits of precision' and 'Symbolic Ring'

As a matter of fact, something similar happens if I type

i*sqrt(2)

which is not imaginary... I also tried typing

I*i

and get got a similar error message. Since I am supposedly working in the quaternion algebra over the complex numbers, how do I specify arbitrary complex coefficients?