Average Error: 57.9 → 31.8
Time: 1.2m
Precision: 64
Internal Precision: 128
\[\frac{c0}{2 \cdot w} \cdot \left(\frac{c0 \cdot \left(d \cdot d\right)}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)} + \sqrt{\frac{c0 \cdot \left(d \cdot d\right)}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)} \cdot \frac{c0 \cdot \left(d \cdot d\right)}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)} - M \cdot M}\right)\]
\[\begin{array}{l} \mathbf{if}\;\frac{c0}{w \cdot 2} \cdot \left(\sqrt{\frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} \cdot \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} - M \cdot M} + \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)}\right) \le 2.270832920407147 \cdot 10^{+287}:\\ \;\;\;\;\frac{c0}{w \cdot 2} \cdot \left(\sqrt{\frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} \cdot \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} - M \cdot M} + \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)}\right)\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array}\]

Error

Bits error versus c0

Bits error versus w

Bits error versus h

Bits error versus D

Bits error versus d

Bits error versus M

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if (* (/ c0 (* 2 w)) (+ (/ (* c0 (* d d)) (* (* w h) (* D D))) (sqrt (- (* (/ (* c0 (* d d)) (* (* w h) (* D D))) (/ (* c0 (* d d)) (* (* w h) (* D D)))) (* M M))))) < 2.270832920407147e+287

    1. Initial program 33.8

      \[\frac{c0}{2 \cdot w} \cdot \left(\frac{c0 \cdot \left(d \cdot d\right)}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)} + \sqrt{\frac{c0 \cdot \left(d \cdot d\right)}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)} \cdot \frac{c0 \cdot \left(d \cdot d\right)}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)} - M \cdot M}\right)\]

    if 2.270832920407147e+287 < (* (/ c0 (* 2 w)) (+ (/ (* c0 (* d d)) (* (* w h) (* D D))) (sqrt (- (* (/ (* c0 (* d d)) (* (* w h) (* D D))) (/ (* c0 (* d d)) (* (* w h) (* D D)))) (* M M)))))

    1. Initial program 62.7

      \[\frac{c0}{2 \cdot w} \cdot \left(\frac{c0 \cdot \left(d \cdot d\right)}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)} + \sqrt{\frac{c0 \cdot \left(d \cdot d\right)}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)} \cdot \frac{c0 \cdot \left(d \cdot d\right)}{\left(w \cdot h\right) \cdot \left(D \cdot D\right)} - M \cdot M}\right)\]
    2. Initial simplification57.8

      \[\leadsto (\left(\frac{c0}{w \cdot 2}\right) \cdot \left(\sqrt{(\left(\left(\frac{d}{D} \cdot \frac{d}{D}\right) \cdot \frac{\frac{c0}{h}}{w}\right) \cdot \left(\left(\frac{d}{D} \cdot \frac{d}{D}\right) \cdot \frac{\frac{c0}{h}}{w}\right) + \left(M \cdot \left(-M\right)\right))_*}\right) + \left(\frac{c0}{w \cdot 2} \cdot \left(\left(\frac{d}{D} \cdot \frac{d}{D}\right) \cdot \frac{\frac{c0}{h}}{w}\right)\right))_*\]
    3. Taylor expanded around inf 31.4

      \[\leadsto \color{blue}{0}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification31.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{c0}{w \cdot 2} \cdot \left(\sqrt{\frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} \cdot \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} - M \cdot M} + \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)}\right) \le 2.270832920407147 \cdot 10^{+287}:\\ \;\;\;\;\frac{c0}{w \cdot 2} \cdot \left(\sqrt{\frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} \cdot \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)} - M \cdot M} + \frac{c0 \cdot \left(d \cdot d\right)}{\left(D \cdot D\right) \cdot \left(w \cdot h\right)}\right)\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array}\]

Reproduce

herbie shell --seed 2018360 +o rules:numerics
(FPCore (c0 w h D d M)
  :name "Henrywood and Agarwal, Equation (13)"
  (* (/ c0 (* 2 w)) (+ (/ (* c0 (* d d)) (* (* w h) (* D D))) (sqrt (- (* (/ (* c0 (* d d)) (* (* w h) (* D D))) (/ (* c0 (* d d)) (* (* w h) (* D D)))) (* M M))))))

Details

Time bar (total: 35.2s)Debug log

start1.2s

Algorithm
intervals

setup462.0ms

Pruning

2 alts after pruning (2 fresh and 0 done)

Merged error: 53.9b

localize40.0ms

Local error

Found 4 expressions with local error:

46.2b
(fma (/ c0 (* w 2)) (sqrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M)))) (* (/ c0 (* w 2)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w))))
15.4b
(sqrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M))))
15.0b
(* (* (/ d D) (/ d D)) (/ (/ c0 h) w))
15.0b
(* (* (/ d D) (/ d D)) (/ (/ c0 h) w))

rewrite26.0ms

Algorithm
rewrite-expression-head
Counts
4 → 80
Calls

4 calls. Slowest were:

15.0ms
(* (* (/ d D) (/ d D)) (/ (/ c0 h) w))
9.0ms
(* (* (/ d D) (/ d D)) (/ (/ c0 h) w))
1.0ms
(sqrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M))))

series753.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

381.0ms
(fma (/ c0 (* w 2)) (sqrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M)))) (* (/ c0 (* w 2)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w))))
270.0ms
(sqrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M))))
56.0ms
(* (* (/ d D) (/ d D)) (/ (/ c0 h) w))
45.0ms
(* (* (/ d D) (/ d D)) (/ (/ c0 h) w))

simplify8.2s

Counts
56 → 92
Calls

56 calls. Slowest were:

614.0ms
(sqrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M))))
573.0ms
(sqrt (sqrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M)))))
529.0ms
(sqrt (* (cbrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M)))) (cbrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M))))))

prune1.8s

Pruning

12 alts after pruning (12 fresh and 0 done)

Merged error: 27.6b

localize1.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:

prune106.0ms

Pruning

12 alts after pruning (11 fresh and 1 done)

Merged error: 27.6b

localize17.0ms

Local error

Found 4 expressions with local error:

45.5b
(fma (/ c0 (* w 2)) (sqrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M)))) (* (/ c0 (* w 2)) (* (/ d D) (* (/ d D) (/ (/ c0 h) w)))))
15.4b
(sqrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M))))
15.0b
(* (* (/ d D) (/ d D)) (/ (/ c0 h) w))
15.0b
(* (* (/ d D) (/ d D)) (/ (/ c0 h) w))

rewrite29.0ms

Algorithm
rewrite-expression-head
Counts
4 → 80
Calls

4 calls. Slowest were:

17.0ms
(* (* (/ d D) (/ d D)) (/ (/ c0 h) w))
9.0ms
(* (* (/ d D) (/ d D)) (/ (/ c0 h) w))
1.0ms
(sqrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M))))

series812.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

462.0ms
(fma (/ c0 (* w 2)) (sqrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M)))) (* (/ c0 (* w 2)) (* (/ d D) (* (/ d D) (/ (/ c0 h) w)))))
244.0ms
(sqrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M))))
59.0ms
(* (* (/ d D) (/ d D)) (/ (/ c0 h) w))
46.0ms
(* (* (/ d D) (/ d D)) (/ (/ c0 h) w))

simplify8.0s

Counts
56 → 92
Calls

56 calls. Slowest were:

647.0ms
(sqrt (* (cbrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M)))) (cbrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M))))))
566.0ms
(sqrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M))))
468.0ms
(sqrt (sqrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M)))))

prune2.0s

Pruning

13 alts after pruning (12 fresh and 1 done)

Merged error: 27.3b

localize38.0ms

Local error

Found 4 expressions with local error:

44.4b
(fma (/ c0 (* w 2)) (* (sqrt (sqrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M))))) (sqrt (sqrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M)))))) (* (/ c0 (* w 2)) (* (/ d D) (* (/ d D) (/ (/ c0 h) w)))))
15.4b
(sqrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M))))
15.4b
(sqrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M))))
15.0b
(* (* (/ d D) (/ d D)) (/ (/ c0 h) w))

rewrite23.0ms

Algorithm
rewrite-expression-head
Counts
4 → 66
Calls

4 calls. Slowest were:

18.0ms
(* (* (/ d D) (/ d D)) (/ (/ c0 h) w))
2.0ms
(sqrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M))))
2.0ms
(sqrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M))))

series986.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

440.0ms
(fma (/ c0 (* w 2)) (* (sqrt (sqrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M))))) (sqrt (sqrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M)))))) (* (/ c0 (* w 2)) (* (/ d D) (* (/ d D) (/ (/ c0 h) w)))))
244.0ms
(sqrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M))))
230.0ms
(sqrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M))))
71.0ms
(* (* (/ d D) (/ d D)) (/ (/ c0 h) w))

simplify7.3s

Counts
40 → 78
Calls

40 calls. Slowest were:

952.0ms
(sqrt (* (cbrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M)))) (cbrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M))))))
606.0ms
(sqrt (sqrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M)))))
532.0ms
(sqrt (sqrt (fma (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* (* (/ d D) (/ d D)) (/ (/ c0 h) w)) (* M (- M)))))

prune1.8s

Pruning

12 alts after pruning (11 fresh and 1 done)

Merged error: 27.3b

regimes1.6s

Accuracy

25.6% (4.8b remaining)

Error of 31.8b against oracle of 27.0b and baseline of 33.5b

bsearch7.0ms