Average Error: 10.8 → 5.3
Time: 4.7m
Precision: 64
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
\[\begin{array}{l} \mathbf{if}\;a1 \cdot a2 \le -6.897241169256815 \cdot 10^{+159}:\\ \;\;\;\;\frac{\frac{\sqrt[3]{a1}}{\sqrt[3]{b1}} \cdot \frac{\sqrt[3]{a1}}{\sqrt[3]{b1}}}{\frac{b2}{\frac{1}{\frac{\frac{\sqrt[3]{b1}}{a2}}{\sqrt[3]{a1}}}}}\\ \mathbf{elif}\;a1 \cdot a2 \le -4.213300454402738 \cdot 10^{-210}:\\ \;\;\;\;\left(a1 \cdot a2\right) \cdot \frac{\frac{1}{b1}}{b2}\\ \mathbf{elif}\;a1 \cdot a2 \le 2.8391901767890553 \cdot 10^{-163}:\\ \;\;\;\;\frac{\frac{a2}{b1}}{\frac{b2}{a1}}\\ \mathbf{elif}\;a1 \cdot a2 \le 1.3171664498037926 \cdot 10^{+299}:\\ \;\;\;\;\left(a1 \cdot a2\right) \cdot \frac{\frac{1}{b1}}{b2}\\ \mathbf{else}:\\ \;\;\;\;\frac{a2}{b2} \cdot \frac{a1}{b1}\\ \end{array}\]
\frac{a1 \cdot a2}{b1 \cdot b2}
\begin{array}{l}
\mathbf{if}\;a1 \cdot a2 \le -6.897241169256815 \cdot 10^{+159}:\\
\;\;\;\;\frac{\frac{\sqrt[3]{a1}}{\sqrt[3]{b1}} \cdot \frac{\sqrt[3]{a1}}{\sqrt[3]{b1}}}{\frac{b2}{\frac{1}{\frac{\frac{\sqrt[3]{b1}}{a2}}{\sqrt[3]{a1}}}}}\\

\mathbf{elif}\;a1 \cdot a2 \le -4.213300454402738 \cdot 10^{-210}:\\
\;\;\;\;\left(a1 \cdot a2\right) \cdot \frac{\frac{1}{b1}}{b2}\\

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

\mathbf{elif}\;a1 \cdot a2 \le 1.3171664498037926 \cdot 10^{+299}:\\
\;\;\;\;\left(a1 \cdot a2\right) \cdot \frac{\frac{1}{b1}}{b2}\\

\mathbf{else}:\\
\;\;\;\;\frac{a2}{b2} \cdot \frac{a1}{b1}\\

\end{array}
double f(double a1, double a2, double b1, double b2) {
        double r22638947 = a1;
        double r22638948 = a2;
        double r22638949 = r22638947 * r22638948;
        double r22638950 = b1;
        double r22638951 = b2;
        double r22638952 = r22638950 * r22638951;
        double r22638953 = r22638949 / r22638952;
        return r22638953;
}

double f(double a1, double a2, double b1, double b2) {
        double r22638954 = a1;
        double r22638955 = a2;
        double r22638956 = r22638954 * r22638955;
        double r22638957 = -6.897241169256815e+159;
        bool r22638958 = r22638956 <= r22638957;
        double r22638959 = cbrt(r22638954);
        double r22638960 = b1;
        double r22638961 = cbrt(r22638960);
        double r22638962 = r22638959 / r22638961;
        double r22638963 = r22638962 * r22638962;
        double r22638964 = b2;
        double r22638965 = 1.0;
        double r22638966 = r22638961 / r22638955;
        double r22638967 = r22638966 / r22638959;
        double r22638968 = r22638965 / r22638967;
        double r22638969 = r22638964 / r22638968;
        double r22638970 = r22638963 / r22638969;
        double r22638971 = -4.213300454402738e-210;
        bool r22638972 = r22638956 <= r22638971;
        double r22638973 = r22638965 / r22638960;
        double r22638974 = r22638973 / r22638964;
        double r22638975 = r22638956 * r22638974;
        double r22638976 = 2.8391901767890553e-163;
        bool r22638977 = r22638956 <= r22638976;
        double r22638978 = r22638955 / r22638960;
        double r22638979 = r22638964 / r22638954;
        double r22638980 = r22638978 / r22638979;
        double r22638981 = 1.3171664498037926e+299;
        bool r22638982 = r22638956 <= r22638981;
        double r22638983 = r22638955 / r22638964;
        double r22638984 = r22638954 / r22638960;
        double r22638985 = r22638983 * r22638984;
        double r22638986 = r22638982 ? r22638975 : r22638985;
        double r22638987 = r22638977 ? r22638980 : r22638986;
        double r22638988 = r22638972 ? r22638975 : r22638987;
        double r22638989 = r22638958 ? r22638970 : r22638988;
        return r22638989;
}

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

Derivation

  1. Split input into 4 regimes
  2. if (* a1 a2) < -6.897241169256815e+159

    1. Initial program 26.1

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

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

      \[\leadsto \frac{\color{blue}{\frac{a1}{\frac{b1}{a2}}}}{b2}\]
    6. Using strategy rm
    7. Applied *-un-lft-identity15.6

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

      \[\leadsto \frac{\color{blue}{\frac{1}{\frac{\frac{b1}{a2}}{a1}}}}{b2}\]
    9. Using strategy rm
    10. Applied add-cube-cbrt16.3

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

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

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

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

      \[\leadsto \frac{\frac{1}{\color{blue}{\frac{\frac{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}{1}}{\sqrt[3]{a1} \cdot \sqrt[3]{a1}} \cdot \frac{\frac{\sqrt[3]{b1}}{a2}}{\sqrt[3]{a1}}}}}{b2}\]
    15. Applied *-un-lft-identity15.3

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

      \[\leadsto \frac{\color{blue}{\frac{1}{\frac{\frac{\sqrt[3]{b1} \cdot \sqrt[3]{b1}}{1}}{\sqrt[3]{a1} \cdot \sqrt[3]{a1}}} \cdot \frac{1}{\frac{\frac{\sqrt[3]{b1}}{a2}}{\sqrt[3]{a1}}}}}{b2}\]
    17. Applied associate-/l*8.9

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

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

    if -6.897241169256815e+159 < (* a1 a2) < -4.213300454402738e-210 or 2.8391901767890553e-163 < (* a1 a2) < 1.3171664498037926e+299

    1. Initial program 4.7

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

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

      \[\leadsto \frac{\frac{a1 \cdot a2}{b1}}{\color{blue}{1 \cdot b2}}\]
    6. Applied div-inv4.4

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

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

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

    if -4.213300454402738e-210 < (* a1 a2) < 2.8391901767890553e-163

    1. Initial program 13.5

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

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

      \[\leadsto \frac{\color{blue}{\frac{a1}{\frac{b1}{a2}}}}{b2}\]
    6. Using strategy rm
    7. Applied *-un-lft-identity7.6

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

      \[\leadsto \frac{\color{blue}{\frac{1}{\frac{\frac{b1}{a2}}{a1}}}}{b2}\]
    9. Using strategy rm
    10. Applied associate-/r/7.7

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

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

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

    if 1.3171664498037926e+299 < (* a1 a2)

    1. Initial program 57.6

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

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

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a1 \cdot a2 \le -6.897241169256815 \cdot 10^{+159}:\\ \;\;\;\;\frac{\frac{\sqrt[3]{a1}}{\sqrt[3]{b1}} \cdot \frac{\sqrt[3]{a1}}{\sqrt[3]{b1}}}{\frac{b2}{\frac{1}{\frac{\frac{\sqrt[3]{b1}}{a2}}{\sqrt[3]{a1}}}}}\\ \mathbf{elif}\;a1 \cdot a2 \le -4.213300454402738 \cdot 10^{-210}:\\ \;\;\;\;\left(a1 \cdot a2\right) \cdot \frac{\frac{1}{b1}}{b2}\\ \mathbf{elif}\;a1 \cdot a2 \le 2.8391901767890553 \cdot 10^{-163}:\\ \;\;\;\;\frac{\frac{a2}{b1}}{\frac{b2}{a1}}\\ \mathbf{elif}\;a1 \cdot a2 \le 1.3171664498037926 \cdot 10^{+299}:\\ \;\;\;\;\left(a1 \cdot a2\right) \cdot \frac{\frac{1}{b1}}{b2}\\ \mathbf{else}:\\ \;\;\;\;\frac{a2}{b2} \cdot \frac{a1}{b1}\\ \end{array}\]

Reproduce

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

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

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