# Constructing a number field with complex embedding

I am using the function `number_field_elements_from_algebraics`

in `sage.rings.qqbar`

to write some algebraic numbers as elements of a number field. I am passing `embedded=True`

to also construct an embedding into `QQbar`

. This works fine if the algebraic numbers are real but fails if they are complex:

sage: number_field_elements_from_algebraics([1 + sqrt(7)], embedded=True) (Number Field in a with defining polynomial y^2 - 7 with a = 2.645751311064591?, [a + 1], Ring morphism: From: Number Field in a with defining polynomial y^2 - 7 with a = 2.645751311064591? To: Algebraic Real Field Defn: a |--> 2.645751311064591?)

sage: number_field_elements_from_algebraics([1 + sqrt(-7)], embedded=True) --------------------------------------------------------------------------- NotImplementedError Traceback (most recent call last) <ipython-input-1-ac220615ad5b> in <module>() ----> 1 number_field_elements_from_algebraics([Integer(1) + sqrt(-Integer(7))], embedded=True) /usr/lib/python2.7/site-packages/sage/rings/qqbar.pyc in number_field_elements_from_algebraics( numbers, minimal, same_field, embedded, prec) 2242 real_case = False 2243 if embedded: -> 2244 raise NotImplementedError 2245 # Make the numbers algebraic 2246 numbers = [mk_algebraic(_) for _ in numbers] NotImplementedError:

What is the reason for why only embeddings of real numbers are supported?

I modified the code in `number_field_elements_from_algebraics`

to support complex embeddings by essentially removing the check for whether the numbers are real and replacing `RealIntervalField`

by `ComplexIntervalField`

. This seems to work and the doctests still pass with these modifications. However I am worried that there was a good reason (either mathematically or related to some sage internals) for restricting this function to the real case.

The relevant code in `sage.rings.qqbar`

was introduced in these commits:

`26dc3e4e6a26f6f613a69d57929ea492c278dad0`

`a9045bf8a3aab2d0aa00be17e91227bc1b50262a`