(->expression r vars)
Accepts a [[RationalFunction]] r
and a sequence of symbols for each indeterminate,
and emits the canonical form of the symbolic expression that
represents [[RationalFunction]] r
.
NOTE: this is the output stage of Rational Function canonical form
simplification. The input stage is handled by expression->
.
NOTE See analyzer
for an instance usable
by emmy.expression.analyze/make-analyzer
.
Accepts a [[RationalFunction]] `r` and a sequence of symbols for each indeterminate, and emits the canonical form of the symbolic expression that represents [[RationalFunction]] `r`. NOTE: this is the output stage of Rational Function canonical form simplification. The input stage is handled by [[expression->]]. NOTE See [[analyzer]] for an instance usable by [[emmy.expression.analyze/make-analyzer]].
(abs r)
If the numerator of r
is negative, returns (negate r)
, else acts as
identity.
If the numerator of `r` is negative, returns `(negate r)`, else acts as identity.
(add r s)
Returns the sum of rational functions r
and s
, with appropriate handling
of [[RationalFunction]], [[polynomial/Polynomial]] or coefficients of neither
type on either side.
Returns the sum of rational functions `r` and `s`, with appropriate handling of [[RationalFunction]], [[polynomial/Polynomial]] or coefficients of neither type on either side.
Singleton [[a/ICanonicalize]] instance.
Singleton [[a/ICanonicalize]] instance.
(arg-scale r factors)
Given some [[RationalFunction]] r
, returns a new [[RationalFunction]]
generated by substituting each indeterminate x_i
for f_i * x_i
, where
f_i
is a factor supplied in the factors
sequence.
Given a non-[[RationalFunction]], delegates to polynomial/arg-scale
.
Given some [[RationalFunction]] `r`, returns a new [[RationalFunction]] generated by substituting each indeterminate `x_i` for `f_i * x_i`, where `f_i` is a factor supplied in the `factors` sequence. Given a non-[[RationalFunction]], delegates to [[polynomial/arg-scale]].
(arg-shift r shifts)
Given some [[RationalFunction]] r
, returns a new [[RationalFunction]]
generated by substituting each indeterminate x_i
for s_i + x_i
, where
s_i
is a shift supplied in the shifts
sequence.
Given a non-[[RationalFunction]], delegates to polynomial/arg-shift
.
Given some [[RationalFunction]] `r`, returns a new [[RationalFunction]] generated by substituting each indeterminate `x_i` for `s_i + x_i`, where `s_i` is a shift supplied in the `shifts` sequence. Given a non-[[RationalFunction]], delegates to [[polynomial/arg-shift]].
(arity r)
Returns the declared arity of the supplied [[RationalFunction]]
or [[polynomial/Polynomial]], or 0
for arguments of other types.
Returns the declared arity of the supplied [[RationalFunction]] or [[polynomial/Polynomial]], or `0` for arguments of other types.
(coeff? x)
Returns true if x
is explicitly not an instance of [[RationalFunction]]
or [[polynomial/Polynomial]], false if it is.
Returns true if `x` is explicitly _not_ an instance of [[RationalFunction]] or [[polynomial/Polynomial]], false if it is.
(cube r)
Returns the cube of rational function r
. Equivalent to (mul r (mul r r))
.
Returns the cube of rational function `r`. Equivalent to `(mul r (mul r r))`.
(div r s)
Returns the quotient of rational functions r
and s
, with appropriate
handling of [[RationalFunction]], [[polynomial/Polynomial]] or coefficients of
neither type on either side.
Returns the quotient of rational functions `r` and `s`, with appropriate handling of [[RationalFunction]], [[polynomial/Polynomial]] or coefficients of neither type on either side.
(eq this that)
Returns true if the [[RationalFunction]] this is equal to that
. If that
is
a [[RationalFunction]], this
and that
are equal if they have equal u
and
v
and equal arity. u
and v
entries are compared
using emmy.value/=
.
If that
is non-[[RationalFunction]], eq
only returns true if u
and v
respectively match the [[ratio/numerator]] and [[ratio/denominator]] of
that
.
Returns true if the [[RationalFunction]] this is equal to `that`. If `that` is a [[RationalFunction]], `this` and `that` are equal if they have equal `u` and `v` and equal arity. `u` and `v` entries are compared using [[emmy.value/=]]. If `that` is non-[[RationalFunction]], `eq` only returns true if `u` and `v` respectively match the [[ratio/numerator]] and [[ratio/denominator]] of `that`.
(evaluate r xs)
Given some rational function xs
and a sequence of arguments with length >= 0
and < the arity
of r
, returns the result of evaluating the numerator and
denominator using xs
and re-forming a rational function with the results.
Supplying fewer arguments than the arity will result in a partial evaluation. Supplying too many arguments will error.
Given some rational function `xs` and a sequence of arguments with length >= 0 and < the [[arity]] of `r`, returns the result of evaluating the numerator and denominator using `xs` and re-forming a rational function with the results. Supplying fewer arguments than the arity will result in a partial evaluation. Supplying too many arguments will error.
(expression-> expr)
(expression-> expr cont)
(expression-> expr cont v-compare)
Converts the supplied symbolic expression expr
into Rational Function
canonical form (i.e., a [[RationalFunction]] instance). expr
should be a bare,
unwrapped expression built out of Clojure data structures.
Returns the result of calling continuation cont
with
the [[RationalFunction]] and the list of variables corresponding to each
indeterminate in the [[RationalFunction]]. (cont
defaults to vector
).
The second optional argument v-compare
allows you to provide a Comparator
between variables. Sorting indeterminates by v-compare
will determine the
order of the indeterminates in the generated [[RationalFunction]]. The list of
variables passed to cont
will be sorted using v-compare
.
Absorbing an expression with expression->
and emitting it again
with ->expression
will generate the canonical form of an expression, with
respect to the operations in the [[operators-known]] set.
This kind of simplification proceeds purely symbolically over the known
Rational Function operations; other operations outside the arithmetic
available should be factored out by an expression
analyzer (see emmy.expression.analyze/make-analyzer
) before
calling expression->
.
NOTE that cont
might receive a scalar, fraction or [[polynomial/Polynomial]]
instance; both are valid 'rational functions'. The latter as a rational
function with a denominator equal to 1
, and the former 2 result from
non-polynomial numerator and denominator.
NOTE See analyzer
for an instance usable
by emmy.expression.analyze/make-analyzer
.
Converts the supplied symbolic expression `expr` into Rational Function canonical form (i.e., a [[RationalFunction]] instance). `expr` should be a bare, unwrapped expression built out of Clojure data structures. Returns the result of calling continuation `cont` with the [[RationalFunction]] and the list of variables corresponding to each indeterminate in the [[RationalFunction]]. (`cont `defaults to `vector`). The second optional argument `v-compare` allows you to provide a Comparator between variables. Sorting indeterminates by `v-compare` will determine the order of the indeterminates in the generated [[RationalFunction]]. The list of variables passed to `cont` will be sorted using `v-compare`. Absorbing an expression with [[expression->]] and emitting it again with [[->expression]] will generate the canonical form of an expression, with respect to the operations in the [[operators-known]] set. This kind of simplification proceeds purely symbolically over the known Rational Function operations; other operations outside the arithmetic available should be factored out by an expression analyzer (see [[emmy.expression.analyze/make-analyzer]]) before calling [[expression->]]. NOTE that `cont` might receive a scalar, fraction or [[polynomial/Polynomial]] instance; both are valid 'rational functions'. The latter as a rational function with a denominator equal to `1`, and the former 2 result from non-polynomial numerator and denominator. NOTE See [[analyzer]] for an instance usable by [[emmy.expression.analyze/make-analyzer]].
(expt r n)
Returns a rational function generated by raising the input rational function
r
to the (integer) power n
.
Returns a rational function generated by raising the input rational function `r` to the (integer) power `n`.
(from-points xs)
Given a sequence of points of the form [x, f(x)]
, returns a rational function
that passes through each input point.
Given a sequence of points of the form `[x, f(x)]`, returns a rational function that passes through each input point.
(gcd r s)
Returns the greatest common divisor of rational functions r
and s
, with
appropriate handling of [[RationalFunction]], [[polynomial/Polynomial]] or
coefficients of neither type on either side.
Returns the greatest common divisor of rational functions `r` and `s`, with appropriate handling of [[RationalFunction]], [[polynomial/Polynomial]] or coefficients of neither type on either side.
(invert r)
Given some rational function r
, returns the inverse of r
, i.e., a rational
function with numerator and denominator reversed. The returned rational
function guarantees a positive denominator.
Acts as generic/invert
for non-[[RationalFunction]] inputs.
Given some rational function `r`, returns the inverse of `r`, i.e., a rational function with numerator and denominator reversed. The returned rational function guarantees a positive denominator. Acts as [[generic/invert]] for non-[[RationalFunction]] inputs.
(make u v)
Given a numerator u
and denominator v
, attempts to form
a [[RationalFunction]] instance by
u
and v
u
and v
such that v
is always positiveu
and v
through by a commo factor, such that neither term
contains any rational coefficientsReturns a [[RationalFunction]] instance if either u
or v
remains
a [[polynomial/Polynomial]] after this process; else, returns (g/div u' v')
,
where u'
and v'
are the reduced numerator and denominator.
Given a numerator `u` and denominator `v`, attempts to form a [[RationalFunction]] instance by - cancelling out any common factors between `u` and `v` - normalizing `u` and `v` such that `v` is always positive - multiplying `u` and `v` through by a commo factor, such that neither term contains any rational coefficients Returns a [[RationalFunction]] instance if either `u` or `v` remains a [[polynomial/Polynomial]] after this process; else, returns `(g/div u' v')`, where `u'` and `v'` are the reduced numerator and denominator.
(mul r s)
Returns the product of rational functions r
and s
, with appropriate
handling of [[RationalFunction]], [[polynomial/Polynomial]] or coefficients of
neither type on either side.
Returns the product of rational functions `r` and `s`, with appropriate handling of [[RationalFunction]], [[polynomial/Polynomial]] or coefficients of neither type on either side.
(negate r)
Returns the negation of rational function r
, i.e., a [[RationalFunction]] with
its numerator negated.
Acts as generic/negate
for non-[[RationalFunction]] inputs.
Returns the negation of rational function `r`, i.e., a [[RationalFunction]] with its numerator negated. Acts as [[generic/negate]] for non-[[RationalFunction]] inputs.
(negative? r)
Returns true if the numerator of r
is polynomial/negative?
, false
otherwise.
Returns true if the numerator of `r` is [[polynomial/negative?]], false otherwise.
(partial-derivative r i)
Given some [[RationalFunction]] or [[polynomial/Polynomial]] r
, returns the
partial derivative of r
with respect to the i
th indeterminate. Throws if
i
is an invalid indeterminate index for r
.
For non-polynomial or rational function inputs, returns 0
.
Given some [[RationalFunction]] or [[polynomial/Polynomial]] `r`, returns the partial derivative of `r` with respect to the `i`th indeterminate. Throws if `i` is an invalid indeterminate index for `r`. For non-polynomial or rational function inputs, returns `0`.
(partial-derivatives r)
Returns the sequence of partial derivatives
of [[RationalFunction]] (or [[polynomial/Polynomial]]) r
with respect to
each indeterminate. The returned sequence has length equal to the arity
of
r
.
For non-polynomial or rational function inputs, returns an empty sequence.
Returns the sequence of partial derivatives of [[RationalFunction]] (or [[polynomial/Polynomial]]) `r` with respect to each indeterminate. The returned sequence has length equal to the [[arity]] of `r`. For non-polynomial or rational function inputs, returns an empty sequence.
(rational-function? r)
Returns true if the supplied argument is an instance of [[RationalFunction]], false otherwise.
Returns true if the supplied argument is an instance of [[RationalFunction]], false otherwise.
(square r)
Returns the square of rational function r
. Equivalent to (mul r r)
.
Returns the square of rational function `r`. Equivalent to `(mul r r)`.
(sub r s)
Returns the difference of rational functions r
and s
, with appropriate
handling of [[RationalFunction]], [[polynomial/Polynomial]] or coefficients of
neither type on either side.
Returns the difference of rational functions `r` and `s`, with appropriate handling of [[RationalFunction]], [[polynomial/Polynomial]] or coefficients of neither type on either side.
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close