Average Error: 2.0 → 0.9
Time: 2.1m
Precision: 64
Internal Precision: 576
\[\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1.0\right) \cdot \log a\right) - b}}{y}\]
\[\begin{array}{l} \mathbf{if}\;\frac{x \cdot {a}^{t}}{y \cdot {a}^{1.0}} \cdot e^{(\left(\log z\right) \cdot y + \left(-b\right))_*} \le 4.0958356649428727 \cdot 10^{+77}:\\ \;\;\;\;\frac{x \cdot {a}^{t}}{y \cdot {a}^{1.0}} \cdot e^{(\left(\log z\right) \cdot y + \left(-b\right))_*}\\ \mathbf{else}:\\ \;\;\;\;\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1.0\right) \cdot \log a\right) - b}}{y}\\ \end{array}\]

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Bits error versus b

Derivation

  1. Split input into 2 regimes
  2. if (* (/ (* x (pow a t)) (* y (pow a 1.0))) (exp (fma (log z) y (- b)))) < 4.0958356649428727e+77

    1. Initial program 2.6

      \[\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1.0\right) \cdot \log a\right) - b}}{y}\]
    2. Taylor expanded around -inf 63.0

      \[\leadsto \frac{x \cdot e^{\left(\color{blue}{y \cdot \left(\log -1 - \log \left(\frac{-1}{z}\right)\right)} + \left(t - 1.0\right) \cdot \log a\right) - b}}{y}\]
    3. Applied simplify4.7

      \[\leadsto \color{blue}{\left(\frac{x}{y} \cdot {a}^{\left(t - 1.0\right)}\right) \cdot e^{(\left(\log z\right) \cdot y + \left(-b\right))_*}}\]
    4. Using strategy rm
    5. Applied pow-sub4.7

      \[\leadsto \left(\frac{x}{y} \cdot \color{blue}{\frac{{a}^{t}}{{a}^{1.0}}}\right) \cdot e^{(\left(\log z\right) \cdot y + \left(-b\right))_*}\]
    6. Applied frac-times0.9

      \[\leadsto \color{blue}{\frac{x \cdot {a}^{t}}{y \cdot {a}^{1.0}}} \cdot e^{(\left(\log z\right) \cdot y + \left(-b\right))_*}\]

    if 4.0958356649428727e+77 < (* (/ (* x (pow a t)) (* y (pow a 1.0))) (exp (fma (log z) y (- b))))

    1. Initial program 0.7

      \[\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1.0\right) \cdot \log a\right) - b}}{y}\]
  3. Recombined 2 regimes into one program.

Runtime

Time bar (total: 2.1m)Debug logProfile

herbie shell --seed '#(1071979731 1496239409 439705970 2863295848 982327776 189749553)' +o rules:numerics
(FPCore (x y z t a b)
  :name "Numeric.SpecFunctions:incompleteBetaWorker from math-functions-0.1.5.2"
  (/ (* x (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) y))