Module balanced

Source
Expand description

Type-level balanced ternary operations. For more information, see the documentation for the Int trait.

Re-exports§

pub use types::balanced::*;

Traits§

Int2P1
Project the first value in an IntPair.
Int2P2
Project the second value in an IntPair.
IntAbs
Integer absolute value. Used as Abs<X> or <X as IntAbs>::Output.
IntAbsMinThreeCmp
Three-way integer absolute-value minimum comparison. Takes three integers, and returns a pair, the corresponding argument paired with the integer whose absolute value was smallest.
IntAdd
Integer addition. Used as Add<X, Y> or <X as IntAdd<Y>>::Output.
IntCmp
Integer comparison. Takes five integers - the first two are to be compared. If the result is that the first integer is greater than the second, the fifth integer is returned; if the result is that the two integers are equal, the fourth integer is returned; and if the result is that the first integer is less than the second, the third integer is returned.
IntCmp2
Two-way integer comparison, but with the output trait bounds as an IntPair instead of an Int.
IntDiv
Integer division. Used as Div<X, Y> or <X as IntDiv<Y>>::Output.
IntDivInternal
IntLteCmp
IntLteCmp2
IntMul
Integer multiplication. Used as Mul<X, Y> or <X as IntMul<Y>>::Output.
IntNeg
Integer negation. In balanced ternary, this is just taking every “minus” and “plus” and switching them. Used as Neg<X> or <X as IntNeg>::Output.
IntPred
The Pred operator subtracts one to an integer.
IntRem
Integer remainder. Used as Rem<X, Y> or <X as IntRem<Y>>::Output.
IntRev
Integer reversal. This is probably something you never want to do! However, it’s useful in implementing division, in which we wish to access trits with the most-significant trits first. This reverses all the trits of the integer.
IntRevInternal
IntSub
Integer subtraction. Used as Sub<X, Y> or <X as IntSub<Y>>::Output.
IntSucc
The Succ operator adds one to an integer.
IntTriple
The Triple operator triples an integer, and avoids redundant zeroes (and thus preserves unique representations.) It is equivalent to Zero<N> unless N is Term, in which case Triple<Term> = Term. Its collapsing acts at only one level, which should be sufficient unless multiple levels of redundant zeroes are introduced by user error.
Unique
The Unique operator collapses one level of redundant zeroes in a balanced ternary representation. Using Unique every time we might get a redundant zero should get rid of any problems with non-unique representations of zero.

Type Aliases§

Abs
AbsMinThreeCmp
Add
Cmp
Cmp2
Div
DivInternal
Int2First
Int2Second
IntUnique
LteCmp
LteCmp2
Mul
Neg
Pred
Rem
Rev
RevInternal
Sub
Succ
Triple