Clnooms
Assembly-level implementation of various interesting data types on Rust
Table of Contents
- Data Types
- Half-precision floating point (f16)
- Extended floating point (f80)
- Progress
- Half-precision floating point (f16)
- Arithmetic
- Exponential
- Trigonometry
- Comparing
- From Casting
- Into Casting
- Miscelaneous
- Extended floating point (f80)
- Arithmetic
- Exponential
- Trigonometry
- Comparing
- From Casting
- Into Casting
- Miscelaneous
- Half-precision floating point (f16)
- Benchmarks
- Installation
Data types
Half-precision floating point (f16)
A 16-bit floating point type; specifically, the ARM alternative half-precision. It is only available for aarch64 targets & it differs from it's IEEE variant by doing away with the special case for an exponent value of 31, disallawing infinities & NaNs. For non-compatible targets, the "f16" type is an alias of "f32"
See the Wikipedia article
Extended floating point (f80)
A 80-bit floating point type that provides greater precision than the basic floating-point formats. It is an x86 exclusive and it's mainly used to minimize roundoff and overflow errors in smaller floating point types. For non-compatible targets, the "f80" type is an alias of "f64"
See the Wikipedia article
Progress
Half-precision floating point (f16)
Arithmetic
- Addition
- Subtraction
- Multiplication
- Division
- Negation
- Square root
Exponential
- Exponential
- Natural Logarithm
Trigonometry
- Sine
- Cosine
- Tangent
- Arc Sine
- Arc Cosine
- Arc Tangent
- Arc Tangent 2
Comparing
- By Equal
- By Order
From Casting
- 8-bit unsigned integer
- 8-bit signed integer
- 16-bit unsigned integer
- 16-bit signed integer
- 32-bit unsigned integer
- 32-bit signed integer
- 64-bit unsigned integer
- 64-bit signed integer
- 128-bit unsigned integer
- 128-bit signed integer
- Single precision floating point
- Double precision floating point
Into Casting
- 8-bit unsigned integer
- 8-bit signed integer
- 16-bit unsigned integer
- 16-bit signed integer
- 32-bit unsigned integer
- 32-bit signed integer
- 64-bit unsigned integer
- 64-bit signed integer
- 128-bit unsigned integer
- 128-bit signed integer
- Single precision floating point
- Double precision floating point
Miscelaneous
- Absolute
- Round
- Truncate
- Floor
- Ceil
Extended floating point (f80)
Arithmetic
- Addition
- Subtraction
- Multiplication
- Division
- Negation
- Square root
Exponential
- Exponential
- Natural Logarithm
Trigonometry
- Sine
- Cosine
- Tangent
- Arc Sine
- Arc Cosine
- Arc Tangent
- Arc Tangent 2
Comparing
- By Equal
- By Order
From Casting
- 8-bit unsigned integer
- 8-bit signed integer
- 16-bit unsigned integer
- 16-bit signed integer
- 32-bit unsigned integer
- 32-bit signed integer
- 64-bit unsigned integer
- 64-bit signed integer
- 128-bit unsigned integer
- 128-bit signed integer
- Single precision floating point
- Double precision floating point
Into Casting
- 8-bit unsigned integer
- 8-bit signed integer
- 16-bit unsigned integer
- 16-bit signed integer
- 32-bit unsigned integer
- 32-bit signed integer
- 64-bit unsigned integer
- 64-bit signed integer
- 128-bit unsigned integer
- 128-bit signed integer
- Single precision floating point
- Double precision floating point
Miscelaneous
- Absolute
- Round
- Truncate
- Floor
- Ceil
Benchmarks
Todo
Instalation
This library can be installed through cargo with the command
cargo install clnooms