Skip to main content

Formula

Trait Formula 

Source
pub trait Formula<const N: usize>:
    Clone
    + Send
    + Sync
    + 'static {
    const BOOLEAN: bool = false;
    const FAILS_NAN: bool = false;
    const HAS_EXACT: bool = false;
    const INTEGER_FORMULA: bool = false;
    const MAP_ONLY: bool = false;
    const REAL_COMPLEX: bool = false;
Show 29 methods // Provided methods fn result_dtype(&self, input: DType) -> DType { ... } fn computing_dtype(&self, input: DType) -> Option<DType> { ... } fn character_rule(&self) -> Option<Rule> { ... } fn ordered_kinds(&self, _: [i32; 2]) -> Option<i32> { ... } fn character_policy( &self, types: [DType; 2], ) -> Result<Option<Policy>, Error> { ... } fn exact( &self, _args: [&Ratio<BigInt>; N], ) -> Result<Option<Ratio<BigInt>>, Error> { ... } fn range(&self, _args: [Range; N]) -> Range { ... } fn domain(&self, _dtype: DType, _args: [Range; N]) -> Option<[Range; N]> { ... } fn identity(&self) -> [Option<f64>; N] { ... } fn fold(&self) -> Option<Reduce> { ... } fn inverse_fold(&self) -> Option<Reduce> { ... } fn truth_table(&self) -> Option<u8> { ... } fn truth(&self) -> Option<Reduce> { ... } fn same(&self, _arg: Range) -> Option<Range> { ... } fn reads(&self) -> Reads { ... } fn supports(&self, _dtype: DType) -> bool { ... } fn emit<F, O>( &self, _o: &O, _x: [<O as Ops<F>>::V; N], ) -> Option<<O as Ops<F>>::V> where F: Float, O: Ops<F> + ?Sized { ... } fn emit_test<F, O>( &self, _o: &O, _x: [<O as Ops<F>>::V; N], ) -> Option<<O as Ops<F>>::B> where F: Float, O: Ops<F> + ?Sized { ... } fn emit_against<F, O>( &self, _o: &O, _c: F, _v: <O as Ops<F>>::V, _left: bool, ) -> Option<<O as Ops<F>>::B> where F: Float, O: Ops<F> + ?Sized { ... } fn bands(&self) -> Option<(Tolerance, Band, Band)> { ... } fn emit_repair<F, O>( &self, _o: &O, _x: [<O as Ops<F>>::V; N], ) -> Option<<O as Ops<F>>::B> where F: Float, O: Ops<F> + ?Sized { ... } fn repair_routine(&self) -> Option<Repair> { ... } fn emit_valid<F, O>( &self, _variant: Variant, o: &O, x: [<O as Ops<F>>::V; N], result: <O as Ops<F>>::V, ) -> Option<(Kind, <O as Ops<F>>::B)> where F: Float, O: Ops<F> + ?Sized { ... } fn real<F>( &self, ops: &NativeOps<rustymath_core::::facts::Formula::real::{constant#0}>, x: [F; N], ) -> Option<F> where F: Native { ... } fn integer<I>(&self, _ops: &IntegerOps<I>, _x: [I; N]) -> Option<I> where I: Overflowing { ... } fn complex<F>( &self, _ops: &NativeOps<rustymath_core::::facts::Formula::complex::{constant#0}>, _x: [Complex<F>; N], ) -> Option<Complex<F>> where F: Native { ... } fn real_complex<F>( &self, _ops: &NativeOps<rustymath_core::::facts::Formula::real_complex::{constant#0}>, _x: [F; N], ) -> Option<Complex<F>> where F: Native { ... } fn native_slices(&self) -> Option<NativeSlices<Self, N>> { ... } fn emit_partials<F, O>( &self, _o: &O, _x: [<O as Ops<F>>::V; N], _result: <O as Ops<F>>::V, _needed: [bool; N], ) -> [Option<<O as Ops<F>>::V>; N] where F: Float, O: Ops<F> + ?Sized { ... }
}
Expand description

Each object’s range, domain, fold facts and executable formulae.

Provided Associated Constants§

Source

const BOOLEAN: bool = false

Source

const FAILS_NAN: bool = false

Whether a NaN result from arguments that aren’t NaN is a Domain error, which the default emit_valid checks (nan_valid). A constant, so a checked loop over items reads it at compile time and never calls a method for it.

Source

const HAS_EXACT: bool = false

Whether exact computes this formula on rationals.

Source

const INTEGER_FORMULA: bool = false

Whether integer runs this formula’s emit on integers, so that range arithmetic over emit_valid bounds an integer kernel’s failures (may_raise). A row with a native_integer body supports integers and leaves this false.

Source

const MAP_ONLY: bool = false

Whether kernels of this formula only map. Modified writes, folds, scans and walks of adjacent items build no code for it: each refuses it at compile time, as it refuses a formula of another arity. A derivative’s slope (derivative::Slope) only maps.

Source

const REAL_COMPLEX: bool = false

Whether real_complex gives this formula’s complex results from real arguments.

Provided Methods§

Source

fn result_dtype(&self, input: DType) -> DType

Source

fn computing_dtype(&self, input: DType) -> Option<DType>

Source

fn character_rule(&self) -> Option<Rule>

Source

fn ordered_kinds(&self, _: [i32; 2]) -> Option<i32>

Source

fn character_policy(&self, types: [DType; 2]) -> Result<Option<Policy>, Error>

Source

fn exact( &self, _args: [&Ratio<BigInt>; N], ) -> Result<Option<Ratio<BigInt>>, Error>

Source

fn range(&self, _args: [Range; N]) -> Range

Source

fn domain(&self, _dtype: DType, _args: [Range; N]) -> Option<[Range; N]>

A box at the computing dtype containing args on which graph-numeric results do not raise a data error.

Source

fn identity(&self) -> [Option<f64>; N]

Source

fn fold(&self) -> Option<Reduce>

Source

fn inverse_fold(&self) -> Option<Reduce>

Source

fn truth_table(&self) -> Option<u8>

The function’s results on Booleans, as bits: bit 2x+y for two arguments, bit x for one. A Boolean kernel computes by it (operation::map_truth).

Source

fn truth(&self) -> Option<Reduce>

Source

fn same(&self, _arg: Range) -> Option<Range>

Refines the real result interval when both operands denote the same value.

Source

fn reads(&self) -> Reads

Source

fn supports(&self, _dtype: DType) -> bool

Source

fn emit<F, O>( &self, _o: &O, _x: [<O as Ops<F>>::V; N], ) -> Option<<O as Ops<F>>::V>
where F: Float, O: Ops<F> + ?Sized,

Source

fn emit_test<F, O>( &self, _o: &O, _x: [<O as Ops<F>>::V; N], ) -> Option<<O as Ops<F>>::B>
where F: Float, O: Ops<F> + ?Sized,

Source

fn emit_against<F, O>( &self, _o: &O, _c: F, _v: <O as Ops<F>>::V, _left: bool, ) -> Option<<O as Ops<F>>::B>
where F: Float, O: Ops<F> + ?Sized,

This comparison of v with the one number c through o, where that has a cheaper recipe than comparing item by item, as a held constant has. left says whether v is the left argument. None for other formulas.

Source

fn bands(&self) -> Option<(Tolerance, Band, Band)>

This comparison’s tolerance, and the bands that an item on the left and on the right of one number must lie in (tolerant::Banding), through which it compares many items with one number (tolerant::against). None for other formulas.

Source

fn emit_repair<F, O>( &self, _o: &O, _x: [<O as Ops<F>>::V; N], ) -> Option<<O as Ops<F>>::B>
where F: Float, O: Ops<F> + ?Sized,

Source

fn repair_routine(&self) -> Option<Repair>

Source

fn emit_valid<F, O>( &self, _variant: Variant, o: &O, x: [<O as Ops<F>>::V; N], result: <O as Ops<F>>::V, ) -> Option<(Kind, <O as Ops<F>>::B)>
where F: Float, O: Ops<F> + ?Sized,

Source

fn real<F>( &self, ops: &NativeOps<rustymath_core::::facts::Formula::real::{constant#0}>, x: [F; N], ) -> Option<F>
where F: Native,

Source

fn integer<I>(&self, _ops: &IntegerOps<I>, _x: [I; N]) -> Option<I>
where I: Overflowing,

Source

fn complex<F>( &self, _ops: &NativeOps<rustymath_core::::facts::Formula::complex::{constant#0}>, _x: [Complex<F>; N], ) -> Option<Complex<F>>
where F: Native,

Source

fn real_complex<F>( &self, _ops: &NativeOps<rustymath_core::::facts::Formula::real_complex::{constant#0}>, _x: [F; N], ) -> Option<Complex<F>>
where F: Native,

The complex result from real arguments, where that costs less than from the arguments as complex numbers. None sends the item to complex.

Source

fn native_slices(&self) -> Option<NativeSlices<Self, N>>

Source

fn emit_partials<F, O>( &self, _o: &O, _x: [<O as Ops<F>>::V; N], _result: <O as Ops<F>>::V, _needed: [bool; N], ) -> [Option<<O as Ops<F>>::V>; N]
where F: Float, O: Ops<F> + ?Sized,

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl Formula<1> for Abs

Source§

impl Formula<1> for Acos

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<1> for Acosh

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<1> for Angle

Source§

impl Formula<1> for Asin

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<1> for Asinh

Source§

impl Formula<1> for Atan

Source§

impl Formula<1> for Atanh

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<1> for BetaincAt

Source§

impl Formula<1> for Bitwise

A bitwise function’s facts, which its table decides: the tables that fold (and, or, xor, xnor) for numbers, and the same tables’ reductions for Booleans.

Source§

impl Formula<1> for Cbrt

Source§

impl Formula<1> for Cdf

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<1> for Ceil

Source§

impl Formula<1> for Cis

Source§

impl Formula<1> for Conj

Source§

impl Formula<1> for Cos

Source§

impl Formula<1> for Cosh

Source§

impl Formula<1> for Digamma

Source§

impl Formula<1> for Erf

Source§

impl Formula<1> for Erfc

Source§

impl Formula<1> for Erfcinv

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<1> for Erfinv

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<1> for Exp

Source§

impl Formula<1> for Expm1

Source§

impl Formula<1> for Factorial

Source§

const HAS_EXACT: bool = true

Source§

impl Formula<1> for Floor

Source§

impl Formula<1> for Gamma

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<1> for Imag

Source§

impl Formula<1> for Isfinite

Source§

impl Formula<1> for Isinf

Source§

impl Formula<1> for Isnan

Source§

impl Formula<1> for LambertW

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<1> for Lgamma

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<1> for Ln

Source§

const FAILS_NAN: bool = true

Source§

const REAL_COMPLEX: bool = true

Source§

impl Formula<1> for Log2

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<1> for Log1p

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<1> for Log10

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<1> for Negate

Source§

impl Formula<1> for Not

Source§

impl Formula<1> for Pdf

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<1> for PiTimes

Source§

impl Formula<1> for Quantile

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<1> for Real

Source§

impl Formula<1> for RealAcos

Source§

impl Formula<1> for RealAcosh

Source§

impl Formula<1> for RealAsin

Source§

impl Formula<1> for RealAtanh

Source§

impl Formula<1> for RealLn

Source§

impl Formula<1> for RealSqrt

Source§

impl Formula<1> for RealSqrt1mx2

Source§

impl Formula<1> for RealSqrtm1mx2

Source§

impl Formula<1> for RealSqrtx2m1

Source§

impl Formula<1> for Reciprocal

Source§

impl Formula<1> for Rint

Source§

impl Formula<1> for Round

Source§

impl Formula<1> for Scale

Source§

impl Formula<1> for Sign

Source§

impl Formula<1> for Sin

Source§

impl Formula<1> for Sinh

Source§

impl Formula<1> for Sqrt

Source§

const FAILS_NAN: bool = true

Source§

const REAL_COMPLEX: bool = true

Source§

impl Formula<1> for Sqrt1mx2

Source§

impl Formula<1> for Sqrt1px2

Source§

impl Formula<1> for Sqrtm1mx2

Source§

impl Formula<1> for Sqrtx2m1

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<1> for Tan

Source§

impl Formula<1> for Tanh

Source§

impl Formula<1> for Trunc

Source§

impl Formula<2> for Add

Source§

impl Formula<2> for Atan2

Source§

impl Formula<2> for Beta

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<2> for Binom

Source§

const HAS_EXACT: bool = true

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<2> for BinomDk

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<2> for BinomDn

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<2> for BitAnd

Source§

impl Formula<2> for BitOr

Source§

impl Formula<2> for Bitwise

Source§

impl Formula<2> for Divide

Source§

const HAS_EXACT: bool = true

Source§

impl Formula<2> for Equal

Source§

const HAS_EXACT: bool = true

Source§

const BOOLEAN: bool = true

Source§

const INTEGER_FORMULA: bool = true

Source§

impl Formula<2> for FloorDivide

Source§

impl Formula<2> for Gammainc

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<2> for Gammaincc

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<2> for Gammaincinv

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<2> for Gcd

Source§

const HAS_EXACT: bool = true

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<2> for Greater

Source§

const HAS_EXACT: bool = true

Source§

const BOOLEAN: bool = true

Source§

const INTEGER_FORMULA: bool = true

Source§

impl Formula<2> for GreaterEqual

Source§

const HAS_EXACT: bool = true

Source§

const BOOLEAN: bool = true

Source§

const INTEGER_FORMULA: bool = true

Source§

impl Formula<2> for Hypot

Source§

impl Formula<2> for Lcm

Source§

const HAS_EXACT: bool = true

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<2> for LeftShift

Source§

impl Formula<2> for Less

Source§

const HAS_EXACT: bool = true

Source§

const BOOLEAN: bool = true

Source§

const INTEGER_FORMULA: bool = true

Source§

impl Formula<2> for LessEqual

Source§

const HAS_EXACT: bool = true

Source§

const BOOLEAN: bool = true

Source§

const INTEGER_FORMULA: bool = true

Source§

impl Formula<2> for Logb

Source§

impl Formula<2> for MathishDivide

Source§

const HAS_EXACT: bool = true

Source§

impl Formula<2> for MathishFloorDivide

Source§

impl Formula<2> for MathishLogb

Source§

impl Formula<2> for Maximum

Source§

impl Formula<2> for Minimum

Source§

impl Formula<2> for Multiply

Source§

impl Formula<2> for Nand

Source§

impl Formula<2> for Nor

Source§

impl Formula<2> for NotEqual

Source§

const HAS_EXACT: bool = true

Source§

const BOOLEAN: bool = true

Source§

const INTEGER_FORMULA: bool = true

Source§

impl Formula<2> for PiTimes

Source§

impl Formula<2> for Polygamma

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<2> for Pow

Source§

const HAS_EXACT: bool = true

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<2> for RealPow

Source§

impl Formula<2> for Residue

Source§

const HAS_EXACT: bool = true

Source§

impl Formula<2> for RightShift

Source§

impl Formula<2> for Root

Source§

const HAS_EXACT: bool = true

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<2> for Subtract

Source§

impl Formula<2> for Xnor

Source§

impl Formula<2> for Xor

Source§

impl Formula<3> for Betainc

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<3> for Betaincinv

Source§

const FAILS_NAN: bool = true

Source§

impl Formula<3> for Choose

Source§

impl Formula<3> for Clip

Source§

impl<K, const SIDE: usize> Formula<3> for Slope<K, SIDE>
where K: Formula<2>,

Source§

const MAP_ONLY: bool = true

Source§

impl<K> Formula<2> for Flipped<K>
where K: Formula<2>,

Source§

const HAS_EXACT: bool = K::HAS_EXACT

Source§

const INTEGER_FORMULA: bool = K::INTEGER_FORMULA

Source§

const BOOLEAN: bool = K::BOOLEAN

Source§

const FAILS_NAN: bool = K::FAILS_NAN

Source§

impl<K> Formula<2> for Slope<K>
where K: Formula<1>,

Source§

const MAP_ONLY: bool = true