Alternative 1 | |
---|---|
Error | 16.6 |
Cost | 452 |
\[\begin{array}{l}
\mathbf{if}\;Radius \leq 8.95 \cdot 10^{-144}:\\
\;\;\;\;\frac{A_BW}{A_BD}\\
\mathbf{else}:\\
\;\;\;\;Radius \cdot \frac{K}{A_BD}\\
\end{array}
\]
(FPCore (A_BW Radius K A_BD) :precision binary64 (/ (+ A_BW (* Radius K)) A_BD))
(FPCore (A_BW Radius K A_BD) :precision binary64 (/ (fma Radius K A_BW) A_BD))
double code(double A_BW, double Radius, double K, double A_BD) { return (A_BW + (Radius * K)) / A_BD; }
double code(double A_BW, double Radius, double K, double A_BD) { return fma(Radius, K, A_BW) / A_BD; }
function code(A_BW, Radius, K, A_BD) return Float64(Float64(A_BW + Float64(Radius * K)) / A_BD) end
function code(A_BW, Radius, K, A_BD) return Float64(fma(Radius, K, A_BW) / A_BD) end
code[A$95$BW_, Radius_, K_, A$95$BD_] := N[(N[(A$95$BW + N[(Radius * K), $MachinePrecision]), $MachinePrecision] / A$95$BD), $MachinePrecision]
code[A$95$BW_, Radius_, K_, A$95$BD_] := N[(N[(Radius * K + A$95$BW), $MachinePrecision] / A$95$BD), $MachinePrecision]
\frac{A_BW + Radius \cdot K}{A_BD}
\frac{\mathsf{fma}\left(Radius, K, A_BW\right)}{A_BD}
Initial program 0.0
Simplified0.0
[Start]0.0 | \[ \frac{A_BW + Radius \cdot K}{A_BD}
\] |
---|---|
+-commutative [=>]0.0 | \[ \frac{\color{blue}{Radius \cdot K + A_BW}}{A_BD}
\] |
fma-def [=>]0.0 | \[ \frac{\color{blue}{\mathsf{fma}\left(Radius, K, A_BW\right)}}{A_BD}
\] |
Final simplification0.0
Alternative 1 | |
---|---|
Error | 16.6 |
Cost | 452 |
Alternative 2 | |
---|---|
Error | 0.0 |
Cost | 448 |
Alternative 3 | |
---|---|
Error | 10.9 |
Cost | 192 |
herbie shell --seed 1
(FPCore (A_BW Radius K A_BD)
:name "(A_BW + Radius*K)/A_BD"
:precision binary64
:pre (and (and (and (and (<= -1.0 A_BW) (<= A_BW 1.0)) (and (<= -1.0 Radius) (<= Radius 1.0))) (and (<= -1.0 K) (<= K 1.0))) (and (<= -1.0 A_BD) (<= A_BD 1.0)))
(/ (+ A_BW (* Radius K)) A_BD))