8000 update README to reflect shift to MiniCAS · Jollywatt/GeometricAlgebra.jl@fb8b7c8 · GitHub
[go: up one dir, main page]

Skip to content

Commit fb8b7c8

Browse files
committed
update README to reflect shift to MiniCAS
1 parent 27435bd commit fb8b7c8

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

README.md

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -111,30 +111,34 @@ Type parameters:
111111
112112
## Symbolic Algebra and Code Generation
113113
114-
Thanks to the wonderful [`SymbolicUtils`](https://symbolicutils.juliasymbolics.org/) package, the same code originally written for numerical multivectors readily works with symbolic components.
114+
The `GeometricAlgebra.MiniCAS` provides a lightweight symbolic expression type allowing multivectors to have symbolic components.
115115
For example, we can compute the product of two vectors symbolically as follows:
116116
117117
```julia
118118
julia> GeometricAlgebra.MiniCAS.variables.([:x, :y], 3)
119-
2-element Vector{Vector{Any}}:
119+
2-element Vector{Vector{ProductNode{Expr}}}:
120120
[x[1], x[2], x[3]]
121121
[y[1], y[2], y[3]]
122122

123123
julia> Multivector{3,1}.(ans)
124-
2-element Vector{Multivector{3, 1, Vector{Any}}}:
124+
2-element Vector{Multivector{3, 1, Vector{ProductNode{Expr}}}}:
125125
x[1]v1 + x[2]v2 + 8000 x[3]v3
126126
y[1]v1 + y[2]v2 + y[3]v3
127127

128128
julia> prod(ans)
129-
4-component Multivector{3, 0:2:2, Vector{Any}}:
130-
x[1]*y[1] + x[2]*y[2] + x[3]*y[3]
131-
x[1]*y[2] - x[2]*y[1] v12 + x[1]*y[3] - x[3]*y[1] v13 + x[2]*y[3] - x[3]*y[2] v23
129+
4-component Multivector{3, 0:2:2, SVector{4, SumNode{Expr, Int64}}}:
130+
x[1] * y[1] + x[2] * y[2] + x[3] * y[3]
131+
-(x[2] * y[1]) + x[1] * y[2] v12 + -(x[3] * y[1]) + x[1] * y[3] v13 + -(x[3] * y[2]) + x[2] * y[3] v23
132132

133133
```
134134
135135
This makes it easy to optimize multivector operations by first performing the calculation symbolically, then converting the resulting expression into unrolled code.
136136
By default, symbolic code generation is used for most products in up to eight dimensions (above which general algebraic expressions become unwieldy).
137137
138+
> [!NOTE]
139+
> Prior to version 0.2.3, `GeometricAlegbra.jl` depended on `SymbolicUtils.jl` for symbolic algebra.
140+
> This was replaced by `MiniCAS` because only basic polynomial operations are required.
141+
138142
## Similar Packages
139143 3EC7
140144
This package derives inspiration from many others. Here is a list of Julia implementations (of varying completeness) which I have come across:

0 commit comments

Comments
 (0)
0