\begin{array}{l}
\mathbf{if}\;\left(\left|y - \sqrt{y \cdot y + 1}\right| - \frac{1}{y + \sqrt{y \cdot y + 1}}\right) \cdot \left(\left|y - \sqrt{y \cdot y + 1}\right| - \frac{1}{y + \sqrt{y \cdot y + 1}}\right) = 0:\\
\;\;\;\;1\\
\mathbf{else}:\\
\;\;\;\;\frac{e^{\left(\left|y - \sqrt{y \cdot y + 1}\right| - \frac{1}{y + \sqrt{y \cdot y + 1}}\right) \cdot \left(\left|y - \sqrt{y \cdot y + 1}\right| - \frac{1}{y + \sqrt{y \cdot y + 1}}\right)} - 1}{\left(\left|y - \sqrt{y \cdot y + 1}\right| - \frac{1}{y + \sqrt{y \cdot y + 1}}\right) \cdot \left(\left|y - \sqrt{y \cdot y + 1}\right| - \frac{1}{y + \sqrt{y \cdot y + 1}}\right)}\\
\end{array}(FPCore (y)
:precision binary64
(if (==
(*
(-
(fabs (- y (sqrt (+ (* y y) 1.0))))
(/ 1.0 (+ y (sqrt (+ (* y y) 1.0)))))
(-
(fabs (- y (sqrt (+ (* y y) 1.0))))
(/ 1.0 (+ y (sqrt (+ (* y y) 1.0))))))
0.0)
1.0
(/
(-
(exp
(*
(-
(fabs (- y (sqrt (+ (* y y) 1.0))))
(/ 1.0 (+ y (sqrt (+ (* y y) 1.0)))))
(-
(fabs (- y (sqrt (+ (* y y) 1.0))))
(/ 1.0 (+ y (sqrt (+ (* y y) 1.0)))))))
1.0)
(*
(-
(fabs (- y (sqrt (+ (* y y) 1.0))))
(/ 1.0 (+ y (sqrt (+ (* y y) 1.0)))))
(-
(fabs (- y (sqrt (+ (* y y) 1.0))))
(/ 1.0 (+ y (sqrt (+ (* y y) 1.0)))))))))double code(double y) {
double tmp;
if (((fabs(y - sqrt((y * y) + 1.0)) - (1.0 / (y + sqrt((y * y) + 1.0)))) * (fabs(y - sqrt((y * y) + 1.0)) - (1.0 / (y + sqrt((y * y) + 1.0))))) == 0.0) {
tmp = 1.0;
} else {
tmp = (exp((fabs(y - sqrt((y * y) + 1.0)) - (1.0 / (y + sqrt((y * y) + 1.0)))) * (fabs(y - sqrt((y * y) + 1.0)) - (1.0 / (y + sqrt((y * y) + 1.0))))) - 1.0) / ((fabs(y - sqrt((y * y) + 1.0)) - (1.0 / (y + sqrt((y * y) + 1.0)))) * (fabs(y - sqrt((y * y) + 1.0)) - (1.0 / (y + sqrt((y * y) + 1.0)))));
}
return tmp;
}
Please include this information when filing a bug report:
herbie shell --seed 2021067
(FPCore (y)
:name "Kahan's Monster"
:precision binary64
:pre (<= 1.0 y 9999.0)
(if (== (* (- (fabs (- y (sqrt (+ (* y y) 1.0)))) (/ 1.0 (+ y (sqrt (+ (* y y) 1.0))))) (- (fabs (- y (sqrt (+ (* y y) 1.0)))) (/ 1.0 (+ y (sqrt (+ (* y y) 1.0)))))) 0.0) 1.0 (/ (- (exp (* (- (fabs (- y (sqrt (+ (* y y) 1.0)))) (/ 1.0 (+ y (sqrt (+ (* y y) 1.0))))) (- (fabs (- y (sqrt (+ (* y y) 1.0)))) (/ 1.0 (+ y (sqrt (+ (* y y) 1.0))))))) 1.0) (* (- (fabs (- y (sqrt (+ (* y y) 1.0)))) (/ 1.0 (+ y (sqrt (+ (* y y) 1.0))))) (- (fabs (- y (sqrt (+ (* y y) 1.0)))) (/ 1.0 (+ y (sqrt (+ (* y y) 1.0)))))))))
| simplify-batch: contract violation expected keyword argument #:precompute in: (-> (listof (or/c (listof any/c) symbol? value? real?)) #:precompute boolean? #:rules (listof rule?) (listof (listof (or/c (listof any/c) symbol? value? real?)))) contract from: (function simplify-batch) blaming: <pkgs>/herbie/core/simplify.rkt (assuming the contract is correct) at: <pkgs>/herbie/core/simplify.rkt:68.18 | L | C | |
|---|---|---|---|
| raise-blame-error | /opt/racket-7.9/collects/racket/contract/private/blame.rkt | 347 | 0 |
| for-loop | /opt/racket-7.9/collects/racket/contract/private/arrow-higher-order.rkt | 508 | 13 |
| kwd-checker | /opt/racket-7.9/collects/racket/contract/private/arrow-higher-order.rkt | 496 | 11 |
| connected-components | /data/pavpan/nightlies/herbie/egg-interface-fixes/src/symmetry.rkt | 17 | 0 |
| run-improve | /data/pavpan/nightlies/herbie/egg-interface-fixes/src/mainloop.rkt | 387 | 0 |
| (unnamed) | /data/pavpan/nightlies/herbie/egg-interface-fixes/src/sandbox.rkt | 54 | 6 |
| run | /opt/racket-7.9/share/pkgs/profile-lib/main.rkt | 39 | 2 |
| profile-thunk | /opt/racket-7.9/share/pkgs/profile-lib/main.rkt | 9 | 0 |
| (unnamed) | /opt/racket-7.9/collects/racket/engine.rkt | 42 | 24 |