Average Error: 13.7 → 8.5
Time: 36.6s
Precision: 64
Internal Precision: 128
\[w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}}\]
\[\begin{array}{l} \mathbf{if}\;\frac{h}{\ell} \le -2.508047645768094 \cdot 10^{+140}:\\ \;\;\;\;w0 \cdot \sqrt{1 - \left(h \cdot {\left(\frac{M}{2} \cdot \frac{D}{d}\right)}^{2}\right) \cdot \frac{1}{\ell}}\\ \mathbf{elif}\;\frac{h}{\ell} \le -4.485396369295968 \cdot 10^{-252}:\\ \;\;\;\;w0 \cdot \sqrt{1 - \frac{M \cdot D}{d \cdot 2} \cdot \left(\frac{M \cdot D}{d \cdot 2} \cdot \frac{h}{\ell}\right)}\\ \mathbf{else}:\\ \;\;\;\;w0\\ \end{array}\]

Error

Bits error versus w0

Bits error versus M

Bits error versus D

Bits error versus h

Bits error versus l

Bits error versus d

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 3 regimes
  2. if (/ h l) < -2.508047645768094e+140

    1. Initial program 32.9

      \[w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}}\]
    2. Using strategy rm
    3. Applied div-inv32.9

      \[\leadsto w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \color{blue}{\left(h \cdot \frac{1}{\ell}\right)}}\]
    4. Applied associate-*r*19.3

      \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left({\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot h\right) \cdot \frac{1}{\ell}}}\]
    5. Using strategy rm
    6. Applied times-frac19.6

      \[\leadsto w0 \cdot \sqrt{1 - \left({\color{blue}{\left(\frac{M}{2} \cdot \frac{D}{d}\right)}}^{2} \cdot h\right) \cdot \frac{1}{\ell}}\]

    if -2.508047645768094e+140 < (/ h l) < -4.485396369295968e-252

    1. Initial program 12.1

      \[w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}}\]
    2. Using strategy rm
    3. Applied unpow212.1

      \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{M \cdot D}{2 \cdot d} \cdot \frac{M \cdot D}{2 \cdot d}\right)} \cdot \frac{h}{\ell}}\]
    4. Applied associate-*l*10.5

      \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{M \cdot D}{2 \cdot d} \cdot \left(\frac{M \cdot D}{2 \cdot d} \cdot \frac{h}{\ell}\right)}}\]

    if -4.485396369295968e-252 < (/ h l)

    1. Initial program 8.8

      \[w0 \cdot \sqrt{1 - {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2} \cdot \frac{h}{\ell}}\]
    2. Taylor expanded around 0 3.9

      \[\leadsto \color{blue}{w0}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification8.5

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{h}{\ell} \le -2.508047645768094 \cdot 10^{+140}:\\ \;\;\;\;w0 \cdot \sqrt{1 - \left(h \cdot {\left(\frac{M}{2} \cdot \frac{D}{d}\right)}^{2}\right) \cdot \frac{1}{\ell}}\\ \mathbf{elif}\;\frac{h}{\ell} \le -4.485396369295968 \cdot 10^{-252}:\\ \;\;\;\;w0 \cdot \sqrt{1 - \frac{M \cdot D}{d \cdot 2} \cdot \left(\frac{M \cdot D}{d \cdot 2} \cdot \frac{h}{\ell}\right)}\\ \mathbf{else}:\\ \;\;\;\;w0\\ \end{array}\]

Reproduce

herbie shell --seed 2019004 
(FPCore (w0 M D h l d)
  :name "Henrywood and Agarwal, Equation (9a)"
  (* w0 (sqrt (- 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l))))))

Details

Time bar (total: 35.1s)Debug log

sample103.0ms

Algorithm
intervals

simplify93.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

93.0ms
(* w0 (sqrt (- 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l)))))

prune22.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 14.4b

localize56.0ms

Local error

Found 4 expressions with local error:

10.7b
(* (pow (/ (* M D) (* 2 d)) 2) (/ h l))
6.2b
(/ (* M D) (* 2 d))
4.7b
(sqrt (- 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l))))
2.4b
(* w0 (sqrt (- 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l)))))

rewrite24.0ms

Algorithm
rewrite-expression-head
Counts
4 → 72
Calls

4 calls. Slowest were:

10.0ms
(* (pow (/ (* M D) (* 2 d)) 2) (/ h l))
5.0ms
(/ (* M D) (* 2 d))
5.0ms
(* w0 (sqrt (- 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l)))))

series476.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

225.0ms
(* w0 (sqrt (- 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l)))))
165.0ms
(sqrt (- 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l))))
59.0ms
(* (pow (/ (* M D) (* 2 d)) 2) (/ h l))
26.0ms
(/ (* M D) (* 2 d))

simplify4.5s

Counts
47 → 84
Calls

47 calls. Slowest were:

816.0ms
(sqrt (+ 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l))))
404.0ms
(+ (log (pow (/ (* M D) (* 2 d)) 2)) (log (/ h l)))
302.0ms
(+ (* (- (log (* M D)) (log (* 2 d))) 2) (log (/ h l)))

prune1.4s

Pruning

9 alts after pruning (9 fresh and 0 done)

Merged error: 7.6b

localize29.0ms

Local error

Found 4 expressions with local error:

6.2b
(/ (* M D) (* 2 d))
6.2b
(* (* (pow (/ (* M D) (* 2 d)) 2) h) (/ 1 l))
5.3b
(* (pow (/ (* M D) (* 2 d)) 2) h)
4.7b
(sqrt (- 1 (* (* (pow (/ (* M D) (* 2 d)) 2) h) (/ 1 l))))

rewrite43.0ms

Algorithm
rewrite-expression-head
Counts
4 → 64
Calls

4 calls. Slowest were:

17.0ms
(* (* (pow (/ (* M D) (* 2 d)) 2) h) (/ 1 l))
12.0ms
(* (pow (/ (* M D) (* 2 d)) 2) h)
9.0ms
(/ (* M D) (* 2 d))

series291.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

134.0ms
(sqrt (- 1 (* (* (pow (/ (* M D) (* 2 d)) 2) h) (/ 1 l))))
71.0ms
(* (* (pow (/ (* M D) (* 2 d)) 2) h) (/ 1 l))
58.0ms
(* (pow (/ (* M D) (* 2 d)) 2) h)
28.0ms
(/ (* M D) (* 2 d))

simplify4.1s

Counts
38 → 76
Calls

38 calls. Slowest were:

609.0ms
(+ (log (* (pow (/ (* M D) (* 2 d)) 2) h)) (log (/ 1 l)))
346.0ms
(* 1/4 (/ (* (pow M 2) (* (pow D 2) h)) (pow d 2)))
333.0ms
(* 1/4 (/ (* (pow M 2) (* (pow D 2) h)) (pow d 2)))

prune1.2s

Pruning

9 alts after pruning (9 fresh and 0 done)

Merged error: 7.1b

localize33.0ms

Local error

Found 4 expressions with local error:

6.2b
(/ (* M D) (* 2 d))
6.2b
(/ (* M D) (* 2 d))
6.2b
(* (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) (/ 1 l))
4.7b
(sqrt (- 1 (* (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) (/ 1 l))))

rewrite71.0ms

Algorithm
rewrite-expression-head
Counts
4 → 73
Calls

4 calls. Slowest were:

51.0ms
(* (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) (/ 1 l))
5.0ms
(/ (* M D) (* 2 d))
5.0ms
(/ (* M D) (* 2 d))

series248.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

130.0ms
(sqrt (- 1 (* (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) (/ 1 l))))
66.0ms
(* (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) (/ 1 l))
29.0ms
(/ (* M D) (* 2 d))
24.0ms
(/ (* M D) (* 2 d))

simplify7.6s

Counts
48 → 85
Calls

48 calls. Slowest were:

1.2s
(* (* (/ (* (* (* M D) (* M D)) (* M D)) (* (* (* 2 d) (* 2 d)) (* 2 d))) (* (* (* (/ (* M D) (* 2 d)) h) (* (/ (* M D) (* 2 d)) h)) (* (/ (* M D) (* 2 d)) h))) (* (* (/ 1 l) (/ 1 l)) (/ 1 l)))
728.0ms
(* (* (* (* (/ (* M D) (* 2 d)) (/ (* M D) (* 2 d))) (/ (* M D) (* 2 d))) (* (* (* (/ (* M D) (* 2 d)) h) (* (/ (* M D) (* 2 d)) h)) (* (/ (* M D) (* 2 d)) h))) (* (* (/ 1 l) (/ 1 l)) (/ 1 l)))
708.0ms
(sqrt (- (pow 1 3) (pow (* (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) (/ 1 l)) 3)))

prune1.3s

Pruning

9 alts after pruning (9 fresh and 0 done)

Merged error: 7.1b

localize29.0ms

Local error

Found 4 expressions with local error:

28.1b
(cbrt (* (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) (/ 1 l)))
28.1b
(cbrt (* (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) (/ 1 l)))
28.1b
(cbrt (* (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) (/ 1 l)))
6.2b
(/ (* M D) (* 2 d))

rewrite107.0ms

Algorithm
rewrite-expression-head
Counts
4 → 66
Calls

4 calls. Slowest were:

36.0ms
(cbrt (* (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) (/ 1 l)))
36.0ms
(cbrt (* (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) (/ 1 l)))
27.0ms
(cbrt (* (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) (/ 1 l)))

series763.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

262.0ms
(cbrt (* (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) (/ 1 l)))
258.0ms
(cbrt (* (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) (/ 1 l)))
225.0ms
(cbrt (* (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) (/ 1 l)))
17.0ms
(/ (* M D) (* 2 d))

simplify6.2s

Counts
43 → 78
Calls

43 calls. Slowest were:

436.0ms
(* (exp (* 1/3 (- (+ (log (/ -1 l)) (* 2 (log (/ -1 d)))) (+ (* 2 (log (/ -1 M))) (+ (* 2 (log (/ -1 D))) (log (/ -1 h))))))) (cbrt 1/4))
432.0ms
(* (exp (* 1/3 (- (+ (log (/ -1 l)) (* 2 (log (/ -1 d)))) (+ (* 2 (log (/ -1 M))) (+ (* 2 (log (/ -1 D))) (log (/ -1 h))))))) (cbrt 1/4))
430.0ms
(* (exp (* 1/3 (- (+ (log (/ -1 l)) (* 2 (log (/ -1 d)))) (+ (* 2 (log (/ -1 M))) (+ (* 2 (log (/ -1 D))) (log (/ -1 h))))))) (cbrt 1/4))

prune1.3s

Pruning

9 alts after pruning (8 fresh and 1 done)

Merged error: 7.1b

regimes2.0s

Accuracy

19.4% (1.5b remaining)

Error of 8.5b against oracle of 7.0b and baseline of 8.9b

bsearch5.0ms

end0.0ms

sample2.9s

Algorithm
intervals