break;
case float_class_snan:
case float_class_qnan:
- parts_return_nan(a, status);
+ partsN(return_nan)(a, status);
return;
case float_class_zero:
return;
switch (a->cls) {
case float_class_qnan:
case float_class_snan:
- parts_return_nan(a, s);
+ partsN(return_nan)(a, s);
break;
case float_class_zero:
case float_class_inf:
switch (a->cls) {
case float_class_snan:
case float_class_qnan:
- parts_return_nan(a, s);
+ partsN(return_nan)(a, s);
break;
case float_class_zero:
case float_class_inf:
break;
case float_class_snan:
case float_class_qnan:
- parts_return_nan(a, s);
+ partsN(return_nan)(a, s);
return;
case float_class_zero:
float_raise(float_flag_divbyzero, s);
FloatParts128 *: parts128_##NAME, \
FloatParts256 *: parts256_##NAME)
-static void parts64_return_nan(FloatParts64 *a, float_status *s);
-static void parts128_return_nan(FloatParts128 *a, float_status *s);
-
-#define parts_return_nan(P, S) PARTS_GENERIC_64_128(return_nan, P)(P, S)
-
static FloatParts64 *parts64_pick_nan(FloatParts64 *a, FloatParts64 *b,
float_status *s);
static FloatParts128 *parts128_pick_nan(FloatParts128 *a, FloatParts128 *b,
switch (a->cls) {
case float_class_snan:
case float_class_qnan:
- parts_return_nan(a, s);
+ parts64_return_nan(a, s);
break;
case float_class_inf:
static void parts64_float_to_float(FloatParts64 *a, float_status *s)
{
if (is_nan(a->cls)) {
- parts_return_nan(a, s);
+ parts64_return_nan(a, s);
}
if (a->cls == float_class_denormal) {
float_raise(float_flag_input_denormal_used, s);
static void parts128_float_to_float(FloatParts128 *a, float_status *s)
{
if (is_nan(a->cls)) {
- parts_return_nan(a, s);
+ parts128_return_nan(a, s);
}
if (a->cls == float_class_denormal) {
float_raise(float_flag_input_denormal_used, s);
case float_class_qnan:
/* Discard the low bits of the NaN. */
a->frac = b->frac_hi;
- parts_return_nan(a, s);
+ parts64_return_nan(a, s);
break;
default:
break;
frac_widen(a, b);
if (is_nan(a->cls)) {
- parts_return_nan(a, s);
+ parts128_return_nan(a, s);
}
if (a->cls == float_class_denormal) {
float_raise(float_flag_input_denormal_used, s);
break;
case float_class_snan:
case float_class_qnan:
- parts_return_nan(&xp, status);
+ parts64_return_nan(&xp, status);
return float32_round_pack_canonical(&xp, status);
case float_class_inf:
return xp.sign ? float32_zero : a;