{-|
module      :  Data.Number.Flint.Calcium.Ca.Ext
copyright   :  (c) 2023 Hartmut Monien
license     :  GNU GPL, version 2 or above (see LICENSE)
maintainer  :  hmonien@uni-bonn.de


A @CaExt@ represents a fixed real or complex number /a/.

The @CaExt@ structure is heavy-weight object, not just meant to act
as a node in a symbolic expression. It will cache various data to
support repeated computation with this particular number, including its
numerical enclosure and number field data in the case of algebraic
numbers.

Extension numbers are used internally by the @Ca@ type to define the
embeddings \(\mathbb{Q}(a) \to \mathbb{C}\) of formal fields. The user
does not normally need to create @ca_ext_t@ instances directly; the
intended way for the user to work with the extension number /a/ is to
create a @ca_t@ representing the field element \(1 \cdot a\). The
underlying @CaExt@ may be accessed to determine symbolic and
numerical properties of this number.

Since extension numbers may depend recursively on nontrivial fields for
function arguments, @CaExt@ operations require a @CaCtx@ context
object.

-}
module Data.Number.Flint.Calcium.Ca.Ext (
  module Data.Number.Flint.Calcium.Ca.Ext.FFI
  ) where
  
import Data.Number.Flint.Calcium.Ca.Ext.FFI