\sqrt{0.5 \cdot \left(1 + \frac{x}{\sqrt{\left(4 \cdot p\right) \cdot p + x \cdot x}}\right)}\sqrt{\frac{1}{2} \cdot \frac{\log \left(e^{{1}^{3} + {\left(\frac{x}{\sqrt{\left(4 \cdot p\right) \cdot p + x \cdot x}}\right)}^{3}}\right)}{1 \cdot \left(1 - \frac{x}{\sqrt{\left(4 \cdot p\right) \cdot p + x \cdot x}}\right) + \frac{{x}^{2}}{\left(4 \cdot p\right) \cdot p + x \cdot x}}}double f(double p, double x) {
double r186167 = 0.5;
double r186168 = 1.0;
double r186169 = x;
double r186170 = 4.0;
double r186171 = p;
double r186172 = r186170 * r186171;
double r186173 = r186172 * r186171;
double r186174 = r186169 * r186169;
double r186175 = r186173 + r186174;
double r186176 = sqrt(r186175);
double r186177 = r186169 / r186176;
double r186178 = r186168 + r186177;
double r186179 = r186167 * r186178;
double r186180 = sqrt(r186179);
return r186180;
}
double f(double p, double x) {
double r186181 = 1.0;
double r186182 = 2.0;
double r186183 = r186181 / r186182;
double r186184 = 3.0;
double r186185 = pow(r186181, r186184);
double r186186 = x;
double r186187 = 4.0;
double r186188 = p;
double r186189 = r186187 * r186188;
double r186190 = r186189 * r186188;
double r186191 = r186186 * r186186;
double r186192 = r186190 + r186191;
double r186193 = sqrt(r186192);
double r186194 = r186186 / r186193;
double r186195 = pow(r186194, r186184);
double r186196 = r186185 + r186195;
double r186197 = exp(r186196);
double r186198 = log(r186197);
double r186199 = r186181 - r186194;
double r186200 = r186181 * r186199;
double r186201 = 2.0;
double r186202 = pow(r186186, r186201);
double r186203 = r186202 / r186192;
double r186204 = r186200 + r186203;
double r186205 = r186198 / r186204;
double r186206 = r186183 * r186205;
double r186207 = sqrt(r186206);
return r186207;
}




Bits error versus p




Bits error versus x
Results
| Original | 12.9 |
|---|---|
| Target | 12.9 |
| Herbie | 12.9 |
Initial program 12.9
Simplified12.9
rmApplied flip3-+12.9
Simplified12.9
rmApplied add-log-exp12.9
Applied add-log-exp12.9
Applied sum-log12.9
Simplified12.9
Final simplification12.9
herbie shell --seed 2019303
(FPCore (p x)
:name "Given's Rotation SVD example"
:precision binary64
:pre (< 1.00000000000000001e-150 (fabs x) 9.99999999999999981e149)
: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))))))))