Average Error: 1.9 → 1.3
Time: 49.4s
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 -0.42156715725308463 \lor \neg \left(y \le 0.0006797883881164825\right):\\ \;\;\;\;\frac{x \cdot e^{\left(\log a \cdot \left(t - 1.0\right) + \log z \cdot y\right) - b}}{y}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{1}{\frac{y}{x \cdot \left({z}^{y} \cdot e^{(t \cdot \left(\log a\right) + \left(-b\right))_*}\right)}}}{{a}^{1.0}}\\ \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 < -0.42156715725308463 or 0.0006797883881164825 < y

    1. Initial program 0.0

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

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

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

    if -0.42156715725308463 < y < 0.0006797883881164825

    1. Initial program 3.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 3.6

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

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

      \[\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}\]
    5. Simplified2.2

      \[\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}\]
    6. Using strategy rm
    7. Applied clear-num2.2

      \[\leadsto \color{blue}{\frac{1}{\frac{y}{x \cdot \left(\left({a}^{\left(-1.0\right)} \cdot {z}^{y}\right) \cdot e^{(t \cdot \left(\log a\right) + \left(-b\right))_*}\right)}}}\]
    8. Using strategy rm
    9. Applied pow-neg2.2

      \[\leadsto \frac{1}{\frac{y}{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)}}\]
    10. Applied associate-*l/2.2

      \[\leadsto \frac{1}{\frac{y}{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)}}\]
    11. Applied associate-*l/2.2

      \[\leadsto \frac{1}{\frac{y}{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}}}}}\]
    12. Applied associate-*r/2.2

      \[\leadsto \frac{1}{\frac{y}{\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}}}}}\]
    13. Applied associate-/r/2.4

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

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

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

Reproduce

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

sample693.0ms

Algorithm
intervals

simplify358.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

358.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.9b

localize61.0ms

Local error

Found 4 expressions with local error:

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

rewrite64.0ms

Algorithm
rewrite-expression-head
Counts
4 → 65
Calls

4 calls. Slowest were:

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

series477.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

240.0ms
(/ (* x (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) y)
131.0ms
(exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))
59.0ms
(* (- t 1.0) (log a))
47.0ms
(* y (log z))

simplify3.2s

Counts
34 → 77
Calls

34 calls. Slowest were:

344.0ms
(- (+ (* t (log -1)) (* 1.0 (log (/ -1 a)))) (+ (* t (log (/ -1 a))) (* 1.0 (log -1))))
255.0ms
(+ (* t (* (log a) (exp (- (* 1.0 (log a)))))) (+ (exp (- (* 1.0 (log a)))) (* (log z) (* (exp (- (* 1.0 (log a)))) y))))
227.0ms
(/ (* x (exp (- (* 1.0 (log (/ 1 a))) (+ (* (log (/ 1 z)) y) (+ b (* t (log (/ 1 a)))))))) y)

prune1.4s

Pruning

3 alts after pruning (3 fresh and 0 done)

Merged error: 0.0b

localize33.0ms

Local error

Found 4 expressions with local error:

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

rewrite79.0ms

Algorithm
rewrite-expression-head
Counts
4 → 65
Calls

4 calls. Slowest were:

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

series594.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

249.0ms
(/ (* x (exp (- (+ (* (log z) y) (* (- t 1.0) (log a))) b))) y)
192.0ms
(exp (- (+ (* (log z) y) (* (- t 1.0) (log a))) b))
89.0ms
(* (log z) y)
63.0ms
(* (- t 1.0) (log a))

simplify3.4s

Counts
33 → 77
Calls

33 calls. Slowest were:

587.0ms
(+ (* t (* (log a) (exp (- (* 1.0 (log a)))))) (+ (exp (- (* 1.0 (log a)))) (* (log z) (* (exp (- (* 1.0 (log a)))) y))))
376.0ms
(- (+ (* t (log -1)) (* 1.0 (log (/ -1 a)))) (+ (* t (log (/ -1 a))) (* 1.0 (log -1))))
216.0ms
(/ (* x (exp (- (* 1.0 (log (/ 1 a))) (+ (* (log (/ 1 z)) y) (+ b (* t (log (/ 1 a)))))))) y)

prune1.4s

Pruning

3 alts after pruning (2 fresh and 1 done)

Merged error: 0.0b

localize56.0ms

Local error

Found 4 expressions with local error:

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

rewrite69.0ms

Algorithm
rewrite-expression-head
Counts
4 → 63
Calls

4 calls. Slowest were:

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

series1.2s

Counts
4 → 12
Calls

4 calls. Slowest were:

456.0ms
(/ (* x (* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b))))) y)
391.0ms
(* x (* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b)))))
313.0ms
(* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b))))
63.0ms
(fma t (log a) (- b))

simplify5.0s

Counts
32 → 75
Calls

32 calls. Slowest were:

416.0ms
(/ (* (exp (* -1 (* (log (/ 1 z)) y))) (* x (exp (- (+ b (* t (log (/ 1 a)))))))) (* a y))
380.0ms
(+ (+ (* (log a) (- 1.0)) (log (pow z y))) (fma t (log a) (- b)))
365.0ms
(+ (+ (* (log a) (- 1.0)) (* (log z) y)) (fma t (log a) (- b)))

prune1.5s

Pruning

7 alts after pruning (5 fresh and 2 done)

Merged error: 0b

localize9.0ms

Local error

Found 4 expressions with local error:

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

rewrite60.0ms

Algorithm
rewrite-expression-head
Counts
4 → 72
Calls

4 calls. Slowest were:

25.0ms
(* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b))))
20.0ms
(/ 1 (/ y (* x (* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b)))))))
13.0ms
(/ y (* x (* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b))))))

series1.2s

Counts
4 → 12
Calls

4 calls. Slowest were:

462.0ms
(/ 1 (/ y (* x (* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b)))))))
402.0ms
(/ y (* x (* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b))))))
268.0ms
(* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b))))
86.0ms
(fma t (log a) (- b))

simplify5.7s

Counts
38 → 84
Calls

38 calls. Slowest were:

400.0ms
(/ (* (exp (* -1 (* (log (/ 1 z)) y))) (* x (exp (- (+ b (* t (log (/ 1 a)))))))) (* a y))
398.0ms
(+ (+ (* (log a) (- 1.0)) (log (pow z y))) (fma t (log a) (- b)))
374.0ms
(* (* (* (* (pow a (- 1.0)) (pow a (- 1.0))) (pow a (- 1.0))) (* (* (pow z y) (pow z y)) (pow z y))) (* (* (exp (fma t (log a) (- b))) (exp (fma t (log a) (- b)))) (exp (fma t (log a) (- b)))))

prune1.6s

Pruning

5 alts after pruning (3 fresh and 2 done)

Merged error: 0b

regimes1.0s

Accuracy

30.7% (1.3b remaining)

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

bsearch1.4s

end0.0ms

sample17.6s

Algorithm
intervals