Average Error: 10.9 → 2.6
Time: 35.7s
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 r34800958 = a1;
        double r34800959 = a2;
        double r34800960 = r34800958 * r34800959;
        double r34800961 = b1;
        double r34800962 = b2;
        double r34800963 = r34800961 * r34800962;
        double r34800964 = r34800960 / r34800963;
        return r34800964;
}

double f(double a1, double a2, double b1, double b2) {
        double r34800965 = a1;
        double r34800966 = a2;
        double r34800967 = r34800965 * r34800966;
        double r34800968 = b1;
        double r34800969 = b2;
        double r34800970 = r34800968 * r34800969;
        double r34800971 = r34800967 / r34800970;
        double r34800972 = -inf.0;
        bool r34800973 = r34800971 <= r34800972;
        double r34800974 = r34800965 / r34800968;
        double r34800975 = r34800969 / r34800974;
        double r34800976 = r34800966 / r34800975;
        double r34800977 = -1.0649959642427268e-279;
        bool r34800978 = r34800971 <= r34800977;
        double r34800979 = -0.0;
        bool r34800980 = r34800971 <= r34800979;
        double r34800981 = r34800965 / r34800969;
        double r34800982 = r34800966 / r34800968;
        double r34800983 = r34800981 * r34800982;
        double r34800984 = 8.599188876226926e+263;
        bool r34800985 = r34800971 <= r34800984;
        double r34800986 = r34800985 ? r34800971 : r34800983;
        double r34800987 = r34800980 ? r34800983 : r34800986;
        double r34800988 = r34800978 ? r34800971 : r34800987;
        double r34800989 = r34800973 ? r34800976 : r34800988;
        return r34800989;
}

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 
(FPCore (a1 a2 b1 b2)
  :name "Quotient of products"

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

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