pub struct Flipped<K>(pub K);Expand description
K with its two arguments in the other order, as a Binary at each item type where K is one: Flipped(k).one(x, y) is k.one(y, x), and likewise for many and checked.
Tuple Fields§
§0: KTrait Implementations§
Source§impl<T, K: Binary<T>> Binary<T> for Flipped<K>
impl<T, K: Binary<T>> Binary<T> for Flipped<K>
fn one(&self, x: T, y: T) -> K::Out
fn judged(&self, x: T, y: T) -> (K::Out, bool)
fn slice( &self, [x, y]: [Arg<'_, T>; 2], n: usize, out: &mut [MaybeUninit<K::Out>], ) -> bool
fn checked(&self, x: T, y: T) -> Option<Self::Out>
fn many( &self, x: Arg<'_, T>, y: Arg<'_, T>, n: usize, out: &mut Vec<Self::Out>, ) -> bool
fn many_into(
&self,
x: Arg<'_, T>,
y: Arg<'_, T>,
n: usize,
out: &mut Slots<'_, Self::Out>,
) -> boolwhere
T: Copy,
impl<K: Copy> Copy for Flipped<K>
Source§impl<K: Formula<2>> Formula<2> for Flipped<K>
impl<K: Formula<2>> Formula<2> for Flipped<K>
Source§const INTEGER_FORMULA: bool = K::INTEGER_FORMULA
const INTEGER_FORMULA: bool = K::INTEGER_FORMULA
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.const BOOLEAN: bool = K::BOOLEAN
Source§const FAILS_NAN: bool = K::FAILS_NAN
const FAILS_NAN: bool = K::FAILS_NAN
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§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 character_policy(&self, [x, y]: [DType; 2]) -> Result<Option<Policy>, Error>
fn exact(&self, [x, y]: [&BigRational; 2]) -> Result<Option<BigRational>, Error>
fn character_rule(&self) -> Option<Rule>
fn result_dtype(&self, input: DType) -> DType
fn range(&self, [x, y]: [Range; 2]) -> Range
Source§fn same(&self, x: Range) -> Option<Range>
fn same(&self, x: Range) -> Option<Range>
Refines the real result interval when both operands denote the same value.
Source§fn domain(&self, dtype: DType, [x, y]: [Range; 2]) -> Option<[Range; 2]>
fn domain(&self, dtype: DType, [x, y]: [Range; 2]) -> Option<[Range; 2]>
A box at the computing dtype containing args on which graph-numeric results do not raise a data error.
fn identity(&self) -> [Option<f64>; 2]
fn supports(&self, dtype: DType) -> bool
fn integer<I: Overflowing>( &self, o: &IntegerOps<I>, [x, y]: [I; 2], ) -> Option<I>
fn real<F: Native>( &self, o: &NativeOps<{ crate::FUSED }>, [x, y]: [F; 2], ) -> Option<F>
fn complex<F: Native>( &self, o: &NativeOps<{ crate::FUSED }>, [x, y]: [Complex<F>; 2], ) -> Option<Complex<F>>
fn emit_valid<F: Float, O: Ops<F> + ?Sized>( &self, v: Variant, o: &O, [x, y]: [O::V; 2], r: O::V, ) -> Option<(Kind, O::B)>
fn emit<F: Float, O: Ops<F> + ?Sized>( &self, o: &O, [x, y]: [O::V; 2], ) -> Option<O::V>
fn emit_test<F: Float, O: Ops<F> + ?Sized>( &self, o: &O, [x, y]: [O::V; 2], ) -> Option<O::B>
fn emit_partials<F: Float, O: Ops<F> + ?Sized>( &self, o: &O, [x, y]: [O::V; 2], r: O::V, [nx, ny]: [bool; 2], ) -> [Option<O::V>; 2]
Source§const MAP_ONLY: bool = false
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.fn computing_dtype(&self, input: DType) -> Option<DType>
fn ordered_kinds(&self, [x, y]: [i32; 2]) -> Option<i32>
fn fold(&self) -> Option<Reduce>
fn inverse_fold(&self) -> Option<Reduce>
fn truth(&self) -> Option<Reduce>
fn reads(&self) -> Reads
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>
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>>
Auto Trait Implementations§
impl<K> Forget for Flipped<K>
impl<K> Freeze for Flipped<K>where
K: Freeze,
impl<K> RefUnwindSafe for Flipped<K>where
K: RefUnwindSafe,
impl<K> Send for Flipped<K>where
K: Send,
impl<K> Sync for Flipped<K>where
K: Sync,
impl<K> Unpin for Flipped<K>where
K: Unpin,
impl<K> UnsafeUnpin for Flipped<K>where
K: UnsafeUnpin,
impl<K> UnwindSafe for Flipped<K>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