Average Error: 11.0 → 4.6
Time: 29.6s
Precision: 64
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\begin{array}{l} \mathbf{if}\;a1 \cdot a2 \le -5.5026396274140615 \cdot 10^{+75}:\\ \;\;\;\;\frac{a1}{\left(\sqrt[3]{b2} \cdot \sqrt[3]{b1}\right) \cdot \left(\sqrt[3]{b2} \cdot \sqrt[3]{b1}\right)} \cdot \frac{\frac{a2}{\sqrt[3]{b1}}}{\sqrt[3]{b2}}\\ \mathbf{elif}\;a1 \cdot a2 \le -2.116765585551356 \cdot 10^{-143}:\\ \;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\ \mathbf{elif}\;a1 \cdot a2 \le 1.166300044269929 \cdot 10^{-272}:\\ \;\;\;\;\frac{a1}{\left(\sqrt[3]{b2} \cdot \sqrt[3]{b1}\right) \cdot \left(\sqrt[3]{b2} \cdot \sqrt[3]{b1}\right)} \cdot \frac{\frac{a2}{\sqrt[3]{b1}}}{\sqrt[3]{b2}}\\ \mathbf{elif}\;a1 \cdot a2 \le 1.3143600279928167 \cdot 10^{+180}:\\ \;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\ \mathbf{else}:\\ \;\;\;\;\frac{a1}{\left(\sqrt[3]{b2} \cdot \sqrt[3]{b1}\right) \cdot \left(\sqrt[3]{b2} \cdot \sqrt[3]{b1}\right)} \cdot \frac{\frac{a2}{\sqrt[3]{b1}}}{\sqrt[3]{b2}}\\ \end{array}\]
\frac{a1 \cdot a2}{b1 \cdot b2}
\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -5.5026396274140615 \cdot 10^{+75}:\\
\;\;\;\;\frac{a1}{\left(\sqrt[3]{b2} \cdot \sqrt[3]{b1}\right) \cdot \left(\sqrt[3]{b2} \cdot \sqrt[3]{b1}\right)} \cdot \frac{\frac{a2}{\sqrt[3]{b1}}}{\sqrt[3]{b2}}\\

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

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

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

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

\end{array}
double f(double a1, double a2, double b1, double b2) {
        double r6595037 = a1;
        double r6595038 = a2;
        double r6595039 = r6595037 * r6595038;
        double r6595040 = b1;
        double r6595041 = b2;
        double r6595042 = r6595040 * r6595041;
        double r6595043 = r6595039 / r6595042;
        return r6595043;
}

double f(double a1, double a2, double b1, double b2) {
        double r6595044 = a1;
        double r6595045 = a2;
        double r6595046 = r6595044 * r6595045;
        double r6595047 = -5.5026396274140615e+75;
        bool r6595048 = r6595046 <= r6595047;
        double r6595049 = b2;
        double r6595050 = cbrt(r6595049);
        double r6595051 = b1;
        double r6595052 = cbrt(r6595051);
        double r6595053 = r6595050 * r6595052;
        double r6595054 = r6595053 * r6595053;
        double r6595055 = r6595044 / r6595054;
        double r6595056 = r6595045 / r6595052;
        double r6595057 = r6595056 / r6595050;
        double r6595058 = r6595055 * r6595057;
        double r6595059 = -2.116765585551356e-143;
        bool r6595060 = r6595046 <= r6595059;
        double r6595061 = r6595046 / r6595051;
        double r6595062 = r6595061 / r6595049;
        double r6595063 = 1.166300044269929e-272;
        bool r6595064 = r6595046 <= r6595063;
        double r6595065 = 1.3143600279928167e+180;
        bool r6595066 = r6595046 <= r6595065;
        double r6595067 = r6595066 ? r6595062 : r6595058;
        double r6595068 = r6595064 ? r6595058 : r6595067;
        double r6595069 = r6595060 ? r6595062 : r6595068;
        double r6595070 = r6595048 ? r6595058 : r6595069;
        return r6595070;
}

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

Derivation

  1. Split input into 2 regimes
  2. if (* a1 a2) < -5.5026396274140615e+75 or -2.116765585551356e-143 < (* a1 a2) < 1.166300044269929e-272 or 1.3143600279928167e+180 < (* a1 a2)

    1. Initial program 18.2

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

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

      \[\leadsto \color{blue}{a1 \cdot \frac{1}{\frac{b1 \cdot b2}{a2}}}\]
    6. Simplified8.7

      \[\leadsto a1 \cdot \color{blue}{\frac{\frac{a2}{b1}}{b2}}\]
    7. Using strategy rm
    8. Applied add-cube-cbrt9.2

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

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

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

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

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

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

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

    if -5.5026396274140615e+75 < (* a1 a2) < -2.116765585551356e-143 or 1.166300044269929e-272 < (* a1 a2) < 1.3143600279928167e+180

    1. Initial program 4.2

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a1 \cdot a2 \le -5.5026396274140615 \cdot 10^{+75}:\\ \;\;\;\;\frac{a1}{\left(\sqrt[3]{b2} \cdot \sqrt[3]{b1}\right) \cdot \left(\sqrt[3]{b2} \cdot \sqrt[3]{b1}\right)} \cdot \frac{\frac{a2}{\sqrt[3]{b1}}}{\sqrt[3]{b2}}\\ \mathbf{elif}\;a1 \cdot a2 \le -2.116765585551356 \cdot 10^{-143}:\\ \;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\ \mathbf{elif}\;a1 \cdot a2 \le 1.166300044269929 \cdot 10^{-272}:\\ \;\;\;\;\frac{a1}{\left(\sqrt[3]{b2} \cdot \sqrt[3]{b1}\right) \cdot \left(\sqrt[3]{b2} \cdot \sqrt[3]{b1}\right)} \cdot \frac{\frac{a2}{\sqrt[3]{b1}}}{\sqrt[3]{b2}}\\ \mathbf{elif}\;a1 \cdot a2 \le 1.3143600279928167 \cdot 10^{+180}:\\ \;\;\;\;\frac{\frac{a1 \cdot a2}{b1}}{b2}\\ \mathbf{else}:\\ \;\;\;\;\frac{a1}{\left(\sqrt[3]{b2} \cdot \sqrt[3]{b1}\right) \cdot \left(\sqrt[3]{b2} \cdot \sqrt[3]{b1}\right)} \cdot \frac{\frac{a2}{\sqrt[3]{b1}}}{\sqrt[3]{b2}}\\ \end{array}\]

Reproduce

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

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

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