#assembly #half #float

nightly clnooms

Assembly-level implementation of interesting data types

1 unstable release

0.5.0 Dec 24, 2021

#1135 in Math

MIT/Apache

26KB
659 lines

Clnooms

Crate API

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

  • 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

Dependencies

~4KB