Average Error: 10.9 → 2.6
Time: 37.0s
Precision: 64
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\begin{array}{l} \mathbf{if}\;\frac{a1 \cdot a2}{b1 \cdot b2} = -\infty:\\ \;\;\;\;\frac{a2}{\frac{b2}{\frac{a1}{b1}}}\\ \mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -1.0649959642427268 \cdot 10^{-279}:\\ \;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\ \mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -0.0:\\ \;\;\;\;\frac{a1}{b2} \cdot \frac{a2}{b1}\\ \mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le 8.599188876226926 \cdot 10^{+263}:\\ \;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\ \mathbf{else}:\\ \;\;\;\;\frac{a1}{b2} \cdot \frac{a2}{b1}\\ \end{array}\]
\frac{a1 \cdot a2}{b1 \cdot b2}
\begin{array}{l}
\mathbf{if}\;\frac{a1 \cdot a2}{b1 \cdot b2} = -\infty:\\
\;\;\;\;\frac{a2}{\frac{b2}{\frac{a1}{b1}}}\\

\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -1.0649959642427268 \cdot 10^{-279}:\\
\;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\

\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -0.0:\\
\;\;\;\;\frac{a1}{b2} \cdot \frac{a2}{b1}\\

\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le 8.599188876226926 \cdot 10^{+263}:\\
\;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\

\mathbf{else}:\\
\;\;\;\;\frac{a1}{b2} \cdot \frac{a2}{b1}\\

\end{array}
double f(double a1, double a2, double b1, double b2) {
        double r20069862 = a1;
        double r20069863 = a2;
        double r20069864 = r20069862 * r20069863;
        double r20069865 = b1;
        double r20069866 = b2;
        double r20069867 = r20069865 * r20069866;
        double r20069868 = r20069864 / r20069867;
        return r20069868;
}

double f(double a1, double a2, double b1, double b2) {
        double r20069869 = a1;
        double r20069870 = a2;
        double r20069871 = r20069869 * r20069870;
        double r20069872 = b1;
        double r20069873 = b2;
        double r20069874 = r20069872 * r20069873;
        double r20069875 = r20069871 / r20069874;
        double r20069876 = -inf.0;
        bool r20069877 = r20069875 <= r20069876;
        double r20069878 = r20069869 / r20069872;
        double r20069879 = r20069873 / r20069878;
        double r20069880 = r20069870 / r20069879;
        double r20069881 = -1.0649959642427268e-279;
        bool r20069882 = r20069875 <= r20069881;
        double r20069883 = -0.0;
        bool r20069884 = r20069875 <= r20069883;
        double r20069885 = r20069869 / r20069873;
        double r20069886 = r20069870 / r20069872;
        double r20069887 = r20069885 * r20069886;
        double r20069888 = 8.599188876226926e+263;
        bool r20069889 = r20069875 <= r20069888;
        double r20069890 = r20069889 ? r20069875 : r20069887;
        double r20069891 = r20069884 ? r20069887 : r20069890;
        double r20069892 = r20069882 ? r20069875 : r20069891;
        double r20069893 = r20069877 ? r20069880 : r20069892;
        return r20069893;
}

Error

Bits error versus a1

Bits error versus a2

Bits error versus b1

Bits error versus b2

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original10.9
Target11.0
Herbie2.6
\[\frac{a1}{b1} \cdot \frac{a2}{b2}\]

Derivation

  1. Split input into 3 regimes
  2. if (/ (* a1 a2) (* b1 b2)) < -inf.0

    1. Initial program 59.9

      \[\frac{a1 \cdot a2}{b1 \cdot b2}\]
    2. Using strategy rm
    3. Applied associate-/l*26.9

      \[\leadsto \color{blue}{\frac{a1}{\frac{b1 \cdot b2}{a2}}}\]
    4. Using strategy rm
    5. Applied add-cube-cbrt27.5

      \[\leadsto \frac{a1}{\frac{b1 \cdot b2}{\color{blue}{\left(\sqrt[3]{a2} \cdot \sqrt[3]{a2}\right) \cdot \sqrt[3]{a2}}}}\]
    6. Applied times-frac16.2

      \[\leadsto \frac{a1}{\color{blue}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}} \cdot \frac{b2}{\sqrt[3]{a2}}}}\]
    7. Applied *-un-lft-identity16.2

      \[\leadsto \frac{\color{blue}{1 \cdot a1}}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}} \cdot \frac{b2}{\sqrt[3]{a2}}}\]
    8. Applied times-frac8.9

      \[\leadsto \color{blue}{\frac{1}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}} \cdot \frac{a1}{\frac{b2}{\sqrt[3]{a2}}}}\]
    9. Simplified8.8

      \[\leadsto \color{blue}{\frac{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}{b1}} \cdot \frac{a1}{\frac{b2}{\sqrt[3]{a2}}}\]
    10. Using strategy rm
    11. Applied pow18.8

      \[\leadsto \frac{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}{b1} \cdot \color{blue}{{\left(\frac{a1}{\frac{b2}{\sqrt[3]{a2}}}\right)}^{1}}\]
    12. Applied pow18.8

      \[\leadsto \color{blue}{{\left(\frac{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}{b1}\right)}^{1}} \cdot {\left(\frac{a1}{\frac{b2}{\sqrt[3]{a2}}}\right)}^{1}\]
    13. Applied pow-prod-down8.8

      \[\leadsto \color{blue}{{\left(\frac{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}{b1} \cdot \frac{a1}{\frac{b2}{\sqrt[3]{a2}}}\right)}^{1}}\]
    14. Simplified13.7

      \[\leadsto {\color{blue}{\left(\frac{a2}{\frac{b2}{\frac{a1}{b1}}}\right)}}^{1}\]

    if -inf.0 < (/ (* a1 a2) (* b1 b2)) < -1.0649959642427268e-279 or -0.0 < (/ (* a1 a2) (* b1 b2)) < 8.599188876226926e+263

    1. Initial program 0.8

      \[\frac{a1 \cdot a2}{b1 \cdot b2}\]

    if -1.0649959642427268e-279 < (/ (* a1 a2) (* b1 b2)) < -0.0 or 8.599188876226926e+263 < (/ (* a1 a2) (* b1 b2))

    1. Initial program 20.4

      \[\frac{a1 \cdot a2}{b1 \cdot b2}\]
    2. Using strategy rm
    3. Applied associate-/l*13.7

      \[\leadsto \color{blue}{\frac{a1}{\frac{b1 \cdot b2}{a2}}}\]
    4. Using strategy rm
    5. Applied add-cube-cbrt13.9

      \[\leadsto \frac{a1}{\frac{b1 \cdot b2}{\color{blue}{\left(\sqrt[3]{a2} \cdot \sqrt[3]{a2}\right) \cdot \sqrt[3]{a2}}}}\]
    6. Applied times-frac6.0

      \[\leadsto \frac{a1}{\color{blue}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}} \cdot \frac{b2}{\sqrt[3]{a2}}}}\]
    7. Applied *-un-lft-identity6.0

      \[\leadsto \frac{\color{blue}{1 \cdot a1}}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}} \cdot \frac{b2}{\sqrt[3]{a2}}}\]
    8. Applied times-frac4.2

      \[\leadsto \color{blue}{\frac{1}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}} \cdot \frac{a1}{\frac{b2}{\sqrt[3]{a2}}}}\]
    9. Simplified4.1

      \[\leadsto \color{blue}{\frac{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}{b1}} \cdot \frac{a1}{\frac{b2}{\sqrt[3]{a2}}}\]
    10. Using strategy rm
    11. Applied associate-*l/6.1

      \[\leadsto \color{blue}{\frac{\left(\sqrt[3]{a2} \cdot \sqrt[3]{a2}\right) \cdot \frac{a1}{\frac{b2}{\sqrt[3]{a2}}}}{b1}}\]
    12. Simplified6.1

      \[\leadsto \frac{\color{blue}{\frac{a1}{b2} \cdot a2}}{b1}\]
    13. Using strategy rm
    14. Applied *-un-lft-identity6.1

      \[\leadsto \frac{\frac{a1}{b2} \cdot a2}{\color{blue}{1 \cdot b1}}\]
    15. Applied times-frac4.2

      \[\leadsto \color{blue}{\frac{\frac{a1}{b2}}{1} \cdot \frac{a2}{b1}}\]
    16. Simplified4.2

      \[\leadsto \color{blue}{\frac{a1}{b2}} \cdot \frac{a2}{b1}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification2.6

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{a1 \cdot a2}{b1 \cdot b2} = -\infty:\\ \;\;\;\;\frac{a2}{\frac{b2}{\frac{a1}{b1}}}\\ \mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -1.0649959642427268 \cdot 10^{-279}:\\ \;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\ \mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -0.0:\\ \;\;\;\;\frac{a1}{b2} \cdot \frac{a2}{b1}\\ \mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le 8.599188876226926 \cdot 10^{+263}:\\ \;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\ \mathbf{else}:\\ \;\;\;\;\frac{a1}{b2} \cdot \frac{a2}{b1}\\ \end{array}\]

Reproduce

herbie shell --seed 2019121 +o rules:numerics
(FPCore (a1 a2 b1 b2)
  :name "Quotient of products"

  :herbie-target
  (* (/ a1 b1) (/ a2 b2))

  (/ (* a1 a2) (* b1 b2)))