Float parser that sacrifices nothing.
Float parser that sacrifices nothing.
Accurate. It finds the "best" approximation to the input just like the standard library, strconv. Fuzzing tests in addition to standard library tests and parse-number-fxx-test-data are actively done.
Compatible. Basically, it is an improvement on ParseFloat
in the standard library, and the usage is exactly the same.
Fast. Faster than the standard library on benchmarks with normally distributed floats and bitwise uniform random float inputs. For more information, benchmark it yourself or see below.
go get github.com/sugawarayuuta/refloat
gantt
title norm = normally distributed, bits = bitwise uniform (ns/op - lower is better)
todayMarker off
dateFormat X
axisFormat %s
section bits 64bit
strconv: 0,106
refloat: 0,91
section norm 64bit
strconv: 0,92
refloat: 0,65
section bits 32bit
strconv: 0,79
refloat: 0,80
section norm 32bit
strconv: 0,65
refloat: 0,49
There are articles written in English and Japanese.
The icon above is from gopher-stickers by Ueda Takuya.
Awesome talk and inspirational algorithm by Daniel Lemire.
Sollya is used for precomputing the polynomial for approximations.