Arithmos related software

Development discontiuned

Because of my new job, I do not have time to continue developing this project. If you send me patches for this software, I will put them on-line, but I will not provide updates myself any more. If you want to ‘adopt’ this project, you are invited to do so. If you let me know, I will link to a new project page.

Easyval

Easyval is a very basic implementation of interval arithmetic, using hardware doubles as interval bounds. The first target of this library is that the interval arithmetic containment criterium is respected.

Overview

Features

There is (currently) almost no exception handling implemented. Whenever an irrepresentable result can show up, an interval [nan,nan] is returned.

WARNING!

This library depends on the compiler/hardware for correctly rounded floating-point arithmetic. Sadly enough, these implementations do not prove to be reliable. I (or someone else) should really reimplement the goniometric functions.

License

Easyval is free software developed and distributed under the (GNU) Lesser General Public License.

System requirements

This library is know to work under Fedora Core release 1 and Debian GNU/Linux Sarge. In fact it should work for any Unix-like operating system, including cygwin.

Download

Installation instructions

This library is installed the ‘standard GNU way’ :

  1. Unpack the archive
  2. cd to the Easyval-x.x directory, and run ‘./configure’. If you are using Debian Woody, make sure to have g++-3.0 installed, and to set the ‘CXX’ environment variable to ‘g++-3.0
  3. Run ‘make’ to build the library, and ‘make install’ to install it. (If you are using FreeBSD, you might need ‘gmake’ instead of ‘make

If you don't want a ‘standard installation’, you can provide some parameters to configure. Enter ‘./configure --help’ for a list of available options.

Documentation

At the moment, there is no documentation available, except for what you can find in the header file Easyval.hh. You might also look at this example program, which you can compile using

Rounding issues

Easyval relies on the hardware of your computer to perform the rounding of it's interval bounds. A typical problem is that the decimal output of a floating-point number is not correctly rounded by the hardware or the compiler. If you e.g. try to display the value of Easyval C = (Easyval)1/(Easyval)10;, you will get [0.1, 0.1], which is incorrect. 0.1 is not exactly representable as a binary floating-point number. But printing C.getSup() - C.getInf(), will show that the bounds of C are indeed different.

Cygwin and mingw do not offer functions to control the hardware's rounding mode. Although the functions fpsetround and fpgetround are defined in /usr/include/ieeefp.h, the linker cannot find them. As a workaround, Easyval will use epsilon inflation when compiled for these platforms.

Projects using Easyval

Easyval is used in libcff, a C++ continued fractions toolkit, and in the Arithmos project of the CANT research group at the University of Antwerpen.

Credits

Contact

For bugfixes, suggestions, questions, more information,... : johan@linux.be

Copyright (c) 2003 Johan Vervloet.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts.

Modified: 27 September 2006

Microsoft Free Valid XHTML 1.1! Valid CSS!