@@ -514,53 +514,33 @@ quad_mod(const Sleef_quad *a, const Sleef_quad *b)
514514static inline Sleef_quad
515515quad_minimum (const Sleef_quad *in1, const Sleef_quad *in2)
516516{
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;
525520}
526521
527522static inline Sleef_quad
528523quad_maximum (const Sleef_quad *in1, const Sleef_quad *in2)
529524{
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;
538528}
539529
540530static inline Sleef_quad
541531quad_fmin (const Sleef_quad *in1, const Sleef_quad *in2)
542532{
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;
551536}
552537
553538static inline Sleef_quad
554539quad_fmax (const Sleef_quad *in1, const Sleef_quad *in2)
555540{
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;
564544}
565545
566546static inline Sleef_quad
0 commit comments