Liking cljdoc? Tell your friends :D

emmy.abstract.function

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.
raw docstring

emmy.abstract.number

Symbolic expressions in Emmy 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 Emmy 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.
raw docstring

emmy.algebra.fold

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.
raw docstring

emmy.calculus.derivative

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.
raw docstring

emmy.calculus.form-field

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]].
raw docstring

emmy.calculus.indexed

This namespace implements minimal support for indexed objects and typed functions.

This namespace implements minimal support for indexed objects and typed
functions.
raw docstring

emmy.calculus.manifold

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!

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!
raw docstring

emmy.calculus.vector-calculus

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.
raw docstring

emmy.calculus.vector-field

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.
raw docstring

emmy.collection

This namespace contains implementations of various Emmy protocols for native Clojure collections.

This namespace contains implementations of various Emmy protocols for
native Clojure collections.
raw docstring

No vars found in this namespace.

emmy.complex

This namespace provides a number of functions and constructors for working with [[Complex]] numbers in Clojure and ClojureScript, and installs [[Complex]] into the Emmy generic arithmetic system.

For other numeric extensions, see emmy.ratio and [[emmy.numbers]].

This namespace provides a number of functions and constructors for working
with [[Complex]] numbers in Clojure and ClojureScript, and
installs [[Complex]] into the Emmy generic arithmetic system.

For other numeric extensions, see [[emmy.ratio]]
and [[emmy.numbers]].
raw docstring

emmy.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 emmy.

See emmy.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 emmy.

See [[emmy.calculus.derivative]] for a fleshed-out derivative
implementation using [[Differential]].
raw docstring

emmy.env

Batteries-included namespace for the Emmy library.

The purpose of emmy.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 emmy.env into your REPL:

(require '[emmy.env :as e])
(e/bootstrap-repl!)

Or, in Clojure:

(require '[emmy.env :as e :refer :all])
Batteries-included namespace for the [Emmy](https://github.com/mentat-collective/emmy/) library.

The purpose of [[emmy.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 [[emmy.env]] into your REPL:

```clojure
(require '[emmy.env :as e])
(e/bootstrap-repl!)
```

Or, in Clojure:

```clojure
(require '[emmy.env :as e :refer :all])
```
raw docstring

emmy.euclid

Implementations of various greatest common divisor algorithms.

Implementations of various [greatest common
divisor](https://en.wikipedia.org/wiki/Greatest_common_divisor) algorithms.
raw docstring

emmy.expression

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 emmy.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 [[emmy.abstract.number/literal-number]].
raw docstring

emmy.expression.analyze

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.
raw docstring

emmy.expression.compile

This namespace contains tools for compiling functions implemented with the numeric operations defined in emmy.generic down to fast, native functions.

This namespace contains tools for compiling functions implemented with the
numeric operations defined in [[emmy.generic]] down to fast, native
functions.
raw docstring

emmy.expression.cse

This namespace implements subexpression extraction and "elimination", the process we use to avoid redundant computation inside of a simplified function body.

This namespace implements subexpression extraction and "elimination", the
process we use to avoid redundant computation inside of a simplified function
body.
raw docstring

emmy.expression.render

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.
raw docstring

emmy.function

Procedures that act on Clojure's function and multimethod types, along with extensions of the Emmy 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 Emmy generic operations to functions.

See [the `Function`
cljdocs](https://cljdoc.org/d/org.mentat/emmy/CURRENT/doc/data-types/function)
for a discussion of generic function arithmetic.
raw docstring

emmy.generic

The home of most of the Emmy extensible generic operations. The bulk of the others live in emmy.value.

See the Generics cljdocs for a detailed discussion of how to use and extend the generic operations defined in emmy.generic and emmy.value.

The home of most of the Emmy extensible generic operations. The bulk of
the others live in [[emmy.value]].

See [the `Generics`
cljdocs](https://cljdoc.org/d/org.mentat/emmy/CURRENT/doc/basics/generics)
for a detailed discussion of how to use and extend the generic operations
defined in [[emmy.generic]] and [[emmy.value]].
raw docstring

emmy.modint

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.

emmy.modint also extends many Emmy 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.

[[emmy.modint]] also extends many Emmy generic operations
to the [[ModInt]] datatype.
raw docstring

emmy.numbers

This namespace extends of all appropriate Emmy generic operations from emmy.generic and emmy.value to the Clojure(script) numeric tower.

For other numeric extensions, see emmy.ratio and emmy.complex.

This namespace extends of all appropriate Emmy generic operations
from [[emmy.generic]] and [[emmy.value]] to the Clojure(script)
numeric tower.

For other numeric extensions, see [[emmy.ratio]]
and [[emmy.complex]].
raw docstring

No vars found in this namespace.

emmy.numerical.derivative

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 emmy.differential (for the backing implementation) and emmy.calculus.derivative (for the [[emmy.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 [[emmy.differential]] (for the backing implementation)
and [[emmy.calculus.derivative]] (for the [[emmy.operator/Operator]]
instances that make it pleasant to use this method.)
raw docstring

emmy.numerical.minimize

Entrypoint for univariate and multivariate minimization routines.

Entrypoint for univariate and multivariate minimization routines.
raw docstring

emmy.numerical.ode

ODE solvers for working with initial value problems.

ODE solvers for working with initial value problems.
raw docstring

emmy.numerical.quadrature.common

Implements 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.
Implements 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.
raw docstring

emmy.numerical.quadrature.substitute

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'.

### 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).
raw docstring

emmy.numerical.roots.bisect

This namespace contains implementations of a number of methods for root-finding on real-valued functions of one argument.

NOTE: This namespace is not yet stable: Expect these functions to change as new root-finding methods are added.

This namespace contains implementations of a number of methods for root-finding
on real-valued functions of one argument.

NOTE: This namespace is not yet stable: Expect these functions to change as
new root-finding methods are added. 
raw docstring

emmy.numerical.unimin.brent

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.
raw docstring

emmy.numsymb

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.
raw docstring

emmy.pattern.consequence

Code for defining and compiling 'consequence' functions, i.e., functions from a binding map generated by a [emmy.pattern.match] to some successful transformation (or a failure!).

See emmy.pattern.rule for a detailed treatment.

Code for defining and compiling 'consequence' functions, i.e., functions from a
binding map generated by a [[[emmy.pattern.match]]] to some successful
transformation (or a failure!).

See [[emmy.pattern.rule]] for a detailed treatment.
raw docstring

emmy.pattern.match

Implementation of a emmy.pattern.matching system inspired by Gerald Jay Sussman's lecture notes for MIT 6.945. See emmy.pattern.rule for a higher-level API.

emmy.pattern.match and emmy.pattern.rule are spiritually similar to Alexey Radul's Rules library for Scheme, and the emmy.pattern.matching system described in GJS and Hanson's Software Design for Flexibility.

Implementation of a emmy.pattern.matching system inspired by [Gerald Jay Sussman's
lecture notes for MIT
6.945](http://groups.csail.mit.edu/mac/users/gjs/6.945/).
See [[emmy.pattern.rule]] for a higher-level API.

[[emmy.pattern.match]] and [[emmy.pattern.rule]] are spiritually similar to Alexey
Radul's [Rules](https://github.com/axch/rules) library for Scheme, and the
emmy.pattern.matching system described in GJS and Hanson's [Software Design for
Flexibility](https://mitpress.mit.edu/books/software-design-flexibility).
raw docstring

emmy.pattern.rule

This namespace provides an API for building rules out of the matchers and matcher combinators declared in emmy.pattern.match, along with a series of combinators for building advanced term-rewriting systems.

This namespace provides an API for building rules out of the matchers and
matcher combinators declared in [[emmy.pattern.match]], along with a series of
combinators for building advanced term-rewriting systems.
raw docstring

emmy.pattern.syntax

The syntax namespace defines the default syntax for patterns corresponding to the matcher combinators defined in emmy.pattern.match.

The syntax namespace defines the default syntax for patterns corresponding to
the matcher combinators defined in [[emmy.pattern.match]].
raw docstring

emmy.polynomial.factor

This namespace contains functions for factoring polynomials and symbolic expressions.

This namespace contains functions for factoring polynomials and symbolic
expressions.
raw docstring

emmy.polynomial.interpolate

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`.
raw docstring

emmy.polynomial.richardson

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.
raw docstring

emmy.quaternion

This namespace provides a number of functions and constructors for working with [[Quaternion]] instances in Clojure and ClojureScript, and installs [[Quaternion]] into the Emmy generic arithmetic system.

For other numeric extensions, see emmy.ratio, emmy.complex and [[emmy.numbers]].

This namespace provides a number of functions and constructors for working
with [[Quaternion]] instances in Clojure and ClojureScript, and
installs [[Quaternion]] into the Emmy generic arithmetic system.

For other numeric extensions, see [[emmy.ratio]], [[emmy.complex]]
and [[emmy.numbers]].
raw docstring

emmy.ratio

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 [[emmy.numbers]] and emmy.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 [[emmy.numbers]]
and [[emmy.complex]].
raw docstring

emmy.rational-function.interpolate

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`.
raw docstring

emmy.sci.macros

This namespace contains reimplementations of various macros from emmy, defined in the form required by SCI.

This namespace contains reimplementations of various macros from emmy,
defined in the form required by SCI.
raw docstring

emmy.series

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 [[emmy.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 [[emmy.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).
raw docstring

emmy.simplify.rules

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 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.
raw docstring

emmy.special.elliptic

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).
raw docstring

emmy.special.factorial

Namespace holding implementations of variations on the factorial function.

Namespace holding implementations of variations on the factorial function.
raw docstring

emmy.util.aggregate

Namespace with algorithms for aggregating sequences in various ways.

Namespace with algorithms for aggregating sequences in various ways.
raw docstring

emmy.util.stream

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.
raw docstring

emmy.util.vector-set

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.
raw docstring

emmy.value

The home of most of the protocol-based extensible generic operations offered by Emmy. The bulk of the others live in emmy.generic.

See the Generics cljdocs for a detailed discussion of how to use and extend the generic operations defined in emmy.generic and emmy.value.

The home of most of the protocol-based extensible generic operations offered by
Emmy. The bulk of the others live in [[emmy.generic]].

See [the `Generics`
cljdocs](https://cljdoc.org/d/org.mentat/emmy/CURRENT/doc/basics/generics)
for a detailed discussion of how to use and extend the generic operations
defined in [[emmy.generic]] and [[emmy.value]].
raw docstring

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close