Average Error: 29.5 → 0.3
Time: 1.4m
Precision: 64
\[\frac{\left(\left(\left(\left(1 + 0.1049934946999999951788851149103720672429 \cdot \left(x \cdot x\right)\right) + 0.04240606040000000076517494562722276896238 \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right) + 0.007264418199999999985194687468492702464573 \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + 5.064034000000000243502107366566633572802 \cdot 10^{-4} \cdot \left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + 1.789971000000000009994005623070734145585 \cdot 10^{-4} \cdot \left(\left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)}{\left(\left(\left(\left(\left(1 + 0.7715471018999999763821051601553335785866 \cdot \left(x \cdot x\right)\right) + 0.2909738639000000182122107617033179849386 \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right) + 0.06945557609999999937322456844412954524159 \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + 0.01400054419999999938406531896362139377743 \cdot \left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + 8.327945000000000442749725770852364803432 \cdot 10^{-4} \cdot \left(\left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + \left(2 \cdot 1.789971000000000009994005623070734145585 \cdot 10^{-4}\right) \cdot \left(\left(\left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)} \cdot x\]
\[\begin{array}{l} \mathbf{if}\;x \le -1.134957729769652701179438736289739608765:\\ \;\;\;\;\frac{0.5}{x} + \left(\frac{0.2514179000665375252054900556686334311962}{\left(x \cdot x\right) \cdot x} + \frac{0.1529819634592932686700805788859724998474}{\left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot x\right)}\right)\\ \mathbf{elif}\;x \le 1.139187033807632198900705589039716869593:\\ \;\;\;\;\mathsf{fma}\left(\left(-x\right) \cdot \left(x \cdot x\right), 0.6665536072000000089587956608738750219345, \mathsf{fma}\left(\left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot x\right), 0.2657097003961509940062057921750238165259, x \cdot 1\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{0.5}{x} + \left(\frac{0.2514179000665375252054900556686334311962}{\left(x \cdot x\right) \cdot x} + \frac{0.1529819634592932686700805788859724998474}{\left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot x\right)}\right)\\ \end{array}\]
\frac{\left(\left(\left(\left(1 + 0.1049934946999999951788851149103720672429 \cdot \left(x \cdot x\right)\right) + 0.04240606040000000076517494562722276896238 \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right) + 0.007264418199999999985194687468492702464573 \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + 5.064034000000000243502107366566633572802 \cdot 10^{-4} \cdot \left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + 1.789971000000000009994005623070734145585 \cdot 10^{-4} \cdot \left(\left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)}{\left(\left(\left(\left(\left(1 + 0.7715471018999999763821051601553335785866 \cdot \left(x \cdot x\right)\right) + 0.2909738639000000182122107617033179849386 \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right) + 0.06945557609999999937322456844412954524159 \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + 0.01400054419999999938406531896362139377743 \cdot \left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + 8.327945000000000442749725770852364803432 \cdot 10^{-4} \cdot \left(\left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + \left(2 \cdot 1.789971000000000009994005623070734145585 \cdot 10^{-4}\right) \cdot \left(\left(\left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)} \cdot x
\begin{array}{l}
\mathbf{if}\;x \le -1.134957729769652701179438736289739608765:\\
\;\;\;\;\frac{0.5}{x} + \left(\frac{0.2514179000665375252054900556686334311962}{\left(x \cdot x\right) \cdot x} + \frac{0.1529819634592932686700805788859724998474}{\left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot x\right)}\right)\\

\mathbf{elif}\;x \le 1.139187033807632198900705589039716869593:\\
\;\;\;\;\mathsf{fma}\left(\left(-x\right) \cdot \left(x \cdot x\right), 0.6665536072000000089587956608738750219345, \mathsf{fma}\left(\left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot x\right), 0.2657097003961509940062057921750238165259, x \cdot 1\right)\right)\\

\mathbf{else}:\\
\;\;\;\;\frac{0.5}{x} + \left(\frac{0.2514179000665375252054900556686334311962}{\left(x \cdot x\right) \cdot x} + \frac{0.1529819634592932686700805788859724998474}{\left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot x\right)}\right)\\

\end{array}
double f(double x) {
        double r7896215 = 1.0;
        double r7896216 = 0.1049934947;
        double r7896217 = x;
        double r7896218 = r7896217 * r7896217;
        double r7896219 = r7896216 * r7896218;
        double r7896220 = r7896215 + r7896219;
        double r7896221 = 0.0424060604;
        double r7896222 = r7896218 * r7896218;
        double r7896223 = r7896221 * r7896222;
        double r7896224 = r7896220 + r7896223;
        double r7896225 = 0.0072644182;
        double r7896226 = r7896222 * r7896218;
        double r7896227 = r7896225 * r7896226;
        double r7896228 = r7896224 + r7896227;
        double r7896229 = 0.0005064034;
        double r7896230 = r7896226 * r7896218;
        double r7896231 = r7896229 * r7896230;
        double r7896232 = r7896228 + r7896231;
        double r7896233 = 0.0001789971;
        double r7896234 = r7896230 * r7896218;
        double r7896235 = r7896233 * r7896234;
        double r7896236 = r7896232 + r7896235;
        double r7896237 = 0.7715471019;
        double r7896238 = r7896237 * r7896218;
        double r7896239 = r7896215 + r7896238;
        double r7896240 = 0.2909738639;
        double r7896241 = r7896240 * r7896222;
        double r7896242 = r7896239 + r7896241;
        double r7896243 = 0.0694555761;
        double r7896244 = r7896243 * r7896226;
        double r7896245 = r7896242 + r7896244;
        double r7896246 = 0.0140005442;
        double r7896247 = r7896246 * r7896230;
        double r7896248 = r7896245 + r7896247;
        double r7896249 = 0.0008327945;
        double r7896250 = r7896249 * r7896234;
        double r7896251 = r7896248 + r7896250;
        double r7896252 = 2.0;
        double r7896253 = r7896252 * r7896233;
        double r7896254 = r7896234 * r7896218;
        double r7896255 = r7896253 * r7896254;
        double r7896256 = r7896251 + r7896255;
        double r7896257 = r7896236 / r7896256;
        double r7896258 = r7896257 * r7896217;
        return r7896258;
}

double f(double x) {
        double r7896259 = x;
        double r7896260 = -1.1349577297696527;
        bool r7896261 = r7896259 <= r7896260;
        double r7896262 = 0.5;
        double r7896263 = r7896262 / r7896259;
        double r7896264 = 0.2514179000665375;
        double r7896265 = r7896259 * r7896259;
        double r7896266 = r7896265 * r7896259;
        double r7896267 = r7896264 / r7896266;
        double r7896268 = 0.15298196345929327;
        double r7896269 = r7896265 * r7896266;
        double r7896270 = r7896268 / r7896269;
        double r7896271 = r7896267 + r7896270;
        double r7896272 = r7896263 + r7896271;
        double r7896273 = 1.1391870338076322;
        bool r7896274 = r7896259 <= r7896273;
        double r7896275 = -r7896259;
        double r7896276 = r7896275 * r7896265;
        double r7896277 = 0.6665536072;
        double r7896278 = 0.265709700396151;
        double r7896279 = 1.0;
        double r7896280 = r7896259 * r7896279;
        double r7896281 = fma(r7896269, r7896278, r7896280);
        double r7896282 = fma(r7896276, r7896277, r7896281);
        double r7896283 = r7896274 ? r7896282 : r7896272;
        double r7896284 = r7896261 ? r7896272 : r7896283;
        return r7896284;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -1.1349577297696527 or 1.1391870338076322 < x

    1. Initial program 58.6

      \[\frac{\left(\left(\left(\left(1 + 0.1049934946999999951788851149103720672429 \cdot \left(x \cdot x\right)\right) + 0.04240606040000000076517494562722276896238 \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right) + 0.007264418199999999985194687468492702464573 \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + 5.064034000000000243502107366566633572802 \cdot 10^{-4} \cdot \left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + 1.789971000000000009994005623070734145585 \cdot 10^{-4} \cdot \left(\left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)}{\left(\left(\left(\left(\left(1 + 0.7715471018999999763821051601553335785866 \cdot \left(x \cdot x\right)\right) + 0.2909738639000000182122107617033179849386 \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right) + 0.06945557609999999937322456844412954524159 \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + 0.01400054419999999938406531896362139377743 \cdot \left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + 8.327945000000000442749725770852364803432 \cdot 10^{-4} \cdot \left(\left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + \left(2 \cdot 1.789971000000000009994005623070734145585 \cdot 10^{-4}\right) \cdot \left(\left(\left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)} \cdot x\]
    2. Taylor expanded around inf 0.2

      \[\leadsto \color{blue}{0.1529819634592932686700805788859724998474 \cdot \frac{1}{{x}^{5}} + \left(0.2514179000665375252054900556686334311962 \cdot \frac{1}{{x}^{3}} + 0.5 \cdot \frac{1}{x}\right)}\]
    3. Simplified0.2

      \[\leadsto \color{blue}{\left(\frac{0.2514179000665375252054900556686334311962}{x \cdot \left(x \cdot x\right)} + \frac{0.1529819634592932686700805788859724998474}{\left(x \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)}\right) + \frac{0.5}{x}}\]

    if -1.1349577297696527 < x < 1.1391870338076322

    1. Initial program 0.0

      \[\frac{\left(\left(\left(\left(1 + 0.1049934946999999951788851149103720672429 \cdot \left(x \cdot x\right)\right) + 0.04240606040000000076517494562722276896238 \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right) + 0.007264418199999999985194687468492702464573 \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + 5.064034000000000243502107366566633572802 \cdot 10^{-4} \cdot \left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + 1.789971000000000009994005623070734145585 \cdot 10^{-4} \cdot \left(\left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)}{\left(\left(\left(\left(\left(1 + 0.7715471018999999763821051601553335785866 \cdot \left(x \cdot x\right)\right) + 0.2909738639000000182122107617033179849386 \cdot \left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right)\right) + 0.06945557609999999937322456844412954524159 \cdot \left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + 0.01400054419999999938406531896362139377743 \cdot \left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + 8.327945000000000442749725770852364803432 \cdot 10^{-4} \cdot \left(\left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)\right) + \left(2 \cdot 1.789971000000000009994005623070734145585 \cdot 10^{-4}\right) \cdot \left(\left(\left(\left(\left(\left(x \cdot x\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right)\right)} \cdot x\]
    2. Taylor expanded around 0 0.3

      \[\leadsto \color{blue}{\left(1 \cdot x + 0.2657097003961509940062057921750238165259 \cdot {x}^{5}\right) - 0.6665536072000000089587956608738750219345 \cdot {x}^{3}}\]
    3. Simplified0.3

      \[\leadsto \color{blue}{\mathsf{fma}\left(-x \cdot \left(x \cdot x\right), 0.6665536072000000089587956608738750219345, \mathsf{fma}\left(\left(x \cdot \left(x \cdot x\right)\right) \cdot \left(x \cdot x\right), 0.2657097003961509940062057921750238165259, 1 \cdot x\right)\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -1.134957729769652701179438736289739608765:\\ \;\;\;\;\frac{0.5}{x} + \left(\frac{0.2514179000665375252054900556686334311962}{\left(x \cdot x\right) \cdot x} + \frac{0.1529819634592932686700805788859724998474}{\left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot x\right)}\right)\\ \mathbf{elif}\;x \le 1.139187033807632198900705589039716869593:\\ \;\;\;\;\mathsf{fma}\left(\left(-x\right) \cdot \left(x \cdot x\right), 0.6665536072000000089587956608738750219345, \mathsf{fma}\left(\left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot x\right), 0.2657097003961509940062057921750238165259, x \cdot 1\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{0.5}{x} + \left(\frac{0.2514179000665375252054900556686334311962}{\left(x \cdot x\right) \cdot x} + \frac{0.1529819634592932686700805788859724998474}{\left(x \cdot x\right) \cdot \left(\left(x \cdot x\right) \cdot x\right)}\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019168 +o rules:numerics
(FPCore (x)
  :name "Jmat.Real.dawson"
  (* (/ (+ (+ (+ (+ (+ 1.0 (* 0.1049934947 (* x x))) (* 0.0424060604 (* (* x x) (* x x)))) (* 0.0072644182 (* (* (* x x) (* x x)) (* x x)))) (* 0.0005064034 (* (* (* (* x x) (* x x)) (* x x)) (* x x)))) (* 0.0001789971 (* (* (* (* (* x x) (* x x)) (* x x)) (* x x)) (* x x)))) (+ (+ (+ (+ (+ (+ 1.0 (* 0.7715471019 (* x x))) (* 0.2909738639 (* (* x x) (* x x)))) (* 0.0694555761 (* (* (* x x) (* x x)) (* x x)))) (* 0.0140005442 (* (* (* (* x x) (* x x)) (* x x)) (* x x)))) (* 0.0008327945 (* (* (* (* (* x x) (* x x)) (* x x)) (* x x)) (* x x)))) (* (* 2.0 0.0001789971) (* (* (* (* (* (* x x) (* x x)) (* x x)) (* x x)) (* x x)) (* x x))))) x))