Average Error: 11.7 → 4.9
Time: 6.1s
Precision: 64
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\begin{array}{l} \mathbf{if}\;b1 \cdot b2 \le -1.0840043817926052 \cdot 10^{194}:\\ \;\;\;\;\left(\frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{b2} \cdot \frac{\sqrt[3]{\sqrt[3]{a1}} \cdot \sqrt[3]{\sqrt[3]{a1}}}{\frac{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}}\right) \cdot \frac{\sqrt[3]{\sqrt[3]{a1}}}{\frac{\sqrt[3]{b1}}{\sqrt[3]{a2}}}\\ \mathbf{elif}\;b1 \cdot b2 \le -3.08257491941769578 \cdot 10^{-195}:\\ \;\;\;\;\frac{1}{\frac{b1 \cdot b2}{a1 \cdot a2}}\\ \mathbf{elif}\;b1 \cdot b2 \le 1.4142553735687107 \cdot 10^{-148}:\\ \;\;\;\;\frac{\frac{a1}{b2}}{\frac{b1}{a2}}\\ \mathbf{elif}\;b1 \cdot b2 \le 3.0707001026583607 \cdot 10^{167}:\\ \;\;\;\;\frac{1}{\frac{b1 \cdot b2}{a1 \cdot a2}}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{b2} \cdot \frac{\sqrt[3]{\sqrt[3]{a1}} \cdot \sqrt[3]{\sqrt[3]{a1}}}{\frac{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}}\right) \cdot \frac{\sqrt[3]{\sqrt[3]{a1}}}{\frac{\sqrt[3]{b1}}{\sqrt[3]{a2}}}\\ \end{array}\]
\frac{a1 \cdot a2}{b1 \cdot b2}
\begin{array}{l}
\mathbf{if}\;b1 \cdot b2 \le -1.0840043817926052 \cdot 10^{194}:\\
\;\;\;\;\left(\frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{b2} \cdot \frac{\sqrt[3]{\sqrt[3]{a1}} \cdot \sqrt[3]{\sqrt[3]{a1}}}{\frac{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}}\right) \cdot \frac{\sqrt[3]{\sqrt[3]{a1}}}{\frac{\sqrt[3]{b1}}{\sqrt[3]{a2}}}\\

\mathbf{elif}\;b1 \cdot b2 \le -3.08257491941769578 \cdot 10^{-195}:\\
\;\;\;\;\frac{1}{\frac{b1 \cdot b2}{a1 \cdot a2}}\\

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

\mathbf{elif}\;b1 \cdot b2 \le 3.0707001026583607 \cdot 10^{167}:\\
\;\;\;\;\frac{1}{\frac{b1 \cdot b2}{a1 \cdot a2}}\\

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

\end{array}
double f(double a1, double a2, double b1, double b2) {
        double r137472 = a1;
        double r137473 = a2;
        double r137474 = r137472 * r137473;
        double r137475 = b1;
        double r137476 = b2;
        double r137477 = r137475 * r137476;
        double r137478 = r137474 / r137477;
        return r137478;
}

double f(double a1, double a2, double b1, double b2) {
        double r137479 = b1;
        double r137480 = b2;
        double r137481 = r137479 * r137480;
        double r137482 = -1.0840043817926052e+194;
        bool r137483 = r137481 <= r137482;
        double r137484 = a1;
        double r137485 = cbrt(r137484);
        double r137486 = r137485 * r137485;
        double r137487 = r137486 / r137480;
        double r137488 = cbrt(r137485);
        double r137489 = r137488 * r137488;
        double r137490 = cbrt(r137479);
        double r137491 = r137490 * r137490;
        double r137492 = a2;
        double r137493 = cbrt(r137492);
        double r137494 = r137493 * r137493;
        double r137495 = r137491 / r137494;
        double r137496 = r137489 / r137495;
        double r137497 = r137487 * r137496;
        double r137498 = r137490 / r137493;
        double r137499 = r137488 / r137498;
        double r137500 = r137497 * r137499;
        double r137501 = -3.0825749194176958e-195;
        bool r137502 = r137481 <= r137501;
        double r137503 = 1.0;
        double r137504 = r137484 * r137492;
        double r137505 = r137481 / r137504;
        double r137506 = r137503 / r137505;
        double r137507 = 1.4142553735687107e-148;
        bool r137508 = r137481 <= r137507;
        double r137509 = r137484 / r137480;
        double r137510 = r137479 / r137492;
        double r137511 = r137509 / r137510;
        double r137512 = 3.0707001026583607e+167;
        bool r137513 = r137481 <= r137512;
        double r137514 = r137513 ? r137506 : r137500;
        double r137515 = r137508 ? r137511 : r137514;
        double r137516 = r137502 ? r137506 : r137515;
        double r137517 = r137483 ? r137500 : r137516;
        return r137517;
}

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.7
Target10.7
Herbie4.9
\[\frac{a1}{b1} \cdot \frac{a2}{b2}\]

Derivation

  1. Split input into 3 regimes
  2. if (* b1 b2) < -1.0840043817926052e+194 or 3.0707001026583607e+167 < (* b1 b2)

    1. Initial program 15.2

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

      \[\leadsto \color{blue}{\frac{a1}{\frac{b1 \cdot b2}{a2}}}\]
    4. Simplified7.9

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

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

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

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

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

      \[\leadsto \frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{b2} \cdot \frac{\sqrt[3]{a1}}{\color{blue}{\frac{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}} \cdot \frac{\sqrt[3]{b1}}{\sqrt[3]{a2}}}}\]
    12. Applied add-cube-cbrt5.0

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

      \[\leadsto \frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{b2} \cdot \color{blue}{\left(\frac{\sqrt[3]{\sqrt[3]{a1}} \cdot \sqrt[3]{\sqrt[3]{a1}}}{\frac{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}} \cdot \frac{\sqrt[3]{\sqrt[3]{a1}}}{\frac{\sqrt[3]{b1}}{\sqrt[3]{a2}}}\right)}\]
    14. Applied associate-*r*2.7

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

    if -1.0840043817926052e+194 < (* b1 b2) < -3.0825749194176958e-195 or 1.4142553735687107e-148 < (* b1 b2) < 3.0707001026583607e+167

    1. Initial program 3.8

      \[\frac{a1 \cdot a2}{b1 \cdot b2}\]
    2. Using strategy rm
    3. Applied clear-num4.2

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

    if -3.0825749194176958e-195 < (* b1 b2) < 1.4142553735687107e-148

    1. Initial program 29.1

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

      \[\leadsto \color{blue}{\frac{a1}{\frac{b1 \cdot b2}{a2}}}\]
    4. Simplified16.0

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b1 \cdot b2 \le -1.0840043817926052 \cdot 10^{194}:\\ \;\;\;\;\left(\frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{b2} \cdot \frac{\sqrt[3]{\sqrt[3]{a1}} \cdot \sqrt[3]{\sqrt[3]{a1}}}{\frac{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}}\right) \cdot \frac{\sqrt[3]{\sqrt[3]{a1}}}{\frac{\sqrt[3]{b1}}{\sqrt[3]{a2}}}\\ \mathbf{elif}\;b1 \cdot b2 \le -3.08257491941769578 \cdot 10^{-195}:\\ \;\;\;\;\frac{1}{\frac{b1 \cdot b2}{a1 \cdot a2}}\\ \mathbf{elif}\;b1 \cdot b2 \le 1.4142553735687107 \cdot 10^{-148}:\\ \;\;\;\;\frac{\frac{a1}{b2}}{\frac{b1}{a2}}\\ \mathbf{elif}\;b1 \cdot b2 \le 3.0707001026583607 \cdot 10^{167}:\\ \;\;\;\;\frac{1}{\frac{b1 \cdot b2}{a1 \cdot a2}}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}{b2} \cdot \frac{\sqrt[3]{\sqrt[3]{a1}} \cdot \sqrt[3]{\sqrt[3]{a1}}}{\frac{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}}\right) \cdot \frac{\sqrt[3]{\sqrt[3]{a1}}}{\frac{\sqrt[3]{b1}}{\sqrt[3]{a2}}}\\ \end{array}\]

Reproduce

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

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

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