Average Error: 1.7 → 1.4
Time: 33.4s
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)}\]
\[\begin{array}{l} \mathbf{if}\;{\left(\frac{2 \cdot \ell}{Om}\right)}^{2} \le 7.382935019665496 \cdot 10^{+203}:\\ \;\;\;\;\sqrt{\left(1 + \frac{\frac{1}{\sqrt{\sqrt{\left({\left(\sin ky\right)}^{2} + {\left(\sin kx\right)}^{2}\right) \cdot {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} + 1}}}}{\sqrt{\sqrt{\left({\left(\sin ky\right)}^{2} + {\left(\sin kx\right)}^{2}\right) \cdot {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} + 1}}}\right) \cdot \frac{1}{2}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{\frac{1}{2} \cdot \left(1 + \frac{1}{\sqrt{\left(4 \cdot \left(\ell \cdot \ell\right)\right) \cdot \left(\frac{kx}{Om} \cdot \frac{kx}{Om} + \frac{ky}{Om} \cdot \frac{ky}{Om}\right) + 1}}\right)}\\ \end{array}\]

Error

Bits error versus l

Bits error versus Om

Bits error versus kx

Bits error versus ky

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if (pow (/ (* 2 l) Om) 2) < 7.382935019665496e+203

    1. Initial program 1.1

      \[\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. Using strategy rm
    3. Applied add-sqr-sqrt1.1

      \[\leadsto \sqrt{\frac{1}{2} \cdot \left(1 + \frac{1}{\color{blue}{\sqrt{\sqrt{1 + {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} \cdot \left({\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}\right)}} \cdot \sqrt{\sqrt{1 + {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} \cdot \left({\left(\sin kx\right)}^{2} + {\left(\sin ky\right)}^{2}\right)}}}}\right)}\]
    4. Applied associate-/r*1.1

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

    if 7.382935019665496e+203 < (pow (/ (* 2 l) Om) 2)

    1. Initial program 2.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. Taylor expanded around 0 23.2

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

      \[\leadsto \sqrt{\frac{1}{2} \cdot \left(1 + \frac{1}{\sqrt{1 + \color{blue}{\left(\left(\ell \cdot \ell\right) \cdot 4\right) \cdot \left(\frac{ky}{Om} \cdot \frac{ky}{Om} + \frac{kx}{Om} \cdot \frac{kx}{Om}\right)}}}\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification1.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;{\left(\frac{2 \cdot \ell}{Om}\right)}^{2} \le 7.382935019665496 \cdot 10^{+203}:\\ \;\;\;\;\sqrt{\left(1 + \frac{\frac{1}{\sqrt{\sqrt{\left({\left(\sin ky\right)}^{2} + {\left(\sin kx\right)}^{2}\right) \cdot {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} + 1}}}}{\sqrt{\sqrt{\left({\left(\sin ky\right)}^{2} + {\left(\sin kx\right)}^{2}\right) \cdot {\left(\frac{2 \cdot \ell}{Om}\right)}^{2} + 1}}}\right) \cdot \frac{1}{2}}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{\frac{1}{2} \cdot \left(1 + \frac{1}{\sqrt{\left(4 \cdot \left(\ell \cdot \ell\right)\right) \cdot \left(\frac{kx}{Om} \cdot \frac{kx}{Om} + \frac{ky}{Om} \cdot \frac{ky}{Om}\right) + 1}}\right)}\\ \end{array}\]

Reproduce

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

sample95.0ms

Algorithm
intervals

simplify272.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

271.0ms
(sqrt (* (/ 1 2) (+ 1 (/ 1 (sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2)))))))))

prune25.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 2.3b

localize83.0ms

Local error

Found 4 expressions with local error:

10.8b
(sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
2.9b
(* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2)))
0.5b
(/ 1 (sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2))))))
0.3b
(pow (sin kx) 2)

rewrite20.0ms

Algorithm
rewrite-expression-head
Counts
4 → 79
Calls

4 calls. Slowest were:

14.0ms
(* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2)))
2.0ms
(sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
1.0ms
(/ 1 (sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2))))))

series666.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

272.0ms
(/ 1 (sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2))))))
202.0ms
(sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
176.0ms
(* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2)))
16.0ms
(pow (sin kx) 2)

simplify6.3s

Counts
53 → 91
Calls

53 calls. Slowest were:

576.0ms
(* (pow (/ (* 2 l) Om) 2) (pow (sin ky) 2))
498.0ms
(* (pow (sin ky) 2) (pow (/ (* 2 l) Om) 2))
372.0ms
(sqrt (- 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2)))))

prune1.7s

Pruning

3 alts after pruning (3 fresh and 0 done)

Merged error: 0.9b

localize45.0ms

Local error

Found 4 expressions with local error:

10.8b
(sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
10.8b
(sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
5.0b
(sqrt (sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2))))))
5.0b
(sqrt (sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2))))))

rewrite9.0ms

Algorithm
rewrite-expression-head
Counts
4 → 64
Calls

4 calls. Slowest were:

2.0ms
(sqrt (sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2))))))
2.0ms
(sqrt (sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2))))))
1.0ms
(sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2)))))

series1.2s

Counts
4 → 12
Calls

4 calls. Slowest were:

358.0ms
(sqrt (sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2))))))
337.0ms
(sqrt (sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2))))))
235.0ms
(sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2)))))
229.0ms
(sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2)))))

simplify6.0s

Counts
44 → 76
Calls

44 calls. Slowest were:

322.0ms
(exp (* 1/4 (- (+ (* 2 (log (/ 1 Om))) (log (+ (* 4 (pow (sin ky) 2)) (* 4 (pow (sin kx) 2))))) (* 2 (log (/ 1 l))))))
286.0ms
(exp (* 1/4 (- (+ (* 2 (log (/ 1 Om))) (log (+ (* 4 (pow (sin ky) 2)) (* 4 (pow (sin kx) 2))))) (* 2 (log (/ 1 l))))))
285.0ms
(sqrt (* (cbrt (sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2)))))) (cbrt (sqrt (+ 1 (* (pow (/ (* 2 l) Om) 2) (+ (pow (sin kx) 2) (pow (sin ky) 2))))))))

prune1.9s

Pruning

3 alts after pruning (2 fresh and 1 done)

Merged error: 0.9b

localize77.0ms

Local error

Found 4 expressions with local error:

12.8b
(* (* (* l l) 4) (+ (* (/ ky Om) (/ ky Om)) (* (/ kx Om) (/ kx Om))))
11.2b
(sqrt (+ 1 (* (* (* l l) 4) (+ (* (/ ky Om) (/ ky Om)) (* (/ kx Om) (/ kx Om))))))
0.8b
(/ 1 (sqrt (+ 1 (* (* (* l l) 4) (+ (* (/ ky Om) (/ ky Om)) (* (/ kx Om) (/ kx Om)))))))
0.3b
(* (/ ky Om) (/ ky Om))

rewrite41.0ms

Algorithm
rewrite-expression-head
Counts
4 → 89
Calls

4 calls. Slowest were:

29.0ms
(* (* (* l l) 4) (+ (* (/ ky Om) (/ ky Om)) (* (/ kx Om) (/ kx Om))))
6.0ms
(* (/ ky Om) (/ ky Om))
2.0ms
(/ 1 (sqrt (+ 1 (* (* (* l l) 4) (+ (* (/ ky Om) (/ ky Om)) (* (/ kx Om) (/ kx Om)))))))

series345.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

134.0ms
(sqrt (+ 1 (* (* (* l l) 4) (+ (* (/ ky Om) (/ ky Om)) (* (/ kx Om) (/ kx Om))))))
101.0ms
(/ 1 (sqrt (+ 1 (* (* (* l l) 4) (+ (* (/ ky Om) (/ ky Om)) (* (/ kx Om) (/ kx Om)))))))
87.0ms
(* (* (* l l) 4) (+ (* (/ ky Om) (/ ky Om)) (* (/ kx Om) (/ kx Om))))
22.0ms
(* (/ ky Om) (/ ky Om))

simplify7.7s

Counts
63 → 101
Calls

63 calls. Slowest were:

894.0ms
(* (* (* (/ ky Om) (/ ky Om)) (/ ky Om)) (* (* (/ ky Om) (/ ky Om)) (/ ky Om)))
627.0ms
(sqrt (+ 1 (* (* (* l l) 4) (+ (* (/ ky Om) (/ ky Om)) (* (/ kx Om) (/ kx Om))))))
568.0ms
(* (* (/ kx Om) (/ kx Om)) (* (* l l) 4))

prune1.4s

Pruning

3 alts after pruning (1 fresh and 2 done)

Merged error: 0.9b

localize20.0ms

Local error

Found 0 expressions with local error:

rewrite0.0ms

Algorithm
rewrite-expression-head
Counts
0 → 0
Calls

0 calls. Slowest were:

series0.0ms

Counts
0 → 0
Calls

0 calls. Slowest were:

simplify0.0ms

Counts
0 → 0
Calls

0 calls. Slowest were:

prune1.0ms

Pruning

3 alts after pruning (0 fresh and 3 done)

Merged error: 0.9b

regimes1.2s

Accuracy

31.5% (0.6b remaining)

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

bsearch15.0ms

end0.0ms

sample3.5s

Algorithm
intervals