# Clnooms [![Crate](https://img.shields.io/crates/v/clnooms.svg)](https://crates.io/crates/clnooms) [![API](https://docs.rs/clnooms/badge.svg)](https://docs.rs/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 - 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 - [x] Addition - [x] Subtraction - [x] Multiplication - [x] Division - [x] Negation - [x] Square root ### Exponential - [ ] Exponential - [ ] Natural Logarithm ### Trigonometry - [ ] Sine - [ ] Cosine - [ ] Tangent - [ ] Arc Sine - [ ] Arc Cosine - [ ] Arc Tangent - [ ] Arc Tangent 2 ### Comparing - [x] By Equal - [x] By Order ### From Casting - [x] 8-bit unsigned integer - [x] 8-bit signed integer - [x] 16-bit unsigned integer - [x] 16-bit signed integer - [x] 32-bit unsigned integer - [x] 32-bit signed integer - [x] 64-bit unsigned integer - [x] 64-bit signed integer - [ ] 128-bit unsigned integer - [ ] 128-bit signed integer - [x] Single precision floating point - [x] Double precision floating point ### Into Casting - [ ] 8-bit unsigned integer - [ ] 8-bit signed integer - [x] 16-bit unsigned integer - [ ] 16-bit signed integer - [ ] 32-bit unsigned integer - [x] 32-bit signed integer - [ ] 64-bit unsigned integer - [ ] 64-bit signed integer - [ ] 128-bit unsigned integer - [ ] 128-bit signed integer - [x] Single precision floating point - [x] Double precision floating point ### Miscelaneous - [x] Absolute - [x] Round - [x] Truncate - [x] Floor - [x] Ceil ## Extended floating point (f80) ### Arithmetic - [x] Addition - [x] Subtraction - [x] Multiplication - [x] Division - [x] Negation - [x] Square root ### Exponential - [ ] Exponential - [ ] Natural Logarithm ### Trigonometry - [x] Sine - [x] Cosine - [x] Tangent - [ ] Arc Sine - [ ] Arc Cosine - [x] Arc Tangent - [x] 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 - [x] Single precision floating point - [x] 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 - [x] Single precision floating point - [x] Double precision floating point ### Miscelaneous - [x] Absolute - [x] Round - [ ] Truncate - [ ] Floor - [ ] Ceil # Benchmarks Todo # Instalation This library can be installed through cargo with the command
```cargo install clnooms```