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

Andy Kaylor via cfe-commits cfe-commits at lists.llvm.org
Wed Feb 21 14:00:57 PST 2024


================
@@ -396,7 +396,41 @@ 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 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.
+    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.
+    CX_Promoted,
+
+    /// Implementation of complex division and multiplication using
+    /// algebraic formulas at source precision.No special handling to avoid
----------------
andykaylor wrote:

```suggestion
    /// algebraic formulas at source precision. No special handling to avoid
```

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


More information about the cfe-commits mailing list