[clang] [CLANG] Full support of complex multiplication and division. (PR #81514)
Zahira Ammarguellat via cfe-commits
cfe-commits at lists.llvm.org
Thu Feb 22 05:25:04 PST 2024
================
@@ -1847,19 +1847,33 @@ floating point semantic models: precise (the default), strict, and fast.
* ``16`` - Forces ``_Float16`` operations to be emitted without using excess
precision arithmetic.
-.. option:: -fcx-limited-range:
-
- This option enables the naive mathematical formulas for complex division and
- multiplication with no NaN checking of results. The default is
- ``-fno-cx-limited-range``, but this option is enabled by the ``-ffast-math``
- option.
-
-.. option:: -fcx-fortran-rules:
-
- This option enables the naive mathematical formulas for complex
- multiplication and enables application of Smith's algorithm for complex
- division. See SMITH, R. L. Algorithm 116: Complex division. Commun.
- ACM 5, 8 (1962). The default is ``-fno-cx-fortran-rules``.
+.. option:: -fcomplex-arithmetic=<value>:
+
+ This option specifies the implementation for complex multiplication and division.
+
+ Valid values are: ``basic``, ``improved``, ``full`` and ``promoted``.
+
+ * ``basic`` Implementation of complex division and multiplication using
+ algebraic formulas at source precision. No special handling to avoid
+ overflow. NaN and infinite and values are not handled.
+ * ``improved`` Implementation of complex division using the Smith algorithm at
+ source precision. Smith's algorithm for complex division.
+ See SMITH, R. L. Algorithm 116: Complex division. Commun. ACM 5, 8 (1962).
+ This value offers improved handling for overflow in intermediate calculations,
+ but overflow may occur. NaN and infinite and values are not handled in some
+ cases.
+ * ``full`` Implementation of complex division and multiplication using a
----------------
zahiraam wrote:
-ffast-math implies "basic".
-ffast-math -fcomplex-arithmetic=full generates this warning:
" overriding '-fcomplex-arithmetic=basic' option with '-fcomplex-arithmetic=full'
-fcomplex-arithmetic=full -ffast-math doesn't generate any warning. I can add one mentioning the presence of nnan/ninf and "full" option.
>>
In the case of complex multiplication, if the 'nnan' and 'ninf' flags are set on the generated instructions, the "full" implementation will be optimized to the "basic" implementation.
>>
This is not the case currently. I will add that.
https://github.com/llvm/llvm-project/pull/81514
More information about the cfe-commits
mailing list