ULP : Java Glossary

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 (Institute of Electrical & Electronics Engineers) 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.

Learning More

Oracle’s Javadoc on ulp package : available:

CMP homejump to top You can get the freshest copy of this page from: or possibly from your local J: drive (Java virtual drive/mindprod.com website mirror)
http://mindprod.com/jgloss/ulp.html J:\mindprod\jgloss\ulp.html
logo
Please email your , letters to the editor, errors, omissions, typos, formatting errors, ambiguities, unclear wording, broken/redirected link reports, suggestions to improve this page or comments to Roedy Green : feedback email. If you want your message, your name or email kept confidential, not considered for public posting, please explicitly specify that. Unless you state otherwise, I will treat your message as a letter to the editor that I may or may not publish in the feedback section. After that, it will be too late to retract it. If you disagree with something I said, please quote it and cite the web page where you found it, tell me why you think it is wrong, and, if possible, provide some supporting evidence. Threatening to kill me or spouting obscenities has yet to persuade me to change my mind.
mindprod.com IP:[65.110.21.43]
view BlogYour face IP:[38.107.179.211]
You are visitor number 18,279.