Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
smartfloat [2012/11/27 08:29] evka |
smartfloat [2012/12/04 14:55] evka |
||
---|---|---|---|
Line 5: | Line 5: | ||
and estimate the roundoff errors commited. | 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) | ||
+ | } | ||
- | You can download the latest .jar file {{projects:eva:top:smartfloatlib.jar.txt|here.}} | + | 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: |
- | In order to run your code, you will also need to compile some native code. | + | 2.1544 (1.3346e-15) |
- | You will find it, with compile instructions, {{projects:eva:top:smartfloat_native.tar.gz|here.}} | + | [2.1544346900318816,2.154434690031885] |
+ | |||
+ | |||
+ | |||
+ | You can download the [[http://lara.epfl.ch/~darulova/smartfloat.zip|source code]] and try it out. | ||
+ | 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. | ||
- | The {{projects:eva:top:smartfloatsource.tar.gz|source code}}, including the examples from the report, is also available. | ||
- | The examples from the report can also be found **[[smartfloat:Examples.scala|HERE]]**. | ||
There is also a {{projects:eva:top:smartfloat_poster.pdf|poster}} and a [[http://lara.epfl.ch/~edarulov/presentation_geneva.pdf|presentation]] available. | There is also a {{projects:eva:top:smartfloat_poster.pdf|poster}} and a [[http://lara.epfl.ch/~edarulov/presentation_geneva.pdf|presentation]] available. | ||
+ | |||
+ | |||
+ | |||
+ | ===== Applications ===== | ||
+ | The SmartFloat data type has also been used for certifying solutions of systems of nonlinear equations. | ||
+ | The implementation uses Scala macros, which is an experimental feature coming in Scala 2.10. | ||
+ | For this reason this [[http://lara.epfl.ch/~darulova/cerres.zip|code]] is to be regarded as experimental as well, but you are free to try it out. | ||
+ | |||
==== Publications ==== | ==== Publications ==== | ||
- | The library is mainly described in the following paper: | ||
E. Darulova, V. Kuncak. //Trustworthy Numerical Computation in Scala//. OOPSLA 2011. | E. Darulova, V. Kuncak. //Trustworthy Numerical Computation in Scala//. OOPSLA 2011. | ||
[[http://lara.epfl.ch/~darulova/TrustworthyComputation.pdf|PDF]] | [[http://lara.epfl.ch/~darulova/TrustworthyComputation.pdf|PDF]] | ||
+ | |||
+ | |||
+ | E. Darulova, V. Kuncak. //Certifying Solutions for Numerical Constraints// RV 2012. | ||
+ | [[http://lara.epfl.ch/~darulova/CertifyingSolutions.pdf|PDF]] | ||
+ | |||
+ | The SmartFloat library is maintained by [[http://people.epfl.ch/eva.darulova|Eva Darulova]]. |