Average Error: 13.2 → 0.3
Time: 19.6s
Precision: binary64
Cost: 8000
\[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
\[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(r \cdot w\right) \cdot \left(r \cdot w\right)}{\frac{1 - v}{\mathsf{fma}\left(v, -0.25, 0.375\right)}}\right) + -4.5 \]
(FPCore (v w r)
 :precision binary64
 (-
  (-
   (+ 3.0 (/ 2.0 (* r r)))
   (/ (* (* 0.125 (- 3.0 (* 2.0 v))) (* (* (* w w) r) r)) (- 1.0 v)))
  4.5))
(FPCore (v w r)
 :precision binary64
 (+
  (-
   (+ 3.0 (/ 2.0 (* r r)))
   (/ (* (* r w) (* r w)) (/ (- 1.0 v) (fma v -0.25 0.375))))
  -4.5))
double code(double v, double w, double r) {
	return ((3.0 + (2.0 / (r * r))) - (((0.125 * (3.0 - (2.0 * v))) * (((w * w) * r) * r)) / (1.0 - v))) - 4.5;
}
double code(double v, double w, double r) {
	return ((3.0 + (2.0 / (r * r))) - (((r * w) * (r * w)) / ((1.0 - v) / fma(v, -0.25, 0.375)))) + -4.5;
}
function code(v, w, r)
	return Float64(Float64(Float64(3.0 + Float64(2.0 / Float64(r * r))) - Float64(Float64(Float64(0.125 * Float64(3.0 - Float64(2.0 * v))) * Float64(Float64(Float64(w * w) * r) * r)) / Float64(1.0 - v))) - 4.5)
end
function code(v, w, r)
	return Float64(Float64(Float64(3.0 + Float64(2.0 / Float64(r * r))) - Float64(Float64(Float64(r * w) * Float64(r * w)) / Float64(Float64(1.0 - v) / fma(v, -0.25, 0.375)))) + -4.5)
end
code[v_, w_, r_] := N[(N[(N[(3.0 + N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(N[(N[(0.125 * N[(3.0 - N[(2.0 * v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(w * w), $MachinePrecision] * r), $MachinePrecision] * r), $MachinePrecision]), $MachinePrecision] / N[(1.0 - v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - 4.5), $MachinePrecision]
code[v_, w_, r_] := N[(N[(N[(3.0 + N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(N[(N[(r * w), $MachinePrecision] * N[(r * w), $MachinePrecision]), $MachinePrecision] / N[(N[(1.0 - v), $MachinePrecision] / N[(v * -0.25 + 0.375), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + -4.5), $MachinePrecision]
\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5
\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(r \cdot w\right) \cdot \left(r \cdot w\right)}{\frac{1 - v}{\mathsf{fma}\left(v, -0.25, 0.375\right)}}\right) + -4.5

Error

Derivation

  1. Initial program 13.2

    \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
  2. Taylor expanded in w around 0 13.2

    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left({w}^{2} \cdot r\right)} \cdot r\right)}{1 - v}\right) - 4.5 \]
  3. Simplified8.1

    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot \left(w \cdot r\right)\right)} \cdot r\right)}{1 - v}\right) - 4.5 \]
    Proof
    (*.f64 w (*.f64 w r)): 0 points increase in error, 0 points decrease in error
    (Rewrite<= associate-*l*_binary64 (*.f64 (*.f64 w w) r)): 45 points increase in error, 44 points decrease in error
    (*.f64 (Rewrite<= unpow2_binary64 (pow.f64 w 2)) r): 0 points increase in error, 0 points decrease in error
  4. Taylor expanded in w around 0 20.7

    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{0.125 \cdot \frac{\left(3 - 2 \cdot v\right) \cdot \left({w}^{2} \cdot {r}^{2}\right)}{1 - v}}\right) - 4.5 \]
  5. Simplified4.8

    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\frac{w \cdot \left(\left(w \cdot r\right) \cdot r\right)}{\frac{1 - v}{\mathsf{fma}\left(v, -0.25, 0.375\right)}}}\right) - 4.5 \]
    Proof
    (/.f64 (*.f64 w (*.f64 (*.f64 w r) r)) (/.f64 (-.f64 1 v) (fma.f64 v -1/4 3/8))): 0 points increase in error, 0 points decrease in error
    (/.f64 (*.f64 w (Rewrite<= associate-*r*_binary64 (*.f64 w (*.f64 r r)))) (/.f64 (-.f64 1 v) (fma.f64 v -1/4 3/8))): 46 points increase in error, 18 points decrease in error
    (/.f64 (*.f64 w (*.f64 w (Rewrite<= unpow2_binary64 (pow.f64 r 2)))) (/.f64 (-.f64 1 v) (fma.f64 v -1/4 3/8))): 0 points increase in error, 0 points decrease in error
    (/.f64 (Rewrite<= associate-*l*_binary64 (*.f64 (*.f64 w w) (pow.f64 r 2))) (/.f64 (-.f64 1 v) (fma.f64 v -1/4 3/8))): 31 points increase in error, 34 points decrease in error
    (/.f64 (*.f64 (Rewrite<= unpow2_binary64 (pow.f64 w 2)) (pow.f64 r 2)) (/.f64 (-.f64 1 v) (fma.f64 v -1/4 3/8))): 0 points increase in error, 0 points decrease in error
    (/.f64 (*.f64 (pow.f64 w 2) (pow.f64 r 2)) (/.f64 (-.f64 1 v) (Rewrite<= fma-def_binary64 (+.f64 (*.f64 v -1/4) 3/8)))): 0 points increase in error, 0 points decrease in error
    (/.f64 (*.f64 (pow.f64 w 2) (pow.f64 r 2)) (/.f64 (-.f64 1 v) (+.f64 (Rewrite<= *-commutative_binary64 (*.f64 -1/4 v)) 3/8))): 0 points increase in error, 0 points decrease in error
    (/.f64 (*.f64 (pow.f64 w 2) (pow.f64 r 2)) (/.f64 (-.f64 1 v) (+.f64 (*.f64 (Rewrite<= metadata-eval (*.f64 1/8 -2)) v) 3/8))): 0 points increase in error, 0 points decrease in error
    (/.f64 (*.f64 (pow.f64 w 2) (pow.f64 r 2)) (/.f64 (-.f64 1 v) (+.f64 (Rewrite<= associate-*r*_binary64 (*.f64 1/8 (*.f64 -2 v))) 3/8))): 0 points increase in error, 0 points decrease in error
    (/.f64 (*.f64 (pow.f64 w 2) (pow.f64 r 2)) (/.f64 (-.f64 1 v) (+.f64 (*.f64 1/8 (*.f64 (Rewrite<= metadata-eval (neg.f64 2)) v)) 3/8))): 0 points increase in error, 0 points decrease in error
    (/.f64 (*.f64 (pow.f64 w 2) (pow.f64 r 2)) (/.f64 (-.f64 1 v) (+.f64 (*.f64 1/8 (Rewrite<= distribute-lft-neg-in_binary64 (neg.f64 (*.f64 2 v)))) 3/8))): 0 points increase in error, 0 points decrease in error
    (/.f64 (*.f64 (pow.f64 w 2) (pow.f64 r 2)) (/.f64 (-.f64 1 v) (+.f64 (*.f64 1/8 (neg.f64 (*.f64 2 v))) (Rewrite<= metadata-eval (*.f64 1/8 3))))): 0 points increase in error, 0 points decrease in error
    (/.f64 (*.f64 (pow.f64 w 2) (pow.f64 r 2)) (/.f64 (-.f64 1 v) (Rewrite<= distribute-lft-in_binary64 (*.f64 1/8 (+.f64 (neg.f64 (*.f64 2 v)) 3))))): 0 points increase in error, 0 points decrease in error
    (/.f64 (*.f64 (pow.f64 w 2) (pow.f64 r 2)) (/.f64 (-.f64 1 v) (*.f64 1/8 (Rewrite<= +-commutative_binary64 (+.f64 3 (neg.f64 (*.f64 2 v))))))): 0 points increase in error, 0 points decrease in error
    (/.f64 (*.f64 (pow.f64 w 2) (pow.f64 r 2)) (/.f64 (-.f64 1 v) (*.f64 1/8 (Rewrite<= sub-neg_binary64 (-.f64 3 (*.f64 2 v)))))): 0 points increase in error, 0 points decrease in error
    (Rewrite<= associate-/l*_binary64 (/.f64 (*.f64 (*.f64 (pow.f64 w 2) (pow.f64 r 2)) (*.f64 1/8 (-.f64 3 (*.f64 2 v)))) (-.f64 1 v))): 23 points increase in error, 14 points decrease in error
    (/.f64 (Rewrite<= *-commutative_binary64 (*.f64 (*.f64 1/8 (-.f64 3 (*.f64 2 v))) (*.f64 (pow.f64 w 2) (pow.f64 r 2)))) (-.f64 1 v)): 0 points increase in error, 0 points decrease in error
    (/.f64 (Rewrite<= associate-*r*_binary64 (*.f64 1/8 (*.f64 (-.f64 3 (*.f64 2 v)) (*.f64 (pow.f64 w 2) (pow.f64 r 2))))) (-.f64 1 v)): 0 points increase in error, 0 points decrease in error
    (Rewrite<= associate-*r/_binary64 (*.f64 1/8 (/.f64 (*.f64 (-.f64 3 (*.f64 2 v)) (*.f64 (pow.f64 w 2) (pow.f64 r 2))) (-.f64 1 v)))): 0 points increase in error, 0 points decrease in error
  6. Taylor expanded in w around 0 13.5

    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{w \cdot \color{blue}{\left(w \cdot {r}^{2}\right)}}{\frac{1 - v}{\mathsf{fma}\left(v, -0.25, 0.375\right)}}\right) - 4.5 \]
  7. Simplified13.5

    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{w \cdot \color{blue}{\left(w \cdot \left(r \cdot r\right)\right)}}{\frac{1 - v}{\mathsf{fma}\left(v, -0.25, 0.375\right)}}\right) - 4.5 \]
    Proof
    (*.f64 w (*.f64 r r)): 0 points increase in error, 0 points decrease in error
    (*.f64 w (Rewrite<= unpow2_binary64 (pow.f64 r 2))): 0 points increase in error, 0 points decrease in error
  8. Taylor expanded in w around 0 18.1

    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\color{blue}{{w}^{2} \cdot {r}^{2}}}{\frac{1 - v}{\mathsf{fma}\left(v, -0.25, 0.375\right)}}\right) - 4.5 \]
  9. Simplified0.3

    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\color{blue}{\left(w \cdot r\right) \cdot \left(w \cdot r\right)}}{\frac{1 - v}{\mathsf{fma}\left(v, -0.25, 0.375\right)}}\right) - 4.5 \]
    Proof
    (*.f64 (*.f64 w r) (*.f64 w r)): 0 points increase in error, 0 points decrease in error
    (Rewrite<= unswap-sqr_binary64 (*.f64 (*.f64 w w) (*.f64 r r))): 86 points increase in error, 43 points decrease in error
    (*.f64 (Rewrite<= unpow2_binary64 (pow.f64 w 2)) (*.f64 r r)): 0 points increase in error, 0 points decrease in error
    (*.f64 (pow.f64 w 2) (Rewrite<= unpow2_binary64 (pow.f64 r 2))): 0 points increase in error, 0 points decrease in error
  10. Final simplification0.3

    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(r \cdot w\right) \cdot \left(r \cdot w\right)}{\frac{1 - v}{\mathsf{fma}\left(v, -0.25, 0.375\right)}}\right) + -4.5 \]

Alternatives

Alternative 1
Error13.9
Cost1744
\[\begin{array}{l} t_0 := \frac{2}{r \cdot r}\\ t_1 := \left(\left(3 + t_0\right) + \left(r \cdot r\right) \cdot \left(w \cdot \left(w \cdot -0.375\right)\right)\right) + -4.5\\ t_2 := t_0 + r \cdot \left(w \cdot \left(w \cdot \left(r \cdot -0.375\right)\right)\right)\\ \mathbf{if}\;r \leq -1 \cdot 10^{+155}:\\ \;\;\;\;t_2\\ \mathbf{elif}\;r \leq -4.811279763576368 \cdot 10^{-7}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;r \leq 7.729546546955165 \cdot 10^{-52}:\\ \;\;\;\;t_0 + w \cdot \left(\left(\left(r \cdot r\right) \cdot w\right) \cdot -0.375\right)\\ \mathbf{elif}\;r \leq 10^{+155}:\\ \;\;\;\;t_1\\ \mathbf{else}:\\ \;\;\;\;t_2\\ \end{array} \]
Alternative 2
Error5.2
Cost1736
\[\begin{array}{l} t_0 := 3 + \frac{2}{r \cdot r}\\ t_1 := \left(t_0 + \left(r \cdot \left(w \cdot w\right)\right) \cdot \left(r \cdot -0.25\right)\right) + -4.5\\ \mathbf{if}\;v \leq -2549192.1314427876:\\ \;\;\;\;t_1\\ \mathbf{elif}\;v \leq 7.073850785151192 \cdot 10^{-7}:\\ \;\;\;\;\left(t_0 + \left(\left(r \cdot w\right) \cdot \left(r \cdot w\right)\right) \cdot \left(-0.375 + v \cdot -0.125\right)\right) + -4.5\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 3
Error0.7
Cost1736
\[\begin{array}{l} t_0 := \left(r \cdot w\right) \cdot \left(r \cdot w\right)\\ t_1 := 3 + \frac{2}{r \cdot r}\\ t_2 := \left(t_1 + \frac{-0.125}{\frac{0.5}{t_0}}\right) + -4.5\\ \mathbf{if}\;v \leq -2549192.1314427876:\\ \;\;\;\;t_2\\ \mathbf{elif}\;v \leq 7.073850785151192 \cdot 10^{-7}:\\ \;\;\;\;\left(t_1 + t_0 \cdot \left(-0.375 + v \cdot -0.125\right)\right) + -4.5\\ \mathbf{else}:\\ \;\;\;\;t_2\\ \end{array} \]
Alternative 4
Error9.7
Cost1480
\[\begin{array}{l} t_0 := 3 + \frac{2}{r \cdot r}\\ t_1 := \left(t_0 + \left(r \cdot \left(w \cdot \left(r \cdot w\right)\right)\right) \cdot -0.375\right) + -4.5\\ \mathbf{if}\;r \leq -616.9524695141123:\\ \;\;\;\;t_1\\ \mathbf{elif}\;r \leq 10^{+198}:\\ \;\;\;\;\left(t_0 + \left(w \cdot \left(r \cdot \left(r \cdot w\right)\right)\right) \cdot -0.375\right) + -4.5\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 5
Error5.4
Cost1480
\[\begin{array}{l} t_0 := 3 + \frac{2}{r \cdot r}\\ t_1 := \left(t_0 + \left(r \cdot \left(w \cdot w\right)\right) \cdot \left(r \cdot -0.25\right)\right) + -4.5\\ \mathbf{if}\;v \leq -4.687988154186944 \cdot 10^{+33}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;v \leq 7.073850785151192 \cdot 10^{-7}:\\ \;\;\;\;\left(t_0 + \left(\left(r \cdot w\right) \cdot \left(r \cdot w\right)\right) \cdot -0.375\right) + -4.5\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 6
Error9.6
Cost1476
\[\begin{array}{l} t_0 := \frac{2}{r \cdot r}\\ \mathbf{if}\;w \cdot w \leq 10^{+88}:\\ \;\;\;\;\left(\left(3 + t_0\right) + \left(r \cdot \left(w \cdot \left(r \cdot w\right)\right)\right) \cdot -0.375\right) + -4.5\\ \mathbf{else}:\\ \;\;\;\;t_0 + \left(w \cdot \left(r \cdot \left(r \cdot w\right)\right)\right) \cdot -0.375\\ \end{array} \]
Alternative 7
Error9.9
Cost1348
\[\begin{array}{l} t_0 := 3 + \frac{2}{r \cdot r}\\ \mathbf{if}\;v \leq 2270844460.7994504:\\ \;\;\;\;\left(t_0 + \left(\left(r \cdot w\right) \cdot \left(r \cdot w\right)\right) \cdot -0.375\right) + -4.5\\ \mathbf{else}:\\ \;\;\;\;\left(t_0 + \left(w \cdot w\right) \cdot \left(r \cdot \left(r \cdot -0.25\right)\right)\right) + -4.5\\ \end{array} \]
Alternative 8
Error16.0
Cost1224
\[\begin{array}{l} t_0 := \frac{2}{r \cdot r}\\ t_1 := t_0 + \left(w \cdot \left(r \cdot \left(r \cdot w\right)\right)\right) \cdot -0.375\\ \mathbf{if}\;w \leq -3.2 \cdot 10^{-16}:\\ \;\;\;\;t_1\\ \mathbf{elif}\;w \leq 6.4180063271458514 \cdot 10^{-108}:\\ \;\;\;\;t_0 + -1.5\\ \mathbf{else}:\\ \;\;\;\;t_1\\ \end{array} \]
Alternative 9
Error16.0
Cost1224
\[\begin{array}{l} t_0 := \frac{2}{r \cdot r}\\ t_1 := r \cdot \left(r \cdot w\right)\\ \mathbf{if}\;w \leq -3.2 \cdot 10^{-16}:\\ \;\;\;\;t_0 + \left(w \cdot t_1\right) \cdot -0.375\\ \mathbf{elif}\;w \leq 6.4180063271458514 \cdot 10^{-108}:\\ \;\;\;\;t_0 + -1.5\\ \mathbf{else}:\\ \;\;\;\;t_0 + w \cdot \left(t_1 \cdot -0.375\right)\\ \end{array} \]
Alternative 10
Error9.6
Cost1216
\[\left(\left(3 + \frac{2}{r \cdot r}\right) + \left(\left(r \cdot w\right) \cdot \left(r \cdot w\right)\right) \cdot -0.375\right) + -4.5 \]
Alternative 11
Error22.5
Cost1100
\[\begin{array}{l} t_0 := -4.5 - w \cdot \left(0.375 \cdot \left(\left(r \cdot r\right) \cdot w\right)\right)\\ \mathbf{if}\;w \leq -6.5 \cdot 10^{+114}:\\ \;\;\;\;t_0\\ \mathbf{elif}\;w \leq 2.6 \cdot 10^{+21}:\\ \;\;\;\;\frac{2}{r \cdot r} + -1.5\\ \mathbf{elif}\;w \leq 1.85 \cdot 10^{+59}:\\ \;\;\;\;t_0\\ \mathbf{else}:\\ \;\;\;\;\frac{2}{r} \cdot \frac{1}{r} + -4.5\\ \end{array} \]
Alternative 12
Error21.5
Cost448
\[\frac{2}{r \cdot r} + -1.5 \]

Error

Reproduce

herbie shell --seed 2022297 
(FPCore (v w r)
  :name "Rosa's TurbineBenchmark"
  :precision binary64
  (- (- (+ 3.0 (/ 2.0 (* r r))) (/ (* (* 0.125 (- 3.0 (* 2.0 v))) (* (* (* w w) r) r)) (- 1.0 v))) 4.5))