Average Error: 25.8 → 22.7
Time: 1.4m
Precision: 64
Internal Precision: 128
\[\left({\left(\frac{d}{h}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{d}{\ell}\right)}^{\left(\frac{1}{2}\right)}\right) \cdot \left(1 - \left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot \frac{h}{\ell}\right)\]
\[\begin{array}{l} \mathbf{if}\;h \le 1.7448187607656614 \cdot 10^{-308}:\\ \;\;\;\;(\left(\left(\left(\frac{D}{d} \cdot \frac{M}{2}\right) \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)\right) \cdot \frac{-1}{2}\right) \cdot \left(\frac{h}{\ell}\right) + 1)_* \cdot \left(\sqrt{\frac{d}{h}} \cdot \left(\sqrt{\sqrt{\frac{d}{\ell}}} \cdot \sqrt{\sqrt{\frac{d}{\ell}}}\right)\right)\\ \mathbf{elif}\;h \le 1.2166601716514437 \cdot 10^{-32}:\\ \;\;\;\;(\left(\left(\left(\frac{D}{d} \cdot \frac{M}{2}\right) \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)\right) \cdot \frac{-1}{2}\right) \cdot \left(\frac{h}{\ell}\right) + 1)_* \cdot \left(\frac{\sqrt{d}}{\sqrt{h}} \cdot \sqrt{\frac{d}{\ell}}\right)\\ \mathbf{else}:\\ \;\;\;\;(\left(\left(\left(\frac{D}{d} \cdot \frac{M}{2}\right) \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)\right) \cdot \frac{-1}{2}\right) \cdot \left(\frac{h}{\ell}\right) + 1)_* \cdot \left(\left(\sqrt{d} \cdot \sqrt{\frac{1}{\ell}}\right) \cdot \sqrt{\frac{d}{h}}\right)\\ \end{array}\]

Error

Bits error versus d

Bits error versus h

Bits error versus l

Bits error versus M

Bits error versus D

Derivation

  1. Split input into 3 regimes
  2. if h < 1.7448187607656614e-308

    1. Initial program 25.9

      \[\left({\left(\frac{d}{h}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{d}{\ell}\right)}^{\left(\frac{1}{2}\right)}\right) \cdot \left(1 - \left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot \frac{h}{\ell}\right)\]
    2. Initial simplification26.3

      \[\leadsto (\left(\left(\left(\frac{M}{2} \cdot \frac{D}{d}\right) \cdot \left(\frac{M}{2} \cdot \frac{D}{d}\right)\right) \cdot \frac{-1}{2}\right) \cdot \left(\frac{h}{\ell}\right) + 1)_* \cdot \left(\sqrt{\frac{d}{\ell}} \cdot \sqrt{\frac{d}{h}}\right)\]
    3. Using strategy rm
    4. Applied add-sqr-sqrt26.5

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

    if 1.7448187607656614e-308 < h < 1.2166601716514437e-32

    1. Initial program 28.0

      \[\left({\left(\frac{d}{h}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{d}{\ell}\right)}^{\left(\frac{1}{2}\right)}\right) \cdot \left(1 - \left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot \frac{h}{\ell}\right)\]
    2. Initial simplification28.6

      \[\leadsto (\left(\left(\left(\frac{M}{2} \cdot \frac{D}{d}\right) \cdot \left(\frac{M}{2} \cdot \frac{D}{d}\right)\right) \cdot \frac{-1}{2}\right) \cdot \left(\frac{h}{\ell}\right) + 1)_* \cdot \left(\sqrt{\frac{d}{\ell}} \cdot \sqrt{\frac{d}{h}}\right)\]
    3. Using strategy rm
    4. Applied sqrt-div17.0

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

    if 1.2166601716514437e-32 < h

    1. Initial program 23.7

      \[\left({\left(\frac{d}{h}\right)}^{\left(\frac{1}{2}\right)} \cdot {\left(\frac{d}{\ell}\right)}^{\left(\frac{1}{2}\right)}\right) \cdot \left(1 - \left(\frac{1}{2} \cdot {\left(\frac{M \cdot D}{2 \cdot d}\right)}^{2}\right) \cdot \frac{h}{\ell}\right)\]
    2. Initial simplification23.6

      \[\leadsto (\left(\left(\left(\frac{M}{2} \cdot \frac{D}{d}\right) \cdot \left(\frac{M}{2} \cdot \frac{D}{d}\right)\right) \cdot \frac{-1}{2}\right) \cdot \left(\frac{h}{\ell}\right) + 1)_* \cdot \left(\sqrt{\frac{d}{\ell}} \cdot \sqrt{\frac{d}{h}}\right)\]
    3. Using strategy rm
    4. Applied div-inv23.6

      \[\leadsto (\left(\left(\left(\frac{M}{2} \cdot \frac{D}{d}\right) \cdot \left(\frac{M}{2} \cdot \frac{D}{d}\right)\right) \cdot \frac{-1}{2}\right) \cdot \left(\frac{h}{\ell}\right) + 1)_* \cdot \left(\sqrt{\color{blue}{d \cdot \frac{1}{\ell}}} \cdot \sqrt{\frac{d}{h}}\right)\]
    5. Applied sqrt-prod20.0

      \[\leadsto (\left(\left(\left(\frac{M}{2} \cdot \frac{D}{d}\right) \cdot \left(\frac{M}{2} \cdot \frac{D}{d}\right)\right) \cdot \frac{-1}{2}\right) \cdot \left(\frac{h}{\ell}\right) + 1)_* \cdot \left(\color{blue}{\left(\sqrt{d} \cdot \sqrt{\frac{1}{\ell}}\right)} \cdot \sqrt{\frac{d}{h}}\right)\]
  3. Recombined 3 regimes into one program.
  4. Final simplification22.7

    \[\leadsto \begin{array}{l} \mathbf{if}\;h \le 1.7448187607656614 \cdot 10^{-308}:\\ \;\;\;\;(\left(\left(\left(\frac{D}{d} \cdot \frac{M}{2}\right) \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)\right) \cdot \frac{-1}{2}\right) \cdot \left(\frac{h}{\ell}\right) + 1)_* \cdot \left(\sqrt{\frac{d}{h}} \cdot \left(\sqrt{\sqrt{\frac{d}{\ell}}} \cdot \sqrt{\sqrt{\frac{d}{\ell}}}\right)\right)\\ \mathbf{elif}\;h \le 1.2166601716514437 \cdot 10^{-32}:\\ \;\;\;\;(\left(\left(\left(\frac{D}{d} \cdot \frac{M}{2}\right) \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)\right) \cdot \frac{-1}{2}\right) \cdot \left(\frac{h}{\ell}\right) + 1)_* \cdot \left(\frac{\sqrt{d}}{\sqrt{h}} \cdot \sqrt{\frac{d}{\ell}}\right)\\ \mathbf{else}:\\ \;\;\;\;(\left(\left(\left(\frac{D}{d} \cdot \frac{M}{2}\right) \cdot \left(\frac{D}{d} \cdot \frac{M}{2}\right)\right) \cdot \frac{-1}{2}\right) \cdot \left(\frac{h}{\ell}\right) + 1)_* \cdot \left(\left(\sqrt{d} \cdot \sqrt{\frac{1}{\ell}}\right) \cdot \sqrt{\frac{d}{h}}\right)\\ \end{array}\]

Runtime

Time bar (total: 1.4m)Debug logProfile

herbie shell --seed 2018278 +o rules:numerics
(FPCore (d h l M D)
  :name "Henrywood and Agarwal, Equation (12)"
  (* (* (pow (/ d h) (/ 1 2)) (pow (/ d l) (/ 1 2))) (- 1 (* (* (/ 1 2) (pow (/ (* M D) (* 2 d)) 2)) (/ h l)))))