# FP Strict ??

R K Singh

Ranch Hand

Posts: 5384

posted 14 years ago

Hi there

I was going through JLS Value set conversion.

and after that I am slightly confused.

if an expression is FP-strict then expression will never evaluates in Flaot.POSITIVE_INFINITY or Double.POSITIVE_INFINITY ??

what does it mean by overflow/underflow in float. If a positive float number is added with a number which exceeds max limit of result then result will be negative in case of FP-strict expression ??

can anyone plz more elaborate abt Value set conversion.

TIA

------------------

Regards

Ravish

I was going through JLS Value set conversion.

and after that I am slightly confused.

if an expression is FP-strict then expression will never evaluates in Flaot.POSITIVE_INFINITY or Double.POSITIVE_INFINITY ??

what does it mean by overflow/underflow in float. If a positive float number is added with a number which exceeds max limit of result then result will be negative in case of FP-strict expression ??

can anyone plz more elaborate abt Value set conversion.

TIA

------------------

Regards

Ravish

"Thanks to Indian media who has over the period of time swiped out intellectual taste from mass Indian population." - Chetan Parekh

Jose Botella

Ranch Hand

Posts: 2120

posted 14 years ago

Hi Ravish

No, it is not like that read below

from JLS 4.3

The number of bits for the exponents in the float and double value set are 8 and 11. While 11 and more, and 15 and more, are for the "extended" value set fot float and double respectively.

Overflow ocurrs is a number is greater than the value set. Float/Double.POSITIVE/NEGATIVE_INFINITY represents any values that are too big for a value set.

Underflow ocurrs is a number is two small for being represented in a value set. Zero or a denormalized number represent them.

from JLS 15.4

An expression is FP-strict if ocurrs wihtin a class, interface, or method that holds the strictfp modifier, or it is a constant expresion as defined in JLS 15.28

The advantage of non FP-strict expressions is performance: they could utilize some floating point arithmethic available in moderm microprocessors.

if an expression is FP-strict then expression will never evaluates in Flaot.POSITIVE_INFINITY or Double.POSITIVE_INFINITY ??

No, it is not like that read below

from JLS 4.3

Every implementation of the Java programming language is required to support two standard sets of floating-point values, called the float value set and the double value set . In addition, an implementation of the Java programming language may support either or both of two extended-exponent floating-point value sets, called the float-extended-exponent value set and the double-extended-exponent value set . These extended-exponent value sets may, under certain circumstances, be used instead of the standard value sets to represent the values of expressions of type float or double (�5.1.8, �15.4).

The number of bits for the exponents in the float and double value set are 8 and 11. While 11 and more, and 15 and more, are for the "extended" value set fot float and double respectively.

Overflow ocurrs is a number is greater than the value set. Float/Double.POSITIVE/NEGATIVE_INFINITY represents any values that are too big for a value set.

Underflow ocurrs is a number is two small for being represented in a value set. Zero or a denormalized number represent them.

from JLS 15.4

Within an FP-strict expression, all intermediate values must be elements of the float value set or the double value set, implying that the results of all FP-strict expressions must be those predicted by IEEE 754 arithmetic on operands represented using single and double formats. Within an expression that is not FP-strict, some leeway is granted for an implementation to use an extended exponent range to represent intermediate results; the net effect, roughly speaking, is that a calculation might produce "the correct answer" in situations where exclusive use of the float value set or double value set might result in overflow or underflow.

An expression is FP-strict if ocurrs wihtin a class, interface, or method that holds the strictfp modifier, or it is a constant expresion as defined in JLS 15.28

The advantage of non FP-strict expressions is performance: they could utilize some floating point arithmethic available in moderm microprocessors.

SCJP2. Please Indent your code using UBB Code