Java Glossary : ULP

CMP home Java glossary home Menu no menu Last updated 2004-06-28 by Roedy Green ©1996-2004 Canadian Mind Products

Java definitions: 0-9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

You are here : home : Java Glossary : U words : ULP.

ULP
Unit in the Last Place is the smallest possible increment or decrement that can be made using the machine's floating point arithmetic. In Java's IEEE format, floating point numbers are stored as finite binary fractions. An 0.5 ulp maximum error is the best you could hope for, since this corresponds to always rounding to the nearest representable floating-point number. In Java, results are usually guaranteed to be accurate to within 1 or 2 ulps. Math.sqrt is guaranteed to be bang on for perfect integral squares where the values can be perfectly represented.

Prof. Kahan came up with the notion of an ulp. An ulp of a real number value is the distance between the floating-point numbers which bracket the real value. Of course since the only reals we can represent happen to be floating-point numbers, this corresponds to the distance between adjacent floating-point values. To avoid ambiguities at powers of two (where the distance between numbers changes), we can define an ulp of a floating-point value to be the distance to the next floating-point value larger in magnitude.

In Java, all the arithmetic operations {+, -, *, /, sqrt} have error of less than 1/2 ulp assuming their inputs are exact; i.e. assuming you want to take the square root of the floating-point number closest to 0.1 not 0.1 exactly. Much of the math library must be accurate to 1 ulp although a few functions only require 2 ulps. Of course even with correct rounding at each step, the final answer could be widely inaccurate due to accumulated and amplified round-off errors.


CMP logo
CMP_home
home
Canadian Mind Products CSS
HTML Checked!
ICRA ratings logo
mindprod.com IP:[24.87.56.253]
Your IP:[80.134.30.163]
You are visitor number 982.
Please send errors, omissions and suggestions
to improve this page to Roedy Green.
You can get a fresh copy of this page from: or possibly from your local J: drive mirror:
http://mindprod.com/jgloss/ulp.html J:\mindprod\jgloss\ulp.html