schubfach

Crates.ioschubfach
lib.rsschubfach
version0.0.1
sourcesrc
created_at2023-03-10 15:57:39.945096
updated_at2023-03-10 15:57:39.945096
descriptionSchubfach algorithm for floating-point to string conversion
homepagehttps://github.com/blueglyph/schubfach_rs
repositoryhttps://github.com/blueglyph/schubfach_rs
max_upload_size
id806530
size162,635
Redglyph (blueglyph)

documentation

https://docs.rs/schufbach

README

schubfach

crate documentation crate


Schubfach algorithm

This is a Rust implementation of the Schufbach algorithm that converts IEEE-754 double-precision floating-point values to their string decimal representation.

It is performant and has a relatively small footprint. For performance comparisons, check the Drachennest project or the Dragonbox project.

Status

WARNING! This is very much work-in-progress.

The code is functional but must still be more thoroughly tested and optimized. The API is not considered as definitive yet, not is the code architecture.

Current features:

  • double-precision values (f64) are supported
  • a simple function converts values to a simple string format, either fixed or scientific depending on the value
  • a more complex function offers more choices, like
    • fixed / scientific format selection
    • precision
    • correct rounding to even
    • interface through method or Display trait

Planned features:

  • engineering format

References

The algorithm is described by its author in the following article:

The author made a Java implementation:

The Rust code is mainly a translation from Alexander Bolz's C++ implementation:

  • https://github.com/abolz/Drachennest

    with the following licence:

    Copyright 2020 Alexander Bolz
    
    Distributed under the Boost Software License, Version 1.0.
     (See accompanying file LICENSE_1_0.txt or copy at 
      https://www.boost.org/LICENSE_1_0.txt)
    

Compatibility

The schubfach crate is tested for rustc 1.68 and greater, on Windows 64-bit and Linux 64/32-bit platforms. There shouldn't be any problem with older versions.

License

Licensed under MIT license.

Commit count: 59

cargo fmt