Average Error: 0.5 → 0.5
Time: 26.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)\]
\[\left(\cos th \cdot \sqrt{a1 \cdot a1 + a2 \cdot a2}\right) \cdot \frac{\sqrt{a1 \cdot a1 + a2 \cdot a2}}{\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. Simplified0.5

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

    \[\leadsto \color{blue}{\frac{\cos th \cdot \left(a1 \cdot a1 + a2 \cdot a2\right)}{\sqrt{2}}}\]
  5. Using strategy rm
  6. Applied *-un-lft-identity0.5

    \[\leadsto \frac{\cos th \cdot \left(a1 \cdot a1 + a2 \cdot a2\right)}{\color{blue}{1 \cdot \sqrt{2}}}\]
  7. Applied times-frac0.5

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

    \[\leadsto \color{blue}{\cos th} \cdot \frac{a1 \cdot a1 + a2 \cdot a2}{\sqrt{2}}\]
  9. Using strategy rm
  10. Applied *-un-lft-identity0.5

    \[\leadsto \cos th \cdot \frac{a1 \cdot a1 + a2 \cdot a2}{\color{blue}{1 \cdot \sqrt{2}}}\]
  11. Applied add-sqr-sqrt0.5

    \[\leadsto \cos th \cdot \frac{\color{blue}{\sqrt{a1 \cdot a1 + a2 \cdot a2} \cdot \sqrt{a1 \cdot a1 + a2 \cdot a2}}}{1 \cdot \sqrt{2}}\]
  12. Applied times-frac0.5

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

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

    \[\leadsto \left(\cos th \cdot \sqrt{a1 \cdot a1 + a2 \cdot a2}\right) \cdot \frac{\sqrt{a1 \cdot a1 + a2 \cdot a2}}{\sqrt{2}}\]

Reproduce

herbie shell --seed 2019022 
(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: 25.9s)Debug log

sample251.0ms

Algorithm
intervals
Results
103.0ms77×body1280valid
49.0ms271×body80valid
48.0ms58×body640valid
25.0ms40×body320valid
6.0ms15×body160valid

simplify85.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
85.0ms
(+ (* (/ (cos th) (sqrt 2)) (* a1 a1)) (* (/ (cos th) (sqrt 2)) (* a2 a2)))

prune10.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 0.5b

localize27.0ms

Local error

Found 3 expressions with local error:

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

rewrite27.0ms

Algorithm
rewrite-expression-head
Rules
19×add-cube-cbrt
19×*-un-lft-identity
19×add-sqr-sqrt
18×times-frac
13×associate-*l*
10×add-exp-log
10×add-cbrt-cube
add-log-exp
pow1
associate-/l*
flip-+
associate-*r*
flip3-+
associate-/r*
div-inv
cbrt-unprod
associate-*r/
prod-exp
div-exp
cbrt-undiv
frac-times
*-commutative
associate-*l/
pow-prod-down
distribute-lft-in
frac-2neg
sum-log
clear-num
+-commutative
distribute-rgt-in
Counts
3 → 74
Calls
3 calls:
Slowest
15.0ms
(* (/ (cos th) (sqrt 2)) (+ (* a1 a1) (* a2 a2)))
7.0ms
(/ (cos th) (sqrt 2))
4.0ms
(+ (* a1 a1) (* a2 a2))

series216.0ms

Counts
3 → 9
Calls
3 calls:
Slowest
154.0ms
(* (/ (cos th) (sqrt 2)) (+ (* a1 a1) (* a2 a2)))
43.0ms
(/ (cos th) (sqrt 2))
19.0ms
(+ (* a1 a1) (* a2 a2))

simplify2.6s

Counts
64 → 83
Calls
64 calls:
Slowest
373.0ms
(* (cos th) (- (* (* a1 a1) (* a1 a1)) (* (* a2 a2) (* a2 a2))))
342.0ms
(* (sqrt 2) (- (* a1 a1) (* a2 a2)))
243.0ms
(/ (* (* (cos th) (cos th)) (cos th)) (* (* (sqrt 2) (sqrt 2)) (sqrt 2)))
221.0ms
(* (/ (* (* (cos th) (cos th)) (cos th)) (* (* (sqrt 2) (sqrt 2)) (sqrt 2))) (* (* (+ (* a1 a1) (* a2 a2)) (+ (* a1 a1) (* a2 a2))) (+ (* a1 a1) (* a2 a2))))
189.0ms
(* (* (* (/ (cos th) (sqrt 2)) (/ (cos th) (sqrt 2))) (/ (cos th) (sqrt 2))) (* (* (+ (* a1 a1) (* a2 a2)) (+ (* a1 a1) (* a2 a2))) (+ (* a1 a1) (* a2 a2))))

prune908.0ms

Pruning

7 alts after pruning (7 fresh and 0 done)

Merged error: 0.0b

localize5.0ms

Local error

Found 3 expressions with local error:

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

rewrite15.0ms

Algorithm
rewrite-expression-head
Rules
10×add-exp-log
10×add-cbrt-cube
add-cube-cbrt
*-un-lft-identity
add-sqr-sqrt
add-log-exp
pow1
associate-*r/
flip-+
associate-*l*
associate-*r*
times-frac
flip3-+
associate-/r*
associate-/l/
cbrt-unprod
prod-exp
div-exp
cbrt-undiv
associate-/l*
div-inv
*-commutative
pow-prod-down
distribute-lft-in
frac-2neg
sum-log
clear-num
+-commutative
distribute-rgt-in
Counts
3 → 55
Calls
3 calls:
Slowest
7.0ms
(/ (* (cos th) (+ (* a1 a1) (* a2 a2))) (sqrt 2))
5.0ms
(* (cos th) (+ (* a1 a1) (* a2 a2)))
2.0ms
(+ (* a1 a1) (* a2 a2))

series302.0ms

Counts
3 → 9
Calls
3 calls:
Slowest
169.0ms
(/ (* (cos th) (+ (* a1 a1) (* a2 a2))) (sqrt 2))
110.0ms
(* (cos th) (+ (* a1 a1) (* a2 a2)))
23.0ms
(+ (* a1 a1) (* a2 a2))

simplify1.6s

Counts
38 → 64
Calls
38 calls:
Slowest
354.0ms
(* (cos th) (- (* (* a1 a1) (* a1 a1)) (* (* a2 a2) (* a2 a2))))
205.0ms
(/ (* (* (* (cos th) (cos th)) (cos th)) (* (* (+ (* a1 a1) (* a2 a2)) (+ (* a1 a1) (* a2 a2))) (+ (* a1 a1) (* a2 a2)))) (* (* (sqrt 2) (sqrt 2)) (sqrt 2)))
185.0ms
(+ (* (* a1 a1) (* a1 a1)) (- (* (* a2 a2) (* a2 a2)) (* (* a1 a1) (* a2 a2))))
168.0ms
(* (* (* (cos th) (cos th)) (cos th)) (* (* (+ (* a1 a1) (* a2 a2)) (+ (* a1 a1) (* a2 a2))) (+ (* a1 a1) (* a2 a2))))
148.0ms
(* (cos th) (+ (pow (* a1 a1) 3) (pow (* a2 a2) 3)))

prune748.0ms

Pruning

7 alts after pruning (7 fresh and 0 done)

Merged error: 0b

localize11.0ms

Local error

Found 3 expressions with local error:

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

rewrite34.0ms

Algorithm
rewrite-expression-head
Rules
19×add-cube-cbrt
19×*-un-lft-identity
19×add-sqr-sqrt
18×times-frac
13×associate-*r*
10×add-exp-log
10×add-cbrt-cube
add-log-exp
pow1
associate-/l*
associate-*l*
associate-/r*
associate-/l/
div-inv
flip-+
cbrt-unprod
prod-exp
div-exp
flip3-+
cbrt-undiv
*-commutative
associate-*r/
pow-prod-down
frac-2neg
sum-log
clear-num
+-commutative
Counts
3 → 70
Calls
3 calls:
Slowest
16.0ms
(/ (+ (* a1 a1) (* a2 a2)) (sqrt 2))
12.0ms
(* (cos th) (/ (+ (* a1 a1) (* a2 a2)) (sqrt 2)))
4.0ms
(+ (* a1 a1) (* a2 a2))

series299.0ms

Counts
3 → 9
Calls
3 calls:
Slowest
202.0ms
(* (cos th) (/ (+ (* a1 a1) (* a2 a2)) (sqrt 2)))
73.0ms
(/ (+ (* a1 a1) (* a2 a2)) (sqrt 2))
24.0ms
(+ (* a1 a1) (* a2 a2))

simplify1.8s

Counts
58 → 79
Calls
58 calls:
Slowest
429.0ms
(/ (* (* (+ (* a1 a1) (* a2 a2)) (+ (* a1 a1) (* a2 a2))) (+ (* a1 a1) (* a2 a2))) (* (* (sqrt 2) (sqrt 2)) (sqrt 2)))
385.0ms
(* (* (* (cos th) (cos th)) (cos th)) (* (* (/ (+ (* a1 a1) (* a2 a2)) (sqrt 2)) (/ (+ (* a1 a1) (* a2 a2)) (sqrt 2))) (/ (+ (* a1 a1) (* a2 a2)) (sqrt 2))))
140.0ms
(- (* (* a1 a1) (* a1 a1)) (* (* a2 a2) (* a2 a2)))
121.0ms
(* (* (* (cos th) (cos th)) (cos th)) (/ (* (* (+ (* a1 a1) (* a2 a2)) (+ (* a1 a1) (* a2 a2))) (+ (* a1 a1) (* a2 a2))) (* (* (sqrt 2) (sqrt 2)) (sqrt 2))))
94.0ms
(+ (/ (* (pow a1 2) (cos th)) (sqrt 2)) (/ (* (cos th) (pow a2 2)) (sqrt 2)))

prune996.0ms

Pruning

6 alts after pruning (6 fresh and 0 done)

Merged error: 0b

localize27.0ms

Local error

Found 4 expressions with local error:

5.7b
(sqrt (+ (* a1 a1) (* a2 a2)))
5.7b
(sqrt (+ (* a1 a1) (* a2 a2)))
0.4b
(/ (sqrt (+ (* a1 a1) (* a2 a2))) (sqrt 2))
0.3b
(* (* (cos th) (/ (sqrt (+ (* a1 a1) (* a2 a2))) 1)) (/ (sqrt (+ (* a1 a1) (* a2 a2))) (sqrt 2)))

rewrite33.0ms

Algorithm
rewrite-expression-head
Rules
36×times-frac
36×add-sqr-sqrt
34×add-cube-cbrt
34×*-un-lft-identity
27×sqrt-prod
22×associate-*r*
18×add-exp-log
18×add-cbrt-cube
pow1
associate-/l*
cbrt-unprod
prod-exp
sqrt-div
add-log-exp
flip-+
associate-*r/
pow-prod-down
div-exp
flip3-+
associate-/r*
cbrt-undiv
associate-/l/
div-inv
pow1/2
rem-sqrt-square
*-commutative
associate-*l/
associate-*l*
frac-2neg
clear-num
sqrt-undiv
frac-times
Counts
4 → 114
Calls
4 calls:
Slowest
17.0ms
(* (* (cos th) (/ (sqrt (+ (* a1 a1) (* a2 a2))) 1)) (/ (sqrt (+ (* a1 a1) (* a2 a2))) (sqrt 2)))
7.0ms
(/ (sqrt (+ (* a1 a1) (* a2 a2))) (sqrt 2))
4.0ms
(sqrt (+ (* a1 a1) (* a2 a2)))
3.0ms
(sqrt (+ (* a1 a1) (* a2 a2)))

series296.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
184.0ms
(* (* (cos th) (/ (sqrt (+ (* a1 a1) (* a2 a2))) 1)) (/ (sqrt (+ (* a1 a1) (* a2 a2))) (sqrt 2)))
58.0ms
(/ (sqrt (+ (* a1 a1) (* a2 a2))) (sqrt 2))
31.0ms
(sqrt (+ (* a1 a1) (* a2 a2)))
23.0ms
(sqrt (+ (* a1 a1) (* a2 a2)))

simplify5.1s

Counts
110 → 126
Calls
110 calls:
Slowest
1.2s
(* (* (* (* (cos th) (/ (sqrt (+ (* a1 a1) (* a2 a2))) 1)) (* (cos th) (/ (sqrt (+ (* a1 a1) (* a2 a2))) 1))) (* (cos th) (/ (sqrt (+ (* a1 a1) (* a2 a2))) 1))) (* (* (/ (sqrt (+ (* a1 a1) (* a2 a2))) (sqrt 2)) (/ (sqrt (+ (* a1 a1) (* a2 a2))) (sqrt 2))) (/ (sqrt (+ (* a1 a1) (* a2 a2))) (sqrt 2))))
401.0ms
(+ (+ (log (cos th)) (log (/ (sqrt (+ (* a1 a1) (* a2 a2))) 1))) (- (log (sqrt (+ (* a1 a1) (* a2 a2)))) (log (sqrt 2))))
365.0ms
(/ (* (* (sqrt (+ (* a1 a1) (* a2 a2))) (sqrt (+ (* a1 a1) (* a2 a2)))) (sqrt (+ (* a1 a1) (* a2 a2)))) (* (* (sqrt 2) (sqrt 2)) (sqrt 2)))
356.0ms
(+ (log (* (cos th) (/ (sqrt (+ (* a1 a1) (* a2 a2))) 1))) (log (/ (sqrt (+ (* a1 a1) (* a2 a2))) (sqrt 2))))
306.0ms
(+ (+ (log (cos th)) (log (/ (sqrt (+ (* a1 a1) (* a2 a2))) 1))) (log (/ (sqrt (+ (* a1 a1) (* a2 a2))) (sqrt 2))))

prune1.6s

Pruning

6 alts after pruning (5 fresh and 1 done)

Merged error: 0b

regimes441.0ms

Accuracy

0% (0.4b remaining)

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

bsearch5.0ms

end0.0ms

sample8.5s

Algorithm
intervals
Results
3.4s2541×body1280valid
2.5s2152×body640valid
1.5s8102×body80valid
607.0ms1033×body320valid
173.0ms485×body160valid