module Data.Number.Flint.Calcium.Fexpr.Builtin (
fexpr_builtin_name
, fexpr_builtin_lookup
, fexpr_builtin_length
, fexpr_builtin_hash
, fexpr_builtin_hash_name
, FEXR_Builtin (..)
) where
import Foreign.C.Types
import Foreign.C.String
import qualified Data.Map as Map
import Data.Map (Map, (!), (!?))
fexpr_builtin_lookup :: CString -> IO CLong
fexpr_builtin_lookup :: CString -> IO CLong
fexpr_builtin_lookup CString
s = do
String
name <- CString -> IO String
peekCString CString
s
case Map String CLong
fexpr_builtin_hash_name forall k a. Ord k => Map k a -> k -> Maybe a
!? String
name of
Just CLong
n -> forall (m :: * -> *) a. Monad m => a -> m a
return CLong
n
Maybe CLong
_ -> forall (m :: * -> *) a. Monad m => a -> m a
return (-CLong
1)
fexpr_builtin_name :: CLong -> IO CString
fexpr_builtin_name :: CLong -> IO CString
fexpr_builtin_name CLong
n = String -> IO CString
newCString forall a b. (a -> b) -> a -> b
$ [String]
fexpr_builtin_names forall a. [a] -> Int -> a
!! (forall a b. (Integral a, Num b) => a -> b
fromIntegral CLong
n)
fexpr_builtin_length :: Integer
fexpr_builtin_length = forall a b. (Integral a, Num b) => a -> b
fromIntegral forall a b. (a -> b) -> a -> b
$ forall (t :: * -> *) a. Foldable t => t a -> Int
length [FEXR_Builtin]
fexpr_builtins
fexpr_builtin_hash :: Map FEXR_Builtin CLong
fexpr_builtin_hash :: Map FEXR_Builtin CLong
fexpr_builtin_hash = forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList forall a b. (a -> b) -> a -> b
$ forall a b. [a] -> [b] -> [(a, b)]
zip [FEXR_Builtin]
fexpr_builtins [CLong
0..]
fexpr_builtin_hash_name :: Map String CLong
fexpr_builtin_hash_name :: Map String CLong
fexpr_builtin_hash_name = forall k a. Ord k => [(k, a)] -> Map k a
Map.fromList forall a b. (a -> b) -> a -> b
$ forall a b. [a] -> [b] -> [(a, b)]
zip [String]
fexpr_builtin_names [CLong
0..]
fexpr_builtin_names :: [String]
fexpr_builtin_names = forall a b. (a -> b) -> [a] -> [b]
map forall a. Show a => a -> String
show [FEXR_Builtin]
fexpr_builtins
fexpr_builtins :: [FEXR_Builtin]
fexpr_builtins = [FEXR_Builtin
FEXPR_AGM .. FEXR_Builtin
FEXPR_zeta_]
data FEXR_Builtin
= FEXPR_AGM
| FEXPR_AGMSequence
| FEXPR_Abs
| FEXPR_Acos
| FEXPR_Acosh
| FEXPR_Acot
| FEXPR_Acoth
| FEXPR_Acsc
| FEXPR_Acsch
| FEXPR_Add
| FEXPR_AiryAi
| FEXPR_AiryAiZero
| FEXPR_AiryBi
| FEXPR_AiryBiZero
| FEXPR_AlgebraicNumberSerialized
| FEXPR_AlgebraicNumbers
| FEXPR_All
| FEXPR_AnalyticContinuation
| FEXPR_And
| FEXPR_AngleBrackets
| FEXPR_Approximation
| FEXPR_Arg
| FEXPR_ArgMax
| FEXPR_ArgMaxUnique
| FEXPR_ArgMin
| FEXPR_ArgMinUnique
| FEXPR_Asec
| FEXPR_Asech
| FEXPR_Asin
| FEXPR_Asinh
| FEXPR_AsymptoticTo
| FEXPR_Atan
| FEXPR_Atan2
| FEXPR_Atanh
| FEXPR_BarnesG
| FEXPR_BellNumber
| FEXPR_BernoulliB
| FEXPR_BernoulliPolynomial
| FEXPR_BernsteinEllipse
| FEXPR_BesselI
| FEXPR_BesselJ
| FEXPR_BesselJZero
| FEXPR_BesselK
| FEXPR_BesselY
| FEXPR_BesselYZero
| FEXPR_BetaFunction
| FEXPR_Binomial
| FEXPR_Braces
| FEXPR_Brackets
| FEXPR_CC
| FEXPR_Call
| FEXPR_CallIndeterminate
| FEXPR_Cardinality
| FEXPR_CarlsonHypergeometricR
| FEXPR_CarlsonHypergeometricT
| FEXPR_CarlsonRC
| FEXPR_CarlsonRD
| FEXPR_CarlsonRF
| FEXPR_CarlsonRG
| FEXPR_CarlsonRJ
| FEXPR_CartesianPower
| FEXPR_CartesianProduct
| FEXPR_Case
| FEXPR_Cases
| FEXPR_CatalanConstant
| FEXPR_Ceil
| FEXPR_Characteristic
| FEXPR_ChebyshevT
| FEXPR_ChebyshevU
| FEXPR_ClosedComplexDisk
| FEXPR_ClosedOpenInterval
| FEXPR_Coefficient
| FEXPR_Column
| FEXPR_ColumnMatrix
| FEXPR_CommutativeRings
| FEXPR_ComplexBranchDerivative
| FEXPR_ComplexDerivative
| FEXPR_ComplexInfinities
| FEXPR_ComplexLimit
| FEXPR_ComplexSignedInfinities
| FEXPR_ComplexSingularityClosure
| FEXPR_ComplexZeroMultiplicity
| FEXPR_Concatenation
| FEXPR_CongruentMod
| FEXPR_Conjugate
| FEXPR_ConreyGenerator
| FEXPR_Cos
| FEXPR_CosIntegral
| FEXPR_Cosh
| FEXPR_CoshIntegral
| FEXPR_Cot
| FEXPR_Coth
| FEXPR_CoulombC
| FEXPR_CoulombF
| FEXPR_CoulombG
| FEXPR_CoulombH
| FEXPR_CoulombSigma
| FEXPR_Csc
| FEXPR_Csch
| FEXPR_Csgn
| FEXPR_CurvePath
| FEXPR_Cyclotomic
| FEXPR_Decimal
| FEXPR_DedekindEta
| FEXPR_DedekindEtaEpsilon
| FEXPR_DedekindSum
| FEXPR_Def
| FEXPR_Delta
| FEXPR_Delta_
| FEXPR_Derivative
| FEXPR_Det
| FEXPR_DiagonalMatrix
| FEXPR_DigammaFunction
| FEXPR_DigammaFunctionZero
| FEXPR_DirichletCharacter
| FEXPR_DirichletGroup
| FEXPR_DirichletL
| FEXPR_DirichletLZero
| FEXPR_DirichletLambda
| FEXPR_DiscreteLog
| FEXPR_Div
| FEXPR_Divides
| FEXPR_DivisorProduct
| FEXPR_DivisorSigma
| FEXPR_DivisorSum
| FEXPR_DoubleFactorial
| FEXPR_EisensteinE
| FEXPR_EisensteinG
| FEXPR_Element
| FEXPR_Ellipsis
| FEXPR_EllipticE
| FEXPR_EllipticK
| FEXPR_EllipticPi
| FEXPR_EllipticRootE
| FEXPR_Enclosure
| FEXPR_Equal
| FEXPR_EqualAndElement
| FEXPR_EqualNearestDecimal
| FEXPR_EqualQSeriesEllipsis
| FEXPR_Equivalent
| FEXPR_Erf
| FEXPR_Erfc
| FEXPR_Erfi
| FEXPR_Euler
| FEXPR_EulerE
| FEXPR_EulerPhi
| FEXPR_EulerPolynomial
| FEXPR_EulerQSeries
| FEXPR_Exists
| FEXPR_Exp
| FEXPR_ExpIntegralE
| FEXPR_ExpIntegralEi
| FEXPR_ExtendedRealNumbers
| FEXPR_Factorial
| FEXPR_FallingFactorial
| FEXPR_False
| FEXPR_Fibonacci
| FEXPR_Fields
| FEXPR_FiniteField
| FEXPR_Floor
| FEXPR_For
| FEXPR_FormalLaurentSeries
| FEXPR_FormalPowerSeries
| FEXPR_FormalPuiseuxSeries
| FEXPR_FresnelC
| FEXPR_FresnelS
| FEXPR_Fun
| FEXPR_GCD
| FEXPR_Gamma
| FEXPR_GaussLegendreWeight
| FEXPR_GaussSum
| FEXPR_GegenbauerC
| FEXPR_GeneralLinearGroup
| FEXPR_GeneralizedBernoulliB
| FEXPR_GeneralizedRiemannHypothesis
| FEXPR_GlaisherConstant
| FEXPR_GoldenRatio
| FEXPR_Greater
| FEXPR_GreaterEqual
| FEXPR_GreekGamma
| FEXPR_GreekGamma_
| FEXPR_GreekPi
| FEXPR_GreekPi_
| FEXPR_Guess
| FEXPR_HankelH1
| FEXPR_HankelH2
| FEXPR_HarmonicNumber
| FEXPR_HermiteH
| FEXPR_HilbertClassPolynomial
| FEXPR_HilbertMatrix
| FEXPR_HurwitzZeta
| FEXPR_Hypergeometric0F1
| FEXPR_Hypergeometric0F1Regularized
| FEXPR_Hypergeometric1F1
| FEXPR_Hypergeometric1F1Regularized
| FEXPR_Hypergeometric1F2
| FEXPR_Hypergeometric1F2Regularized
| FEXPR_Hypergeometric2F0
| FEXPR_Hypergeometric2F1
| FEXPR_Hypergeometric2F1Regularized
| FEXPR_Hypergeometric2F2
| FEXPR_Hypergeometric2F2Regularized
| FEXPR_Hypergeometric3F2
| FEXPR_Hypergeometric3F2Regularized
| FEXPR_HypergeometricU
| FEXPR_HypergeometricUStar
| FEXPR_HypergeometricUStarRemainder
| FEXPR_IdentityMatrix
| FEXPR_Im
| FEXPR_Implies
| FEXPR_IncompleteBeta
| FEXPR_IncompleteBetaRegularized
| FEXPR_IncompleteEllipticE
| FEXPR_IncompleteEllipticF
| FEXPR_IncompleteEllipticPi
| FEXPR_IndefiniteIntegralEqual
| FEXPR_Infimum
| FEXPR_Infinity
| FEXPR_IntegersGreaterEqual
| FEXPR_IntegersLessEqual
| FEXPR_Integral
| FEXPR_Intersection
| FEXPR_Interval
| FEXPR_IsEven
| FEXPR_IsHolomorphicOn
| FEXPR_IsMeromorphicOn
| FEXPR_IsOdd
| FEXPR_IsPrime
| FEXPR_Item
| FEXPR_JacobiP
| FEXPR_JacobiSymbol
| FEXPR_JacobiTheta
| FEXPR_JacobiThetaEpsilon
| FEXPR_JacobiThetaPermutation
| FEXPR_JacobiThetaQ
| FEXPR_KeiperLiLambda
| FEXPR_KhinchinConstant
| FEXPR_KroneckerDelta
| FEXPR_KroneckerSymbol
| FEXPR_LCM
| FEXPR_LaguerreL
| FEXPR_LambertW
| FEXPR_Lamda
| FEXPR_Lamda_
| FEXPR_LandauG
| FEXPR_Lattice
| FEXPR_LeftLimit
| FEXPR_LegendreP
| FEXPR_LegendrePolynomialZero
| FEXPR_LegendreSymbol
| FEXPR_Length
| FEXPR_LerchPhi
| FEXPR_Less
| FEXPR_LessEqual
| FEXPR_Limit
| FEXPR_LiouvilleLambda
| FEXPR_List
| FEXPR_Log
| FEXPR_LogBarnesG
| FEXPR_LogBarnesGRemainder
| FEXPR_LogGamma
| FEXPR_LogIntegral
| FEXPR_Logic
| FEXPR_LowerGamma
| FEXPR_Matrices
| FEXPR_Matrix
| FEXPR_Matrix2x2
| FEXPR_Max
| FEXPR_Maximum
| FEXPR_MeromorphicDerivative
| FEXPR_MeromorphicLimit
| FEXPR_Min
| FEXPR_Minimum
| FEXPR_Mod
| FEXPR_ModularGroupAction
| FEXPR_ModularGroupFundamentalDomain
| FEXPR_ModularJ
| FEXPR_ModularLambda
| FEXPR_ModularLambdaFundamentalDomain
| FEXPR_MoebiusMu
| FEXPR_Mul
| FEXPR_MultiZetaValue
| FEXPR_NN
| FEXPR_Neg
| FEXPR_Not
| FEXPR_NotElement
| FEXPR_NotEqual
| FEXPR_NumberE
| FEXPR_NumberI
| FEXPR_Omega
| FEXPR_Omega_
| FEXPR_One
| FEXPR_OpenClosedInterval
| FEXPR_OpenComplexDisk
| FEXPR_OpenInterval
| FEXPR_OpenRealBall
| FEXPR_Or
| FEXPR_Otherwise
| FEXPR_PSL2Z
| FEXPR_Parentheses
| FEXPR_PartitionsP
| FEXPR_Path
| FEXPR_Phi
| FEXPR_Phi_
| FEXPR_Pi
| FEXPR_Pol
| FEXPR_Poles
| FEXPR_PolyLog
| FEXPR_Polynomial
| FEXPR_PolynomialDegree
| FEXPR_PolynomialFractions
| FEXPR_PolynomialRootIndexed
| FEXPR_PolynomialRootNearest
| FEXPR_Polynomials
| FEXPR_Pos
| FEXPR_Pow
| FEXPR_Prime
| FEXPR_PrimePi
| FEXPR_PrimeProduct
| FEXPR_PrimeSum
| FEXPR_Primes
| FEXPR_PrimitiveDirichletCharacters
| FEXPR_PrimitiveReducedPositiveIntegralBinaryQuadraticForms
| FEXPR_Product
| FEXPR_ProjectiveComplexNumbers
| FEXPR_ProjectiveRealNumbers
| FEXPR_Psi
| FEXPR_Psi_
| FEXPR_QQ
| FEXPR_QSeriesCoefficient
| FEXPR_QuotientRing
| FEXPR_RR
| FEXPR_Range
| FEXPR_Re
| FEXPR_RealAbs
| FEXPR_RealAlgebraicNumbers
| FEXPR_RealBall
| FEXPR_RealDerivative
| FEXPR_RealInfinities
| FEXPR_RealLimit
| FEXPR_RealSignedInfinities
| FEXPR_RealSingularityClosure
| FEXPR_Repeat
| FEXPR_Residue
| FEXPR_RiemannHypothesis
| FEXPR_RiemannXi
| FEXPR_RiemannZeta
| FEXPR_RiemannZetaZero
| FEXPR_RightLimit
| FEXPR_Rings
| FEXPR_RisingFactorial
| FEXPR_Root
| FEXPR_RootOfUnity
| FEXPR_Row
| FEXPR_RowMatrix
| FEXPR_SL2Z
| FEXPR_Same
| FEXPR_Sec
| FEXPR_Sech
| FEXPR_SequenceLimit
| FEXPR_SequenceLimitInferior
| FEXPR_SequenceLimitSuperior
| FEXPR_Ser
| FEXPR_Set
| FEXPR_SetMinus
| FEXPR_Sets
| FEXPR_ShowExpandedNormalForm
| FEXPR_Sigma
| FEXPR_Sigma_
| FEXPR_Sign
| FEXPR_SignExtendedComplexNumbers
| FEXPR_Sin
| FEXPR_SinIntegral
| FEXPR_Sinc
| FEXPR_SingularValues
| FEXPR_Sinh
| FEXPR_SinhIntegral
| FEXPR_SloaneA
| FEXPR_Solutions
| FEXPR_SpecialLinearGroup
| FEXPR_Spectrum
| FEXPR_SphericalHarmonicY
| FEXPR_Sqrt
| FEXPR_SquaresR
| FEXPR_Step
| FEXPR_StieltjesGamma
| FEXPR_StirlingCycle
| FEXPR_StirlingS1
| FEXPR_StirlingS2
| FEXPR_StirlingSeriesRemainder
| FEXPR_Sub
| FEXPR_Subscript
| FEXPR_Subset
| FEXPR_SubsetEqual
| FEXPR_Subsets
| FEXPR_Sum
| FEXPR_Supremum
| FEXPR_SymmetricPolynomial
| FEXPR_Tan
| FEXPR_Tanh
| FEXPR_Theta
| FEXPR_Theta_
| FEXPR_True
| FEXPR_Tuple
| FEXPR_Tuples
| FEXPR_Undefined
| FEXPR_Union
| FEXPR_UniqueSolution
| FEXPR_UniqueZero
| FEXPR_UnitCircle
| FEXPR_Unknown
| FEXPR_UnsignedInfinity
| FEXPR_UpperGamma
| FEXPR_UpperHalfPlane
| FEXPR_WeierstrassP
| FEXPR_WeierstrassSigma
| FEXPR_WeierstrassZeta
| FEXPR_Where
| FEXPR_XGCD
| FEXPR_XX
| FEXPR_Xi
| FEXPR_Xi_
| FEXPR_ZZ
| FEXPR_Zero
| FEXPR_ZeroMatrix
| FEXPR_Zeros
| FEXPR_alpha
| FEXPR_alpha_
| FEXPR_beta
| FEXPR_beta_
| FEXPR_chi
| FEXPR_chi_
| FEXPR_delta
| FEXPR_delta_
| FEXPR_ell
| FEXPR_ell_
| FEXPR_epsilon
| FEXPR_epsilon_
| FEXPR_eta
| FEXPR_eta_
| FEXPR_gamma
| FEXPR_gamma_
| FEXPR_iota
| FEXPR_iota_
| FEXPR_kappa
| FEXPR_kappa_
| FEXPR_lamda
| FEXPR_lamda_
| FEXPR_mu
| FEXPR_mu_
| FEXPR_nu
| FEXPR_nu_
| FEXPR_omega
| FEXPR_omega_
| FEXPR_phi
| FEXPR_phi_
| FEXPR_pi
| FEXPR_pi_
| FEXPR_rho
| FEXPR_rho_
| FEXPR_sigma
| FEXPR_sigma_
| FEXPR_tau
| FEXPR_tau_
| FEXPR_theta
| FEXPR_theta_
| FEXPR_varphi
| FEXPR_varphi_
| FEXPR_vartheta
| FEXPR_vartheta_
| FEXPR_xi
| FEXPR_xi_
| FEXPR_zeta
| FEXPR_zeta_
deriving (Int -> FEXR_Builtin -> ShowS
[FEXR_Builtin] -> ShowS
FEXR_Builtin -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [FEXR_Builtin] -> ShowS
$cshowList :: [FEXR_Builtin] -> ShowS
show :: FEXR_Builtin -> String
$cshow :: FEXR_Builtin -> String
showsPrec :: Int -> FEXR_Builtin -> ShowS
$cshowsPrec :: Int -> FEXR_Builtin -> ShowS
Show, FEXR_Builtin -> FEXR_Builtin -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: FEXR_Builtin -> FEXR_Builtin -> Bool
$c/= :: FEXR_Builtin -> FEXR_Builtin -> Bool
== :: FEXR_Builtin -> FEXR_Builtin -> Bool
$c== :: FEXR_Builtin -> FEXR_Builtin -> Bool
Eq, Int -> FEXR_Builtin
FEXR_Builtin -> Int
FEXR_Builtin -> [FEXR_Builtin]
FEXR_Builtin -> FEXR_Builtin
FEXR_Builtin -> FEXR_Builtin -> [FEXR_Builtin]
FEXR_Builtin -> FEXR_Builtin -> FEXR_Builtin -> [FEXR_Builtin]
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
enumFromThenTo :: FEXR_Builtin -> FEXR_Builtin -> FEXR_Builtin -> [FEXR_Builtin]
$cenumFromThenTo :: FEXR_Builtin -> FEXR_Builtin -> FEXR_Builtin -> [FEXR_Builtin]
enumFromTo :: FEXR_Builtin -> FEXR_Builtin -> [FEXR_Builtin]
$cenumFromTo :: FEXR_Builtin -> FEXR_Builtin -> [FEXR_Builtin]
enumFromThen :: FEXR_Builtin -> FEXR_Builtin -> [FEXR_Builtin]
$cenumFromThen :: FEXR_Builtin -> FEXR_Builtin -> [FEXR_Builtin]
enumFrom :: FEXR_Builtin -> [FEXR_Builtin]
$cenumFrom :: FEXR_Builtin -> [FEXR_Builtin]
fromEnum :: FEXR_Builtin -> Int
$cfromEnum :: FEXR_Builtin -> Int
toEnum :: Int -> FEXR_Builtin
$ctoEnum :: Int -> FEXR_Builtin
pred :: FEXR_Builtin -> FEXR_Builtin
$cpred :: FEXR_Builtin -> FEXR_Builtin
succ :: FEXR_Builtin -> FEXR_Builtin
$csucc :: FEXR_Builtin -> FEXR_Builtin
Enum, Eq FEXR_Builtin
FEXR_Builtin -> FEXR_Builtin -> Bool
FEXR_Builtin -> FEXR_Builtin -> Ordering
FEXR_Builtin -> FEXR_Builtin -> FEXR_Builtin
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: FEXR_Builtin -> FEXR_Builtin -> FEXR_Builtin
$cmin :: FEXR_Builtin -> FEXR_Builtin -> FEXR_Builtin
max :: FEXR_Builtin -> FEXR_Builtin -> FEXR_Builtin
$cmax :: FEXR_Builtin -> FEXR_Builtin -> FEXR_Builtin
>= :: FEXR_Builtin -> FEXR_Builtin -> Bool
$c>= :: FEXR_Builtin -> FEXR_Builtin -> Bool
> :: FEXR_Builtin -> FEXR_Builtin -> Bool
$c> :: FEXR_Builtin -> FEXR_Builtin -> Bool
<= :: FEXR_Builtin -> FEXR_Builtin -> Bool
$c<= :: FEXR_Builtin -> FEXR_Builtin -> Bool
< :: FEXR_Builtin -> FEXR_Builtin -> Bool
$c< :: FEXR_Builtin -> FEXR_Builtin -> Bool
compare :: FEXR_Builtin -> FEXR_Builtin -> Ordering
$ccompare :: FEXR_Builtin -> FEXR_Builtin -> Ordering
Ord)