Average Error: 0.0 → 0.0
Time: 1.1m
Precision: 64
Internal Precision: 128
\[\left(\left(d1 \cdot d2 - d1 \cdot d3\right) + d4 \cdot d1\right) - d1 \cdot d1\]
\[\left(\left(d2 - d1\right) - \left(d3 - d4\right)\right) \cdot d1\]

Error

Bits error versus d1

Bits error versus d2

Bits error versus d3

Bits error versus d4

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

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

Derivation

  1. Initial program 0.0

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

    \[\leadsto \color{blue}{\left(\left(d2 - d1\right) - \left(d3 - d4\right)\right) \cdot d1}\]
  3. Final simplification0.0

    \[\leadsto \left(\left(d2 - d1\right) - \left(d3 - d4\right)\right) \cdot d1\]

Reproduce

herbie shell --seed 2019016 
(FPCore (d1 d2 d3 d4)
  :name "FastMath dist4"

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

  (- (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1)))

Details

Time bar (total: 1.1m)Debug log

sample112.0ms

Algorithm
intervals
Results
407×(pre true 80)
407×(body real 80)

simplify355.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
355.0ms
(- (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1))

prune10.0ms

Pruning

2 alts after pruning (2 fresh and 0 done)

Merged error: 0.0b

localize27.0ms

Local error

Found 3 expressions with local error:

0.0b
(- (* d1 d2) (* d1 d3))
0.0b
(+ (- (* d1 d2) (* d1 d3)) (* d4 d1))
0.0b
(- (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1))

rewrite60.0ms

Algorithm
rewrite-expression-head
Rules
19×add-log-exp
diff-log
sum-log
add-sqr-sqrt
add-cube-cbrt
add-exp-log
add-cbrt-cube
*-un-lft-identity
sub-neg
pow1
flip--
associate-+l-
flip3--
associate-+l+
difference-of-squares
distribute-lft-out--
flip-+
associate--l+
flip3-+
+-commutative
associate--l-
Counts
3 → 45
Calls
3 calls:
Slowest
41.0ms
(- (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1))
14.0ms
(+ (- (* d1 d2) (* d1 d3)) (* d4 d1))
4.0ms
(- (* d1 d2) (* d1 d3))

series103.0ms

Counts
3 → 9
Calls
3 calls:
Slowest
43.0ms
(+ (- (* d1 d2) (* d1 d3)) (* d4 d1))
35.0ms
(- (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1))
25.0ms
(- (* d1 d2) (* d1 d3))

simplify1.5s

Counts
23 → 54
Calls
23 calls:
Slowest
246.0ms
(/ (* (exp (- (* d1 d2) (* d1 d3))) (exp (* d4 d1))) (exp (* d1 d1)))
135.0ms
(* (exp (- (* d1 d2) (* d1 d3))) (exp (* d4 d1)))
132.0ms
(/ (* (/ (exp (* d1 d2)) (exp (* d1 d3))) (exp (* d4 d1))) (exp (* d1 d1)))
132.0ms
(* (/ (exp (* d1 d2)) (exp (* d1 d3))) (exp (* d4 d1)))
131.0ms
(- (* d2 d1) (+ (pow d1 2) (* d3 d1)))

prune522.0ms

Pruning

5 alts after pruning (4 fresh and 1 done)

Merged error: 0b

localize21.0ms

Local error

Found 2 expressions with local error:

0.0b
(* (- (- d2 d1) (- d3 d4)) d1)
0.0b
(- (- d2 d1) (- d3 d4))

rewrite29.0ms

Algorithm
rewrite-expression-head
Rules
10×flip--
10×flip3--
frac-sub
*-un-lft-identity
add-sqr-sqrt
associate-*l/
associate-*l*
add-log-exp
add-cube-cbrt
sub-neg
difference-of-squares
distribute-lft-out--
associate--r+
add-exp-log
associate--l+
add-cbrt-cube
pow1
associate--r-
*-commutative
diff-log
associate--l-
Counts
2 → 43
Calls
2 calls:
Slowest
20.0ms
(* (- (- d2 d1) (- d3 d4)) d1)
7.0ms
(- (- d2 d1) (- d3 d4))

series88.0ms

Counts
2 → 6
Calls
2 calls:
Slowest
55.0ms
(* (- (- d2 d1) (- d3 d4)) d1)
33.0ms
(- (- d2 d1) (- d3 d4))

simplify2.9s

Counts
29 → 49
Calls
29 calls:
Slowest
408.0ms
(- (* (- (* d2 d2) (* d1 d1)) (+ d3 d4)) (* (+ d2 d1) (- (* d3 d3) (* d4 d4))))
300.0ms
(* (cbrt (- (- d2 d1) (- d3 d4))) (cbrt (- (- d2 d1) (- d3 d4))))
229.0ms
(* (- (* (- d2 d1) (- d2 d1)) (* (- d3 d4) (- d3 d4))) d1)
220.0ms
(* (+ d2 d1) (+ (* d3 d3) (+ (* d4 d4) (* d3 d4))))
205.0ms
(* (+ (* d2 d2) (+ (* d1 d1) (* d2 d1))) (+ d3 d4))

prune515.0ms

Pruning

4 alts after pruning (3 fresh and 1 done)

Merged error: 0b

localize66.0ms

Local error

Found 4 expressions with local error:

35.7b
(/ (- (pow (* d1 d2) 3) (pow (* d1 d3) 3)) (+ (* (* d1 d2) (* d1 d2)) (+ (* (* d1 d3) (* d1 d3)) (* (* d1 d2) (* d1 d3)))))
2.9b
(- (pow (* d1 d2) 3) (pow (* d1 d3) 3))
2.2b
(* (* d1 d2) (* d1 d3))
1.0b
(+ (* (* d1 d2) (* d1 d2)) (+ (* (* d1 d3) (* d1 d3)) (* (* d1 d2) (* d1 d3))))

rewrite85.0ms

Algorithm
rewrite-expression-head
Rules
30×times-frac
29×*-un-lft-identity
29×add-sqr-sqrt
25×distribute-lft-out--
20×cube-prod
20×unpow-prod-down
19×add-cube-cbrt
11×add-log-exp
10×associate-/l*
add-exp-log
add-cbrt-cube
pow1
difference-of-squares
difference-cubes
sum-log
associate-/r*
associate-/l/
flip--
flip-+
associate-/r/
flip3--
flip3-+
div-inv
cbrt-unprod
*-commutative
prod-exp
pow-prod-down
associate-*l*
associate-*r*
div-exp
div-sub
diff-log
frac-2neg
sub-neg
clear-num
associate-+r+
+-commutative
cbrt-undiv
Counts
4 → 105
Calls
4 calls:
Slowest
43.0ms
(/ (- (pow (* d1 d2) 3) (pow (* d1 d3) 3)) (+ (* (* d1 d2) (* d1 d2)) (+ (* (* d1 d3) (* d1 d3)) (* (* d1 d2) (* d1 d3)))))
25.0ms
(+ (* (* d1 d2) (* d1 d2)) (+ (* (* d1 d3) (* d1 d3)) (* (* d1 d2) (* d1 d3))))
8.0ms
(- (pow (* d1 d2) 3) (pow (* d1 d3) 3))
6.0ms
(* (* d1 d2) (* d1 d3))

series316.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
144.0ms
(/ (- (pow (* d1 d2) 3) (pow (* d1 d3) 3)) (+ (* (* d1 d2) (* d1 d2)) (+ (* (* d1 d3) (* d1 d3)) (* (* d1 d2) (* d1 d3)))))
85.0ms
(- (pow (* d1 d2) 3) (pow (* d1 d3) 3))
61.0ms
(+ (* (* d1 d2) (* d1 d2)) (+ (* (* d1 d3) (* d1 d3)) (* (* d1 d2) (* d1 d3))))
27.0ms
(* (* d1 d2) (* d1 d3))

simplify22.5s

Counts
110 → 117
Calls
110 calls:
Slowest
561.0ms
(/ (sqrt (- (pow (* d1 d2) 3) (pow (* d1 d3) 3))) (sqrt (+ (* (* d1 d2) (* d1 d2)) (+ (* (* d1 d3) (* d1 d3)) (* (* d1 d2) (* d1 d3))))))
553.0ms
(* (* (* (* d1 d2) (* d1 d2)) (* d1 d2)) (* (* (* d1 d3) (* d1 d3)) (* d1 d3)))
509.0ms
(* (cbrt (- (pow (* d1 d2) 3) (pow (* d1 d3) 3))) (cbrt (- (pow (* d1 d2) 3) (pow (* d1 d3) 3))))
419.0ms
(/ (- (pow (* d1 d2) 3) (pow (* d1 d3) 3)) (+ (* (* d1 d2) (* d1 d2)) (+ (* (* d1 d3) (* d1 d3)) (* (* d1 d2) (* d1 d3)))))
416.0ms
(sqrt (- (pow (* d1 d2) 3) (pow (* d1 d3) 3)))

prune1.8s

Pruning

4 alts after pruning (2 fresh and 2 done)

Merged error: 0b

localize44.0ms

Local error

Found 4 expressions with local error:

37.5b
(/ (- (pow (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) 3) (pow (* d1 d1) 3)) (+ (* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (+ (- (* d1 d2) (* d1 d3)) (* d4 d1))) (+ (* (* d1 d1) (* d1 d1)) (* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1)))))
3.6b
(+ (* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (+ (- (* d1 d2) (* d1 d3)) (* d4 d1))) (+ (* (* d1 d1) (* d1 d1)) (* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1))))
2.6b
(- (pow (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) 3) (pow (* d1 d1) 3))
2.5b
(* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1))

rewrite383.0ms

Algorithm
rewrite-expression-head
Rules
84×add-sqr-sqrt
45×difference-of-squares
43×flip-+
43×flip3-+
42×times-frac
34×*-un-lft-identity
32×frac-add
30×cube-prod
30×unpow-prod-down
24×add-cube-cbrt
18×associate-/r/
16×frac-times
14×associate-/l*
11×add-log-exp
10×associate-*l/
add-exp-log
associate-*r/
add-cbrt-cube
pow1
distribute-lft-out--
difference-cubes
associate-*l*
sum-log
associate-/r*
associate-/l/
flip--
flip3--
associate-+l+
div-inv
cbrt-unprod
*-commutative
prod-exp
pow-prod-down
associate-*r*
div-exp
div-sub
diff-log
distribute-lft-in
frac-2neg
sub-neg
clear-num
associate-+r+
+-commutative
cbrt-undiv
distribute-rgt-in
Counts
4 → 163
Calls
4 calls:
Slowest
209.0ms
(/ (- (pow (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) 3) (pow (* d1 d1) 3)) (+ (* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (+ (- (* d1 d2) (* d1 d3)) (* d4 d1))) (+ (* (* d1 d1) (* d1 d1)) (* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1)))))
112.0ms
(- (pow (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) 3) (pow (* d1 d1) 3))
29.0ms
(* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1))
26.0ms
(+ (* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (+ (- (* d1 d2) (* d1 d3)) (* d4 d1))) (+ (* (* d1 d1) (* d1 d1)) (* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1))))

series2.0s

Counts
4 → 12
Calls
4 calls:
Slowest
909.0ms
(- (pow (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) 3) (pow (* d1 d1) 3))
711.0ms
(/ (- (pow (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) 3) (pow (* d1 d1) 3)) (+ (* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (+ (- (* d1 d2) (* d1 d3)) (* d4 d1))) (+ (* (* d1 d1) (* d1 d1)) (* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1)))))
356.0ms
(+ (* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (+ (- (* d1 d2) (* d1 d3)) (* d4 d1))) (+ (* (* d1 d1) (* d1 d1)) (* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1))))
45.0ms
(* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1))

simplify29.4s

Counts
200 → 175
Calls
200 calls:
Slowest
547.0ms
(* (* (+ (* (- (* d1 d2) (* d1 d3)) (- (* d1 d2) (* d1 d3))) (- (* (* d4 d1) (* d4 d1)) (* (- (* d1 d2) (* d1 d3)) (* d4 d1)))) (- (- (* d1 d2) (* d1 d3)) (* d4 d1))) (+ (* (* (* d1 d1) (* d1 d1)) (* (* d1 d1) (* d1 d1))) (- (* (* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1)) (* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1))) (* (* (* d1 d1) (* d1 d1)) (* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1))))))
452.0ms
(/ (* (* (- (pow (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) 3) (pow (* d1 d1) 3)) (- (pow (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) 3) (pow (* d1 d1) 3))) (- (pow (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) 3) (pow (* d1 d1) 3))) (* (* (+ (* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (+ (- (* d1 d2) (* d1 d3)) (* d4 d1))) (+ (* (* d1 d1) (* d1 d1)) (* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1)))) (+ (* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (+ (- (* d1 d2) (* d1 d3)) (* d4 d1))) (+ (* (* d1 d1) (* d1 d1)) (* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1))))) (+ (* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (+ (- (* d1 d2) (* d1 d3)) (* d4 d1))) (+ (* (* d1 d1) (* d1 d1)) (* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1))))))
402.0ms
(+ (* (* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (- (* (- (* d1 d2) (* d1 d3)) (- (* d1 d2) (* d1 d3))) (* (* d4 d1) (* d4 d1)))) (+ (* (* (* d1 d1) (* d1 d1)) (* (* d1 d1) (* d1 d1))) (- (* (* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1)) (* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1))) (* (* (* d1 d1) (* d1 d1)) (* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1)))))) (* (- (- (* d1 d2) (* d1 d3)) (* d4 d1)) (+ (pow (* (* d1 d1) (* d1 d1)) 3) (pow (* (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) (* d1 d1)) 3))))
377.0ms
(/ (* (cbrt (- (pow (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) 3) (pow (* d1 d1) 3))) (cbrt (- (pow (+ (- (* d1 d2) (* d1 d3)) (* d4 d1)) 3) (pow (* d1 d1) 3)))) 1)
368.0ms
(/ (+ (pow (sqrt (+ (- (* d1 d2) (* d1 d3)) (* d4 d1))) 3) (pow d1 3)) 1)

prune2.9s

Pruning

4 alts after pruning (1 fresh and 3 done)

Merged error: 0b

regimes163.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.5s

Algorithm
intervals
Results
11890×(pre true 80)
11890×(body real 80)