Average Error: 13.7 → 8.2
Time: 39.7s
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} = -\infty:\\ \;\;\;\;\sqrt{1 - \sqrt[3]{\left(\left(\frac{M \cdot D}{2 \cdot d} \cdot h\right) \cdot \frac{M \cdot D}{2 \cdot d}\right) \cdot \frac{1}{\ell}} \cdot \left(\sqrt[3]{\left(\left(\frac{M \cdot D}{2 \cdot d} \cdot h\right) \cdot \frac{M \cdot D}{2 \cdot d}\right) \cdot \frac{1}{\ell}} \cdot \sqrt[3]{\left(\left(\frac{M \cdot D}{2 \cdot d} \cdot h\right) \cdot \frac{M \cdot D}{2 \cdot d}\right) \cdot \frac{1}{\ell}}\right)} \cdot w0\\ \mathbf{elif}\;\frac{h}{\ell} \le -4.485396369295968 \cdot 10^{-252}:\\ \;\;\;\;\left|\sqrt{(\left(\frac{M}{d} \cdot \frac{D}{2}\right) \cdot \left(\left(-\frac{h}{\ell}\right) \cdot \left(\frac{M}{d} \cdot \frac{D}{2}\right)\right) + 1)_*}\right| \cdot w0\\ \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

Derivation

  1. Split input into 3 regimes
  2. if (/ h l) < -inf.0

    1. Initial program 61.5

      \[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-inv61.5

      \[\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*24.8

      \[\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 unpow224.8

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

      \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{M \cdot D}{2 \cdot d} \cdot \left(\frac{M \cdot D}{2 \cdot d} \cdot h\right)\right)} \cdot \frac{1}{\ell}}\]
    8. Using strategy rm
    9. Applied add-cube-cbrt21.4

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

    if -inf.0 < (/ h l) < -4.485396369295968e-252

    1. Initial program 12.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-inv12.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*14.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 unpow214.3

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

      \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\left(\frac{M \cdot D}{2 \cdot d} \cdot \left(\frac{M \cdot D}{2 \cdot d} \cdot h\right)\right)} \cdot \frac{1}{\ell}}\]
    8. Using strategy rm
    9. Applied add-sqr-sqrt13.7

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

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

      \[\leadsto w0 \cdot \left|\color{blue}{\sqrt{(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \left(\left(\frac{D}{2} \cdot \frac{M}{d}\right) \cdot \left(-\frac{h}{\ell}\right)\right) + 1)_*}}\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.2

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

Reproduce

herbie shell --seed 2019004 +o rules:numerics
(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: 38.1s)Debug log

sample145.0ms

Algorithm
intervals

simplify83.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

83.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

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

rewrite25.0ms

Algorithm
rewrite-expression-head
Counts
4 → 80
Calls

4 calls. Slowest were:

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

series435.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

195.0ms
(* w0 (sqrt (- 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l)))))
122.0ms
(sqrt (- 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l))))
90.0ms
(* (pow (/ (* M D) (* 2 d)) 2) (/ h l))
28.0ms
(/ (* M D) (* 2 d))

simplify4.3s

Counts
47 → 92
Calls

47 calls. Slowest were:

715.0ms
(sqrt (+ 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l))))
394.0ms
(+ (log (pow (/ (* M D) (* 2 d)) 2)) (log (/ h l)))
369.0ms
(+ (* (- (log (* M D)) (log (* 2 d))) 2) (log (/ h l)))

prune1.6s

Pruning

9 alts after pruning (9 fresh and 0 done)

Merged error: 7.6b

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

rewrite19.0ms

Algorithm
rewrite-expression-head
Counts
4 → 72
Calls

4 calls. Slowest were:

9.0ms
(* (* (pow (/ (* M D) (* 2 d)) 2) h) (/ 1 l))
5.0ms
(* (pow (/ (* M D) (* 2 d)) 2) h)
3.0ms
(/ (* M D) (* 2 d))

series248.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

125.0ms
(sqrt (- 1 (* (* (pow (/ (* M D) (* 2 d)) 2) h) (/ 1 l))))
56.0ms
(* (pow (/ (* M D) (* 2 d)) 2) h)
52.0ms
(* (* (pow (/ (* M D) (* 2 d)) 2) h) (/ 1 l))
16.0ms
(/ (* M D) (* 2 d))

simplify3.8s

Counts
38 → 84
Calls

38 calls. Slowest were:

592.0ms
(+ (log (* (pow (/ (* M D) (* 2 d)) 2) h)) (log (/ 1 l)))
302.0ms
(* 1/4 (/ (* (pow M 2) (* (pow D 2) h)) (pow d 2)))
287.0ms
(* 1/4 (/ (* (pow M 2) (* (pow D 2) h)) (pow d 2)))

prune1.6s

Pruning

9 alts after pruning (9 fresh and 0 done)

Merged error: 7.1b

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

rewrite45.0ms

Algorithm
rewrite-expression-head
Counts
4 → 81
Calls

4 calls. Slowest were:

37.0ms
(* (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) (/ 1 l))
3.0ms
(/ (* M D) (* 2 d))
3.0ms
(/ (* M D) (* 2 d))

series244.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

115.0ms
(sqrt (- 1 (* (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) (/ 1 l))))
86.0ms
(* (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) (/ 1 l))
26.0ms
(/ (* M D) (* 2 d))
17.0ms
(/ (* M D) (* 2 d))

simplify7.4s

Counts
48 → 93
Calls

48 calls. Slowest were:

959.0ms
(* (* (/ (* (* (* 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)))
846.0ms
(* (* (* (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h))) (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h))) (* (* (/ 1 l) (/ 1 l)) (/ 1 l)))
726.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)))

prune1.5s

Pruning

9 alts after pruning (9 fresh and 0 done)

Merged error: 7.1b

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

rewrite65.0ms

Algorithm
rewrite-expression-head
Counts
4 → 74
Calls

4 calls. Slowest were:

24.0ms
(cbrt (* (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) (/ 1 l)))
19.0ms
(cbrt (* (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) (/ 1 l)))
19.0ms
(cbrt (* (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) (/ 1 l)))

series586.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

201.0ms
(cbrt (* (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) (/ 1 l)))
191.0ms
(cbrt (* (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) (/ 1 l)))
179.0ms
(cbrt (* (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) (/ 1 l)))
16.0ms
(/ (* M D) (* 2 d))

simplify7.9s

Counts
43 → 86
Calls

43 calls. Slowest were:

580.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))
533.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))
526.0ms
(* (cbrt 1/4) (exp (* 1/3 (- (+ (log (/ 1 l)) (* 2 (log (/ 1 d)))) (+ (log (/ 1 h)) (+ (* 2 (log (/ 1 M))) (* 2 (log (/ 1 D)))))))))

prune1.8s

Pruning

9 alts after pruning (8 fresh and 1 done)

Merged error: 7.1b

regimes2.3s

Accuracy

31.5% (1.4b remaining)

Error of 8.2b against oracle of 6.9b and baseline of 8.9b

bsearch15.0ms

end0.0ms

sample3.9s

Algorithm
intervals