Average Error: 29.9 → 29.8
Time: 5.5s
Precision: binary64
\[\sqrt{x + 1} - \sqrt{x} \]
\[\begin{array}{l} t_0 := \sqrt[3]{x + 1}\\ \mathsf{fma}\left(\sqrt{{\left({\left(\sqrt[3]{t_0}\right)}^{3}\right)}^{2}}, \sqrt{t_0}, -\sqrt{x}\right) + \left|\mathsf{fma}\left(-{x}^{0.25}, {x}^{0.25}, \sqrt{x}\right)\right| \end{array} \]
\sqrt{x + 1} - \sqrt{x}
\begin{array}{l}
t_0 := \sqrt[3]{x + 1}\\
\mathsf{fma}\left(\sqrt{{\left({\left(\sqrt[3]{t_0}\right)}^{3}\right)}^{2}}, \sqrt{t_0}, -\sqrt{x}\right) + \left|\mathsf{fma}\left(-{x}^{0.25}, {x}^{0.25}, \sqrt{x}\right)\right|
\end{array}
(FPCore (x) :precision binary64 (- (sqrt (+ x 1.0)) (sqrt x)))
(FPCore (x)
 :precision binary64
 (let* ((t_0 (cbrt (+ x 1.0))))
   (+
    (fma (sqrt (pow (pow (cbrt t_0) 3.0) 2.0)) (sqrt t_0) (- (sqrt x)))
    (fabs (fma (- (pow x 0.25)) (pow x 0.25) (sqrt x))))))
double code(double x) {
	return sqrt((x + 1.0)) - sqrt(x);
}
double code(double x) {
	double t_0 = cbrt((x + 1.0));
	return fma(sqrt(pow(pow(cbrt(t_0), 3.0), 2.0)), sqrt(t_0), -sqrt(x)) + fabs(fma(-pow(x, 0.25), pow(x, 0.25), sqrt(x)));
}

Error

Bits error versus x

Target

Original29.9
Target0.2
Herbie29.8
\[\frac{1}{\sqrt{x + 1} + \sqrt{x}} \]

Derivation

  1. Initial program 29.9

    \[\sqrt{x + 1} - \sqrt{x} \]
  2. Applied egg-rr29.9

    \[\leadsto \color{blue}{\mathsf{fma}\left(\sqrt{{\left(\sqrt[3]{x + 1}\right)}^{2}}, \sqrt{\sqrt[3]{x + 1}}, -\sqrt{x}\right) + \mathsf{fma}\left(-{x}^{0.25}, {x}^{0.25}, \sqrt{x}\right)} \]
  3. Applied egg-rr29.9

    \[\leadsto \mathsf{fma}\left(\sqrt{{\color{blue}{\left({\left(\sqrt[3]{\sqrt[3]{x + 1}}\right)}^{3}\right)}}^{2}}, \sqrt{\sqrt[3]{x + 1}}, -\sqrt{x}\right) + \mathsf{fma}\left(-{x}^{0.25}, {x}^{0.25}, \sqrt{x}\right) \]
  4. Applied egg-rr29.8

    \[\leadsto \mathsf{fma}\left(\sqrt{{\left({\left(\sqrt[3]{\sqrt[3]{x + 1}}\right)}^{3}\right)}^{2}}, \sqrt{\sqrt[3]{x + 1}}, -\sqrt{x}\right) + \color{blue}{\left|\mathsf{fma}\left(-{x}^{0.25}, {x}^{0.25}, \sqrt{x}\right)\right|} \]
  5. Final simplification29.8

    \[\leadsto \mathsf{fma}\left(\sqrt{{\left({\left(\sqrt[3]{\sqrt[3]{x + 1}}\right)}^{3}\right)}^{2}}, \sqrt{\sqrt[3]{x + 1}}, -\sqrt{x}\right) + \left|\mathsf{fma}\left(-{x}^{0.25}, {x}^{0.25}, \sqrt{x}\right)\right| \]

Reproduce

herbie shell --seed 2022129 
(FPCore (x)
  :name "2sqrt (example 3.1)"
  :precision binary64

  :herbie-target
  (/ 1.0 (+ (sqrt (+ x 1.0)) (sqrt x)))

  (- (sqrt (+ x 1.0)) (sqrt x)))