Average Error: 0.0 → 0.0
Time: 38.0s
Precision: 64
Internal Precision: 128
\[\left(a + b\right) \cdot \left(a + b\right)\]
\[\left(\left(b \cdot a\right) \cdot 2 + {b}^{2}\right) + {a}^{2}\]

Error

Bits error versus a

Bits error versus b

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

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

Derivation

  1. Initial program 0.0

    \[\left(a + b\right) \cdot \left(a + b\right)\]
  2. Taylor expanded around inf 0.0

    \[\leadsto \color{blue}{{a}^{2} + \left({b}^{2} + 2 \cdot \left(a \cdot b\right)\right)}\]
  3. Final simplification0.0

    \[\leadsto \left(\left(b \cdot a\right) \cdot 2 + {b}^{2}\right) + {a}^{2}\]

Reproduce

herbie shell --seed 2019010 
(FPCore (a b)
  :name "Expression 4, p15"
  :pre (and (<= 5 a 10) (<= 0 b 0.001))

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

  (* (+ a b) (+ a b)))

Details

Time bar (total: 37.5s)Debug log

sample34.0ms

Algorithm
intervals

simplify29.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
29.0ms
(* (+ a b) (+ a b))

prune8.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 0.0b

localize12.0ms

Local error

Found 1 expressions with local error:

0.0b
(* (+ a b) (+ a b))

rewrite8.0ms

Algorithm
rewrite-expression-head
Rules
flip-+
flip3-+
pow1
frac-times
add-cube-cbrt
add-exp-log
associate-*l*
associate-*r*
add-cbrt-cube
*-un-lft-identity
add-sqr-sqrt
associate-*r/
associate-*l/
add-log-exp
cbrt-unprod
pow-prod-up
*-commutative
prod-exp
pow-prod-down
pow-plus
distribute-lft-in
distribute-rgt-in
pow2
Counts
1 → 30
Calls
1 calls:
Slowest
8.0ms
(* (+ a b) (+ a b))

series15.0ms

Counts
1 → 3
Calls
1 calls:
Slowest
15.0ms
(* (+ a b) (+ a b))

simplify2.2s

Counts
28 → 33
Calls
28 calls:
Slowest
313.0ms
(* (- (* a a) (* b b)) (+ a b))
312.0ms
(* (+ (* a a) (- (* b b) (* a b))) (- a b))
274.0ms
(* (+ (* a a) (- (* b b) (* a b))) (+ (* a a) (- (* b b) (* a b))))
257.0ms
(* (- (* a a) (* b b)) (+ (pow a 3) (pow b 3)))
179.0ms
(* (+ (pow a 3) (pow b 3)) (+ a b))

prune302.0ms

Pruning

3 alts after pruning (3 fresh and 0 done)

Merged error: 0b

localize33.0ms

Local error

Found 2 expressions with local error:

0.0b
(+ (pow a 2) (+ (pow b 2) (* 2 (* a b))))
0.0b
(+ (pow b 2) (* 2 (* a b)))

rewrite21.0ms

Algorithm
rewrite-expression-head
Rules
add-log-exp
*-un-lft-identity
sum-log
flip-+
add-cube-cbrt
add-exp-log
add-cbrt-cube
flip3-+
+-commutative
pow1
add-sqr-sqrt
distribute-lft-out
associate-+r+
Counts
2 → 25
Calls
2 calls:
Slowest
14.0ms
(+ (pow a 2) (+ (pow b 2) (* 2 (* a b))))
6.0ms
(+ (pow b 2) (* 2 (* a b)))

series58.0ms

Counts
2 → 6
Calls
2 calls:
Slowest
36.0ms
(+ (pow b 2) (* 2 (* a b)))
22.0ms
(+ (pow a 2) (+ (pow b 2) (* 2 (* a b))))

simplify438.0ms

Counts
11 → 31
Calls
11 calls:
Slowest
105.0ms
(* (exp (pow a 2)) (* (exp (pow b 2)) (exp (* 2 (* a b)))))
98.0ms
(* (exp (pow a 2)) (exp (+ (pow b 2) (* 2 (* a b)))))
64.0ms
(* (exp (pow b 2)) (exp (* 2 (* a b))))
46.0ms
(+ (pow a 2) (+ (pow b 2) (* 2 (* a b))))
40.0ms
(+ (pow a 2) (+ (pow b 2) (* 2 (* a b))))

prune298.0ms

Pruning

3 alts after pruning (2 fresh and 1 done)

Merged error: 0b

localize20.0ms

Local error

Found 3 expressions with local error:

0.5b
(* (- (* a a) (* b b)) (- (* a a) (* b b)))
0.5b
(/ (* (- (* a a) (* b b)) (- (* a a) (* b b))) (* (- a b) (- a b)))
0.0b
(* (- a b) (- a b))

rewrite27.0ms

Algorithm
rewrite-expression-head
Rules
24×flip--
24×flip3--
19×add-exp-log
19×add-cbrt-cube
16×frac-times
13×pow1
associate-/l/
associate-/r/
associate-*r/
associate-*l/
add-cube-cbrt
associate-*l*
associate-*r*
*-un-lft-identity
add-sqr-sqrt
cbrt-unprod
prod-exp
div-exp
distribute-lft-in
sub-neg
cbrt-undiv
distribute-rgt-in
add-log-exp
difference-of-squares
pow-prod-up
*-commutative
pow-prod-down
pow-plus
pow2
associate-/l*
div-inv
times-frac
frac-2neg
associate-/r*
clear-num
Counts
3 → 103
Calls
3 calls:
Slowest
13.0ms
(/ (* (- (* a a) (* b b)) (- (* a a) (* b b))) (* (- a b) (- a b)))
9.0ms
(* (- (* a a) (* b b)) (- (* a a) (* b b)))
4.0ms
(* (- a b) (- a b))

series73.0ms

Counts
3 → 9
Calls
3 calls:
Slowest
34.0ms
(/ (* (- (* a a) (* b b)) (- (* a a) (* b b))) (* (- a b) (- a b)))
25.0ms
(* (- (* a a) (* b b)) (- (* a a) (* b b)))
15.0ms
(* (- a b) (- a b))

simplify13.5s

Counts
93 → 112
Calls
93 calls:
Slowest
1.1s
(* (* (* (- (* a a) (* b b)) (- (* a a) (* b b))) (- (* a a) (* b b))) (* (* (- (* a a) (* b b)) (- (* a a) (* b b))) (- (* a a) (* b b))))
629.0ms
(- (+ (log (- (* a a) (* b b))) (log (- (* a a) (* b b)))) (+ (log (- a b)) (log (- a b))))
624.0ms
(* (+ (* (* a a) (* a a)) (+ (* (* b b) (* b b)) (* (* a a) (* b b)))) (+ (* a a) (* b b)))
570.0ms
(* (- (* (* a a) (* a a)) (* (* b b) (* b b))) (- (* a a) (* b b)))
490.0ms
(* (- (* (* a a) (* a a)) (* (* b b) (* b b))) (- (* a a) (* b b)))

prune1.0s

Pruning

3 alts after pruning (1 fresh and 2 done)

Merged error: 0b

localize39.0ms

Local error

Found 4 expressions with local error:

0.4b
(/ (* (+ (pow a 3) (pow b 3)) (- (* a a) (* b b))) (* (+ (* a a) (- (* b b) (* a b))) (- a b)))
0.4b
(* (+ (pow a 3) (pow b 3)) (- (* a a) (* b b)))
0.3b
(* (+ (* a a) (- (* b b) (* a b))) (- a b))
0.0b
(+ (* a a) (- (* b b) (* a b)))

rewrite81.0ms

Algorithm
rewrite-expression-head
Rules
20×add-exp-log
20×add-cbrt-cube
16×frac-times
13×flip-+
13×flip3-+
12×flip--
12×flip3--
10×*-un-lft-identity
add-log-exp
associate-/l/
add-cube-cbrt
associate-/r/
associate-*r/
associate-*l/
associate-*l*
pow1
add-sqr-sqrt
associate-*r*
cbrt-unprod
prod-exp
sub-neg
div-exp
distribute-lft-in
cbrt-undiv
distribute-rgt-in
*-commutative
pow-prod-down
sum-log
associate-+r+
difference-of-squares
associate-/l*
distribute-lft-out
div-inv
sum-cubes
diff-log
times-frac
frac-2neg
associate-/r*
associate-+r-
clear-num
+-commutative
Counts
4 → 113
Calls
4 calls:
Slowest
29.0ms
(/ (* (+ (pow a 3) (pow b 3)) (- (* a a) (* b b))) (* (+ (* a a) (- (* b b) (* a b))) (- a b)))
19.0ms
(* (+ (pow a 3) (pow b 3)) (- (* a a) (* b b)))
19.0ms
(* (+ (* a a) (- (* b b) (* a b))) (- a b))
12.0ms
(+ (* a a) (- (* b b) (* a b)))

series173.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
64.0ms
(/ (* (+ (pow a 3) (pow b 3)) (- (* a a) (* b b))) (* (+ (* a a) (- (* b b) (* a b))) (- a b)))
54.0ms
(* (+ (pow a 3) (pow b 3)) (- (* a a) (* b b)))
39.0ms
(* (+ (* a a) (- (* b b) (* a b))) (- a b))
15.0ms
(+ (* a a) (- (* b b) (* a b)))

simplify16.6s

Counts
95 → 125
Calls
95 calls:
Slowest
748.0ms
(* (- (* (pow a 3) (pow a 3)) (* (pow b 3) (pow b 3))) (- (* (* a a) (* a a)) (* (* b b) (* b b))))
580.0ms
(/ (* (* (* (+ (pow a 3) (pow b 3)) (- (* a a) (* b b))) (* (+ (pow a 3) (pow b 3)) (- (* a a) (* b b)))) (* (+ (pow a 3) (pow b 3)) (- (* a a) (* b b)))) (* (* (* (+ (* a a) (- (* b b) (* a b))) (+ (* a a) (- (* b b) (* a b)))) (+ (* a a) (- (* b b) (* a b)))) (* (* (- a b) (- a b)) (- a b))))
546.0ms
(/ (* (* (* (+ (pow a 3) (pow b 3)) (- (* a a) (* b b))) (* (+ (pow a 3) (pow b 3)) (- (* a a) (* b b)))) (* (+ (pow a 3) (pow b 3)) (- (* a a) (* b b)))) (* (* (* (+ (* a a) (- (* b b) (* a b))) (- a b)) (* (+ (* a a) (- (* b b) (* a b))) (- a b))) (* (+ (* a a) (- (* b b) (* a b))) (- a b))))
544.0ms
(/ (* (* (* (+ (pow a 3) (pow b 3)) (+ (pow a 3) (pow b 3))) (+ (pow a 3) (pow b 3))) (* (* (- (* a a) (* b b)) (- (* a a) (* b b))) (- (* a a) (* b b)))) (* (* (* (+ (* a a) (- (* b b) (* a b))) (- a b)) (* (+ (* a a) (- (* b b) (* a b))) (- a b))) (* (+ (* a a) (- (* b b) (* a b))) (- a b))))
527.0ms
(* (- (* a a) (- (* b b) (* a b))) (+ (* a a) (+ (* b b) (* a b))))

prune1.7s

Pruning

3 alts after pruning (0 fresh and 3 done)

Merged error: 0b

regimes84.0ms

Accuracy

0% (0.0b remaining)

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

bsearch1.0ms

end0.0ms

sample757.0ms

Algorithm
intervals