[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