https://github.com/aandreba/clnooms
Assembly-level implementation of interesting data types
https://github.com/aandreba/clnooms
asm asmx86 assembly assembly-arm assembly-x86 data-type data-types math rust rust-crate rust-lang rust-library
Last synced: 4 months ago
JSON representation
Assembly-level implementation of interesting data types
- Host: GitHub
- URL: https://github.com/aandreba/clnooms
- Owner: Aandreba
- Created: 2021-12-24T18:39:15.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2022-01-02T14:59:51.000Z (about 4 years ago)
- Last Synced: 2025-04-08T00:46:35.155Z (10 months ago)
- Topics: asm, asmx86, assembly, assembly-arm, assembly-x86, data-type, data-types, math, rust, rust-crate, rust-lang, rust-library
- Language: Rust
- Homepage:
- Size: 17.6 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Clnooms
[](https://crates.io/crates/clnooms)
[](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```