Implementation of a literal-function
constructor. Literal functions can be
applied to structures and numeric inputs, and differentiated.
The namespace also contains an implementation of a small language for
declaring the input and output types of literal-function
instances.
Implementation of a [[literal-function]] constructor. Literal functions can be applied to structures and numeric inputs, and differentiated. The namespace also contains an implementation of a small language for declaring the input and output types of [[literal-function]] instances.
Symbolic expressions in SICMUtils are created through the literal-number
constructor, or implicitly by performing arithmetic between symbols and
numbers.
This namespace implements the literal-number
constructor and installs the
underlying type into the generic arithmetic system.
Symbolic expressions in SICMUtils are created through the [[literal-number]] constructor, or implicitly by performing arithmetic between symbols and numbers. This namespace implements the [[literal-number]] constructor and installs the underlying type into the generic arithmetic system.
Namespace implementing various aggregation functions using the fold
abstraction and combinators for generating new folds from fold primitives.
Contains a number of algorithms for compensated summation of floating-point numbers.
Namespace implementing various aggregation functions using the `fold` abstraction and combinators for generating new folds from fold primitives. Contains a number of algorithms for [compensated summation](https://en.wikipedia.org/wiki/Kahan_summation_algorithm) of floating-point numbers.
This namespace implements a number of differential operators like D
, and
the machinery to apply D
to various structures.
This namespace implements a number of differential operators like [[D]], and the machinery to apply [[D]] to various structures.
This namespace implements a form field operator and a number of functions for creating and working with form fields.
A form-field of rank n is an operator that takes n vector fields to a real-valued function on the manifold. A one-form field takes a single vector field.
The namespace also contains two definitions of the wedge
product (alt-wedge
is the second), plus the exterior-derivative
.
This namespace implements a form field operator and a number of functions for creating and working with form fields. A form-field of rank n is an operator that takes n vector fields to a real-valued function on the manifold. A one-form field takes a single vector field. The namespace also contains two definitions of the [[wedge]] product ([[alt-wedge]] is the second), plus the [[exterior-derivative]].
This namespace implements minimal support for indexed objects and typed functions.
This namespace implements minimal support for indexed objects and typed functions.
This namespace defines a functional API for:
Rn
and manifolds
specialized to a concrete dimension)As well as a whole bunch of defined manifolds and coordinate systems for exploration and fun!
This namespace defines a functional API for: - differentiable manifolds (both manifold families like [[Rn]] and manifolds specialized to a concrete dimension) - manifold points - coordinate patches As well as a whole bunch of defined manifolds and coordinate systems for exploration and fun!
Various definitions and utilities for working with maps between manifolds.
Various definitions and utilities for working with maps between manifolds.
This namespace contains vector calculus operators, in versions built on top
of derivative/D
and in Functional Differential Geometry style.
The former transform functions of scalars or vectors, while the latter take a metric and basis.
This namespace contains vector calculus operators, in versions built on top of [[derivative/D]] _and_ in Functional Differential Geometry style. The former transform functions of scalars or vectors, while the latter take a metric and basis.
This namespace implements a vector field operator and a number of functions for creating and working with vector fields.
A vector field is an operator that takes a smooth real-valued function of a manifold and produces a new function on the manifold which computes the directional derivative of the given function at each point of the manifold.
This namespace implements a vector field operator and a number of functions for creating and working with vector fields. A vector field is an operator that takes a smooth real-valued function of a manifold and produces a new function on the manifold which computes the directional derivative of the given function at each point of the manifold.
This namespace contains implementations of various SICMUtils protocols for native Clojure collections.
This namespace contains implementations of various SICMUtils protocols for native Clojure collections.
No vars found in this namespace.
This namespace provides a number of functions and constructors for working with [[Complex]] numbers in Clojure and Clojurescript, and installs [[Complex]] into the SICMUtils generic arithmetic system.
For other numeric extensions, see sicmutils.ratio
and [[sicmutils.numbers]].
This namespace provides a number of functions and constructors for working with [[Complex]] numbers in Clojure and Clojurescript, and installs [[Complex]] into the SICMUtils generic arithmetic system. For other numeric extensions, see [[sicmutils.ratio]] and [[sicmutils.numbers]].
This namespace contains an implementation of Differential
, a generalized
dual number type that forms the basis for the forward-mode automatic
differentiation implementation in sicmutils.
See sicmutils.calculus.derivative
for a fleshed-out derivative
implementation using Differential
.
This namespace contains an implementation of [[Differential]], a generalized dual number type that forms the basis for the forward-mode automatic differentiation implementation in sicmutils. See [[sicmutils.calculus.derivative]] for a fleshed-out derivative implementation using [[Differential]].
Batteries-included namespace for the SICMUtils library.
The purpose of sicmutils.env
is to bundle all of the functions used
in Structure and Interpretation of Classical
Mechanics and Functional Differential
Geometry
into a single scope. The following form will import everything
from sicmutils.env
into your REPL:
(require '[sicmutils.env :as e])
(e/bootstrap-repl!)
Or, in Clojure:
(require '[sicmutils.env :as e :refer :all])
Batteries-included namespace for the [SICMUtils](https://github.com/sicmutils/sicmutils/) library. The purpose of [[sicmutils.env]] is to bundle all of the functions used in [Structure and Interpretation of Classical Mechanics](https://tgvaughan.github.io/sicm/) and [Functional Differential Geometry](https://mitpress.mit.edu/books/functional-differential-geometry) into a single scope. The following form will import everything from [[sicmutils.env]] into your REPL: ```clojure (require '[sicmutils.env :as e]) (e/bootstrap-repl!) ``` Or, in Clojure: ```clojure (require '[sicmutils.env :as e :refer :all]) ```
This namespace contains reimplementations of various macros from sicmutils, defined in the form required by SCI.
This namespace contains reimplementations of various macros from sicmutils, defined in the form required by SCI.
Implementations of various greatest common divisor algorithms.
Implementations of various [greatest common divisor](https://en.wikipedia.org/wiki/Greatest_common_divisor) algorithms.
This namespace contains a number of functions and utilities for manipulating and comparing raw symbolic expression trees.
Also included is an implementation of a Literal
type that forms the basis
for sicmutils.abstract.number/literal-number
.
This namespace contains a number of functions and utilities for manipulating and comparing raw symbolic expression trees. Also included is an implementation of a [[Literal]] type that forms the basis for [[sicmutils.abstract.number/literal-number]].
This namespace defines an API for working with 'expression analyzers' and
the ICanonicalize
protocol.
Expression analyzers find canonical forms of inputs over limited vocabularies of operations. For example, a polynomial analyzer will expose operations like addition, subtraction, multiplication, and exponentiation by positive integers (but not division).
An expression containing only these operations and symbols can then be converted to and from a polynomial canonical form, which in this example would have the effect of grouping like terms; a rational function backend would include the division operation and be capable of cancellation. Canonicalizing an expression with respect to an analyzer is therefore effected by a round-trip to and from the canonical form.
This namespace defines an API for working with 'expression analyzers' and the [[ICanonicalize]] protocol. Expression analyzers find canonical forms of inputs over limited vocabularies of operations. For example, a polynomial analyzer will expose operations like addition, subtraction, multiplication, and exponentiation by positive integers (but not division). An expression containing only these operations and symbols can then be converted to and from a polynomial canonical form, which in this example would have the effect of grouping like terms; a rational function backend would include the division operation and be capable of cancellation. Canonicalizing an expression with respect to an analyzer is therefore effected by a round-trip to and from the canonical form.
This namespace contains tools for compiling functions implemented with the
numeric operations defined in sicmutils.generic
down to fast, native
functions.
This namespace contains tools for compiling functions implemented with the numeric operations defined in [[sicmutils.generic]] down to fast, native functions.
Functions and utilities for rendering symbolic expressions to various backends like LaTeX, infix or Javascript.
Functions and utilities for rendering symbolic expressions to various backends like LaTeX, infix or Javascript.
Procedures that act on Clojure's function and multimethod types, along with extensions of the SICMUtils generic operations to functions.
See the Function
cljdocs
for a discussion of generic function arithmetic.
Procedures that act on Clojure's function and multimethod types, along with extensions of the SICMUtils generic operations to functions. See [the `Function` cljdocs](https://cljdoc.org/d/sicmutils/sicmutils/CURRENT/doc/data-types/function) for a discussion of generic function arithmetic.
The home of most of the SICMUtils extensible generic operations. The bulk of
the others live in sicmutils.value
.
See the Generics
cljdocs
for a detailed discussion of how to use and extend the generic operations
defined in sicmutils.generic
and sicmutils.value
.
The home of most of the SICMUtils extensible generic operations. The bulk of the others live in [[sicmutils.value]]. See [the `Generics` cljdocs](https://cljdoc.org/d/sicmutils/sicmutils/CURRENT/doc/basics/generics) for a detailed discussion of how to use and extend the generic operations defined in [[sicmutils.generic]] and [[sicmutils.value]].
This namespace contains an implementation of a Matrix
datatype and various
operations for creating and working with Matrix
instances.
sicmutils.matrix
also extends many SICMUtils generic operations
to the Matrix
datatype.
This namespace contains an implementation of a [[Matrix]] datatype and various operations for creating and working with [[Matrix]] instances. [[sicmutils.matrix]] also extends many SICMUtils generic operations to the [[Matrix]] datatype.
This namespace contains an implementation of a ModInt
datatype and various
operations for creating and working with ModInt
instances. See "Modular
Arithmetic" on Wikipedia
for more details about modular arithmetic.
sicmutils.modint
also extends many SICMUtils generic operations
to the ModInt
datatype.
This namespace contains an implementation of a [[ModInt]] datatype and various operations for creating and working with [[ModInt]] instances. See ["Modular Arithmetic"](https://en.wikipedia.org/wiki/Modular_arithmetic) on Wikipedia for more details about modular arithmetic. [[sicmutils.modint]] also extends many SICMUtils generic operations to the [[ModInt]] datatype.
This namespace extends of all appropriate SICMUtils generic operations
from sicmutils.generic
and sicmutils.value
to the Clojure(script)
numeric tower.
For other numeric extensions, see sicmutils.ratio
and sicmutils.complex
.
This namespace extends of all appropriate SICMUtils generic operations from [[sicmutils.generic]] and [[sicmutils.value]] to the Clojure(script) numeric tower. For other numeric extensions, see [[sicmutils.ratio]] and [[sicmutils.complex]].
No vars found in this namespace.
This namespace contains implementations of various approaches to numerical differentiation.
Each of these methods uses Richardson extrapolation to accelerate convergence, and roundoff error estimation to bail out of the computation when roundoff error threatens to overwhelm the calculation.
For an implementation of forward-mode automatic
differentiation,
see sicmutils.differential
(for the backing implementation)
and sicmutils.calculus.derivative
(for the sicmutils.operator/Operator
instances that make it pleasant to use this method.)
This namespace contains implementations of various approaches to [numerical differentiation](https://en.wikipedia.org/wiki/Numerical_differentiation). Each of these methods uses [Richardson extrapolation](https://en.wikipedia.org/wiki/Richardson_extrapolation) to accelerate convergence, and roundoff error estimation to bail out of the computation when roundoff error threatens to overwhelm the calculation. For an implementation of [forward-mode automatic differentiation](https://en.wikipedia.org/wiki/Automatic_differentiation), see [[sicmutils.differential]] (for the backing implementation) and [[sicmutils.calculus.derivative]] (for the [[sicmutils.operator/Operator]] instances that make it pleasant to use this method.)
Entrypoint for univariate and multivariate minimization routines.
Entrypoint for univariate and multivariate minimization routines.
ODE solvers for working with initial value problems.
ODE solvers for working with initial value problems.
Implements utilities shared by all integrators, for example:
integrator
interfaceImplements utilities shared by all integrators, for example: - code to wrap a sequence of progressively better estimates in a common `integrator` interface - data structures implementing various integration intervals.
This namespace provides implementations of functions that accept an
integrator
and perform a variable change to address some singularity, like
an infinite endpoint, in the definite integral.
The strategies currently implemented were each described by Press, et al. in section 4.4 of 'Numerical Recipes'.
### U Substitution and Variable Changes This namespace provides implementations of functions that accept an `integrator` and perform a variable change to address some singularity, like an infinite endpoint, in the definite integral. The strategies currently implemented were each described by Press, et al. in section 4.4 of ['Numerical Recipes'](http://phys.uri.edu/nigh/NumRec/bookfpdf/f4-4.pdf).
Trapezoid method.
Trapezoid method.
This namespace contains an implementation of Brent's method for finding the minimum of a real-valued function.
This namespace contains an implementation of Brent's method for finding the minimum of a real-valued function.
Implementations of the generic operations for numeric types that have optimizations available, and for the general symbolic case.
Implementations of the generic operations for numeric types that have optimizations available, and for the general symbolic case.
This namespace contains functions for factoring polynomials and symbolic expressions.
This namespace contains functions for factoring polynomials and symbolic expressions.
This namespace contains a discussion of polynomial interpolation, and different
methods for fitting a polynomial of degree N-1
to N
points and evaluating
that polynomial at some different x
.
This namespace contains a discussion of polynomial interpolation, and different methods for fitting a polynomial of degree `N-1` to `N` points and evaluating that polynomial at some different `x`.
Richardson interpolation is a special case of polynomial interpolation; knowing
the ratios of successive x
coordinates in the point sequence allows a more
efficient calculation.
Richardson interpolation is a special case of polynomial interpolation; knowing the ratios of successive `x` coordinates in the point sequence allows a more efficient calculation.
This namespace provides a number of functions and constructors for working
with Quaternion
instances in Clojure and Clojurescript, and
installs Quaternion
into the SICMUtils generic arithmetic system.
For other numeric extensions, see sicmutils.ratio
, sicmutils.complex
and [[sicmutils.numbers]].
This namespace provides a number of functions and constructors for working with [[Quaternion]] instances in Clojure and Clojurescript, and installs [[Quaternion]] into the SICMUtils generic arithmetic system. For other numeric extensions, see [[sicmutils.ratio]], [[sicmutils.complex]] and [[sicmutils.numbers]].
This namespace provides a number of functions and constructors for working with ratios in Clojure and Clojurescript.
[[clojure.lang.Ratio]] is native in Clojure. The Clojurescript implementation uses Fraction.js.
For other numeric extensions, see [[sicmutils.numbers]]
and sicmutils.complex
.
This namespace provides a number of functions and constructors for working with ratios in Clojure and Clojurescript. [[clojure.lang.Ratio]] is native in Clojure. The Clojurescript implementation uses [Fraction.js](https://github.com/infusion/Fraction.js/). For other numeric extensions, see [[sicmutils.numbers]] and [[sicmutils.complex]].
This namespace contains a discussion of rational function interpolation, and
different methods for fitting rational functions to N
points and evaluating
them at some value x
.
This namespace contains a discussion of rational function interpolation, and different methods for fitting rational functions to `N` points and evaluating them at some value `x`.
This namespace contains an implementation of two data types:
Series
, which represents a generic infinite series of arbitrary values, andPowerSeries
, a series that represents a power series in a single
variable; in other words, a series where the nth entry is interpreted as
the coefficient of $x^n$:$$[a b c d ...] == $a + bx + cx^2 + dx^3 + ...$$
Many of the functions below draw on the [[sicmutils.series.impl]] namespace, which implements many of these operations on bare Clojure sequences.
The implementation follows Doug McIlroy's beautiful paper, "Power Series, Power Serious".
Doug also has a 10-line version in Haskell on his website.
This namespace contains an implementation of two data types: - [[Series]], which represents a generic infinite series of arbitrary values, and - [[PowerSeries]], a series that represents a power series in a single variable; in other words, a series where the nth entry is interpreted as the coefficient of $x^n$: ``` $$[a b c d ...] == $a + bx + cx^2 + dx^3 + ...$$ ``` Many of the functions below draw on the [[sicmutils.series.impl]] namespace, which implements many of these operations on bare Clojure sequences. The implementation follows Doug McIlroy's beautiful paper, ["Power Series, Power Serious"](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.333.3156&rep=rep1&type=pdf). Doug also has a 10-line version in Haskell on [his website](https://www.cs.dartmouth.edu/~doug/powser.html).
This namespace contains many sets of algebraic simplification rules you can use to build simplifiers for algebraic structures.
[[rules]] currently holds a mix of:
associative
and constant-elimination
designed to help you build lightweight custom
term-rewriting simplifiers.NOTE: Expect this namespace to be broken out into more fine-grained namespaces. There are TODO entries throughout the docstrings left as tips for how to proceed here.
This namespace contains many sets of algebraic simplification rules you can use to build simplifiers for algebraic structures. [[rules]] currently holds a mix of: - rulesets ported from the scmutils library - more fine-grained, tuneable rulesets like [[associative]] and [[constant-elimination]] designed to help you build lightweight custom term-rewriting simplifiers. NOTE: Expect this namespace to be broken out into more fine-grained namespaces. There are TODO entries throughout the docstrings left as tips for how to proceed here.
This namespace contains function to compute various elliptic integrals in Carlson symmetric form, as well as the Jacobi elliptic functions.
This namespace contains function to compute various [elliptic integrals](https://en.wikipedia.org/wiki/Elliptic_integral) in [Carlson symmetric form](https://en.wikipedia.org/wiki/Carlson_symmetric_form), as well as the [Jacobi elliptic functions](https://en.wikipedia.org/wiki/Jacobi_elliptic_functions).
Namespace holding implementations of variations on the factorial function.
Namespace holding implementations of variations on the factorial function.
Shared utilities between clojure and clojurescript.
Shared utilities between clojure and clojurescript.
Namespace with algorithms for aggregating sequences in various ways.
Namespace with algorithms for aggregating sequences in various ways.
Utilities for generating permutations of sequences.
Utilities for generating permutations of sequences.
This namespace contains various standard sequences, as well as utilities for working with strict and lazy sequences.
This namespace contains various standard sequences, as well as utilities for working with strict and lazy sequences.
Contains an implementation and API for an 'ordered set' data structure backed by a persistent vector.
Contains an implementation and API for an 'ordered set' data structure backed by a persistent vector.
The home of most of the protocol-based extensible generic operations offered by
SICMUtils. The bulk of the others live in sicmutils.generic
.
See the Generics
cljdocs
for a detailed discussion of how to use and extend the generic operations
defined in sicmutils.generic
and sicmutils.value
.
The home of most of the protocol-based extensible generic operations offered by SICMUtils. The bulk of the others live in [[sicmutils.generic]]. See [the `Generics` cljdocs](https://cljdoc.org/d/sicmutils/sicmutils/CURRENT/doc/basics/generics) for a detailed discussion of how to use and extend the generic operations defined in [[sicmutils.generic]] and [[sicmutils.value]].
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close