Average Error: 0.5 → 0.5
Time: 49.7s
Precision: 64
Internal Precision: 128
\[\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\]
\[\cos th \cdot \frac{a2 \cdot a2 + a1 \cdot a1}{\sqrt{2}}\]

Error

Bits error versus a1

Bits error versus a2

Bits error versus th

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.5

    \[\frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1\right) + \frac{\cos th}{\sqrt{2}} \cdot \left(a2 \cdot a2\right)\]
  2. Initial simplification0.5

    \[\leadsto \frac{\cos th}{\sqrt{2}} \cdot \left(a1 \cdot a1 + a2 \cdot a2\right)\]
  3. Using strategy rm
  4. Applied div-inv0.6

    \[\leadsto \color{blue}{\left(\cos th \cdot \frac{1}{\sqrt{2}}\right)} \cdot \left(a1 \cdot a1 + a2 \cdot a2\right)\]
  5. Applied associate-*l*0.6

    \[\leadsto \color{blue}{\cos th \cdot \left(\frac{1}{\sqrt{2}} \cdot \left(a1 \cdot a1 + a2 \cdot a2\right)\right)}\]
  6. Using strategy rm
  7. Applied associate-*l/0.5

    \[\leadsto \cos th \cdot \color{blue}{\frac{1 \cdot \left(a1 \cdot a1 + a2 \cdot a2\right)}{\sqrt{2}}}\]
  8. Simplified0.5

    \[\leadsto \cos th \cdot \frac{\color{blue}{a2 \cdot a2 + a1 \cdot a1}}{\sqrt{2}}\]
  9. Final simplification0.5

    \[\leadsto \cos th \cdot \frac{a2 \cdot a2 + a1 \cdot a1}{\sqrt{2}}\]

Reproduce

herbie shell --seed 2018362 
(FPCore (a1 a2 th)
  :name "Migdal et al, Equation (64)"
  (+ (* (/ (cos th) (sqrt 2)) (* a1 a1)) (* (/ (cos th) (sqrt 2)) (* a2 a2))))

Details

Time bar (total: 35.4s)Debug log

start364.0ms

Algorithm
intervals

setup96.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 0.5b

localize24.0ms

Local error

Found 2 expressions with local error:

0.7b
(/ (cos th) (sqrt 2))
0.4b
(* (/ (cos th) (sqrt 2)) (+ (* a1 a1) (* a2 a2)))

rewrite23.0ms

Algorithm
rewrite-expression-head
Counts
2 → 63
Calls

2 calls. Slowest were:

16.0ms
(* (/ (cos th) (sqrt 2)) (+ (* a1 a1) (* a2 a2)))
6.0ms
(/ (cos th) (sqrt 2))

series246.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

209.0ms
(* (/ (cos th) (sqrt 2)) (+ (* a1 a1) (* a2 a2)))
36.0ms
(/ (cos th) (sqrt 2))

simplify2.9s

Counts
60 → 69
Calls

60 calls. Slowest were:

503.0ms
(* (cos th) (- (* (* a1 a1) (* a1 a1)) (* (* a2 a2) (* a2 a2))))
403.0ms
(* (sqrt 2) (- (* a1 a1) (* a2 a2)))
293.0ms
(/ (* (* (cos th) (cos th)) (cos th)) (* (* (sqrt 2) (sqrt 2)) (sqrt 2)))

prune949.0ms

Pruning

10 alts after pruning (10 fresh and 0 done)

Merged error: 0.0b

localize8.0ms

Local error

Found 3 expressions with local error:

1.0b
(/ 1 (sqrt 2))
0.4b
(* (/ 1 (sqrt 2)) (+ (* a1 a1) (* a2 a2)))
0.2b
(* (cos th) (* (/ 1 (sqrt 2)) (+ (* a1 a1) (* a2 a2))))

rewrite27.0ms

Algorithm
rewrite-expression-head
Counts
3 → 71
Calls

3 calls. Slowest were:

17.0ms
(* (cos th) (* (/ 1 (sqrt 2)) (+ (* a1 a1) (* a2 a2))))
7.0ms
(* (/ 1 (sqrt 2)) (+ (* a1 a1) (* a2 a2)))
1.0ms
(/ 1 (sqrt 2))

series269.0ms

Counts
3 → 7
Calls

3 calls. Slowest were:

190.0ms
(* (cos th) (* (/ 1 (sqrt 2)) (+ (* a1 a1) (* a2 a2))))
79.0ms
(* (/ 1 (sqrt 2)) (+ (* a1 a1) (* a2 a2)))
0.0ms
(/ 1 (sqrt 2))

simplify5.1s

Counts
49 → 78
Calls

49 calls. Slowest were:

359.0ms
(* (sqrt 2) (- (* a1 a1) (* a2 a2)))
352.0ms
(* (sqrt 2) (- (* a1 a1) (* a2 a2)))
350.0ms
(* (cos th) (* (* a2 a2) (/ 1 (sqrt 2))))

prune1.2s

Pruning

8 alts after pruning (8 fresh and 0 done)

Merged error: 0b

localize16.0ms

Local error

Found 2 expressions with local error:

0.3b
(/ (+ (* a2 a2) (* a1 a1)) (sqrt 2))
0.2b
(* (cos th) (/ (+ (* a2 a2) (* a1 a1)) (sqrt 2)))

rewrite36.0ms

Algorithm
rewrite-expression-head
Counts
2 → 59
Calls

2 calls. Slowest were:

17.0ms
(* (cos th) (/ (+ (* a2 a2) (* a1 a1)) (sqrt 2)))
17.0ms
(/ (+ (* a2 a2) (* a1 a1)) (sqrt 2))

series212.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

152.0ms
(* (cos th) (/ (+ (* a2 a2) (* a1 a1)) (sqrt 2)))
60.0ms
(/ (+ (* a2 a2) (* a1 a1)) (sqrt 2))

simplify1.8s

Counts
54 → 65
Calls

54 calls. Slowest were:

532.0ms
(/ (* (* (+ (* a2 a2) (* a1 a1)) (+ (* a2 a2) (* a1 a1))) (+ (* a2 a2) (* a1 a1))) (* (* (sqrt 2) (sqrt 2)) (sqrt 2)))
305.0ms
(* (* (* (cos th) (cos th)) (cos th)) (* (* (/ (+ (* a2 a2) (* a1 a1)) (sqrt 2)) (/ (+ (* a2 a2) (* a1 a1)) (sqrt 2))) (/ (+ (* a2 a2) (* a1 a1)) (sqrt 2))))
179.0ms
(- (* (* a2 a2) (* a2 a2)) (* (* a1 a1) (* a1 a1)))

prune1.0s

Pruning

6 alts after pruning (5 fresh and 1 done)

Merged error: 0b

localize22.0ms

Local error

Found 4 expressions with local error:

6.6b
(sqrt (+ (* a2 a2) (* a1 a1)))
6.6b
(sqrt (+ (* a2 a2) (* a1 a1)))
0.5b
(/ (sqrt 2) (sqrt (+ (* a2 a2) (* a1 a1))))
0.3b
(/ (sqrt (+ (* a2 a2) (* a1 a1))) (/ (sqrt 2) (sqrt (+ (* a2 a2) (* a1 a1)))))

rewrite33.0ms

Algorithm
rewrite-expression-head
Counts
4 → 262
Calls

4 calls. Slowest were:

10.0ms
(/ (sqrt (+ (* a2 a2) (* a1 a1))) (/ (sqrt 2) (sqrt (+ (* a2 a2) (* a1 a1)))))
8.0ms
(/ (sqrt 2) (sqrt (+ (* a2 a2) (* a1 a1))))
5.0ms
(sqrt (+ (* a2 a2) (* a1 a1)))

series177.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

78.0ms
(/ (sqrt (+ (* a2 a2) (* a1 a1))) (/ (sqrt 2) (sqrt (+ (* a2 a2) (* a1 a1)))))
49.0ms
(/ (sqrt 2) (sqrt (+ (* a2 a2) (* a1 a1))))
25.0ms
(sqrt (+ (* a2 a2) (* a1 a1)))
25.0ms
(sqrt (+ (* a2 a2) (* a1 a1)))

simplify15.6s

Counts
398 → 274
Calls

398 calls. Slowest were:

774.0ms
(/ (* (* (sqrt (+ (* a2 a2) (* a1 a1))) (sqrt (+ (* a2 a2) (* a1 a1)))) (sqrt (+ (* a2 a2) (* a1 a1)))) (/ (* (* (sqrt 2) (sqrt 2)) (sqrt 2)) (* (* (sqrt (+ (* a2 a2) (* a1 a1))) (sqrt (+ (* a2 a2) (* a1 a1)))) (sqrt (+ (* a2 a2) (* a1 a1))))))
632.0ms
(/ (* (* (sqrt (+ (* a2 a2) (* a1 a1))) (sqrt (+ (* a2 a2) (* a1 a1)))) (sqrt (+ (* a2 a2) (* a1 a1)))) (* (* (/ (sqrt 2) (sqrt (+ (* a2 a2) (* a1 a1)))) (/ (sqrt 2) (sqrt (+ (* a2 a2) (* a1 a1))))) (/ (sqrt 2) (sqrt (+ (* a2 a2) (* a1 a1))))))
602.0ms
(/ 1 (/ (* (cbrt (sqrt 2)) (cbrt (sqrt 2))) (* (cbrt (sqrt (+ (* a2 a2) (* a1 a1)))) (cbrt (sqrt (+ (* a2 a2) (* a1 a1)))))))

prune4.8s

Pruning

6 alts after pruning (4 fresh and 2 done)

Merged error: 0b

regimes459.0ms

Accuracy

0% (0.4b remaining)

Error of 0.5b against oracle of 0.1b and baseline of 0.5b

bsearch2.0ms