Balanced Ternary
Balanced Ternary is a Rust library for manipulating *
balanced ternary*
numbers, a numeral system with digits -1, 0, and +1.
This system is useful in areas like computer science and mathematics due to its symmetry and unique arithmetic properties.
Features
- Number Conversions: Convert between decimal and balanced ternary representations.
- Arithmetic Operations: Support for addition, subtraction, multiplication, and division.
- Logic Operations: Support for bitwise and, or, xor, and not.
- Advanced logic: Implementation of K3, BI3, L3, RM3 and HT imply operation.
- Custom Representation: Parse and display numbers using
+,0, and-symbols. - No Standard Library: Suitable for
#![no_std]environments. - Provides the types:
Digit(Neg,ZeroorPos),Ternary(heap allocated variable-length balanced-ternary number),Tryte(6 characters long copy-type ternary number).
Digits operators
These operators can be applied for Ternary with Ternary::each(operator):
| Unary operators | - | 0 | + |
|---|---|---|---|
| possibly | - | + | + |
| necessary | - | - | + |
| contingently | - | + | - |
| ht_not | + | - | - |
| post | 0 | + | - |
| pre | + | - | 0 |
! (not) / - (neg) |
+ | 0 | - |
| absolute_positive | + | 0 | + |
| positive | 0 | 0 | + |
| not_negative | 0 | + | + |
| not_positive | - | - | 0 |
| negative | - | 0 | 0 |
| absolute_negative | - | 0 | - |
These operators can be applied for Ternary with:
Ternary::each_with(operator, with), or,Ternary::each_zip(operator, other):
| Binary operators | -- | -0 | -+ | 0- | 00 | 0+ | +- | +0 | ++ |
|---|---|---|---|---|---|---|---|---|---|
+ (add) |
-+ | - | 0 | - | 0 | + | 0 | + | +- |
- (sub) |
0 | - | -+ | + | 0 | - | +- | + | 0 |
/ (div) |
+ | - | 0 | 0 | - | + | |||
* (mul) |
+ | 0 | - | 0 | 0 | 0 | - | 0 | + |
& (bitand) |
- | - | - | - | 0 | 0 | - | 0 | + |
| bi3_and | - | 0 | - | 0 | 0 | 0 | - | 0 | + |
| (bitor) |
- | 0 | + | 0 | 0 | + | + | + | + |
| bi3_or | - | 0 | + | 0 | 0 | 0 | + | 0 | + |
^ (bitxor) |
- | 0 | + | 0 | 0 | 0 | + | 0 | - |
| k3_equiv | + | 0 | - | 0 | 0 | 0 | - | 0 | + |
| k3_imply | + | + | + | 0 | 0 | + | - | 0 | + |
| bi3_imply | + | 0 | + | 0 | 0 | 0 | - | 0 | + |
| l3_imply | + | + | + | 0 | + | + | - | 0 | + |
| rm3_imply | + | + | + | - | 0 | + | - | - | + |
| ht_imply | + | + | + | - | + | + | - | 0 | + |
Examples
Convert between decimal and balanced ternary
use *;
Perform arithmetic or logic operations
use *;
Handle negative numbers
use *;
Installation
Add the following to your Cargo.toml:
[]
= "0.1.*"
License
Copyright (c) 2025 Sébastien GELDREICH
Balanced Ternary is licensed under the MIT License.