From f10c276086e8921b6d23dae631478cf8bab441be Mon Sep 17 00:00:00 2001 From: Micah Fitch Date: Thu, 23 Apr 2020 03:25:34 -0500 Subject: [PATCH] ensure symbolic functions work on Chain, MultiVector and Simplex objects --- src/Grassmann.jl | 4 ++-- test/symbolictests.jl | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Grassmann.jl b/src/Grassmann.jl index db7c5ba..d639b8a 100644 --- a/src/Grassmann.jl +++ b/src/Grassmann.jl @@ -255,7 +255,7 @@ function __init__() end @require SymPy="24249f21-da20-56a4-8eb1-6a02cf4ae2e6" begin generate_algebra(:SymPy,:Sym,:diff,:symbols) - T = Union{TensorTerm, TensorMixed} + T = Union{TensorGraded, TensorMixed} symbolic = v -> typeof(v) == SymPy.Sym SymPy.expand(x::T) = map(v -> symbolic(v) ? SymPy.expand(v) : v, x) SymPy.factor(x::T) = map(v -> symbolic(v) ? SymPy.factor(v) : v, x) @@ -269,7 +269,7 @@ function __init__() end @require SymEngine="123dc426-2d89-5057-bbad-38513e3affd8" begin generate_algebra(:SymEngine,:Basic,:diff,:symbols) - T = Union{TensorTerm, TensorMixed} + T = Union{TensorGraded, TensorMixed} symbolic = v -> typeof(v) == SymEngine.Basic SymEngine.expand(x::T) = map(v -> symbolic(v) ? SymEngine.expand(v) : v, x) SymEngine.subs(x::T, args...) = map(v -> symbolic(v) ? SymEngine.subs(v, args...) : v, x) diff --git a/test/symbolictests.jl b/test/symbolictests.jl index beb0a89..357aed8 100644 --- a/test/symbolictests.jl +++ b/test/symbolictests.jl @@ -1,6 +1,6 @@ """ -Test symbolic expressions. +Smoke tests for common SymPy and SymEngine functions. """ module SymbolicTests using Grassmann @@ -11,12 +11,17 @@ using Grassmann @basis S"+++" x,y,z = SymEngine.symbols("x y z") + # expanding the symbolic coefficient of a `Simplex` simp = (x+1)^2*v1 @show SymEngine.expand(simp) + # expansion/substitution on each symbolic coefficient of a `MultiVector` mv = (x+y)^3 * v12 + (y+z) * v123 @show SymEngine.subs(mv, Dict(x=>2, y=>2, z=>2)) @show SymEngine.expand(mv) + + # expanding each symbolic coefficient of a `Chain` + @show expand((x+1)*(x+2)*(v1+v2)) end @testset "Test SymPy" begin