pub struct Slope<K, const SIDE: usize = 0>(pub K);Expand description
K’s partial derivative in its argument SIDE, as a function object at f32 and f64: of K’s argument and result where K takes one argument, and of its two arguments and its result where it takes two. Each item runs K’s recipe on floats ([Floats]), which see no constant. A slope that is NaN where no argument is, such as Pow’s in y at an infinite x and a negative y, is its value, as Subtract gives NaN for ∞ - ∞. A slope in an argument that has none, such as Polygamma’s in its order, is NaN.
Tuple Fields§
§0: KTrait Implementations§
impl<K: Copy, const SIDE: usize> Copy for Slope<K, SIDE>
Source§impl<K: Formula<1>> Formula<2> for Slope<K>
impl<K: Formula<1>> Formula<2> for Slope<K>
Source§const MAP_ONLY: bool = true
const MAP_ONLY: bool = true
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.fn supports(&self, dtype: DType) -> bool
fn emit<F: Float, O: Ops<F> + ?Sized>( &self, o: &O, [x, r]: [O::V; 2], ) -> Option<O::V>
const BOOLEAN: bool = false
Source§const FAILS_NAN: bool = false
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 INTEGER_FORMULA: bool = false
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.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, [x, y]: [i32; 2]) -> Option<i32>
fn character_policy(&self, types: [DType; 2]) -> Result<Option<Policy>, Error>
fn exact(&self, _args: [&BigRational; N]) -> Result<Option<BigRational>, Error>
fn range(&self, _args: [Range; N]) -> Range
Source§fn domain(&self, _dtype: DType, _args: [Range; N]) -> Option<[Range; N]>
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.
fn identity(&self) -> [Option<f64>; N]
fn fold(&self) -> Option<Reduce>
fn inverse_fold(&self) -> Option<Reduce>
Source§fn truth_table(&self) -> Option<u8>
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).fn truth(&self) -> Option<Reduce>
Source§fn same(&self, _arg: Range) -> Option<Range>
fn same(&self, _arg: Range) -> Option<Range>
Refines the real result interval when both operands denote the same value.
fn reads(&self) -> Reads
fn emit_test<F: Float, O: Ops<F> + ?Sized>( &self, _o: &O, _x: [O::V; N], ) -> Option<O::B>
Source§fn emit_against<F: Float, O: Ops<F> + ?Sized>(
&self,
_o: &O,
_c: F,
_v: O::V,
_left: bool,
) -> Option<O::B>
fn emit_against<F: Float, O: Ops<F> + ?Sized>( &self, _o: &O, _c: F, _v: O::V, _left: bool, ) -> Option<O::B>
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)>
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.fn emit_repair<F: Float, O: Ops<F> + ?Sized>( &self, _o: &O, _x: [O::V; N], ) -> Option<O::B>
fn repair_routine(&self) -> Option<Repair>
fn emit_valid<F: Float, O: Ops<F> + ?Sized>( &self, _variant: Variant, o: &O, x: [O::V; N], result: O::V, ) -> Option<(Kind, O::B)>
fn real<F: Native>( &self, ops: &NativeOps<{ crate::FUSED }>, x: [F; N], ) -> Option<F>
fn integer<I: Overflowing>(&self, _ops: &IntegerOps<I>, _x: [I; N]) -> Option<I>
fn complex<F: Native>( &self, _ops: &NativeOps<{ crate::FUSED }>, _x: [Complex<F>; N], ) -> Option<Complex<F>>
Source§const REAL_COMPLEX: bool = false
const REAL_COMPLEX: bool = false
Whether
real_complex gives this formula’s complex results from real arguments.Source§fn real_complex<F: Native>(
&self,
_ops: &NativeOps<{ crate::FUSED }>,
_x: [F; N],
) -> Option<Complex<F>>
fn real_complex<F: Native>( &self, _ops: &NativeOps<{ crate::FUSED }>, _x: [F; N], ) -> Option<Complex<F>>
The complex result from real arguments, where that costs less than from the arguments as complex numbers.
None sends the item to complex.fn native_slices(&self) -> Option<NativeSlices<Self, N>>
fn emit_partials<F: Float, O: Ops<F> + ?Sized>( &self, _o: &O, _x: [O::V; N], _result: O::V, _needed: [bool; N], ) -> [Option<O::V>; N]
Source§impl<K: Formula<2>, const SIDE: usize> Formula<3> for Slope<K, SIDE>
impl<K: Formula<2>, const SIDE: usize> Formula<3> for Slope<K, SIDE>
Source§const MAP_ONLY: bool = true
const MAP_ONLY: bool = true
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.fn supports(&self, dtype: DType) -> bool
fn emit<F: Float, O: Ops<F> + ?Sized>( &self, o: &O, [x, y, r]: [O::V; 3], ) -> Option<O::V>
const BOOLEAN: bool = false
Source§const FAILS_NAN: bool = false
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 INTEGER_FORMULA: bool = false
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.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, [x, y]: [i32; 2]) -> Option<i32>
fn character_policy(&self, types: [DType; 2]) -> Result<Option<Policy>, Error>
fn exact(&self, _args: [&BigRational; N]) -> Result<Option<BigRational>, Error>
fn range(&self, _args: [Range; N]) -> Range
Source§fn domain(&self, _dtype: DType, _args: [Range; N]) -> Option<[Range; N]>
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.
fn identity(&self) -> [Option<f64>; N]
fn fold(&self) -> Option<Reduce>
fn inverse_fold(&self) -> Option<Reduce>
Source§fn truth_table(&self) -> Option<u8>
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).fn truth(&self) -> Option<Reduce>
Source§fn same(&self, _arg: Range) -> Option<Range>
fn same(&self, _arg: Range) -> Option<Range>
Refines the real result interval when both operands denote the same value.
fn reads(&self) -> Reads
fn emit_test<F: Float, O: Ops<F> + ?Sized>( &self, _o: &O, _x: [O::V; N], ) -> Option<O::B>
Source§fn emit_against<F: Float, O: Ops<F> + ?Sized>(
&self,
_o: &O,
_c: F,
_v: O::V,
_left: bool,
) -> Option<O::B>
fn emit_against<F: Float, O: Ops<F> + ?Sized>( &self, _o: &O, _c: F, _v: O::V, _left: bool, ) -> Option<O::B>
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)>
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.fn emit_repair<F: Float, O: Ops<F> + ?Sized>( &self, _o: &O, _x: [O::V; N], ) -> Option<O::B>
fn repair_routine(&self) -> Option<Repair>
fn emit_valid<F: Float, O: Ops<F> + ?Sized>( &self, _variant: Variant, o: &O, x: [O::V; N], result: O::V, ) -> Option<(Kind, O::B)>
fn real<F: Native>( &self, ops: &NativeOps<{ crate::FUSED }>, x: [F; N], ) -> Option<F>
fn integer<I: Overflowing>(&self, _ops: &IntegerOps<I>, _x: [I; N]) -> Option<I>
fn complex<F: Native>( &self, _ops: &NativeOps<{ crate::FUSED }>, _x: [Complex<F>; N], ) -> Option<Complex<F>>
Source§const REAL_COMPLEX: bool = false
const REAL_COMPLEX: bool = false
Whether
real_complex gives this formula’s complex results from real arguments.Source§fn real_complex<F: Native>(
&self,
_ops: &NativeOps<{ crate::FUSED }>,
_x: [F; N],
) -> Option<Complex<F>>
fn real_complex<F: Native>( &self, _ops: &NativeOps<{ crate::FUSED }>, _x: [F; N], ) -> Option<Complex<F>>
The complex result from real arguments, where that costs less than from the arguments as complex numbers.
None sends the item to complex.fn native_slices(&self) -> Option<NativeSlices<Self, N>>
fn emit_partials<F: Float, O: Ops<F> + ?Sized>( &self, _o: &O, _x: [O::V; N], _result: O::V, _needed: [bool; N], ) -> [Option<O::V>; N]
Auto Trait Implementations§
impl<K, const SIDE: usize> Forget for Slope<K, SIDE>
impl<K, const SIDE: usize> Freeze for Slope<K, SIDE>where
K: Freeze,
impl<K, const SIDE: usize> RefUnwindSafe for Slope<K, SIDE>where
K: RefUnwindSafe,
impl<K, const SIDE: usize> Send for Slope<K, SIDE>where
K: Send,
impl<K, const SIDE: usize> Sync for Slope<K, SIDE>where
K: Sync,
impl<K, const SIDE: usize> Unpin for Slope<K, SIDE>where
K: Unpin,
impl<K, const SIDE: usize> UnsafeUnpin for Slope<K, SIDE>where
K: UnsafeUnpin,
impl<K, const SIDE: usize> UnwindSafe for Slope<K, SIDE>where
K: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more