Average Error: 2.0 → 1.8
Time: 59.7s
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.4424902966070684 \cdot 10^{-39} \lor \neg \left(y \le -1.802008489021528 \cdot 10^{-303}\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}{\frac{y}{{z}^{y} \cdot e^{(t \cdot \left(\log a\right) + \left(-b\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 < -1.4424902966070684e-39 or -1.802008489021528e-303 < y

    1. Initial program 1.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*1.4

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

    if -1.4424902966070684e-39 < y < -1.802008489021528e-303

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

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

      \[\leadsto \frac{x}{\frac{y}{\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)}}}}\]
    5. Simplified2.2

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

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \le -1.4424902966070684 \cdot 10^{-39} \lor \neg \left(y \le -1.802008489021528 \cdot 10^{-303}\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}{\frac{y}{{z}^{y} \cdot e^{(t \cdot \left(\log a\right) + \left(-b\right))_*}}}}{{a}^{1.0}}\\ \end{array}\]

Reproduce

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

start1.2s

Algorithm
intervals

setup383.0ms

Pruning

2 alts after pruning (2 fresh and 0 done)

Merged error: 1.0b

localize30.0ms

Local error

Found 4 expressions with local error:

1.1b
(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.2b
(* y (log z))
0.2b
(* (- t 1.0) (log a))

rewrite43.0ms

Algorithm
rewrite-expression-head
Counts
4 → 65
Calls

4 calls. Slowest were:

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

series367.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

161.0ms
(/ (* x (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) y)
98.0ms
(exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))
56.0ms
(* (- t 1.0) (log a))
51.0ms
(* y (log z))

simplify3.4s

Counts
34 → 77
Calls

34 calls. Slowest were:

324.0ms
(- (+ (* t (log -1)) (* 1.0 (log (/ -1 a)))) (+ (* t (log (/ -1 a))) (* 1.0 (log -1))))
291.0ms
(* (* (* (- t 1.0) (- t 1.0)) (- t 1.0)) (* (* (log a) (log a)) (log a)))
274.0ms
(+ (* t (* (log a) (exp (- (* 1.0 (log a)))))) (+ (exp (- (* 1.0 (log a)))) (* (log z) (* (exp (- (* 1.0 (log a)))) y))))

prune1.6s

Pruning

3 alts after pruning (3 fresh and 0 done)

Merged error: 0.1b

localize12.0ms

Local error

Found 4 expressions with local error:

1.1b
(exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))
1.0b
(/ x (/ y (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))))
0.2b
(* y (log z))
0.2b
(* (- t 1.0) (log a))

rewrite49.0ms

Algorithm
rewrite-expression-head
Counts
4 → 69
Calls

4 calls. Slowest were:

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

series394.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

185.0ms
(/ x (/ y (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))))
114.0ms
(exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))
60.0ms
(* (- t 1.0) (log a))
34.0ms
(* y (log z))

simplify4.3s

Counts
39 → 81
Calls

39 calls. Slowest were:

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

prune1.5s

Pruning

4 alts after pruning (3 fresh and 1 done)

Merged error: 0.0b

localize58.0ms

Local error

Found 4 expressions with local error:

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

rewrite44.0ms

Algorithm
rewrite-expression-head
Counts
4 → 69
Calls

4 calls. Slowest were:

24.0ms
(* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b))))
9.0ms
(/ x (/ y (* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b))))))
9.0ms
(/ y (* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b)))))

series1.0s

Counts
4 → 12
Calls

4 calls. Slowest were:

468.0ms
(/ x (/ y (* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b))))))
261.0ms
(* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b))))
243.0ms
(/ y (* (* (pow a (- 1.0)) (pow z y)) (exp (fma t (log a) (- b)))))
50.0ms
(fma t (log a) (- b))

simplify5.9s

Counts
37 → 81
Calls

37 calls. Slowest were:

429.0ms
(+ (+ (* (log a) (- 1.0)) (* (log z) y)) (fma t (log a) (- b)))
422.0ms
(+ (+ (* (log a) (- 1.0)) (log (pow z y))) (fma t (log a) (- b)))
412.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.7s

Pruning

6 alts after pruning (5 fresh and 1 done)

Merged error: 0.0b

localize38.0ms

Local error

Found 4 expressions with local error:

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

rewrite20.0ms

Algorithm
rewrite-expression-head
Counts
4 → 56
Calls

4 calls. Slowest were:

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

series865.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

542.0ms
(/ x (* (/ y (* (* 1 (pow z y)) (exp (fma t (log a) (- b))))) (pow a 1.0)))
174.0ms
(* (* 1 (pow z y)) (exp (fma t (log a) (- b))))
86.0ms
(fma t (log a) (- b))
63.0ms
(exp (fma t (log a) (- b)))

simplify2.5s

Counts
26 → 68
Calls

26 calls. Slowest were:

351.0ms
(* (exp (* -1 (* (log (/ 1 z)) y))) (exp (- (+ b (* t (log (/ 1 a)))))))
335.0ms
(/ (* (exp (* -1 (* (log (/ 1 z)) y))) (* x (exp (- (+ b (* t (log (/ 1 a)))))))) (* a y))
328.0ms
(exp (- (* t (log -1)) (+ (* t (log (/ -1 a))) b)))

prune1.5s

Pruning

6 alts after pruning (4 fresh and 2 done)

Merged error: 0.0b

regimes1.1s

Accuracy

3.1% (1.8b remaining)

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

bsearch2.3s