Skip to content

Commit

Permalink
Added note on design goals
Browse files Browse the repository at this point in the history
  • Loading branch information
brainandforce committed Mar 19, 2024
1 parent c2d5353 commit 6d9b1ab
Showing 1 changed file with 19 additions and 0 deletions.
19 changes: 19 additions & 0 deletions docs/src/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,25 @@ provides fully static multivectors (Clifford numbers) in arbitrary dimensions an
in many cases, sparse representations of multivectors are more efficient, for spaces of low
dimension, dense static representations may provide a performance and convenience advantage.

## Design goals

The goal of this package is to provide a multivector implementation that:
* Allows for the construction of multivectors in arbitrary metrics, with coefficients that subtype
any instance of `Real` or `Complex`.
* Provides data structures of fixed sizes that represent multivectors. This allows for instances
to be allocated on the stack or stored inline in an `Array` rather than as pointers to individually
allocated instances.
* Provides dense representations of multivectors, as well as convenient sparse representations,
which can be constructed from each other, converted in a way that guarantees representability, and
allows for promotion between instances.
* Subtypes `Number`: The term "Clifford number" emphasizes the perspective of multivectors as an
extension of the real numbers, in the same way that complex numbers and quaternions extend them.
(It should be noted that both complex numbers and quaternions are Clifford algebras!)
* Aggressively optimizes all mathematical operations, utilizing `fma` operations and SIMD
instructions whenever possible.
* Interoperates with automatic differentiation tools and other packages which allow for the
implementation of operations from geometric calculus.

```@index
```

Expand Down

0 comments on commit 6d9b1ab

Please sign in to comment.