Average Error: 1.7 → 0.7
Time: 28.8s
Precision: 64
Internal Precision: 128
\[\sqrt{\frac{1}{2} \cdot \left(1 + \frac{1}{\sqrt{1 + {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} \cdot \left({\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}\right)}}\right)}\]
\[\sqrt{\frac{1}{2} + \frac{\frac{1}{2}}{\sqrt{(4 \cdot \left((\left(\sin ky \cdot \frac{\ell}{Om}\right) \cdot \left(\log \left(e^{\sin ky \cdot \frac{\ell}{Om}}\right)\right) + \left(\frac{\sin kx}{\frac{Om}{\ell}} \cdot \frac{\sin kx}{\frac{Om}{\ell}}\right))_*\right) + 1)_*}}}\]

Error

Bits error versus l

Bits error versus Om

Bits error versus kx

Bits error versus ky

Derivation

  1. Initial program 1.7

    \[\sqrt{\frac{1}{2} \cdot \left(1 + \frac{1}{\sqrt{1 + {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} \cdot \left({\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}\right)}}\right)}\]
  2. Initial simplification1.7

    \[\leadsto \sqrt{\frac{\frac{1}{2}}{\sqrt{(\left(\left(\ell \cdot \frac{2}{Om}\right) \cdot \left(\ell \cdot \frac{2}{Om}\right)\right) \cdot \left((\left(\sin ky\right) \cdot \left(\sin ky\right) + \left(\sin kx \cdot \sin kx\right))_*\right) + 1)_*}} + \frac{1}{2}}\]
  3. Taylor expanded around -inf 16.2

    \[\leadsto \sqrt{\frac{\frac{1}{2}}{\sqrt{\color{blue}{4 \cdot \frac{{\ell}^{2} \cdot {\left(\sin ky\right)}^{2}}{{Om}^{2}} + \left(4 \cdot \frac{{\left(\sin kx\right)}^{2} \cdot {\ell}^{2}}{{Om}^{2}} + 1\right)}}} + \frac{1}{2}}\]
  4. Simplified0.7

    \[\leadsto \sqrt{\frac{\frac{1}{2}}{\sqrt{\color{blue}{(4 \cdot \left((\left(\frac{\ell}{Om} \cdot \sin ky\right) \cdot \left(\frac{\ell}{Om} \cdot \sin ky\right) + \left(\frac{\sin kx}{\frac{Om}{\ell}} \cdot \frac{\sin kx}{\frac{Om}{\ell}}\right))_*\right) + 1)_*}}} + \frac{1}{2}}\]
  5. Using strategy rm
  6. Applied add-log-exp0.7

    \[\leadsto \sqrt{\frac{\frac{1}{2}}{\sqrt{(4 \cdot \left((\left(\frac{\ell}{Om} \cdot \sin ky\right) \cdot \color{blue}{\left(\log \left(e^{\frac{\ell}{Om} \cdot \sin ky}\right)\right)} + \left(\frac{\sin kx}{\frac{Om}{\ell}} \cdot \frac{\sin kx}{\frac{Om}{\ell}}\right))_*\right) + 1)_*}} + \frac{1}{2}}\]
  7. Final simplification0.7

    \[\leadsto \sqrt{\frac{1}{2} + \frac{\frac{1}{2}}{\sqrt{(4 \cdot \left((\left(\sin ky \cdot \frac{\ell}{Om}\right) \cdot \left(\log \left(e^{\sin ky \cdot \frac{\ell}{Om}}\right)\right) + \left(\frac{\sin kx}{\frac{Om}{\ell}} \cdot \frac{\sin kx}{\frac{Om}{\ell}}\right))_*\right) + 1)_*}}}\]

Reproduce

herbie shell --seed 2018360 +o rules:numerics
(FPCore (l Om kx ky)
  :name "Toniolo and Linder, Equation (3a)"
  (sqrt (* (/ 1 2) (+ 1 (/ 1 (sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2))))))))))

Details

Time bar (total: 22.9s)Debug log

start141.0ms

Algorithm
intervals

setup291.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 1.6b

localize75.0ms

Local error

Found 4 expressions with local error:

7.5b
(sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))
3.2b
(fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1)
0.4b
(/ 1/2 (sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1)))
0.2b
(* (sin kx) (sin kx))

rewrite6.0ms

Algorithm
rewrite-expression-head
Counts
4 → 66
Calls

4 calls. Slowest were:

4.0ms
(* (sin kx) (sin kx))
1.0ms
(sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))
1.0ms
(/ 1/2 (sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1)))

series631.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

272.0ms
(/ 1/2 (sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1)))
225.0ms
(sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))
119.0ms
(fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1)
15.0ms
(* (sin kx) (sin kx))

simplify2.9s

Counts
35 → 78
Calls

35 calls. Slowest were:

429.0ms
(+ (* 4 (/ (* (pow l 2) (pow (sin ky) 2)) (pow Om 2))) (+ (* 4 (/ (* (pow (sin kx) 2) (pow l 2)) (pow Om 2))) 1))
399.0ms
(+ (* 4 (/ (* (pow l 2) (pow (sin ky) 2)) (pow Om 2))) (+ (* 4 (/ (* (pow (sin kx) 2) (pow l 2)) (pow Om 2))) 1))
239.0ms
(sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))

prune1.8s

Pruning

3 alts after pruning (3 fresh and 0 done)

Merged error: 0.3b

localize33.0ms

Local error

Found 4 expressions with local error:

7.5b
(sqrt (fma 4 (fma (* (/ l Om) (sin ky)) (* (/ l Om) (sin ky)) (* (/ (sin kx) (/ Om l)) (/ (sin kx) (/ Om l)))) 1))
2.6b
(/ (sin kx) (/ Om l))
2.6b
(/ (sin kx) (/ Om l))
2.3b
(* (/ l Om) (sin ky))

rewrite12.0ms

Algorithm
rewrite-expression-head
Counts
4 → 103
Calls

4 calls. Slowest were:

3.0ms
(* (/ l Om) (sin ky))
3.0ms
(/ (sin kx) (/ Om l))
3.0ms
(/ (sin kx) (/ Om l))

series858.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

636.0ms
(sqrt (fma 4 (fma (* (/ l Om) (sin ky)) (* (/ l Om) (sin ky)) (* (/ (sin kx) (/ Om l)) (/ (sin kx) (/ Om l)))) 1))
81.0ms
(* (/ l Om) (sin ky))
77.0ms
(/ (sin kx) (/ Om l))
64.0ms
(/ (sin kx) (/ Om l))

simplify2.4s

Counts
89 → 115
Calls

89 calls. Slowest were:

281.0ms
(/ (* (* (sin kx) (sin kx)) (sin kx)) (* (* (/ Om l) (/ Om l)) (/ Om l)))
245.0ms
(- (/ (* kx l) Om) (* 1/6 (/ (* (pow kx 3) l) Om)))
228.0ms
(- (/ (* kx l) Om) (* 1/6 (/ (* (pow kx 3) l) Om)))

prune2.6s

Pruning

2 alts after pruning (2 fresh and 0 done)

Merged error: 0.3b

localize22.0ms

Local error

Found 4 expressions with local error:

2.6b
(/ (sin kx) (/ Om l))
2.6b
(/ (sin kx) (/ Om l))
2.3b
(* (/ l Om) (sin ky))
2.3b
(* (/ l Om) (sin ky))

rewrite20.0ms

Algorithm
rewrite-expression-head
Counts
4 → 110
Calls

4 calls. Slowest were:

7.0ms
(* (/ l Om) (sin ky))
4.0ms
(* (/ l Om) (sin ky))
3.0ms
(/ (sin kx) (/ Om l))

series319.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

109.0ms
(/ (sin kx) (/ Om l))
77.0ms
(* (/ l Om) (sin ky))
73.0ms
(/ (sin kx) (/ Om l))
61.0ms
(* (/ l Om) (sin ky))

simplify2.0s

Counts
94 → 122
Calls

94 calls. Slowest were:

212.0ms
(- (/ (* kx l) Om) (* 1/6 (/ (* (pow kx 3) l) Om)))
211.0ms
(- (/ (* ky l) Om) (* 1/6 (/ (* (pow ky 3) l) Om)))
209.0ms
(- (/ (* kx l) Om) (* 1/6 (/ (* (pow kx 3) l) Om)))

prune3.0s

Pruning

2 alts after pruning (1 fresh and 1 done)

Merged error: 0.3b

localize19.0ms

Local error

Found 4 expressions with local error:

7.5b
(sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))
7.5b
(sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))
7.5b
(sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))
7.2b
(cbrt (/ 1/2 (sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))))

rewrite4.0ms

Algorithm
rewrite-expression-head
Counts
4 → 57
Calls

4 calls. Slowest were:

1.0ms
(sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))
1.0ms
(sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))
1.0ms
(sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))

series1.1s

Counts
4 → 12
Calls

4 calls. Slowest were:

457.0ms
(cbrt (/ 1/2 (sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))))
238.0ms
(sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))
220.0ms
(sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))
218.0ms
(sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))

simplify2.7s

Counts
29 → 69
Calls

29 calls. Slowest were:

251.0ms
(sqrt (* (cbrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1)) (cbrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))))
214.0ms
(sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))
203.0ms
(sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))

prune1.5s

Pruning

2 alts after pruning (1 fresh and 1 done)

Merged error: 0.3b

regimes371.0ms

Accuracy

0% (0.1b remaining)

Error of 0.7b against oracle of 0.7b and baseline of 0.7b

bsearch4.0ms