Average Error: 0.0 → 0.0
Time: 39.0s
Precision: 64
Internal Precision: 128
\[a \cdot \left(\left(b + c\right) + d\right)\]
\[\left(\left(b + c\right) + d\right) \cdot a\]

Error

Bits error versus a

Bits error versus b

Bits error versus c

Bits error versus d

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original0.0
Target0.0
Herbie0.0
\[a \cdot b + a \cdot \left(c + d\right)\]

Derivation

  1. Initial program 0.0

    \[a \cdot \left(\left(b + c\right) + d\right)\]
  2. Final simplification0.0

    \[\leadsto \left(\left(b + c\right) + d\right) \cdot a\]

Reproduce

herbie shell --seed 2019022 
(FPCore (a b c d)
  :name "Expression, p14"
  :pre (and (<= 56789 a 98765) (<= 0 b 1) (<= 0 c 0.0016773) (<= 0 d 0.0016773))

  :herbie-target
  (+ (* a b) (* a (+ c d)))

  (* a (+ (+ b c) d)))

Details

Time bar (total: 38.6s)Debug log

sample43.0ms

Algorithm
intervals
Results
15.0ms256×pre80true
13.0ms256×body80valid

simplify44.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
44.0ms
(* a (+ (+ b c) d))

prune8.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 0.0b

localize8.0ms

Local error

Found 1 expressions with local error:

0.0b
(* a (+ (+ b c) d))

rewrite11.0ms

Algorithm
rewrite-expression-head
Rules
associate-*r*
add-cube-cbrt
associate-*r/
*-un-lft-identity
add-sqr-sqrt
add-log-exp
flip-+
*-commutative
add-exp-log
add-cbrt-cube
flip3-+
distribute-lft-in
pow1
distribute-rgt-in
Counts
1 → 15
Calls
1 calls:
Slowest
11.0ms
(* a (+ (+ b c) d))

series20.0ms

Counts
1 → 3
Calls
1 calls:
Slowest
20.0ms
(* a (+ (+ b c) d))

simplify216.0ms

Counts
10 → 18
Calls
10 calls:
Slowest
133.0ms
(+ (* (+ b c) (+ b c)) (- (* d d) (* (+ b c) d)))
31.0ms
(+ (* a d) (+ (* a b) (* a c)))
23.0ms
(+ (* a d) (+ (* a b) (* a c)))
8.0ms
(- (+ b c) d)
6.0ms
(sqrt (+ (+ b c) d))

prune150.0ms

Pruning

4 alts after pruning (3 fresh and 1 done)

Merged error: 0.0b

localize12.0ms

Local error

Found 4 expressions with local error:

0.5b
(* (sqrt (* a (+ (+ b c) d))) (sqrt (* a (+ (+ b c) d))))
0.1b
(sqrt (* a (+ (+ b c) d)))
0.1b
(sqrt (* a (+ (+ b c) d)))
0.0b
(* a (+ (+ b c) d))

rewrite25.0ms

Algorithm
rewrite-expression-head
Rules
20×associate-*r/
16×sqrt-div
flip-+
flip3-+
pow1
add-cube-cbrt
associate-*r*
*-un-lft-identity
add-sqr-sqrt
add-exp-log
pow1/2
add-cbrt-cube
add-log-exp
sqrt-prod
associate-*l*
frac-times
pow-prod-up
*-commutative
associate-*l/
pow-prod-down
cbrt-unprod
prod-exp
sqrt-unprod
pow-plus
distribute-lft-in
rem-square-sqrt
distribute-rgt-in
pow2
Counts
4 → 71
Calls
4 calls:
Slowest
14.0ms
(* (sqrt (* a (+ (+ b c) d))) (sqrt (* a (+ (+ b c) d))))
7.0ms
(* a (+ (+ b c) d))
1.0ms
(sqrt (* a (+ (+ b c) d)))
1.0ms
(sqrt (* a (+ (+ b c) d)))

series342.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
150.0ms
(sqrt (* a (+ (+ b c) d)))
136.0ms
(sqrt (* a (+ (+ b c) d)))
32.0ms
(* a (+ (+ b c) d))
24.0ms
(* (sqrt (* a (+ (+ b c) d))) (sqrt (* a (+ (+ b c) d))))

simplify4.8s

Counts
55 → 83
Calls
55 calls:
Slowest
483.0ms
(* (sqrt (* a (+ (pow (+ b c) 3) (pow d 3)))) (sqrt (* a (- (* (+ b c) (+ b c)) (* d d)))))
479.0ms
(* (sqrt (* a (- (* (+ b c) (+ b c)) (* d d)))) (sqrt (* a (+ (pow (+ b c) 3) (pow d 3)))))
466.0ms
(* (* a (+ (+ b c) d)) (* a (+ (+ b c) d)))
416.0ms
(* (* a (+ (+ b c) d)) (* a (+ (+ b c) d)))
260.0ms
(sqrt (* a (- (* (+ b c) (+ b c)) (* d d))))

prune827.0ms

Pruning

4 alts after pruning (2 fresh and 2 done)

Merged error: 0.0b

localize16.0ms

Local error

Found 4 expressions with local error:

5.9b
(/ (* a (- (* (+ b c) (+ b c)) (* d d))) (- (+ b c) d))
0.5b
(* a (- (* (+ b c) (+ b c)) (* d d)))
0.0b
(* (+ b c) (+ b c))
0.0b
(- (* (+ b c) (+ b c)) (* d d))

rewrite48.0ms

Algorithm
rewrite-expression-head
Rules
add-cube-cbrt
*-un-lft-identity
pow1
add-sqr-sqrt
add-exp-log
add-cbrt-cube
distribute-lft-in
distribute-rgt-in
associate-*r*
add-log-exp
flip-+
associate-*r/
associate--l+
flip3-+
flip--
flip3--
frac-times
associate-*l*
times-frac
sub-neg
associate-/r*
associate-/l/
difference-of-squares
*-commutative
associate-/r/
associate-*l/
associate-/l*
div-inv
cbrt-unprod
pow-prod-up
prod-exp
pow-prod-down
div-exp
diff-log
pow-plus
frac-2neg
clear-num
cbrt-undiv
pow2
Counts
4 → 90
Calls
4 calls:
Slowest
16.0ms
(* a (- (* (+ b c) (+ b c)) (* d d)))
13.0ms
(/ (* a (- (* (+ b c) (+ b c)) (* d d))) (- (+ b c) d))
10.0ms
(- (* (+ b c) (+ b c)) (* d d))
7.0ms
(* (+ b c) (+ b c))

series232.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
96.0ms
(* a (- (* (+ b c) (+ b c)) (* d d)))
80.0ms
(/ (* a (- (* (+ b c) (+ b c)) (* d d))) (- (+ b c) d))
46.0ms
(- (* (+ b c) (+ b c)) (* d d))
9.0ms
(* (+ b c) (+ b c))

simplify6.5s

Counts
71 → 102
Calls
71 calls:
Slowest
628.0ms
(* a (- (pow (* (+ b c) (+ b c)) 3) (pow (* d d) 3)))
390.0ms
(* (- (* b b) (* c c)) (+ b c))
381.0ms
(- (log (* a (- (* (+ b c) (+ b c)) (* d d)))) (log (- (+ b c) d)))
320.0ms
(* (+ (* b b) (- (* c c) (* b c))) (- b c))
301.0ms
(/ (exp (* (+ b c) (+ b c))) (exp (* d d)))

prune956.0ms

Pruning

4 alts after pruning (1 fresh and 3 done)

Merged error: 0.0b

localize44.0ms

Local error

Found 4 expressions with local error:

15.8b
(/ (+ (* (* a d) (* d d)) (* (* (+ b c) a) (* (+ b c) (+ b c)))) (+ (* (+ c b) (+ c b)) (* d (- (- d b) c))))
0.2b
(* (* (+ b c) a) (* (+ b c) (+ b c)))
0.2b
(* (* a d) (* d d))
0.0b
(* (+ b c) a)

rewrite66.0ms

Algorithm
rewrite-expression-head
Rules
42×flip-+
42×flip3-+
36×frac-times
34×associate-*r/
32×associate-*l/
18×associate-/r/
16×frac-add
13×add-cube-cbrt
13×add-exp-log
13×add-cbrt-cube
13×*-un-lft-identity
13×add-sqr-sqrt
11×pow1
times-frac
flip--
flip3--
associate-*l*
add-log-exp
cbrt-unprod
prod-exp
pow-prod-down
distribute-lft-in
distribute-rgt-in
associate-/l*
*-commutative
associate-/r*
associate-/l/
associate-*r*
div-inv
div-exp
frac-2neg
clear-num
cbrt-undiv
Counts
4 → 119
Calls
4 calls:
Slowest
26.0ms
(* (* (+ b c) a) (* (+ b c) (+ b c)))
25.0ms
(/ (+ (* (* a d) (* d d)) (* (* (+ b c) a) (* (+ b c) (+ b c)))) (+ (* (+ c b) (+ c b)) (* d (- (- d b) c))))
6.0ms
(* (* a d) (* d d))
5.0ms
(* (+ b c) a)

series352.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
270.0ms
(/ (+ (* (* a d) (* d d)) (* (* (+ b c) a) (* (+ b c) (+ b c)))) (+ (* (+ c b) (+ c b)) (* d (- (- d b) c))))
35.0ms
(* (* (+ b c) a) (* (+ b c) (+ b c)))
25.0ms
(* (* a d) (* d d))
22.0ms
(* (+ b c) a)

simplify20.7s

Counts
118 → 131
Calls
118 calls:
Slowest
811.0ms
(* (* (- (* b b) (* c c)) a) (* (- (* b b) (* c c)) (- (* b b) (* c c))))
787.0ms
(* (* (+ (pow b 3) (pow c 3)) a) (* (- (* b b) (* c c)) (- (* b b) (* c c))))
766.0ms
(/ 1 (sqrt (+ (* (+ c b) (+ c b)) (* d (- (- d b) c)))))
722.0ms
(* (+ (* b b) (- (* c c) (* b c))) (* (+ (* b b) (- (* c c) (* b c))) (+ (* b b) (- (* c c) (* b c)))))
583.0ms
(/ (sqrt (+ (* (* a d) (* d d)) (* (* (+ b c) a) (* (+ b c) (+ b c))))) 1)

prune1.8s

Pruning

4 alts after pruning (0 fresh and 4 done)

Merged error: 0.0b

regimes332.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.0s

Algorithm
intervals
Results
434.0ms8000×pre80true
395.0ms8000×body80valid