Average Error: 0.0 → 0.0
Time: 1.3s
Precision: binary64
\[x + \frac{1}{3} \]
\[\mathsf{fma}\left(\frac{x}{x + -0.3333333333333333}, x, \frac{-0.1111111111111111}{x + -0.3333333333333333}\right) \]
(FPCore (x) :precision binary64 (+ x (/ 1.0 3.0)))
(FPCore (x)
 :precision binary64
 (fma
  (/ x (+ x -0.3333333333333333))
  x
  (/ -0.1111111111111111 (+ x -0.3333333333333333))))
double code(double x) {
	return x + (1.0 / 3.0);
}
double code(double x) {
	return fma((x / (x + -0.3333333333333333)), x, (-0.1111111111111111 / (x + -0.3333333333333333)));
}
function code(x)
	return Float64(x + Float64(1.0 / 3.0))
end
function code(x)
	return fma(Float64(x / Float64(x + -0.3333333333333333)), x, Float64(-0.1111111111111111 / Float64(x + -0.3333333333333333)))
end
code[x_] := N[(x + N[(1.0 / 3.0), $MachinePrecision]), $MachinePrecision]
code[x_] := N[(N[(x / N[(x + -0.3333333333333333), $MachinePrecision]), $MachinePrecision] * x + N[(-0.1111111111111111 / N[(x + -0.3333333333333333), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
x + \frac{1}{3}
\mathsf{fma}\left(\frac{x}{x + -0.3333333333333333}, x, \frac{-0.1111111111111111}{x + -0.3333333333333333}\right)

Error

Bits error versus x

Derivation

  1. Initial program 0.0

    \[x + \frac{1}{3} \]
  2. Simplified0.0

    \[\leadsto \color{blue}{x + 0.3333333333333333} \]
  3. Applied egg-rr15.8

    \[\leadsto \color{blue}{\frac{x \cdot x}{x + -0.3333333333333333} - \frac{0.1111111111111111}{x + -0.3333333333333333}} \]
  4. Applied egg-rr0.0

    \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{x}{x + -0.3333333333333333}, x, \frac{-0.1111111111111111}{x + -0.3333333333333333}\right)} \]
  5. Final simplification0.0

    \[\leadsto \mathsf{fma}\left(\frac{x}{x + -0.3333333333333333}, x, \frac{-0.1111111111111111}{x + -0.3333333333333333}\right) \]

Reproduce

herbie shell --seed 2022162 
(FPCore (x)
  :name "Data.Colour.RGBSpace.HSL:hsl from colour-2.3.3, F"
  :precision binary64
  (+ x (/ 1.0 3.0)))