Average Error: 1.9 → 1.3
Time: 45.0s
Precision: 64
Internal Precision: 128
\[\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}\;y \le -1.9813937686979932 \cdot 10^{-95} \lor \neg \left(y \le 0.00920090525632143\right):\\ \;\;\;\;\frac{x}{\frac{y}{{e}^{\left(\left(\log a \cdot \left(t - 1.0\right) + y \cdot \log z\right) - b\right)}}}\\ \mathbf{else}:\\ \;\;\;\;\frac{x \cdot \left(e^{(t \cdot \left(\log a\right) + \left(-b\right))_*} \cdot \left(\sqrt{{z}^{y}} \cdot \left(\sqrt{{z}^{y}} \cdot {a}^{\left(-1.0\right)}\right)\right)\right)}{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 y < -1.9813937686979932e-95 or 0.00920090525632143 < y

    1. Initial program 0.4

      \[\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1.0\right) \cdot \log a\right) - b}}{y}\]
    2. Using strategy rm
    3. Applied associate-/l*0.4

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

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

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

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

    if -1.9813937686979932e-95 < y < 0.00920090525632143

    1. Initial program 3.7

      \[\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 3.7

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

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

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

      \[\leadsto \frac{x \cdot \left(\color{blue}{\left(\left({a}^{\left(-1.0\right)} \cdot \sqrt{{z}^{y}}\right) \cdot \sqrt{{z}^{y}}\right)} \cdot e^{(t \cdot \left(\log a\right) + \left(-b\right))_*}\right)}{y}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification1.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \le -1.9813937686979932 \cdot 10^{-95} \lor \neg \left(y \le 0.00920090525632143\right):\\ \;\;\;\;\frac{x}{\frac{y}{{e}^{\left(\left(\log a \cdot \left(t - 1.0\right) + y \cdot \log z\right) - b\right)}}}\\ \mathbf{else}:\\ \;\;\;\;\frac{x \cdot \left(e^{(t \cdot \left(\log a\right) + \left(-b\right))_*} \cdot \left(\sqrt{{z}^{y}} \cdot \left(\sqrt{{z}^{y}} \cdot {a}^{\left(-1.0\right)}\right)\right)\right)}{y}\\ \end{array}\]

Reproduce

herbie shell --seed 2019008 +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))

Details

Time bar (total: 43.9s)Debug log

sample597.0ms

Algorithm
intervals

simplify384.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

384.0ms
(/ (* x (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) y)

prune22.0ms

Pruning

2 alts after pruning (2 fresh and 0 done)

Merged error: 0.8b

localize33.0ms

Local error

Found 4 expressions with local error:

0.9b
(/ (* x (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) y)
0.9b
(exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))
0.3b
(* y (log z))
0.1b
(* (- t 1.0) (log a))

rewrite58.0ms

Algorithm
rewrite-expression-head
Counts
4 → 65
Calls

4 calls. Slowest were:

23.0ms
(/ (* x (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) y)
23.0ms
(exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))
8.0ms
(* (- t 1.0) (log a))

series466.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

212.0ms
(/ (* x (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) y)
142.0ms
(exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))
77.0ms
(* (- t 1.0) (log a))
35.0ms
(* y (log z))

simplify3.1s

Counts
34 → 77
Calls

34 calls. Slowest were:

340.0ms
(- (+ (* t (log -1)) (* 1.0 (log (/ -1 a)))) (+ (* t (log (/ -1 a))) (* 1.0 (log -1))))
308.0ms
(+ (* t (* (log a) (exp (- (* 1.0 (log a)))))) (+ (exp (- (* 1.0 (log a)))) (* (log z) (* (exp (- (* 1.0 (log a)))) y))))
201.0ms
(* (* (* (- t 1.0) (- t 1.0)) (- t 1.0)) (* (* (log a) (log a)) (log a)))

prune1.2s

Pruning

4 alts after pruning (4 fresh and 0 done)

Merged error: 0.1b

localize12.0ms

Local error

Found 4 expressions with local error:

1.2b
(/ x (/ y (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))))
0.9b
(exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))
0.3b
(* y (log z))
0.1b
(* (- t 1.0) (log a))

rewrite54.0ms

Algorithm
rewrite-expression-head
Counts
4 → 69
Calls

4 calls. Slowest were:

42.0ms
(exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))
5.0ms
(/ x (/ y (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))))
4.0ms
(* (- t 1.0) (log a))

series390.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

162.0ms
(/ x (/ y (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))))
105.0ms
(exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))
72.0ms
(* (- t 1.0) (log a))
51.0ms
(* y (log z))

simplify4.0s

Counts
39 → 81
Calls

39 calls. Slowest were:

353.0ms
(exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))
340.0ms
(- (+ (* t (log -1)) (* 1.0 (log (/ -1 a)))) (+ (* t (log (/ -1 a))) (* 1.0 (log -1))))
323.0ms
(+ (* t (* (log a) (exp (- (* 1.0 (log a)))))) (+ (exp (- (* 1.0 (log a)))) (* (log z) (* (exp (- (* 1.0 (log a)))) y))))

prune1.3s

Pruning

4 alts after pruning (4 fresh and 0 done)

Merged error: 0.0b

localize10.0ms

Local error

Found 4 expressions with local error:

1.2b
(/ x (/ y (pow E (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))))
0.9b
(pow E (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))
0.3b
(* y (log z))
0.1b
(* (- t 1.0) (log a))

rewrite15.0ms

Algorithm
rewrite-expression-head
Counts
4 → 69
Calls

4 calls. Slowest were:

7.0ms
(pow E (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))
4.0ms
(* (- t 1.0) (log a))
2.0ms
(/ x (/ y (pow E (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))))

series415.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

204.0ms
(/ x (/ y (pow E (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))))
125.0ms
(pow E (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))
46.0ms
(* (- t 1.0) (log a))
40.0ms
(* y (log z))

simplify3.6s

Counts
38 → 81
Calls

38 calls. Slowest were:

303.0ms
(- (+ (* t (log -1)) (* 1.0 (log (/ -1 a)))) (+ (* t (log (/ -1 a))) (* 1.0 (log -1))))
241.0ms
(sqrt (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))
237.0ms
(/ 1 (pow E (- (+ (* y (log z)) (* (- t 1.0) (log a))) b)))

prune1.5s

Pruning

4 alts after pruning (3 fresh and 1 done)

Merged error: 0.0b

localize29.0ms

Local error

Found 4 expressions with local error:

0.9b
(/ (* x (* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b))))) y)
0.2b
(* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b))))
0.1b
(fma t (log a) (- b))
0.0b
(* (pow a (- 1.0)) (pow z y))

rewrite53.0ms

Algorithm
rewrite-expression-head
Counts
4 → 73
Calls

4 calls. Slowest were:

23.0ms
(* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b))))
21.0ms
(/ (* x (* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b))))) y)
8.0ms
(* (pow a (- 1.0)) (pow z y))

series963.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

447.0ms
(/ (* x (* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b))))) y)
279.0ms
(* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b))))
174.0ms
(* (pow a (- 1.0)) (pow z y))
63.0ms
(fma t (log a) (- b))

simplify5.5s

Counts
41 → 85
Calls

41 calls. Slowest were:

763.0ms
(/ (* (exp (* -1 (* (log (/ 1 z)) y))) (* x (exp (- (+ b (* t (log (/ 1 a)))))))) (* a y))
387.0ms
(+ (+ (* (log a) (- 1.0)) (* (log z) y)) (fma t (log a) (- b)))
369.0ms
(+ (+ (* (log a) (- 1.0)) (log (pow z y))) (fma t (log a) (- b)))

prune1.4s

Pruning

5 alts after pruning (4 fresh and 1 done)

Merged error: 0b

regimes780.0ms

Accuracy

32.6% (1.3b remaining)

Error of 1.3b against oracle of 0.0b and baseline of 1.9b

bsearch1.7s

end0.0ms

sample16.4s

Algorithm
intervals