Average Error: 2.0 → 1.4
Time: 46.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 -5030318244.573108 \lor \neg \left(y \le 6.369805194853656 \cdot 10^{-15}\right):\\ \;\;\;\;\frac{x}{\frac{y}{e^{\left(\log a \cdot \left(t - 1.0\right) + \log z \cdot y\right) - b}}}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{x \cdot \left({z}^{y} \cdot e^{(t \cdot \left(\log a\right) + \left(-b\right))_*}\right)}{{a}^{1.0}}}{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 < -5030318244.573108 or 6.369805194853656e-15 < y

    1. Initial program 0.1

      \[\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.1

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

    if -5030318244.573108 < y < 6.369805194853656e-15

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

      \[\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 pow-neg2.7

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

      \[\leadsto \frac{x \cdot \left(\color{blue}{\frac{1 \cdot {z}^{y}}{{a}^{1.0}}} \cdot e^{(t \cdot \left(\log a\right) + \left(-b\right))_*}\right)}{y}\]
    7. Applied associate-*l/2.6

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

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

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

Reproduce

herbie shell --seed 2019002 +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: 44.9s)Debug log

sample588.0ms

Algorithm
intervals

simplify361.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

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

prune21.0ms

Pruning

2 alts after pruning (2 fresh and 0 done)

Merged error: 0.8b

localize41.0ms

Local error

Found 4 expressions with local error:

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

rewrite59.0ms

Algorithm
rewrite-expression-head
Counts
4 → 65
Calls

4 calls. Slowest were:

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

series432.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

166.0ms
(/ (* x (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) y)
133.0ms
(exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))
78.0ms
(* (- t 1.0) (log a))
54.0ms
(* y (log z))

simplify3.3s

Counts
34 → 77
Calls

34 calls. Slowest were:

338.0ms
(- (+ (* t (log -1)) (* 1.0 (log (/ -1 a)))) (+ (* t (log (/ -1 a))) (* 1.0 (log -1))))
299.0ms
(+ (* t (* (log a) (exp (- (* 1.0 (log a)))))) (+ (exp (- (* 1.0 (log a)))) (* (log z) (* (exp (- (* 1.0 (log a)))) y))))
245.0ms
(- (+ (* y (log z)) (* (- t 1.0) (log a))) b)

prune1.1s

Pruning

3 alts after pruning (3 fresh and 0 done)

Merged error: 0.0b

localize7.0ms

Local error

Found 4 expressions with local error:

1.3b
(/ 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))

rewrite36.0ms

Algorithm
rewrite-expression-head
Counts
4 → 69
Calls

4 calls. Slowest were:

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

series430.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

220.0ms
(/ x (/ y (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))))
112.0ms
(exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))
55.0ms
(* (- t 1.0) (log a))
43.0ms
(* y (log z))

simplify4.3s

Counts
39 → 81
Calls

39 calls. Slowest were:

383.0ms
(exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))
316.0ms
(- (+ (* t (log -1)) (* 1.0 (log (/ -1 a)))) (+ (* t (log (/ -1 a))) (* 1.0 (log -1))))
289.0ms
(+ (* t (* (log a) (exp (- (* 1.0 (log a)))))) (+ (exp (- (* 1.0 (log a)))) (* (log z) (* (exp (- (* 1.0 (log a)))) y))))

prune1.2s

Pruning

4 alts after pruning (3 fresh and 1 done)

Merged error: 0.0b

localize32.0ms

Local error

Found 4 expressions with local error:

0.6b
(/ (* 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
(* x (* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b)))))

rewrite43.0ms

Algorithm
rewrite-expression-head
Counts
4 → 63
Calls

4 calls. Slowest were:

15.0ms
(* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b))))
14.0ms
(* x (* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b)))))
13.0ms
(/ (* x (* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b))))) y)

series1.2s

Counts
4 → 12
Calls

4 calls. Slowest were:

424.0ms
(/ (* x (* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b))))) y)
341.0ms
(* x (* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b)))))
312.0ms
(* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b))))
84.0ms
(fma t (log a) (- b))

simplify5.7s

Counts
32 → 75
Calls

32 calls. Slowest were:

720.0ms
(* (* (* (* (pow a (- 1.0)) (pow z y)) (* (pow a (- 1.0)) (pow z y))) (* (pow a (- 1.0)) (pow z y))) (* (* (exp (fma t (log a) (- b))) (exp (fma t (log a) (- b)))) (exp (fma t (log a) (- b)))))
479.0ms
(+ (+ (* (log a) (- 1.0)) (log (pow z y))) (fma t (log a) (- b)))
402.0ms
(+ (+ (log (pow 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

localize31.0ms

Local error

Found 4 expressions with local error:

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

rewrite23.0ms

Algorithm
rewrite-expression-head
Counts
4 → 59
Calls

4 calls. Slowest were:

10.0ms
(* (* 1 (pow z y)) (exp (fma t (log a) (- b))))
7.0ms
(* x (* (* 1 (pow z y)) (exp (fma t (log a) (- b)))))
6.0ms
(/ (/ (* x (* (* 1 (pow z y)) (exp (fma t (log a) (- b))))) (pow a 1.0)) y)

series977.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

574.0ms
(/ (/ (* x (* (* 1 (pow z y)) (exp (fma t (log a) (- b))))) (pow a 1.0)) y)
178.0ms
(* x (* (* 1 (pow z y)) (exp (fma t (log a) (- b)))))
153.0ms
(* (* 1 (pow z y)) (exp (fma t (log a) (- b))))
71.0ms
(fma t (log a) (- b))

simplify3.2s

Counts
27 → 71
Calls

27 calls. Slowest were:

478.0ms
(* (exp (* -1 (* (log (/ 1 z)) y))) (* x (exp (- (+ b (* t (log (/ 1 a))))))))
426.0ms
(/ (* (exp (* -1 (* (log (/ 1 z)) y))) (* x (exp (- (+ b (* t (log (/ 1 a)))))))) (* a y))
245.0ms
(sqrt (/ (* x (* (* 1 (pow z y)) (exp (fma t (log a) (- b))))) (pow a 1.0)))

prune1.3s

Pruning

5 alts after pruning (3 fresh and 2 done)

Merged error: 0b

regimes899.0ms

Accuracy

29.9% (1.4b remaining)

Error of 1.4b against oracle of 0.0b and baseline of 2.0b

bsearch1.4s

end0.0ms

sample16.9s

Algorithm
intervals