Java has two kinds of floating-point environments:
* FP-strict (methods declared strictfp, etc.) where floating-point operational semantics are fully specified
* non FP-strict (the default) where some variation is allowed in the exponent range of expressions, but not in fields.
The non-strict environment accommodates certain peculiarities of performing 32-bit float and 64-bit double calculations on the 80-bit registers of the x87 stack. However, on many hardware processors strictfp is a no-op since all the floating-point operations run strictly. These contexts where strictfp is a no-op would include x86 SSE2 and later instruction set extensions.
When there is no difference in code generated between strictfp and non-strictfp contexts, there should not be a large performance penalty to declaring code strictfp.
* FP-strict (methods declared strictfp, etc.) where floating-point operational semantics are fully specified
* non FP-strict (the default) where some variation is allowed in the exponent range of expressions, but not in fields.
The non-strict environment accommodates certain peculiarities of performing 32-bit float and 64-bit double calculations on the 80-bit registers of the x87 stack. However, on many hardware processors strictfp is a no-op since all the floating-point operations run strictly. These contexts where strictfp is a no-op would include x86 SSE2 and later instruction set extensions.
When there is no difference in code generated between strictfp and non-strictfp contexts, there should not be a large performance penalty to declaring code strictfp.
- is blocked by
- 
                    JDK-7175279 Don't use x87 FPU on x86-64 -           
- Resolved
 
-         
- relates to
- 
                    JDK-8134795 Port fdlibm pow to Java -           
- Resolved
 
-         
- 
                    JDK-8175916 JEP 306: Restore Always-Strict Floating-Point Semantics -           
- Closed
 
-