Average Error: 1.6 → 0.6
Time: 32.2s
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{\frac{1}{2}}{\sqrt{(4 \cdot \left((\left(\frac{\sin kx}{\frac{Om}{\ell}}\right) \cdot \left(\frac{\sin kx}{\frac{Om}{\ell}}\right) + \left(\frac{\sin ky}{\frac{Om}{\ell}} \cdot \frac{\sin ky}{\frac{Om}{\ell}}\right))_*\right) + 1)_*}} + \frac{1}{2}}\]

Error

Bits error versus l

Bits error versus Om

Bits error versus kx

Bits error versus ky

Derivation

  1. Initial program 1.6

    \[\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.6

    \[\leadsto \sqrt{\frac{1}{2} + \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)_*}}}\]
  3. Taylor expanded around inf 16.8

    \[\leadsto \sqrt{\frac{1}{2} + \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)}}}}\]
  4. Simplified0.6

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

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

Reproduce

herbie shell --seed 2018365 +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: 25.2s)Debug log

start151.0ms

Algorithm
intervals

setup388.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 1.6b

localize74.0ms

Local error

Found 4 expressions with local error:

9.1b
(sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))
2.4b
(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.3b
(* (sin kx) (sin kx))

rewrite6.0ms

Algorithm
rewrite-expression-head
Counts
4 → 66
Calls

4 calls. Slowest were:

3.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)))

series728.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

307.0ms
(/ 1/2 (sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1)))
259.0ms
(sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))
137.0ms
(fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1)
25.0ms
(* (sin kx) (sin kx))

simplify3.0s

Counts
35 → 78
Calls

35 calls. Slowest were:

348.0ms
(+ (* 4 (/ (* (pow l 2) (pow (sin ky) 2)) (pow Om 2))) (+ (* 4 (/ (* (pow (sin kx) 2) (pow l 2)) (pow Om 2))) 1))
344.0ms
(+ (* 4 (/ (* (pow l 2) (pow (sin ky) 2)) (pow Om 2))) (+ (* 4 (/ (* (pow (sin kx) 2) (pow l 2)) (pow Om 2))) 1))
296.0ms
(sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))

prune1.4s

Pruning

3 alts after pruning (3 fresh and 0 done)

Merged error: 0.7b

localize52.0ms

Local error

Found 4 expressions with local error:

9.1b
(sqrt (fma 4 (fma (/ (sin kx) (/ Om l)) (/ (sin kx) (/ Om l)) (* (/ (sin ky) (/ Om l)) (/ (sin ky) (/ Om l)))) 1))
3.9b
(/ (sin ky) (/ Om l))
3.9b
(/ (sin ky) (/ Om l))
2.3b
(/ (sin kx) (/ Om l))

rewrite21.0ms

Algorithm
rewrite-expression-head
Counts
4 → 116
Calls

4 calls. Slowest were:

6.0ms
(/ (sin ky) (/ Om l))
6.0ms
(/ (sin ky) (/ Om l))
6.0ms
(/ (sin kx) (/ Om l))

series527.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

286.0ms
(sqrt (fma 4 (fma (/ (sin kx) (/ Om l)) (/ (sin kx) (/ Om l)) (* (/ (sin ky) (/ Om l)) (/ (sin ky) (/ Om l)))) 1))
93.0ms
(/ (sin ky) (/ Om l))
86.0ms
(/ (sin ky) (/ Om l))
62.0ms
(/ (sin kx) (/ Om l))

simplify2.3s

Counts
112 → 128
Calls

112 calls. Slowest were:

264.0ms
(- (/ (* ky l) Om) (* 1/6 (/ (* (pow ky 3) l) Om)))
243.0ms
(- (/ (* ky l) Om) (* 1/6 (/ (* (pow ky 3) l) Om)))
222.0ms
(/ (* (* (sin ky) (sin ky)) (sin ky)) (* (* (/ Om l) (/ Om l)) (/ Om l)))

prune2.7s

Pruning

3 alts after pruning (2 fresh and 1 done)

Merged error: 0.7b

localize58.0ms

Local error

Found 4 expressions with local error:

3.9b
(/ (sin ky) (/ Om l))
3.9b
(/ (sin ky) (/ Om l))
2.3b
(/ (sin kx) (/ Om l))
2.3b
(/ (sin kx) (/ Om l))

rewrite28.0ms

Algorithm
rewrite-expression-head
Counts
4 → 136
Calls

4 calls. Slowest were:

6.0ms
(/ (sin ky) (/ Om l))
6.0ms
(/ (sin kx) (/ Om l))
6.0ms
(/ (sin ky) (/ Om l))

series259.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

72.0ms
(/ (sin kx) (/ Om l))
68.0ms
(/ (sin ky) (/ Om l))
61.0ms
(/ (sin kx) (/ Om l))
58.0ms
(/ (sin ky) (/ Om l))

simplify2.6s

Counts
140 → 148
Calls

140 calls. Slowest were:

273.0ms
(/ (* (* (sin kx) (sin kx)) (sin kx)) (* (* (/ Om l) (/ Om l)) (/ Om l)))
262.0ms
(- (/ (* ky l) Om) (* 1/6 (/ (* (pow ky 3) l) Om)))
245.0ms
(/ (* (* (sin kx) (sin kx)) (sin kx)) (* (* (/ Om l) (/ Om l)) (/ Om l)))

prune3.8s

Pruning

3 alts after pruning (1 fresh and 2 done)

Merged error: 0.7b

localize44.0ms

Local error

Found 4 expressions with local error:

9.1b
(sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))
9.1b
(sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))
9.1b
(sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))
8.4b
(cbrt (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 → 58
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:

321.0ms
(cbrt (sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1)))
264.0ms
(sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))
248.0ms
(sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))
224.0ms
(sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))

simplify3.7s

Counts
30 → 70
Calls

30 calls. Slowest were:

278.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))))
272.0ms
(cbrt (sqrt (sqrt (fma (* (* l (/ 2 Om)) (* l (/ 2 Om))) (fma (sin ky) (sin ky) (* (sin kx) (sin kx))) 1))))
260.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 (0 fresh and 3 done)

Merged error: 0.7b

regimes419.0ms

Accuracy

0% (0.0b remaining)

Error of 0.6b against oracle of 0.6b and baseline of 0.6b

bsearch4.0ms