Skip to content

Commit

Permalink
exported alias, fixed quaternion ambiguity
Browse files Browse the repository at this point in the history
  • Loading branch information
chakravala committed Apr 24, 2024
1 parent 1ca7fbd commit 4386d89
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 13 deletions.
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name = "Grassmann"
uuid = "4df31cd9-4c27-5bea-88d0-e6a7146666d8"
authors = ["Michael Reed"]
version = "0.8.17"
version = "0.8.18"

[deps]
AbstractTensors = "a8e43f4a-99b7-5565-8bf1-0165161caaea"
Expand Down
5 changes: 3 additions & 2 deletions src/algebra.jl
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@

import Base: +, -, *, ^, /, //, inv, <, >, <<, >>, >>>
import AbstractTensors: , , , , , , , , , , , rem, div, TAG, SUB
import AbstractTensors: plus, minus, times, contraction, equal, wedgedot, veedot, antidot
import AbstractTensors: plus, minus, times, contraction, equal, wedgedot, veedot
import AbstractTensors: pseudosandwich, antisandwich, antidot
import Leibniz: diffcheck, diffmode, hasinforigin, hasorigininf, symmetricsplit
import Leibniz: loworder, isnull, Field, ExprField
const Sym,SymField = :AbstractTensors,Any
Expand Down Expand Up @@ -239,7 +240,7 @@ end

## sandwich product

export , sandwich, pseudosandwich
export , sandwich, pseudosandwich, antisandwich

(x::TensorTerm{V},y::TensorTerm{V}) where V = reverse(y)*x*involute(y)
(x::TensorAlgebra{V},y::TensorAlgebra{V}) where V = reverse(y)*x*involute(y)
Expand Down
21 changes: 11 additions & 10 deletions src/multivectors.jl
Original file line number Diff line number Diff line change
Expand Up @@ -1068,17 +1068,18 @@ function multispin(t::PseudoCouple{V,B}) where {V,B}
end
end

export quaternion, quatvalues
quaternion(sijk::NTuple{4}) = quaternion(Values(sijk))
quaternion(s,ijk::NTuple{3}) = quaternion(s,ijk...)
quaternion(sijk::Values{4}) = quaternion(Submanifold(3),sijk)
export quaternion, quatvalue, quatvalues
quaternion(sijk::NTuple{4}) = quaternion(Submanifold(3),sijk...)
quaternion(s,ijk::NTuple{3}) = quaternion(Submanifold(3),s,ijk...)
quaternion(sijk::Values{4}) = quaternion(Submanifold(3),sijk...)
quaternion(s,ijk::Values{3}) = quaternion(Submanifold(3),s,ijk...)
quaternion(s::T=0,i=zero(T),j=zero(T),k=zero(T)) where T = quaternion(Submanifold(3),Values(s,i,j,k))
quaternion(V::Submanifold,s::T,i=zero(T),j=zero(T),k=zero(T)) where T = quaternion(V,Values(s,i,-j,k))
quaternion(V,sijk::Values{4}) = Quaternion{V}(sijk)
quatvalues(q::TensorAlgebra) = quatvalues(Spinor(even(q)))
quatvalues(q::Quaternion{V,T}) where {V,T} = Values{4,T}(q.v[1],q.v[2],-q.v[3],q.v[4])
quatvalues(q::AntiQuaternion{V,T}) where {V,T} = Values{4,T}(q.v[4],q.v[3],q.v[2],q.v[1])
quaternion(s::T=0,i=zero(T),j=zero(T),k=zero(T)) where T = quaternion(Submanifold(3),s,i,j,k)
quaternion(V::Submanifold,s::T,i=zero(T),j=zero(T),k=zero(T)) where T = Spinor{V}(Values(s,i,-j,k))
quaternion(V::Submanifold,sijk::Values{4}) = quaternion(V,sijk...)
quatvalue(q::TensorAlgebra) = quatvalues(Spinor(even(q)))
quatvalue(q::Quaternion{V,T}) where {V,T} = Values{4,T}(q.v[1],q.v[2],-q.v[3],q.v[4])
quatvalue(q::AntiQuaternion{V,T}) where {V,T} = Values{4,T}(q.v[4],q.v[3],q.v[2],q.v[1])
const quatvalues = quatvalue

@inline value(m::Chain,T=valuetype(m)) = T(valuetype(m),Any) ? convert(T,m.v) : m.v
@inline value(m::Multivector,T=valuetype(m)) = T(valuetype(m),Any) ? convert(T,m.v) : m.v
Expand Down

0 comments on commit 4386d89

Please sign in to comment.