SmartFloat is a numerical data type library for sound floating-point computations in Scala. The library can perform sound computations with ranges of floating-point numbers and estimate the roundoff errors commited.

For example:

def cubeRoot = { val a: AffineFloat = 10 var xn = AffineFloat(1.6) for(i <- 1 until 5) { xn = xn * ((xn*xn*xn + 2.0*a)/(2.0*xn*xn*xn + a)) } println(xn.toStringWithAbsErrors) println(xn.interval) }

will compute the cube root of 10 by Halley's method and provide an upper bound on the absolute floating-point roundoff error committed on the final result:

2.1544 (1.3346e-15) [2.1544346900318816,2.154434690031885]

The source is now available on GitHub. The only dependency is a small native library that you need to compile for your own platform, but for Linux and Mac this works without issues.

There is also a poster and a presentation available.