Average Error: 13.6 → 8.8
Time: 31.4s
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}\;\ell \le -5.796129162796494 \cdot 10^{-121} \lor \neg \left(\ell \le 4.117387300691765 \cdot 10^{+181}\right):\\ \;\;\;\;\sqrt{1 - \frac{\frac{M \cdot D}{d \cdot 2}}{\frac{\ell}{h \cdot \left(\left(\sqrt[3]{\frac{M \cdot D}{d \cdot 2}} \cdot \sqrt[3]{\frac{M \cdot D}{d \cdot 2}}\right) \cdot \sqrt[3]{\frac{M \cdot D}{d \cdot 2}}\right)}}} \cdot w0\\ \mathbf{else}:\\ \;\;\;\;w0 \cdot \sqrt{1 - \frac{h \cdot {\left(\frac{M}{2} \cdot \frac{D}{d}\right)}^{2}}{\ell}}\\ \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 2 regimes
  2. if l < -5.796129162796494e-121 or 4.117387300691765e+181 < l

    1. Initial program 10.3

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

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

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

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

      \[\leadsto w0 \cdot \sqrt{1 - \color{blue}{\frac{\frac{M \cdot D}{2 \cdot d}}{\frac{\ell}{\frac{M \cdot D}{2 \cdot d} \cdot h}}}}\]
    9. Using strategy rm
    10. Applied add-cube-cbrt7.3

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

    if -5.796129162796494e-121 < l < 4.117387300691765e+181

    1. Initial program 16.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 associate-*r/10.6

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

      \[\leadsto w0 \cdot \sqrt{1 - \frac{{\color{blue}{\left(\frac{M}{2} \cdot \frac{D}{d}\right)}}^{2} \cdot h}{\ell}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification8.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;\ell \le -5.796129162796494 \cdot 10^{-121} \lor \neg \left(\ell \le 4.117387300691765 \cdot 10^{+181}\right):\\ \;\;\;\;\sqrt{1 - \frac{\frac{M \cdot D}{d \cdot 2}}{\frac{\ell}{h \cdot \left(\left(\sqrt[3]{\frac{M \cdot D}{d \cdot 2}} \cdot \sqrt[3]{\frac{M \cdot D}{d \cdot 2}}\right) \cdot \sqrt[3]{\frac{M \cdot D}{d \cdot 2}}\right)}}} \cdot w0\\ \mathbf{else}:\\ \;\;\;\;w0 \cdot \sqrt{1 - \frac{h \cdot {\left(\frac{M}{2} \cdot \frac{D}{d}\right)}^{2}}{\ell}}\\ \end{array}\]

Reproduce

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

sample182.0ms

Algorithm
intervals
Results
414×(pre true 80)
315×(body real 80)
99×(body nan 80)

simplify76.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
76.0ms
(* w0 (sqrt (- 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l)))))

prune16.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 13.8b

localize38.0ms

Local error

Found 4 expressions with local error:

12.2b
(* (pow (/ (* M D) (* 2 d)) 2) (/ h l))
7.0b
(/ (* M D) (* 2 d))
4.2b
(sqrt (- 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l))))
1.5b
(* w0 (sqrt (- 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l)))))

rewrite21.0ms

Algorithm
rewrite-expression-head
Rules
14×add-exp-log
11×add-sqr-sqrt
10×add-cube-cbrt
10×associate-*r*
10×*-un-lft-identity
associate-*l*
add-cbrt-cube
sqrt-prod
unpow-prod-down
add-log-exp
log1p-expm1-u
prod-exp
sqrt-div
pow1
expm1-log1p-u
div-inv
associate-*r/
flip--
*-commutative
pow-exp
div-exp
flip3--
times-frac
unpow2
associate-/l*
cbrt-unprod
pow1/2
frac-2neg
associate-/r*
clear-num
rem-sqrt-square
cbrt-undiv
pow-to-exp
Counts
4 → 80
Calls
4 calls:
Slowest
6.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)))))
4.0ms
(sqrt (- 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l))))

series442.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
215.0ms
(* w0 (sqrt (- 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l)))))
116.0ms
(sqrt (- 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l))))
93.0ms
(* (pow (/ (* M D) (* 2 d)) 2) (/ h l))
17.0ms
(/ (* M D) (* 2 d))

simplify4.8s

Counts
47 → 92
Calls
47 calls:
Slowest
847.0ms
(sqrt (+ 1 (* (pow (/ (* M D) (* 2 d)) 2) (/ h l))))
375.0ms
(+ (log (pow (/ (* M D) (* 2 d)) 2)) (log (/ h l)))
368.0ms
(+ (* (- (log (* M D)) (log (* 2 d))) 2) (log (/ h l)))
261.0ms
(sqrt (pow (/ (* M D) (* 2 d)) 2))
245.0ms
(+ (* (log (/ (* M D) (* 2 d))) 2) (log (/ h l)))

prune1.3s

Pruning

12 alts after pruning (12 fresh and 0 done)

Merged error: 7.3b

localize15.0ms

Local error

Found 4 expressions with local error:

7.0b
(/ (* M D) (* 2 d))
6.2b
(* (pow (/ (* M D) (* 2 d)) 2) h)
4.4b
(/ (* (pow (/ (* M D) (* 2 d)) 2) h) l)
4.2b
(sqrt (- 1 (/ (* (pow (/ (* M D) (* 2 d)) 2) h) l)))

rewrite15.0ms

Algorithm
rewrite-expression-head
Rules
associate-*l*
add-sqr-sqrt
add-cube-cbrt
*-un-lft-identity
add-exp-log
add-cbrt-cube
unpow-prod-down
add-log-exp
log1p-expm1-u
pow1
expm1-log1p-u
div-inv
sqrt-prod
associate-/l*
sqrt-div
times-frac
frac-2neg
clear-num
unpow2
flip--
*-commutative
div-exp
pow1/2
flip3--
associate-/r*
rem-sqrt-square
cbrt-undiv
Counts
4 → 65
Calls
4 calls:
Slowest
6.0ms
(/ (* (pow (/ (* M D) (* 2 d)) 2) h) l)
4.0ms
(* (pow (/ (* M D) (* 2 d)) 2) h)
3.0ms
(/ (* M D) (* 2 d))
2.0ms
(sqrt (- 1 (/ (* (pow (/ (* M D) (* 2 d)) 2) h) l)))

series312.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
127.0ms
(sqrt (- 1 (/ (* (pow (/ (* M D) (* 2 d)) 2) h) l)))
87.0ms
(/ (* (pow (/ (* M D) (* 2 d)) 2) h) l)
81.0ms
(* (pow (/ (* M D) (* 2 d)) 2) h)
16.0ms
(/ (* M D) (* 2 d))

simplify4.8s

Counts
31 → 77
Calls
31 calls:
Slowest
712.0ms
(sqrt (- 1 (/ (* (pow (/ (* M D) (* 2 d)) 2) h) l)))
669.0ms
(sqrt (sqrt (- 1 (/ (* (pow (/ (* M D) (* 2 d)) 2) h) l))))
638.0ms
(sqrt (* (cbrt (- 1 (/ (* (pow (/ (* M D) (* 2 d)) 2) h) l))) (cbrt (- 1 (/ (* (pow (/ (* M D) (* 2 d)) 2) h) l)))))
323.0ms
(sqrt (pow (/ (* M D) (* 2 d)) 2))
317.0ms
(* 1/4 (/ (* (pow M 2) (* (pow D 2) h)) (pow d 2)))

prune1.3s

Pruning

14 alts after pruning (14 fresh and 0 done)

Merged error: 6.2b

localize15.0ms

Local error

Found 4 expressions with local error:

7.0b
(/ (* M D) (* 2 d))
7.0b
(/ (* M D) (* 2 d))
6.5b
(* (/ (* M D) (* 2 d)) h)
4.4b
(/ (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) l)

rewrite27.0ms

Algorithm
rewrite-expression-head
Rules
add-exp-log
add-cbrt-cube
add-cube-cbrt
associate-*l*
*-un-lft-identity
add-sqr-sqrt
add-log-exp
div-inv
log1p-expm1-u
associate-*l/
pow1
expm1-log1p-u
associate-/l/
associate-/l*
times-frac
frac-2neg
clear-num
div-exp
associate-/r*
cbrt-undiv
*-commutative
associate-*r/
frac-times
Counts
4 → 66
Calls
4 calls:
Slowest
15.0ms
(/ (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) l)
6.0ms
(* (/ (* M D) (* 2 d)) h)
3.0ms
(/ (* M D) (* 2 d))
3.0ms
(/ (* M D) (* 2 d))

series148.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
70.0ms
(/ (* (/ (* M D) (* 2 d)) (* (/ (* M D) (* 2 d)) h)) l)
36.0ms
(* (/ (* M D) (* 2 d)) h)
22.0ms
(/ (* M D) (* 2 d))
20.0ms
(/ (* M D) (* 2 d))

simplify3.2s

Counts
29 → 78
Calls
29 calls:
Slowest
628.0ms
(* (* M D) (* (/ (* M D) (* 2 d)) h))
483.0ms
(* (/ (* M D) (* 2 d)) (* (* M D) h))
289.0ms
(* 1/2 (/ (* M (* D h)) d))
261.0ms
(* 1/2 (/ (* M (* D h)) d))
201.0ms
(* 1/2 (/ (* M (* D h)) d))

prune1.2s

Pruning

15 alts after pruning (15 fresh and 0 done)

Merged error: 6.0b

localize28.0ms

Local error

Found 4 expressions with local error:

7.0b
(/ (* M D) (* 2 d))
7.0b
(/ (* M D) (* 2 d))
6.5b
(* (/ (* M D) (* 2 d)) h)
4.2b
(sqrt (- 1 (/ (/ (* M D) (* 2 d)) (/ l (* (/ (* M D) (* 2 d)) h)))))

rewrite16.0ms

Algorithm
rewrite-expression-head
Rules
add-exp-log
add-cbrt-cube
add-sqr-sqrt
add-cube-cbrt
*-un-lft-identity
associate-*l*
add-log-exp
log1p-expm1-u
pow1
expm1-log1p-u
div-inv
sqrt-prod
times-frac
associate-/l*
div-exp
sqrt-div
frac-2neg
associate-/r*
clear-num
cbrt-undiv
flip--
*-commutative
associate-*l/
pow1/2
flip3--
rem-sqrt-square
Counts
4 → 66
Calls
4 calls:
Slowest
6.0ms
(sqrt (- 1 (/ (/ (* M D) (* 2 d)) (/ l (* (/ (* M D) (* 2 d)) h)))))
4.0ms
(* (/ (* M D) (* 2 d)) h)
3.0ms
(/ (* M D) (* 2 d))
3.0ms
(/ (* M D) (* 2 d))

series268.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
167.0ms
(sqrt (- 1 (/ (/ (* M D) (* 2 d)) (/ l (* (/ (* M D) (* 2 d)) h)))))
53.0ms
(* (/ (* M D) (* 2 d)) h)
30.0ms
(/ (* M D) (* 2 d))
17.0ms
(/ (* M D) (* 2 d))

simplify2.7s

Counts
31 → 78
Calls
31 calls:
Slowest
279.0ms
(* 1/2 (/ (* M (* D h)) d))
268.0ms
(sqrt (- (pow 1 3) (pow (/ (/ (* M D) (* 2 d)) (/ l (* (/ (* M D) (* 2 d)) h))) 3)))
262.0ms
(* 1/2 (/ (* M (* D h)) d))
234.0ms
(sqrt (- (* 1 1) (* (/ (/ (* M D) (* 2 d)) (/ l (* (/ (* M D) (* 2 d)) h))) (/ (/ (* M D) (* 2 d)) (/ l (* (/ (* M D) (* 2 d)) h))))))
230.0ms
(/ (* (* (* M D) (* M D)) (* M D)) (* (* (* 2 d) (* 2 d)) (* 2 d)))

prune1.2s

Pruning

13 alts after pruning (13 fresh and 0 done)

Merged error: 6.0b

regimes2.9s

Accuracy

-26.3% (1.8b remaining)

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

bsearch391.0ms

end0.0ms

sample3.9s

Algorithm
intervals
Results
12346×(pre true 80)
9330×(body real 80)
3016×(body nan 80)