Average Error: 10.5 → 5.3
Time: 2.0m
Precision: 64
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\begin{array}{l} \mathbf{if}\;b1 \cdot b2 \le -2.263420601237582 \cdot 10^{+121}:\\ \;\;\;\;\frac{\frac{a1}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}}}{\frac{b2}{\sqrt[3]{a2}}}\\ \mathbf{elif}\;b1 \cdot b2 \le -3.4616176714706303 \cdot 10^{-128}:\\ \;\;\;\;\frac{a1}{\sqrt[3]{\frac{b1 \cdot b2}{a2}} \cdot \left(\sqrt[3]{\frac{b1 \cdot b2}{a2}} \cdot \sqrt[3]{\frac{b1 \cdot b2}{a2}}\right)}\\ \mathbf{elif}\;b1 \cdot b2 \le 1.9348661113959857 \cdot 10^{-269}:\\ \;\;\;\;\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}} \cdot \frac{\frac{a1}{\frac{b1}{\sqrt[3]{a2}}}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}\\ \mathbf{elif}\;b1 \cdot b2 \le 9.736381993966282 \cdot 10^{+134}:\\ \;\;\;\;a2 \cdot \frac{a1}{b1 \cdot b2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}} \cdot \frac{\frac{a1}{\frac{b1}{\sqrt[3]{a2}}}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}\\ \end{array}\]
\frac{a1 \cdot a2}{b1 \cdot b2}
\begin{array}{l}
\mathbf{if}\;b1 \cdot b2 \le -2.263420601237582 \cdot 10^{+121}:\\
\;\;\;\;\frac{\frac{a1}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}}}{\frac{b2}{\sqrt[3]{a2}}}\\

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

\mathbf{elif}\;b1 \cdot b2 \le 1.9348661113959857 \cdot 10^{-269}:\\
\;\;\;\;\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}} \cdot \frac{\frac{a1}{\frac{b1}{\sqrt[3]{a2}}}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}\\

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

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

\end{array}
double f(double a1, double a2, double b1, double b2) {
        double r10541254 = a1;
        double r10541255 = a2;
        double r10541256 = r10541254 * r10541255;
        double r10541257 = b1;
        double r10541258 = b2;
        double r10541259 = r10541257 * r10541258;
        double r10541260 = r10541256 / r10541259;
        return r10541260;
}

double f(double a1, double a2, double b1, double b2) {
        double r10541261 = b1;
        double r10541262 = b2;
        double r10541263 = r10541261 * r10541262;
        double r10541264 = -2.263420601237582e+121;
        bool r10541265 = r10541263 <= r10541264;
        double r10541266 = a1;
        double r10541267 = a2;
        double r10541268 = cbrt(r10541267);
        double r10541269 = r10541268 * r10541268;
        double r10541270 = r10541261 / r10541269;
        double r10541271 = r10541266 / r10541270;
        double r10541272 = r10541262 / r10541268;
        double r10541273 = r10541271 / r10541272;
        double r10541274 = -3.4616176714706303e-128;
        bool r10541275 = r10541263 <= r10541274;
        double r10541276 = r10541263 / r10541267;
        double r10541277 = cbrt(r10541276);
        double r10541278 = r10541277 * r10541277;
        double r10541279 = r10541277 * r10541278;
        double r10541280 = r10541266 / r10541279;
        double r10541281 = 1.9348661113959857e-269;
        bool r10541282 = r10541263 <= r10541281;
        double r10541283 = cbrt(r10541272);
        double r10541284 = r10541268 / r10541283;
        double r10541285 = r10541284 / r10541283;
        double r10541286 = r10541261 / r10541268;
        double r10541287 = r10541266 / r10541286;
        double r10541288 = r10541287 / r10541283;
        double r10541289 = r10541285 * r10541288;
        double r10541290 = 9.736381993966282e+134;
        bool r10541291 = r10541263 <= r10541290;
        double r10541292 = r10541266 / r10541263;
        double r10541293 = r10541267 * r10541292;
        double r10541294 = r10541291 ? r10541293 : r10541289;
        double r10541295 = r10541282 ? r10541289 : r10541294;
        double r10541296 = r10541275 ? r10541280 : r10541295;
        double r10541297 = r10541265 ? r10541273 : r10541296;
        return r10541297;
}

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.5
Target11.0
Herbie5.3
\[\frac{a1}{b1} \cdot \frac{a2}{b2}\]

Derivation

  1. Split input into 4 regimes
  2. if (* b1 b2) < -2.263420601237582e+121

    1. Initial program 11.5

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

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

      \[\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-frac8.8

      \[\leadsto \frac{a1}{\color{blue}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}} \cdot \frac{b2}{\sqrt[3]{a2}}}}\]
    7. Applied associate-/r*6.3

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

    if -2.263420601237582e+121 < (* b1 b2) < -3.4616176714706303e-128

    1. Initial program 2.9

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

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

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

    if -3.4616176714706303e-128 < (* b1 b2) < 1.9348661113959857e-269 or 9.736381993966282e+134 < (* b1 b2)

    1. Initial program 19.1

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

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

      \[\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-frac11.3

      \[\leadsto \frac{a1}{\color{blue}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}} \cdot \frac{b2}{\sqrt[3]{a2}}}}\]
    7. Applied associate-/r*6.4

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

      \[\leadsto \frac{\frac{a1}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}}}{\color{blue}{\left(\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}} \cdot \sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}\right) \cdot \sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}}\]
    10. Applied *-un-lft-identity6.5

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

      \[\leadsto \frac{\frac{a1}{\color{blue}{\frac{1}{\sqrt[3]{a2}} \cdot \frac{b1}{\sqrt[3]{a2}}}}}{\left(\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}} \cdot \sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}\right) \cdot \sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}\]
    12. Applied *-un-lft-identity6.5

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

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

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

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

    if 1.9348661113959857e-269 < (* b1 b2) < 9.736381993966282e+134

    1. Initial program 4.5

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

      \[\leadsto \color{blue}{\frac{a1}{\frac{b1 \cdot b2}{a2}}}\]
    4. Using strategy rm
    5. Applied associate-/r/4.7

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b1 \cdot b2 \le -2.263420601237582 \cdot 10^{+121}:\\ \;\;\;\;\frac{\frac{a1}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}}}{\frac{b2}{\sqrt[3]{a2}}}\\ \mathbf{elif}\;b1 \cdot b2 \le -3.4616176714706303 \cdot 10^{-128}:\\ \;\;\;\;\frac{a1}{\sqrt[3]{\frac{b1 \cdot b2}{a2}} \cdot \left(\sqrt[3]{\frac{b1 \cdot b2}{a2}} \cdot \sqrt[3]{\frac{b1 \cdot b2}{a2}}\right)}\\ \mathbf{elif}\;b1 \cdot b2 \le 1.9348661113959857 \cdot 10^{-269}:\\ \;\;\;\;\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}} \cdot \frac{\frac{a1}{\frac{b1}{\sqrt[3]{a2}}}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}\\ \mathbf{elif}\;b1 \cdot b2 \le 9.736381993966282 \cdot 10^{+134}:\\ \;\;\;\;a2 \cdot \frac{a1}{b1 \cdot b2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\sqrt[3]{a2}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}} \cdot \frac{\frac{a1}{\frac{b1}{\sqrt[3]{a2}}}}{\sqrt[3]{\frac{b2}{\sqrt[3]{a2}}}}\\ \end{array}\]

Reproduce

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

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

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