


Bits error versus re



Bits error versus im



Bits error versus base
Results
Initial program 30.9
Simplified0.4
rmApplied expm1-log1p-u0.4
rmApplied *-un-lft-identity0.4
Applied associate-/l*0.4
Final simplification0.4
herbie shell --seed 2019005 +o rules:numerics
(FPCore (re im base)
:name "math.log/2 on complex, real part"
(/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0)) (+ (* (log base) (log base)) (* 0 0))))
Time bar (total: 48.7s)Debug log
1 calls. Slowest were:
| 46.0ms | (/ (+ (* (log (sqrt (+ (* re re) (* im im)))) (log base)) (* (atan2 im re) 0)) (+ (* (log base) (log base)) (* 0 0))) |
2 alts after pruning (2 fresh and 0 done)
Merged error: 0.2b
Found 2 expressions with local error:
| 0.3b | (/ (log (hypot re im)) (log base)) |
| 0.0b | (hypot re im) |
2 calls. Slowest were:
| 9.0ms | (/ (log (hypot re im)) (log base)) |
| 0.0ms | (hypot re im) |
2 calls. Slowest were:
| 118.0ms | (/ (log (hypot re im)) (log base)) |
| 27.0ms | (hypot re im) |
37 calls. Slowest were:
| 187.0ms | (* -1 (/ (log (/ -1 re)) (- (log -1) (log (/ -1 base))))) |
| 114.0ms | (/ (* (* (log (hypot re im)) (log (hypot re im))) (log (hypot re im))) (* (* (log base) (log base)) (log base))) |
| 18.0ms | (/ (log (/ 1 re)) (log (/ 1 base))) |
11 alts after pruning (11 fresh and 0 done)
Merged error: 0.0b
Found 3 expressions with local error:
| 4.3b | (expm1 (log1p (hypot re im))) |
| 0.3b | (/ (log (expm1 (log1p (hypot re im)))) (log base)) |
| 0.0b | (hypot re im) |
3 calls. Slowest were:
| 11.0ms | (/ (log (expm1 (log1p (hypot re im)))) (log base)) |
| 0.0ms | (expm1 (log1p (hypot re im))) |
| 0.0ms | (hypot re im) |
3 calls. Slowest were:
| 189.0ms | (/ (log (expm1 (log1p (hypot re im)))) (log base)) |
| 107.0ms | (expm1 (log1p (hypot re im))) |
| 41.0ms | (hypot re im) |
40 calls. Slowest were:
| 181.0ms | (- (/ (log (- (exp (- (log (/ -1 re)))) 1)) (- (log -1) (log (/ -1 base)))) (+ (/ (exp (- (log (/ -1 re)))) (* (- (exp (- (log (/ -1 re)))) 1) (* (- (log -1) (log (/ -1 base))) re))) (* 1/2 (/ (pow (exp (- (log (/ -1 re)))) 2) (* (pow (- (exp (- (log (/ -1 re)))) 1) 2) (* (- (log -1) (log (/ -1 base))) (pow re 2))))))) |
| 142.0ms | (- (* 1/2 (/ (pow (exp (- (log (/ 1 re)))) 2) (* (pow (- (exp (- (log (/ 1 re)))) 1) 2) (* (log (/ 1 base)) (pow re 2))))) (+ (/ (log (- (exp (- (log (/ 1 re)))) 1)) (log (/ 1 base))) (/ (exp (- (log (/ 1 re)))) (* (- (exp (- (log (/ 1 re)))) 1) (* (log (/ 1 base)) re))))) |
| 129.0ms | (/ (* (* (log (expm1 (log1p (hypot re im)))) (log (expm1 (log1p (hypot re im))))) (log (expm1 (log1p (hypot re im))))) (* (* (log base) (log base)) (log base))) |
10 alts after pruning (9 fresh and 1 done)
Merged error: 0.0b
Found 4 expressions with local error:
| 4.3b | (expm1 (log1p (hypot re im))) |
| 0.3b | (/ (log base) (log (expm1 (log1p (hypot re im))))) |
| 0.2b | (/ 1 (/ (log base) (log (expm1 (log1p (hypot re im)))))) |
| 0.0b | (hypot re im) |
4 calls. Slowest were:
| 4.0ms | (/ (log base) (log (expm1 (log1p (hypot re im))))) |
| 2.0ms | (/ 1 (/ (log base) (log (expm1 (log1p (hypot re im)))))) |
| 0.0ms | (expm1 (log1p (hypot re im))) |
4 calls. Slowest were:
| 198.0ms | (/ 1 (/ (log base) (log (expm1 (log1p (hypot re im)))))) |
| 167.0ms | (/ (log base) (log (expm1 (log1p (hypot re im))))) |
| 126.0ms | (expm1 (log1p (hypot re im))) |
| 40.0ms | (hypot re im) |
62 calls. Slowest were:
| 963.0ms | (* -1 (/ (- (log -1) (log (/ -1 base))) (log (/ -1 re)))) |
| 195.0ms | (* -1 (/ (log (/ -1 re)) (- (log -1) (log (/ -1 base))))) |
| 145.0ms | (/ (* (* (log base) (log base)) (log base)) (* (* (log (expm1 (log1p (hypot re im)))) (log (expm1 (log1p (hypot re im))))) (log (expm1 (log1p (hypot re im)))))) |
9 alts after pruning (8 fresh and 1 done)
Merged error: 0.0b
Found 4 expressions with local error:
| 0.4b | (/ (/ 1 (log base)) (/ 1 (log (hypot re im)))) |
| 0.2b | (/ 1 (log base)) |
| 0.2b | (/ 1 (log (hypot re im))) |
| 0.0b | (hypot re im) |
4 calls. Slowest were:
| 9.0ms | (/ (/ 1 (log base)) (/ 1 (log (hypot re im)))) |
| 2.0ms | (/ 1 (log (hypot re im))) |
| 2.0ms | (/ 1 (log base)) |
4 calls. Slowest were:
| 195.0ms | (/ 1 (log base)) |
| 165.0ms | (/ (/ 1 (log base)) (/ 1 (log (hypot re im)))) |
| 73.0ms | (/ 1 (log (hypot re im))) |
| 31.0ms | (hypot re im) |
65 calls. Slowest were:
| 1.1s | (/ (* (* (/ 1 (log base)) (/ 1 (log base))) (/ 1 (log base))) (* (* (/ 1 (log (hypot re im))) (/ 1 (log (hypot re im)))) (/ 1 (log (hypot re im))))) |
| 188.0ms | (* -1 (/ (log (/ -1 re)) (- (log -1) (log (/ -1 base))))) |
| 83.0ms | (/ (/ 1 (log base)) (/ 1 (log (hypot re im)))) |
10 alts after pruning (8 fresh and 2 done)
Merged error: 0b
0% (0.4b remaining)
Error of 0.4b against oracle of 0.1b and baseline of 0.4b