Average Error: 0.0 → 0.0
Time: 13.4s
Precision: 64
Internal Precision: 128
\[\left(d1 \cdot d2 + \left(d3 + 5\right) \cdot d1\right) + d1 \cdot 32\]
\[(d1 \cdot \left(37 + d2\right) + \left(d3 \cdot d1\right))_*\]

Error

Bits error versus d1

Bits error versus d2

Bits error versus d3

Target

Original0.0
Target0.0
Herbie0.0
\[d1 \cdot \left(\left(37 + d3\right) + d2\right)\]

Derivation

  1. Initial program 0.0

    \[\left(d1 \cdot d2 + \left(d3 + 5\right) \cdot d1\right) + d1 \cdot 32\]
  2. Simplified0.0

    \[\leadsto \color{blue}{(\left(d2 + d3\right) \cdot d1 + \left(d1 \cdot 37\right))_*}\]
  3. Taylor expanded around 0 0.0

    \[\leadsto \color{blue}{d2 \cdot d1 + \left(d3 \cdot d1 + 37 \cdot d1\right)}\]
  4. Simplified0.0

    \[\leadsto \color{blue}{(d1 \cdot \left(37 + d2\right) + \left(d3 \cdot d1\right))_*}\]
  5. Final simplification0.0

    \[\leadsto (d1 \cdot \left(37 + d2\right) + \left(d3 \cdot d1\right))_*\]

Reproduce

herbie shell --seed 2019016 +o rules:numerics
(FPCore (d1 d2 d3)
  :name "FastMath dist3"

  :herbie-target
  (* d1 (+ (+ 37 d3) d2))

  (+ (+ (* d1 d2) (* (+ d3 5) d1)) (* d1 32)))

Details

Time bar (total: 12.5s)Debug log

sample71.0ms

Algorithm
intervals
Results
330×(pre true 80)
329×(body real 80)
(body real 160)

simplify394.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
394.0ms
(+ (+ (* d1 d2) (* (+ d3 5) d1)) (* d1 32))

prune15.0ms

Pruning

2 alts after pruning (2 fresh and 0 done)

Merged error: 0.0b

localize11.0ms

Local error

Found 1 expressions with local error:

0.0b
(fma (+ d2 d3) d1 (* d1 37))

rewrite0.0ms

Algorithm
rewrite-expression-head
Rules
add-log-exp
log1p-expm1-u
fma-udef
add-cube-cbrt
add-exp-log
add-cbrt-cube
*-un-lft-identity
pow1
expm1-log1p-u
add-sqr-sqrt
Counts
1 → 10
Calls
1 calls:
Slowest
0.0ms
(fma (+ d2 d3) d1 (* d1 37))

series18.0ms

Counts
1 → 3
Calls
1 calls:
Slowest
18.0ms
(fma (+ d2 d3) d1 (* d1 37))

simplify181.0ms

Counts
3 → 13
Calls
3 calls:
Slowest
77.0ms
(+ (* d2 d1) (+ (* d3 d1) (* 37 d1)))
53.0ms
(+ (* d2 d1) (+ (* d3 d1) (* 37 d1)))
51.0ms
(+ (* d2 d1) (+ (* d3 d1) (* 37 d1)))

prune158.0ms

Pruning

3 alts after pruning (2 fresh and 1 done)

Merged error: 0.0b

localize21.0ms

Local error

Found 1 expressions with local error:

0.0b
(fma d1 (+ 37 d2) (* d3 d1))

rewrite1.0ms

Algorithm
rewrite-expression-head
Rules
add-log-exp
log1p-expm1-u
fma-udef
add-cube-cbrt
add-exp-log
add-cbrt-cube
*-un-lft-identity
pow1
expm1-log1p-u
add-sqr-sqrt
Counts
1 → 10
Calls
1 calls:
Slowest
0.0ms
(fma d1 (+ 37 d2) (* d3 d1))

series30.0ms

Counts
1 → 3
Calls
1 calls:
Slowest
30.0ms
(fma d1 (+ 37 d2) (* d3 d1))

simplify207.0ms

Counts
3 → 13
Calls
3 calls:
Slowest
77.0ms
(+ (* d2 d1) (+ (* d3 d1) (* 37 d1)))
77.0ms
(+ (* d2 d1) (+ (* d3 d1) (* 37 d1)))
52.0ms
(+ (* d2 d1) (+ (* d3 d1) (* 37 d1)))

prune151.0ms

Pruning

3 alts after pruning (1 fresh and 2 done)

Merged error: 0.0b

localize18.0ms

Local error

Found 4 expressions with local error:

0.6b
(cbrt (fma (+ d2 d3) d1 (* d1 37)))
0.6b
(cbrt (fma (+ d2 d3) d1 (* d1 37)))
0.6b
(cbrt (fma (+ d2 d3) d1 (* d1 37)))
0.5b
(* (cbrt (fma (+ d2 d3) d1 (* d1 37))) (cbrt (fma (+ d2 d3) d1 (* d1 37))))

rewrite13.0ms

Algorithm
rewrite-expression-head
Rules
15×cbrt-prod
11×add-cube-cbrt
11×*-un-lft-identity
11×add-sqr-sqrt
pow1
pow1/3
add-exp-log
associate-*l*
associate-*r*
add-log-exp
log1p-expm1-u
add-cbrt-cube
expm1-log1p-u
pow-prod-up
pow-prod-down
cbrt-unprod
*-commutative
prod-exp
pow-plus
pow2
Counts
4 → 69
Calls
4 calls:
Slowest
9.0ms
(* (cbrt (fma (+ d2 d3) d1 (* d1 37))) (cbrt (fma (+ d2 d3) d1 (* d1 37))))
1.0ms
(cbrt (fma (+ d2 d3) d1 (* d1 37)))
1.0ms
(cbrt (fma (+ d2 d3) d1 (* d1 37)))
1.0ms
(cbrt (fma (+ d2 d3) d1 (* d1 37)))

series437.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
125.0ms
(* (cbrt (fma (+ d2 d3) d1 (* d1 37))) (cbrt (fma (+ d2 d3) d1 (* d1 37))))
113.0ms
(cbrt (fma (+ d2 d3) d1 (* d1 37)))
112.0ms
(cbrt (fma (+ d2 d3) d1 (* d1 37)))
86.0ms
(cbrt (fma (+ d2 d3) d1 (* d1 37)))

simplify4.5s

Counts
41 → 81
Calls
41 calls:
Slowest
540.0ms
(* (fma (+ d2 d3) d1 (* d1 37)) (fma (+ d2 d3) d1 (* d1 37)))
472.0ms
(* (fma (+ d2 d3) d1 (* d1 37)) (fma (+ d2 d3) d1 (* d1 37)))
405.0ms
(+ (exp (* 1/3 (+ (* 2 (log d1)) (log 1369)))) (+ (* 2/111 (* (exp (* 1/3 (+ (* 2 (log d1)) (log 1369)))) d2)) (* 2/111 (* (exp (* 1/3 (+ (* 2 (log d1)) (log 1369)))) d3))))
366.0ms
(+ (* 1/111 (* d3 (exp (* 1/3 (+ (log d1) (log 37)))))) (+ (exp (* 1/3 (+ (log d1) (log 37)))) (* 1/3 (* d2 (exp (* 1/3 (+ (log d1) (log 1/1369))))))))
333.0ms
(+ (* 1/111 (* d3 (exp (* 1/3 (+ (log d1) (log 37)))))) (+ (exp (* 1/3 (+ (log d1) (log 37)))) (* 1/3 (* d2 (exp (* 1/3 (+ (log d1) (log 1/1369))))))))

prune976.0ms

Pruning

3 alts after pruning (1 fresh and 2 done)

Merged error: 0.0b

localize23.0ms

Local error

Found 4 expressions with local error:

0.6b
(cbrt (fma (+ d2 d3) d1 (* d1 37)))
0.6b
(cbrt (fma (+ d2 d3) d1 (* d1 37)))
0.6b
(cbrt (fma (+ d2 d3) d1 (* d1 37)))
0.6b
(cbrt (fma (+ d2 d3) d1 (* d1 37)))

rewrite5.0ms

Algorithm
rewrite-expression-head
Rules
12×cbrt-prod
add-cube-cbrt
*-un-lft-identity
add-sqr-sqrt
add-log-exp
log1p-expm1-u
add-exp-log
pow1/3
add-cbrt-cube
pow1
expm1-log1p-u
Counts
4 → 52
Calls
4 calls:
Slowest
1.0ms
(cbrt (fma (+ d2 d3) d1 (* d1 37)))
1.0ms
(cbrt (fma (+ d2 d3) d1 (* d1 37)))
1.0ms
(cbrt (fma (+ d2 d3) d1 (* d1 37)))
1.0ms
(cbrt (fma (+ d2 d3) d1 (* d1 37)))

series493.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
138.0ms
(cbrt (fma (+ d2 d3) d1 (* d1 37)))
138.0ms
(cbrt (fma (+ d2 d3) d1 (* d1 37)))
110.0ms
(cbrt (fma (+ d2 d3) d1 (* d1 37)))
106.0ms
(cbrt (fma (+ d2 d3) d1 (* d1 37)))

simplify2.7s

Counts
24 → 64
Calls
24 calls:
Slowest
345.0ms
(+ (* 1/111 (* d3 (exp (* 1/3 (+ (log d1) (log 37)))))) (+ (exp (* 1/3 (+ (log d1) (log 37)))) (* 1/3 (* d2 (exp (* 1/3 (+ (log d1) (log 1/1369))))))))
339.0ms
(+ (* 1/111 (* d3 (exp (* 1/3 (+ (log d1) (log 37)))))) (+ (exp (* 1/3 (+ (log d1) (log 37)))) (* 1/3 (* d2 (exp (* 1/3 (+ (log d1) (log 1/1369))))))))
292.0ms
(+ (* 1/111 (* d3 (exp (* 1/3 (+ (log d1) (log 37)))))) (+ (exp (* 1/3 (+ (log d1) (log 37)))) (* 1/3 (* d2 (exp (* 1/3 (+ (log d1) (log 1/1369))))))))
282.0ms
(+ (* 1/111 (* d3 (exp (* 1/3 (+ (log d1) (log 37)))))) (+ (exp (* 1/3 (+ (log d1) (log 37)))) (* 1/3 (* d2 (exp (* 1/3 (+ (log d1) (log 1/1369))))))))
186.0ms
(- (+ (* 37/3 (/ (exp (* -1/3 (+ (log (/ 1 d1)) (log (/ 1 d2))))) d2)) (exp (* -1/3 (+ (log (/ 1 d1)) (log (/ 1 d2)))))) (* 1369/9 (/ (exp (* -1/3 (+ (log (/ 1 d1)) (log (/ 1 d2))))) (pow d2 2))))

prune678.0ms

Pruning

3 alts after pruning (0 fresh and 3 done)

Merged error: 0.0b

regimes102.0ms

Accuracy

0% (0.0b remaining)

Error of 0.0b against oracle of 0.0b and baseline of 0.0b

bsearch1.0ms

end0.0ms

sample1.3s

Algorithm
intervals
Results
10138×(pre true 80)
10095×(body real 80)
17×(body real 640)
11×(body real 320)
(body real 1280)
(body real 160)