Average Error: 11.4 → 4.9
Time: 11.7s
Precision: 64
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\begin{array}{l} \mathbf{if}\;b1 \cdot b2 \le -6.898490520999014 \cdot 10^{+277}:\\ \;\;\;\;\frac{\frac{1}{b1}}{\frac{\frac{1}{a2}}{\frac{a1}{b2}}}\\ \mathbf{elif}\;b1 \cdot b2 \le -9.006559789728174 \cdot 10^{-250}:\\ \;\;\;\;a1 \cdot \frac{a2}{b1 \cdot b2}\\ \mathbf{elif}\;b1 \cdot b2 \le 1.30715975193335 \cdot 10^{-196}:\\ \;\;\;\;\frac{\frac{a1}{b1}}{\frac{b2}{a2}}\\ \mathbf{elif}\;b1 \cdot b2 \le 7.676958632971629 \cdot 10^{+257}:\\ \;\;\;\;\frac{\frac{a1}{b1 \cdot b2}}{\frac{1}{a2}}\\ \mathbf{else}:\\ \;\;\;\;\frac{a1}{\frac{b2}{\sqrt[3]{a2}}} \cdot \frac{1}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}}\\ \end{array}\]
\frac{a1 \cdot a2}{b1 \cdot b2}
\begin{array}{l}
\mathbf{if}\;b1 \cdot b2 \le -6.898490520999014 \cdot 10^{+277}:\\
\;\;\;\;\frac{\frac{1}{b1}}{\frac{\frac{1}{a2}}{\frac{a1}{b2}}}\\

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

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

\mathbf{elif}\;b1 \cdot b2 \le 7.676958632971629 \cdot 10^{+257}:\\
\;\;\;\;\frac{\frac{a1}{b1 \cdot b2}}{\frac{1}{a2}}\\

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

\end{array}
double f(double a1, double a2, double b1, double b2) {
        double r2861061 = a1;
        double r2861062 = a2;
        double r2861063 = r2861061 * r2861062;
        double r2861064 = b1;
        double r2861065 = b2;
        double r2861066 = r2861064 * r2861065;
        double r2861067 = r2861063 / r2861066;
        return r2861067;
}

double f(double a1, double a2, double b1, double b2) {
        double r2861068 = b1;
        double r2861069 = b2;
        double r2861070 = r2861068 * r2861069;
        double r2861071 = -6.898490520999014e+277;
        bool r2861072 = r2861070 <= r2861071;
        double r2861073 = 1.0;
        double r2861074 = r2861073 / r2861068;
        double r2861075 = a2;
        double r2861076 = r2861073 / r2861075;
        double r2861077 = a1;
        double r2861078 = r2861077 / r2861069;
        double r2861079 = r2861076 / r2861078;
        double r2861080 = r2861074 / r2861079;
        double r2861081 = -9.006559789728174e-250;
        bool r2861082 = r2861070 <= r2861081;
        double r2861083 = r2861075 / r2861070;
        double r2861084 = r2861077 * r2861083;
        double r2861085 = 1.30715975193335e-196;
        bool r2861086 = r2861070 <= r2861085;
        double r2861087 = r2861077 / r2861068;
        double r2861088 = r2861069 / r2861075;
        double r2861089 = r2861087 / r2861088;
        double r2861090 = 7.676958632971629e+257;
        bool r2861091 = r2861070 <= r2861090;
        double r2861092 = r2861077 / r2861070;
        double r2861093 = r2861092 / r2861076;
        double r2861094 = cbrt(r2861075);
        double r2861095 = r2861069 / r2861094;
        double r2861096 = r2861077 / r2861095;
        double r2861097 = r2861094 * r2861094;
        double r2861098 = r2861068 / r2861097;
        double r2861099 = r2861073 / r2861098;
        double r2861100 = r2861096 * r2861099;
        double r2861101 = r2861091 ? r2861093 : r2861100;
        double r2861102 = r2861086 ? r2861089 : r2861101;
        double r2861103 = r2861082 ? r2861084 : r2861102;
        double r2861104 = r2861072 ? r2861080 : r2861103;
        return r2861104;
}

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

Derivation

  1. Split input into 5 regimes
  2. if (* b1 b2) < -6.898490520999014e+277

    1. Initial program 20.9

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

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

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

      \[\leadsto \color{blue}{\frac{\frac{a1}{b1 \cdot b2}}{\frac{1}{a2}}}\]
    7. Using strategy rm
    8. Applied *-un-lft-identity20.9

      \[\leadsto \frac{\frac{\color{blue}{1 \cdot a1}}{b1 \cdot b2}}{\frac{1}{a2}}\]
    9. Applied times-frac7.2

      \[\leadsto \frac{\color{blue}{\frac{1}{b1} \cdot \frac{a1}{b2}}}{\frac{1}{a2}}\]
    10. Applied associate-/l*2.4

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

    if -6.898490520999014e+277 < (* b1 b2) < -9.006559789728174e-250

    1. Initial program 5.0

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

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

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

      \[\leadsto \color{blue}{\frac{\frac{a1}{b1 \cdot b2}}{\frac{1}{a2}}}\]
    7. Using strategy rm
    8. Applied *-un-lft-identity4.9

      \[\leadsto \frac{\frac{a1}{b1 \cdot b2}}{\frac{1}{\color{blue}{1 \cdot a2}}}\]
    9. Applied add-cube-cbrt4.9

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

      \[\leadsto \frac{\frac{a1}{b1 \cdot b2}}{\color{blue}{\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{1} \cdot \frac{\sqrt[3]{1}}{a2}}}\]
    11. Applied div-inv4.9

      \[\leadsto \frac{\color{blue}{a1 \cdot \frac{1}{b1 \cdot b2}}}{\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{1} \cdot \frac{\sqrt[3]{1}}{a2}}\]
    12. Applied times-frac5.3

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

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

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

    if -9.006559789728174e-250 < (* b1 b2) < 1.30715975193335e-196

    1. Initial program 35.6

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

      \[\leadsto \color{blue}{\frac{a1}{\frac{b1 \cdot b2}{a2}}}\]
    4. Using strategy rm
    5. Applied *-un-lft-identity35.7

      \[\leadsto \frac{a1}{\frac{b1 \cdot b2}{\color{blue}{1 \cdot a2}}}\]
    6. Applied times-frac17.2

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

      \[\leadsto \color{blue}{\frac{\frac{a1}{\frac{b1}{1}}}{\frac{b2}{a2}}}\]
    8. Simplified10.0

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

    if 1.30715975193335e-196 < (* b1 b2) < 7.676958632971629e+257

    1. Initial program 5.0

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

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

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

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

    if 7.676958632971629e+257 < (* b1 b2)

    1. Initial program 18.3

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

      \[\leadsto \color{blue}{\frac{a1}{\frac{b1 \cdot b2}{a2}}}\]
    4. Using strategy rm
    5. Applied add-cube-cbrt18.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-frac7.9

      \[\leadsto \frac{a1}{\color{blue}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}} \cdot \frac{b2}{\sqrt[3]{a2}}}}\]
    7. Applied *-un-lft-identity7.9

      \[\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-frac2.4

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;b1 \cdot b2 \le -6.898490520999014 \cdot 10^{+277}:\\ \;\;\;\;\frac{\frac{1}{b1}}{\frac{\frac{1}{a2}}{\frac{a1}{b2}}}\\ \mathbf{elif}\;b1 \cdot b2 \le -9.006559789728174 \cdot 10^{-250}:\\ \;\;\;\;a1 \cdot \frac{a2}{b1 \cdot b2}\\ \mathbf{elif}\;b1 \cdot b2 \le 1.30715975193335 \cdot 10^{-196}:\\ \;\;\;\;\frac{\frac{a1}{b1}}{\frac{b2}{a2}}\\ \mathbf{elif}\;b1 \cdot b2 \le 7.676958632971629 \cdot 10^{+257}:\\ \;\;\;\;\frac{\frac{a1}{b1 \cdot b2}}{\frac{1}{a2}}\\ \mathbf{else}:\\ \;\;\;\;\frac{a1}{\frac{b2}{\sqrt[3]{a2}}} \cdot \frac{1}{\frac{b1}{\sqrt[3]{a2} \cdot \sqrt[3]{a2}}}\\ \end{array}\]

Reproduce

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

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

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