@@ -514,53 +514,33 @@ quad_mod(const Sleef_quad *a, const Sleef_quad *b)
514
514
static inline Sleef_quad
515
515
quad_minimum (const Sleef_quad *in1, const Sleef_quad *in2)
516
516
{
517
- if (Sleef_iunordq1 (*in1, *in2)) {
518
- return Sleef_iunordq1 (*in1, *in1) ? *in1 : *in2;
519
- }
520
- // minimum(-0.0, +0.0) = -0.0
521
- if (Sleef_icmpeqq1 (*in1, QUAD_ZERO) && Sleef_icmpeqq1 (*in2, QUAD_ZERO)) {
522
- return Sleef_icmpleq1 (Sleef_copysignq1 (QUAD_ONE, *in1), Sleef_copysignq1 (QUAD_ONE, *in2)) ? *in1 : *in2;
523
- }
524
- return Sleef_fminq1 (*in1, *in2);
517
+ return Sleef_iunordq1 (*in1, *in2) ? (Sleef_iunordq1 (*in1, *in1) ? *in1 : *in2)
518
+ : Sleef_icmpltq1 (*in1, *in2) ? *in1
519
+ : *in2;
525
520
}
526
521
527
522
static inline Sleef_quad
528
523
quad_maximum (const Sleef_quad *in1, const Sleef_quad *in2)
529
524
{
530
- if (Sleef_iunordq1 (*in1, *in2)) {
531
- return Sleef_iunordq1 (*in1, *in1) ? *in1 : *in2;
532
- }
533
- // maximum(-0.0, +0.0) = +0.0
534
- if (Sleef_icmpeqq1 (*in1, QUAD_ZERO) && Sleef_icmpeqq1 (*in2, QUAD_ZERO)) {
535
- return Sleef_icmpgeq1 (Sleef_copysignq1 (QUAD_ONE, *in1), Sleef_copysignq1 (QUAD_ONE, *in2)) ? *in1 : *in2;
536
- }
537
- return Sleef_fmaxq1 (*in1, *in2);
525
+ return Sleef_iunordq1 (*in1, *in2) ? (Sleef_iunordq1 (*in1, *in1) ? *in1 : *in2)
526
+ : Sleef_icmpgtq1 (*in1, *in2) ? *in1
527
+ : *in2;
538
528
}
539
529
540
530
static inline Sleef_quad
541
531
quad_fmin (const Sleef_quad *in1, const Sleef_quad *in2)
542
532
{
543
- if (Sleef_iunordq1 (*in1, *in2)) {
544
- return Sleef_iunordq1 (*in2, *in2) ? *in1 : *in2;
545
- }
546
- // fmin(-0.0, +0.0) = -0.0
547
- if (Sleef_icmpeqq1 (*in1, QUAD_ZERO) && Sleef_icmpeqq1 (*in2, QUAD_ZERO)) {
548
- return Sleef_icmpleq1 (Sleef_copysignq1 (QUAD_ONE, *in1), Sleef_copysignq1 (QUAD_ONE, *in2)) ? *in1 : *in2;
549
- }
550
- return Sleef_fminq1 (*in1, *in2);
533
+ return Sleef_iunordq1 (*in1, *in2) ? (Sleef_iunordq1 (*in2, *in2) ? *in1 : *in2)
534
+ : Sleef_icmpleq1 (*in1, *in2) ? *in1
535
+ : *in2;
551
536
}
552
537
553
538
static inline Sleef_quad
554
539
quad_fmax (const Sleef_quad *in1, const Sleef_quad *in2)
555
540
{
556
- if (Sleef_iunordq1 (*in1, *in2)) {
557
- return Sleef_iunordq1 (*in2, *in2) ? *in1 : *in2;
558
- }
559
- // maximum(-0.0, +0.0) = +0.0
560
- if (Sleef_icmpeqq1 (*in1, QUAD_ZERO) && Sleef_icmpeqq1 (*in2, QUAD_ZERO)) {
561
- return Sleef_icmpgeq1 (Sleef_copysignq1 (QUAD_ONE, *in1), Sleef_copysignq1 (QUAD_ONE, *in2)) ? *in1 : *in2;
562
- }
563
- return Sleef_fmaxq1 (*in1, *in2);
541
+ return Sleef_iunordq1 (*in1, *in2) ? (Sleef_iunordq1 (*in2, *in2) ? *in1 : *in2)
542
+ : Sleef_icmpgeq1 (*in1, *in2) ? *in1
543
+ : *in2;
564
544
}
565
545
566
546
static inline Sleef_quad
0 commit comments