TY - JOUR
T1 - On Quality of Implementation of Fortran 2008 Complex Intrinsic Functions on Branch Cuts
AU - Shterenlikht, Anton
PY - 2019/3/1
Y1 - 2019/3/1
N2 - Branch cuts in complex functions in combination with signed zero and signed infinity have important uses in fracture mechanics, jet flow and aerofoil analysis. We present benchmarks for validating Fortran 2008 complex functions - LOG, SQRT, ASIN, ACOS, ATAN, ASINH, ACOSH and ATANH - on branch cuts with arguments of all 3 IEEE floating point binary formats: binary32, binary64 and binary128. Results are reported with 8 Fortran 2008 compilers: GCC, Flang, Cray, Oracle, PGI, Intel, NAG and IBM. Multiple test failures were revealed, e.g. wrong signs of results or unexpected overflow, underflow, or NaN. We conclude that the quality of implementation of these Fortran 2008 intrinsics in many compilers is not yet sufficient to remove the need for special code for branch cuts. The test results are complemented by conformal maps of the branch cuts and detailed derivations of the values of these functions on branch cuts, to be used as a reference. The benchmarks are freely available from cmplx.sf.net. This work will be of interest to engineers who use complex functions, as well as to compiler and maths library developers.
AB - Branch cuts in complex functions in combination with signed zero and signed infinity have important uses in fracture mechanics, jet flow and aerofoil analysis. We present benchmarks for validating Fortran 2008 complex functions - LOG, SQRT, ASIN, ACOS, ATAN, ASINH, ACOSH and ATANH - on branch cuts with arguments of all 3 IEEE floating point binary formats: binary32, binary64 and binary128. Results are reported with 8 Fortran 2008 compilers: GCC, Flang, Cray, Oracle, PGI, Intel, NAG and IBM. Multiple test failures were revealed, e.g. wrong signs of results or unexpected overflow, underflow, or NaN. We conclude that the quality of implementation of these Fortran 2008 intrinsics in many compilers is not yet sufficient to remove the need for special code for branch cuts. The test results are complemented by conformal maps of the branch cuts and detailed derivations of the values of these functions on branch cuts, to be used as a reference. The benchmarks are freely available from cmplx.sf.net. This work will be of interest to engineers who use complex functions, as well as to compiler and maths library developers.
KW - ACOS
KW - ACOSH
KW - ASIN
KW - ASINH
KW - ATAN
KW - ATANH
KW - Branch cuts
KW - Fortran
KW - LOG
KW - Signed infinity
KW - Signed zero
KW - SQRT
UR - http://www.scopus.com/inward/record.url?scp=85065772588&partnerID=8YFLogxK
U2 - 10.1145/3301318
DO - 10.1145/3301318
M3 - Article (Academic Journal)
AN - SCOPUS:85065772588
VL - 45
JO - ACM Transactions on Mathematical Software
JF - ACM Transactions on Mathematical Software
SN - 0098-3500
IS - 1
M1 - 11
ER -