[clang] [CLANG] Full support of complex multiplication and division. (PR #81514)

Aaron Ballman via cfe-commits cfe-commits at lists.llvm.org
Tue Feb 27 11:40:51 PST 2024


================
@@ -396,7 +396,38 @@ class LangOptionsBase {
     IncompleteOnly = 3,
   };
 
-  enum ComplexRangeKind { CX_Full, CX_Limited, CX_Fortran, CX_None };
+  /// Controls the various implementations for complex multiplication and
+  // division.
+  enum ComplexRangeKind {
+    /// Implementation of complex division and multiplication using a call to
+    ///  runtime library functions(generally the case, but the BE might
+    /// sometimes replace the library call if it knows enough about the
+    /// potential range of the inputs). Overflow and non -finite values are
+    /// handled by the library implementation.
+    CX_Full,
+
+    /// Implementation of complex division offering an improved handling
+    /// for overflow in intermediate calculations with no special handling for
+    /// NaN and infinite and values.
+    CX_Improved,
+
+    /// Implementation of complex division using algebraic formulas at
+    /// higher precision. Overflow is handled. Non-finite values are handled in
+    /// some cases. If the target hardware does not have native support for a
+    /// higher precision data type, an implementation for the complex operation
+    /// will be used to provide improved guards against intermediate overflow,
+    /// but overflow and underflow may still occur in some cases. NaN and
+    /// infinite and  values are not handled. This is the default value.
----------------
AaronBallman wrote:

```suggestion
    /// infinite values are not handled. This is the default value.
```
Be sure to update this comment if switching the default to "full".

https://github.com/llvm/llvm-project/pull/81514


More information about the cfe-commits mailing list