\sqrt{0.5 \cdot \left(1 + \frac{x}{\sqrt{\left(4 \cdot p\right) \cdot p + x \cdot x}}\right)}\sqrt{0.5 \cdot e^{\log \left(\frac{\sqrt{{1}^{3} + {\left(\frac{x}{\sqrt{\left(4 \cdot p\right) \cdot p + x \cdot x}}\right)}^{3}}}{\sqrt{\frac{x \cdot x}{\left(4 \cdot p\right) \cdot p + x \cdot x} - 1 \cdot \left(\frac{x}{\sqrt{\left(4 \cdot p\right) \cdot p + x \cdot x}} - 1\right)}}\right) + \log \left(\frac{\sqrt{{1}^{3} + {\left(\frac{x}{\sqrt{\left(4 \cdot p\right) \cdot p + x \cdot x}}\right)}^{3}}}{\sqrt{\frac{x \cdot x}{\left(4 \cdot p\right) \cdot p + x \cdot x} - 1 \cdot \left(\frac{x}{\sqrt{\left(4 \cdot p\right) \cdot p + x \cdot x}} - 1\right)}}\right)}}double f(double p, double x) {
double r212576 = 0.5;
double r212577 = 1.0;
double r212578 = x;
double r212579 = 4.0;
double r212580 = p;
double r212581 = r212579 * r212580;
double r212582 = r212581 * r212580;
double r212583 = r212578 * r212578;
double r212584 = r212582 + r212583;
double r212585 = sqrt(r212584);
double r212586 = r212578 / r212585;
double r212587 = r212577 + r212586;
double r212588 = r212576 * r212587;
double r212589 = sqrt(r212588);
return r212589;
}
double f(double p, double x) {
double r212590 = 0.5;
double r212591 = 1.0;
double r212592 = 3.0;
double r212593 = pow(r212591, r212592);
double r212594 = x;
double r212595 = 4.0;
double r212596 = p;
double r212597 = r212595 * r212596;
double r212598 = r212597 * r212596;
double r212599 = r212594 * r212594;
double r212600 = r212598 + r212599;
double r212601 = sqrt(r212600);
double r212602 = r212594 / r212601;
double r212603 = pow(r212602, r212592);
double r212604 = r212593 + r212603;
double r212605 = sqrt(r212604);
double r212606 = r212599 / r212600;
double r212607 = r212602 - r212591;
double r212608 = r212591 * r212607;
double r212609 = r212606 - r212608;
double r212610 = sqrt(r212609);
double r212611 = r212605 / r212610;
double r212612 = log(r212611);
double r212613 = r212612 + r212612;
double r212614 = exp(r212613);
double r212615 = r212590 * r212614;
double r212616 = sqrt(r212615);
return r212616;
}




Bits error versus p




Bits error versus x
Results
| Original | 13.3 |
|---|---|
| Target | 13.3 |
| Herbie | 13.3 |
Initial program 13.3
rmApplied add-exp-log13.3
rmApplied flip3-+13.3
Simplified13.3
rmApplied add-sqr-sqrt13.3
Applied add-sqr-sqrt13.3
Applied times-frac13.3
Applied log-prod13.3
Final simplification13.3
herbie shell --seed 2019326
(FPCore (p x)
:name "Given's Rotation SVD example"
:precision binary64
:pre (< 1e-150 (fabs x) 1e+150)
:herbie-target
(sqrt (+ 0.5 (/ (copysign 0.5 x) (hypot 1 (/ (* 2 p) x)))))
(sqrt (* 0.5 (+ 1 (/ x (sqrt (+ (* (* 4 p) p) (* x x))))))))