Average Error: 1.8 → 1.1
Time: 1.1m
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.3107533376997555 \lor \neg \left(y \le 4.508099059790703\right):\\ \;\;\;\;\frac{x \cdot \sqrt[3]{e^{\left(\log a \cdot \left(t - 1.0\right) + \log z \cdot y\right) - b} \cdot \left(e^{\left(\log a \cdot \left(t - 1.0\right) + \log z \cdot y\right) - b} \cdot e^{\left(\log a \cdot \left(t - 1.0\right) + \log z \cdot y\right) - b}\right)}}{y}\\ \mathbf{else}:\\ \;\;\;\;\frac{x \cdot \left(e^{(t \cdot \left(\log a\right) + \left(-b\right))_*} \cdot \left({a}^{-1.0} \cdot {z}^{y}\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.3107533376997555 or 4.508099059790703 < 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. Using strategy rm
    3. Applied add-cbrt-cube0.0

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

    if -1.3107533376997555 < y < 4.508099059790703

    1. Initial program 3.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 add-cbrt-cube12.0

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

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

      \[\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. Taylor expanded around -inf 62.8

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

      \[\leadsto \frac{x \cdot \left(\color{blue}{\left({a}^{-1.0} \cdot {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.1

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

Reproduce

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

start943.0ms

Algorithm
intervals

setup342.0ms

Pruning

2 alts after pruning (2 fresh and 0 done)

Merged error: 1.1b

localize44.0ms

Local error

Found 4 expressions with local error:

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

rewrite61.0ms

Algorithm
rewrite-expression-head
Counts
4 → 65
Calls

4 calls. Slowest were:

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

series459.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

181.0ms
(/ (* x (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) y)
145.0ms
(exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))
82.0ms
(* (- t 1.0) (log a))
50.0ms
(* y (log z))

simplify3.8s

Counts
34 → 77
Calls

34 calls. Slowest were:

501.0ms
(exp (- (+ (* y (log -1)) (+ (* 1.0 (log (/ -1 a))) (* t (log -1)))) (+ b (+ (* t (log (/ -1 a))) (+ (* y (log (/ -1 z))) (* 1.0 (log -1)))))))
374.0ms
(+ (* t (* (log a) (exp (- (* 1.0 (log a)))))) (+ (exp (- (* 1.0 (log a)))) (* (log z) (* (exp (- (* 1.0 (log a)))) y))))
372.0ms
(- (+ (* t (log -1)) (* 1.0 (log (/ -1 a)))) (+ (* t (log (/ -1 a))) (* 1.0 (log -1))))

prune1.6s

Pruning

7 alts after pruning (7 fresh and 0 done)

Merged error: 0.0b

localize35.0ms

Local error

Found 4 expressions with local error:

8.5b
(cbrt (* (* (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b)) (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))))
1.2b
(exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))
1.2b
(exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))
1.2b
(exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))

rewrite478.0ms

Algorithm
rewrite-expression-head
Counts
4 → 70
Calls

4 calls. Slowest were:

376.0ms
(cbrt (* (* (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b)) (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))))
47.0ms
(exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))
30.0ms
(exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))

series640.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

172.0ms
(cbrt (* (* (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b)) (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))))
164.0ms
(exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))
160.0ms
(exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))
144.0ms
(exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))

simplify7.2s

Counts
45 → 82
Calls

45 calls. Slowest were:

368.0ms
(cbrt (* (* (exp (+ (* y (log z)) (* (- t 1.0) (log a)))) (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))))
302.0ms
(cbrt (* (* (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b)) (exp (+ (* y (log z)) (* (- t 1.0) (log a))))) (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))))
299.0ms
(cbrt (* (* (exp (+ (* y (log z)) (* (- t 1.0) (log a)))) (exp (+ (* y (log z)) (* (- t 1.0) (log a))))) (exp (+ (* y (log z)) (* (- t 1.0) (log a))))))

prune1.8s

Pruning

8 alts after pruning (7 fresh and 1 done)

Merged error: 0.0b

localize44.0ms

Local error

Found 4 expressions with local error:

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

rewrite35.0ms

Algorithm
rewrite-expression-head
Counts
4 → 73
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))))) y)
4.0ms
(* (pow a (- 1.0)) (pow z y))

series988.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

442.0ms
(/ (* x (* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b))))) y)
287.0ms
(* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b))))
198.0ms
(* (pow a (- 1.0)) (pow z y))
61.0ms
(fma t (log a) (- b))

simplify5.2s

Counts
41 → 85
Calls

41 calls. Slowest were:

411.0ms
(+ (+ (* (log a) (- 1.0)) (log (pow z y))) (fma t (log a) (- b)))
391.0ms
(+ (+ (* (log a) (- 1.0)) (* (log z) y)) (fma t (log a) (- b)))
367.0ms
(+ (* (pow (/ 1 (pow a 1.0)) 1.0) (/ (* x (* t (log a))) y)) (+ (* (pow (/ 1 (pow a 1.0)) 1.0) (* x (log z))) (* (pow (/ 1 (pow a 1.0)) 1.0) (/ x y))))

prune1.8s

Pruning

6 alts after pruning (5 fresh and 1 done)

Merged error: 0b

localize14.0ms

Local error

Found 4 expressions with local error:

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

rewrite35.0ms

Algorithm
rewrite-expression-head
Counts
4 → 67
Calls

4 calls. Slowest were:

18.0ms
(* (* (pow a -1.0) (pow z y)) (exp (fma t (log a) (- b))))
11.0ms
(/ (* x (* (* (pow a -1.0) (pow z y)) (exp (fma t (log a) (- b))))) y)
5.0ms
(* (pow a -1.0) (pow z y))

series1.0s

Counts
4 → 12
Calls

4 calls. Slowest were:

376.0ms
(/ (* x (* (* (pow a -1.0) (pow z y)) (exp (fma t (log a) (- b))))) y)
361.0ms
(* (* (pow a -1.0) (pow z y)) (exp (fma t (log a) (- b))))
242.0ms
(* (pow a -1.0) (pow z y))
68.0ms
(fma t (log a) (- b))

simplify4.1s

Counts
35 → 79
Calls

35 calls. Slowest were:

475.0ms
(+ (* (pow (/ 1 (pow a 1.0)) 1.0) (/ (* x (* t (log a))) y)) (+ (* (pow (/ 1 (pow a 1.0)) 1.0) (* x (log z))) (* (pow (/ 1 (pow a 1.0)) 1.0) (/ x y))))
380.0ms
(+ (* (pow (/ 1 (pow a 1.0)) 1.0) (* (log z) y)) (+ (* 1/2 (* (pow (/ 1 (pow a 1.0)) 1.0) (* (pow (log z) 2) (pow y 2)))) (pow (/ 1 (pow a 1.0)) 1.0)))
321.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)))))

prune1.7s

Pruning

6 alts after pruning (4 fresh and 2 done)

Merged error: 0b

regimes1.1s

Accuracy

83% (1.1b remaining)

Error of 1.1b against oracle of 0.0b and baseline of 6.3b

bsearch2.3s