diff --git a/src/Grassmann.jl b/src/Grassmann.jl index 0440b02..290629d 100644 --- a/src/Grassmann.jl +++ b/src/Grassmann.jl @@ -439,6 +439,7 @@ function __init__() parsym = (parsym...,RExpr) end @require SymPy="24249f21-da20-56a4-8eb1-6a02cf4ae2e6" generate_product_algebra(:(SymPy.Sym),:svec,:(SymPy.:*),:(SymPy.:+),:(SymPy.:-),:(SymPy.conj)) + @require SymEngine="123dc426-2d89-5057-bbad-38513e3affd8" generate_product_algebra(:(SymEngine.Basic),:svec,:(SymEngine.:*),:(SymEngine.:+),:(SymEngine.:-),:(SymEngine.conj)) end end # module diff --git a/src/algebra.jl b/src/algebra.jl index 4316c4d..ecba3f9 100644 --- a/src/algebra.jl +++ b/src/algebra.jl @@ -482,7 +482,7 @@ function generate_product_algebra(Field=Field,VEC=:mvec,MUL=:*,ADD=:+,SUB=:-,CON elseif Field ∈ (SymField,:(SymPy.Sym)) declare_mutating_operations(:(SizedArray{Tuple{M},T,1,1}),Field,set_val,SUB,MUL) end - Field == :(SymPy.Sym) && for par ∈ (:parany,:parval,:parsym) + Field ∈ (:(SymPy.Sym),:(SymEngine.Basic)) && for par ∈ (:parany,:parval,:parsym) @eval $par = ($par...,$Field) end TF = Field ∉ Fields ? :Any : :T @@ -1273,6 +1273,11 @@ end generate_product_algebra() generate_product_algebra(Complex) +generate_product_algebra(Rational{BigInt},:svec) +for Big ∈ (BigFloat,BigInt) + generate_product_algebra(Big,:svec) + generate_product_algebra(Complex{Big},:svec) +end generate_product_algebra(SymField,:svec,:($Sym.:∏),:($Sym.:∑),:($Sym.:-),:($Sym.conj)) const NSE = Union{Symbol,Expr,<:Real,<:Complex}