#intermediate-representation #transformation #symbolic-math #computer #algebra #expression #systems

symoxide

Intermediate Representation and Transformations for Computer Algebra Systems

3 releases

0.1.2 Oct 25, 2022
0.1.1 Sep 26, 2022
0.1.0 Sep 10, 2022

#11 in #symbolic-math

MIT license

92KB
1.5K SLoC

SymOxide: Intermediate Representation and Transformations for Computer Algebra Systems

SymOxide has taken many design decisions from Pymbolic and could be called as Rust-rewrite of Pymbolic. Symoxide does indeed lead to faster expression traversals with similar LOCs in the downstream.


lib.rs:

Symoxide provides an Intermediate Representation for Scalar Expressions and abstract visitors (called as mappers) for traversing and transforming these expressions.

  • primitives contains the supported expression types.
  • builders contains routines to build these expressions.
  • [mod@parse] contains a parser implementation for these expressions.
  • operations provides routines for performing common arithmetic operations on these expressions.
  • mappers provides abstract visitor for common traversal patters over scalar expressions.
  • mapper_impls uses mappers to provide helpful analysis tools over the expressions.
  • design_doc goes over the key design decisions that were baked into Symoxide's architecture.

Dependencies

~11–23MB
~347K SLoC