Average Error: 10.8 → 3.0
Time: 15.0s
Precision: 64
Internal Precision: 384
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
↓
\[\begin{array}{l}
\mathbf{if}\;\frac{1}{\frac{b2}{\frac{a2}{b1}}} = -\infty:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\mathbf{if}\;\frac{1}{\frac{b2}{\frac{a2}{b1}}} \le -4.7363803091445446 \cdot 10^{-268}:\\
\;\;\;\;a1 \cdot \frac{1}{\frac{b2}{\frac{a2}{b1}}}\\
\mathbf{if}\;\frac{1}{\frac{b2}{\frac{a2}{b1}}} \le 6.182262960128672 \cdot 10^{-280}:\\
\;\;\;\;\frac{a1}{b1} \cdot \frac{a2}{b2}\\
\mathbf{if}\;\frac{1}{\frac{b2}{\frac{a2}{b1}}} \le 3.3051914724971476 \cdot 10^{+280}:\\
\;\;\;\;a1 \cdot \frac{1}{\frac{b2}{\frac{a2}{b1}}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\left(a1 \cdot a2\right) \cdot \frac{1}{b2}}{b1}\\
\end{array}\]
Target
| Original | 10.8 |
|---|
| Target | 10.6 |
|---|
| Herbie | 3.0 |
|---|
\[\frac{a1}{b1} \cdot \frac{a2}{b2}\]
Derivation
- Split input into 3 regimes
if (/ 1 (/ b2 (/ a2 b1))) < -inf.0 or -4.7363803091445446e-268 < (/ 1 (/ b2 (/ a2 b1))) < 6.182262960128672e-280
Initial program 6.9
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
- Using strategy
rm Applied times-frac6.9
\[\leadsto \color{blue}{\frac{a1}{b1} \cdot \frac{a2}{b2}}\]
if -inf.0 < (/ 1 (/ b2 (/ a2 b1))) < -4.7363803091445446e-268 or 6.182262960128672e-280 < (/ 1 (/ b2 (/ a2 b1))) < 3.3051914724971476e+280
Initial program 12.6
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
- Using strategy
rm Applied times-frac12.3
\[\leadsto \color{blue}{\frac{a1}{b1} \cdot \frac{a2}{b2}}\]
- Using strategy
rm Applied div-inv12.4
\[\leadsto \color{blue}{\left(a1 \cdot \frac{1}{b1}\right)} \cdot \frac{a2}{b2}\]
Applied associate-*l*6.1
\[\leadsto \color{blue}{a1 \cdot \left(\frac{1}{b1} \cdot \frac{a2}{b2}\right)}\]
Applied simplify0.5
\[\leadsto a1 \cdot \color{blue}{\frac{\frac{a2}{b1}}{b2}}\]
- Using strategy
rm Applied clear-num0.5
\[\leadsto a1 \cdot \color{blue}{\frac{1}{\frac{b2}{\frac{a2}{b1}}}}\]
if 3.3051914724971476e+280 < (/ 1 (/ b2 (/ a2 b1)))
Initial program 15.2
\[\frac{a1 \cdot a2}{b1 \cdot b2}\]
- Using strategy
rm Applied times-frac14.4
\[\leadsto \color{blue}{\frac{a1}{b1} \cdot \frac{a2}{b2}}\]
- Using strategy
rm Applied associate-*l/13.4
\[\leadsto \color{blue}{\frac{a1 \cdot \frac{a2}{b2}}{b1}}\]
- Using strategy
rm Applied div-inv13.4
\[\leadsto \frac{a1 \cdot \color{blue}{\left(a2 \cdot \frac{1}{b2}\right)}}{b1}\]
Applied associate-*r*7.4
\[\leadsto \frac{\color{blue}{\left(a1 \cdot a2\right) \cdot \frac{1}{b2}}}{b1}\]
- Recombined 3 regimes into one program.
Runtime
herbie shell --seed '#(1070355188 2193211668 3977393919 3454156579 3755371326 1656365382)' +o rules:numerics
(FPCore (a1 a2 b1 b2)
:name "Quotient of products"
:herbie-target
(* (/ a1 b1) (/ a2 b2))
(/ (* a1 a2) (* b1 b2)))