Average Error: 11.5 → 3.0
Time: 3.3s
Precision: 64
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\begin{array}{l} \mathbf{if}\;\frac{a1 \cdot a2}{b1 \cdot b2} = -\infty:\\ \;\;\;\;\left(\sqrt[3]{\frac{a1}{b1} \cdot \frac{a2}{b2}} \cdot \sqrt[3]{\frac{a1}{b1} \cdot \frac{a2}{b2}}\right) \cdot \sqrt[3]{\frac{a1}{b1} \cdot \frac{a2}{b2}}\\ \mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -1.30589486578759189854553536856097661996 \cdot 10^{-294}:\\ \;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\ \mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le 2.960745102170969569715472044147646471052 \cdot 10^{-267}:\\ \;\;\;\;\left(\frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}} \cdot \left(\frac{\sqrt[3]{a1}}{\sqrt[3]{b1}} \cdot a2\right)\right) \cdot \frac{1}{b2}\\ \mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le 1.501180578243183430701187487175576593932 \cdot 10^{300}:\\ \;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\ \mathbf{else}:\\ \;\;\;\;\left(\sqrt[3]{\frac{a1}{b1} \cdot \frac{a2}{b2}} \cdot \sqrt[3]{\frac{a1}{b1} \cdot \frac{a2}{b2}}\right) \cdot \sqrt[3]{\frac{a1}{b1} \cdot \frac{a2}{b2}}\\ \end{array}\]
\frac{a1 \cdot a2}{b1 \cdot b2}
\begin{array}{l}
\mathbf{if}\;\frac{a1 \cdot a2}{b1 \cdot b2} = -\infty:\\
\;\;\;\;\left(\sqrt[3]{\frac{a1}{b1} \cdot \frac{a2}{b2}} \cdot \sqrt[3]{\frac{a1}{b1} \cdot \frac{a2}{b2}}\right) \cdot \sqrt[3]{\frac{a1}{b1} \cdot \frac{a2}{b2}}\\

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

\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le 2.960745102170969569715472044147646471052 \cdot 10^{-267}:\\
\;\;\;\;\left(\frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}} \cdot \left(\frac{\sqrt[3]{a1}}{\sqrt[3]{b1}} \cdot a2\right)\right) \cdot \frac{1}{b2}\\

\mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le 1.501180578243183430701187487175576593932 \cdot 10^{300}:\\
\;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\

\mathbf{else}:\\
\;\;\;\;\left(\sqrt[3]{\frac{a1}{b1} \cdot \frac{a2}{b2}} \cdot \sqrt[3]{\frac{a1}{b1} \cdot \frac{a2}{b2}}\right) \cdot \sqrt[3]{\frac{a1}{b1} \cdot \frac{a2}{b2}}\\

\end{array}
double f(double a1, double a2, double b1, double b2) {
        double r148230 = a1;
        double r148231 = a2;
        double r148232 = r148230 * r148231;
        double r148233 = b1;
        double r148234 = b2;
        double r148235 = r148233 * r148234;
        double r148236 = r148232 / r148235;
        return r148236;
}

double f(double a1, double a2, double b1, double b2) {
        double r148237 = a1;
        double r148238 = a2;
        double r148239 = r148237 * r148238;
        double r148240 = b1;
        double r148241 = b2;
        double r148242 = r148240 * r148241;
        double r148243 = r148239 / r148242;
        double r148244 = -inf.0;
        bool r148245 = r148243 <= r148244;
        double r148246 = r148237 / r148240;
        double r148247 = r148238 / r148241;
        double r148248 = r148246 * r148247;
        double r148249 = cbrt(r148248);
        double r148250 = r148249 * r148249;
        double r148251 = r148250 * r148249;
        double r148252 = -1.3058948657875919e-294;
        bool r148253 = r148243 <= r148252;
        double r148254 = 2.9607451021709696e-267;
        bool r148255 = r148243 <= r148254;
        double r148256 = cbrt(r148237);
        double r148257 = r148256 * r148256;
        double r148258 = cbrt(r148240);
        double r148259 = r148258 * r148258;
        double r148260 = r148257 / r148259;
        double r148261 = r148256 / r148258;
        double r148262 = r148261 * r148238;
        double r148263 = r148260 * r148262;
        double r148264 = 1.0;
        double r148265 = r148264 / r148241;
        double r148266 = r148263 * r148265;
        double r148267 = 1.5011805782431834e+300;
        bool r148268 = r148243 <= r148267;
        double r148269 = r148268 ? r148243 : r148251;
        double r148270 = r148255 ? r148266 : r148269;
        double r148271 = r148253 ? r148243 : r148270;
        double r148272 = r148245 ? r148251 : r148271;
        return r148272;
}

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

Original11.5
Target11.4
Herbie3.0
\[\frac{a1}{b1} \cdot \frac{a2}{b2}\]

Derivation

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

    1. Initial program 62.5

      \[\frac{a1 \cdot a2}{b1 \cdot b2}\]
    2. Using strategy rm
    3. Applied times-frac8.7

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

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

    if -inf.0 < (/ (* a1 a2) (* b1 b2)) < -1.3058948657875919e-294 or 2.9607451021709696e-267 < (/ (* a1 a2) (* b1 b2)) < 1.5011805782431834e+300

    1. Initial program 0.8

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

    if -1.3058948657875919e-294 < (/ (* a1 a2) (* b1 b2)) < 2.9607451021709696e-267

    1. Initial program 13.7

      \[\frac{a1 \cdot a2}{b1 \cdot b2}\]
    2. Using strategy rm
    3. Applied times-frac3.6

      \[\leadsto \color{blue}{\frac{a1}{b1} \cdot \frac{a2}{b2}}\]
    4. Using strategy rm
    5. Applied div-inv3.6

      \[\leadsto \frac{a1}{b1} \cdot \color{blue}{\left(a2 \cdot \frac{1}{b2}\right)}\]
    6. Applied associate-*r*5.1

      \[\leadsto \color{blue}{\left(\frac{a1}{b1} \cdot a2\right) \cdot \frac{1}{b2}}\]
    7. Using strategy rm
    8. Applied add-cube-cbrt5.3

      \[\leadsto \left(\frac{a1}{\color{blue}{\left(\sqrt[3]{b1} \cdot \sqrt[3]{b1}\right) \cdot \sqrt[3]{b1}}} \cdot a2\right) \cdot \frac{1}{b2}\]
    9. Applied add-cube-cbrt5.3

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

      \[\leadsto \left(\color{blue}{\left(\frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}} \cdot \frac{\sqrt[3]{a1}}{\sqrt[3]{b1}}\right)} \cdot a2\right) \cdot \frac{1}{b2}\]
    11. Applied associate-*l*4.6

      \[\leadsto \color{blue}{\left(\frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}} \cdot \left(\frac{\sqrt[3]{a1}}{\sqrt[3]{b1}} \cdot a2\right)\right)} \cdot \frac{1}{b2}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification3.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{a1 \cdot a2}{b1 \cdot b2} = -\infty:\\ \;\;\;\;\left(\sqrt[3]{\frac{a1}{b1} \cdot \frac{a2}{b2}} \cdot \sqrt[3]{\frac{a1}{b1} \cdot \frac{a2}{b2}}\right) \cdot \sqrt[3]{\frac{a1}{b1} \cdot \frac{a2}{b2}}\\ \mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le -1.30589486578759189854553536856097661996 \cdot 10^{-294}:\\ \;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\ \mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le 2.960745102170969569715472044147646471052 \cdot 10^{-267}:\\ \;\;\;\;\left(\frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{\sqrt[3]{b1} \cdot \sqrt[3]{b1}} \cdot \left(\frac{\sqrt[3]{a1}}{\sqrt[3]{b1}} \cdot a2\right)\right) \cdot \frac{1}{b2}\\ \mathbf{elif}\;\frac{a1 \cdot a2}{b1 \cdot b2} \le 1.501180578243183430701187487175576593932 \cdot 10^{300}:\\ \;\;\;\;\frac{a1 \cdot a2}{b1 \cdot b2}\\ \mathbf{else}:\\ \;\;\;\;\left(\sqrt[3]{\frac{a1}{b1} \cdot \frac{a2}{b2}} \cdot \sqrt[3]{\frac{a1}{b1} \cdot \frac{a2}{b2}}\right) \cdot \sqrt[3]{\frac{a1}{b1} \cdot \frac{a2}{b2}}\\ \end{array}\]

Reproduce

herbie shell --seed 2019354 
(FPCore (a1 a2 b1 b2)
  :name "Quotient of products"
  :precision binary64

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

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