|
@@ -280,11 +280,21 @@ typedef enum __attribute__((__packed__)) {
|
|
|
/* No propagation rule specified */
|
|
|
float_infzeronan_none = 0,
|
|
|
/* Result is never the default NaN (so always the input NaN) */
|
|
|
- float_infzeronan_dnan_never,
|
|
|
+ float_infzeronan_dnan_never = 1,
|
|
|
/* Result is always the default NaN */
|
|
|
- float_infzeronan_dnan_always,
|
|
|
+ float_infzeronan_dnan_always = 2,
|
|
|
/* Result is the default NaN if the input NaN is quiet */
|
|
|
- float_infzeronan_dnan_if_qnan,
|
|
|
+ float_infzeronan_dnan_if_qnan = 3,
|
|
|
+ /*
|
|
|
+ * Don't raise Invalid for 0 * Inf + NaN. Default is to raise.
|
|
|
+ * IEEE 754-2008 section 7.2 makes it implementation defined whether
|
|
|
+ * 0 * Inf + QNaN raises Invalid or not. Note that 0 * Inf + SNaN will
|
|
|
+ * raise the Invalid flag for the SNaN anyway.
|
|
|
+ *
|
|
|
+ * This is a flag which can be ORed in with any of the above
|
|
|
+ * DNaN behaviour options.
|
|
|
+ */
|
|
|
+ float_infzeronan_suppress_invalid = (1 << 7),
|
|
|
} FloatInfZeroNaNRule;
|
|
|
|
|
|
/*
|