If performance is your primary concern, and you want your program to be relatively safe but do not mind if results are slightly different (generally more precise) from what they would be otherwise, optimize the program with the -O option and specify -qfloat=rsqrt:hssngl:fltint.
The following section describes the functions of these suboptions:
Rounding operations are still inserted when double-precision results are stored into single-precision memory locations, to detect single-precision floating-point overflows and underflows. However, if optimization removes such a store operation, hssngl also removes the corresponding rounding operation, possibly preventing the exception. (Depending on the characteristics of your program, you may or may not care whether the exception happens.)
The hssngl suboption is safe for all types of programs because it always only increases the precision of floating-point calculations. Program results may differ because of the increased precision and because of avoidance of some exceptions.
In cases where speed is so important that you can make an informed decision to sacrifice correctness at boundary conditions, you can replace hssngl and fltint with the hsflt suboption: it does the same thing as fltint, and also suppresses rounding operations.
In suppressing rounding operations, hsflt works like hssngl, but it also suppresses rounding operations when double-precision values are assigned to single-precision memory locations. Single-precision overflow is not detected in such assignments, and the assigned value is not correctly rounded according to the current rounding mode.
Attention: When you use the hsflt suboption, observe these restrictions or your program may produce incorrect results without warning:
Therefore, we recommend that you use this suboption only with extreme caution. It is for use by knowledgeable programmers in specific applications, such as graphics programs, where the computational characteristics are known. If you are at all unsure whether a program is suitable, or if the program produces unexpected results when you use this suboption, use hssngl instead.
Related Information: | Technical Details of the -qfloat=hsflt Option provides additional technical information about this suboption. |