Average Error: 2.1 → 0.1
Time: 22.9s
Precision: 64
Internal Precision: 128
\[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
\[\begin{array}{l} \mathbf{if}\;k \le 19905263.164965536:\\ \;\;\;\;\frac{1}{(k \cdot \left(k + 10\right) + 1)_*} \cdot \left({k}^{m} \cdot a\right)\\ \mathbf{else}:\\ \;\;\;\;(\left(\frac{{\left(e^{m}\right)}^{\left(\log k\right)}}{\frac{{k}^{4}}{a}}\right) \cdot 99 + \left((\left(\frac{-10}{k}\right) \cdot \left(\frac{{\left(e^{m}\right)}^{\left(\log k\right)}}{\frac{k}{\frac{a}{k}}}\right) + \left(\frac{\frac{a}{k} \cdot {k}^{m}}{k}\right))_*\right))_*\\ \end{array}\]

Error

Bits error versus a

Bits error versus k

Bits error versus m

Derivation

  1. Split input into 2 regimes
  2. if k < 19905263.164965536

    1. Initial program 0.1

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
    2. Simplified0.0

      \[\leadsto \color{blue}{\frac{{k}^{m} \cdot a}{(k \cdot \left(k + 10\right) + 1)_*}}\]
    3. Using strategy rm
    4. Applied div-inv0.0

      \[\leadsto \color{blue}{\left({k}^{m} \cdot a\right) \cdot \frac{1}{(k \cdot \left(k + 10\right) + 1)_*}}\]

    if 19905263.164965536 < k

    1. Initial program 5.5

      \[\frac{a \cdot {k}^{m}}{\left(1 + 10 \cdot k\right) + k \cdot k}\]
    2. Simplified5.5

      \[\leadsto \color{blue}{\frac{{k}^{m} \cdot a}{(k \cdot \left(k + 10\right) + 1)_*}}\]
    3. Taylor expanded around -inf 62.9

      \[\leadsto \color{blue}{\left(99 \cdot \frac{a \cdot e^{m \cdot \left(\log -1 - \log \left(\frac{-1}{k}\right)\right)}}{{k}^{4}} + \frac{a \cdot e^{m \cdot \left(\log -1 - \log \left(\frac{-1}{k}\right)\right)}}{{k}^{2}}\right) - 10 \cdot \frac{a \cdot e^{m \cdot \left(\log -1 - \log \left(\frac{-1}{k}\right)\right)}}{{k}^{3}}}\]
    4. Simplified0.6

      \[\leadsto \color{blue}{(\left(\frac{{\left(e^{m}\right)}^{\left(\log k\right)}}{\frac{{k}^{4}}{a}}\right) \cdot 99 + \left((\left(\frac{-10}{k}\right) \cdot \left(\frac{{\left(e^{m}\right)}^{\left(\log k\right)}}{\frac{k}{\frac{a}{k}}}\right) + \left(\frac{{\left(e^{m}\right)}^{\left(\log k\right)}}{\frac{k}{\frac{a}{k}}}\right))_*\right))_*}\]
    5. Taylor expanded around -inf 62.9

      \[\leadsto (\left(\frac{{\left(e^{m}\right)}^{\left(\log k\right)}}{\frac{{k}^{4}}{a}}\right) \cdot 99 + \left((\left(\frac{-10}{k}\right) \cdot \left(\frac{{\left(e^{m}\right)}^{\left(\log k\right)}}{\frac{k}{\frac{a}{k}}}\right) + \color{blue}{\left(\frac{a \cdot e^{m \cdot \left(\log -1 - \log \left(\frac{-1}{k}\right)\right)}}{{k}^{2}}\right)})_*\right))_*\]
    6. Simplified0.1

      \[\leadsto (\left(\frac{{\left(e^{m}\right)}^{\left(\log k\right)}}{\frac{{k}^{4}}{a}}\right) \cdot 99 + \left((\left(\frac{-10}{k}\right) \cdot \left(\frac{{\left(e^{m}\right)}^{\left(\log k\right)}}{\frac{k}{\frac{a}{k}}}\right) + \color{blue}{\left(\frac{{k}^{m} \cdot \frac{a}{k}}{k}\right)})_*\right))_*\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;k \le 19905263.164965536:\\ \;\;\;\;\frac{1}{(k \cdot \left(k + 10\right) + 1)_*} \cdot \left({k}^{m} \cdot a\right)\\ \mathbf{else}:\\ \;\;\;\;(\left(\frac{{\left(e^{m}\right)}^{\left(\log k\right)}}{\frac{{k}^{4}}{a}}\right) \cdot 99 + \left((\left(\frac{-10}{k}\right) \cdot \left(\frac{{\left(e^{m}\right)}^{\left(\log k\right)}}{\frac{k}{\frac{a}{k}}}\right) + \left(\frac{\frac{a}{k} \cdot {k}^{m}}{k}\right))_*\right))_*\\ \end{array}\]

Reproduce

herbie shell --seed 2019002 +o rules:numerics
(FPCore (a k m)
  :name "Falkner and Boettcher, Appendix A"
  (/ (* a (pow k m)) (+ (+ 1 (* 10 k)) (* k k))))

Details

Time bar (total: 22.3s)Debug log

sample117.0ms

Algorithm
intervals

simplify58.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

58.0ms
(/ (* a (pow k m)) (+ (+ 1 (* 10 k)) (* k k)))

prune20.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 2.6b

localize41.0ms

Local error

Found 2 expressions with local error:

2.6b
(/ (* (pow k m) a) (fma k (+ k 10) 1))
0.0b
(* (pow k m) a)

rewrite12.0ms

Algorithm
rewrite-expression-head
Counts
2 → 34
Calls

2 calls. Slowest were:

9.0ms
(/ (* (pow k m) a) (fma k (+ k 10) 1))
2.0ms
(* (pow k m) a)

series223.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

117.0ms
(/ (* (pow k m) a) (fma k (+ k 10) 1))
106.0ms
(* (pow k m) a)

simplify2.6s

Counts
20 → 40
Calls

20 calls. Slowest were:

936.0ms
(/ (* (* (* (pow k m) a) (* (pow k m) a)) (* (pow k m) a)) (* (* (fma k (+ k 10) 1) (fma k (+ k 10) 1)) (fma k (+ k 10) 1)))
524.0ms
(- (+ (* 99 (/ (* (exp (* -1 (* (log (/ 1 k)) m))) a) (pow k 4))) (/ (* (exp (* -1 (* (log (/ 1 k)) m))) a) (pow k 2))) (* 10 (/ (* (exp (* -1 (* (log (/ 1 k)) m))) a) (pow k 3))))
316.0ms
(- (+ (* 99 (/ (* a (exp (* m (- (log -1) (log (/ -1 k)))))) (pow k 4))) (/ (* a (exp (* m (- (log -1) (log (/ -1 k)))))) (pow k 2))) (* 10 (/ (* a (exp (* m (- (log -1) (log (/ -1 k)))))) (pow k 3))))

prune458.0ms

Pruning

3 alts after pruning (3 fresh and 0 done)

Merged error: 0.0b

localize6.0ms

Local error

Found 3 expressions with local error:

2.6b
(* (* (pow k m) a) (/ 1 (fma k (+ k 10) 1)))
0.4b
(/ 1 (fma k (+ k 10) 1))
0.0b
(* (pow k m) a)

rewrite12.0ms

Algorithm
rewrite-expression-head
Counts
3 → 52
Calls

3 calls. Slowest were:

7.0ms
(* (* (pow k m) a) (/ 1 (fma k (+ k 10) 1)))
4.0ms
(* (pow k m) a)
1.0ms
(/ 1 (fma k (+ k 10) 1))

series250.0ms

Counts
3 → 9
Calls

3 calls. Slowest were:

125.0ms
(* (* (pow k m) a) (/ 1 (fma k (+ k 10) 1)))
114.0ms
(* (pow k m) a)
11.0ms
(/ 1 (fma k (+ k 10) 1))

simplify2.8s

Counts
26 → 61
Calls

26 calls. Slowest were:

640.0ms
(- (+ (* 99 (/ (* (exp (* -1 (* (log (/ 1 k)) m))) a) (pow k 4))) (/ (* (exp (* -1 (* (log (/ 1 k)) m))) a) (pow k 2))) (* 10 (/ (* (exp (* -1 (* (log (/ 1 k)) m))) a) (pow k 3))))
491.0ms
(* (* (* (* (pow k m) a) (* (pow k m) a)) (* (pow k m) a)) (* (* (/ 1 (fma k (+ k 10) 1)) (/ 1 (fma k (+ k 10) 1))) (/ 1 (fma k (+ k 10) 1))))
284.0ms
(- (+ a (* (log k) (* m a))) (* 10 (* a k)))

prune597.0ms

Pruning

3 alts after pruning (2 fresh and 1 done)

Merged error: 0.0b

localize12.0ms

Local error

Found 2 expressions with local error:

4.3b
(/ (fma (* m a) (log k) a) (fma k (+ k 10) 1))
0.1b
(fma (* m a) (log k) a)

rewrite4.0ms

Algorithm
rewrite-expression-head
Counts
2 → 39
Calls

2 calls. Slowest were:

3.0ms
(/ (fma (* m a) (log k) a) (fma k (+ k 10) 1))
0.0ms
(fma (* m a) (log k) a)

series110.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

77.0ms
(/ (fma (* m a) (log k) a) (fma k (+ k 10) 1))
33.0ms
(fma (* m a) (log k) a)

simplify2.6s

Counts
31 → 45
Calls

31 calls. Slowest were:

647.0ms
(- (+ a (* a (* m (log -1)))) (* a (* m (log (/ -1 k)))))
325.0ms
(/ (* (* (fma (* m a) (log k) a) (fma (* m a) (log k) a)) (fma (* m a) (log k) a)) (* (* (fma k (+ k 10) 1) (fma k (+ k 10) 1)) (fma k (+ k 10) 1)))
241.0ms
(- (+ a (* (log k) (* m a))) (* 10 (* a k)))

prune517.0ms

Pruning

3 alts after pruning (1 fresh and 2 done)

Merged error: 0.0b

localize48.0ms

Local error

Found 4 expressions with local error:

8.0b
(fma (/ (pow (exp m) (log k)) (/ (pow k 4) a)) 99 (fma (/ -10 k) (/ (pow (exp m) (log k)) (/ k (/ a k))) (/ (pow (exp m) (log k)) (/ k (/ a k)))))
6.4b
(/ (pow (exp m) (log k)) (/ (pow k 4) a))
5.1b
(fma (/ -10 k) (/ (pow (exp m) (log k)) (/ k (/ a k))) (/ (pow (exp m) (log k)) (/ k (/ a k))))
3.7b
(/ (pow (exp m) (log k)) (/ k (/ a k)))

rewrite12.0ms

Algorithm
rewrite-expression-head
Counts
4 → 129
Calls

4 calls. Slowest were:

5.0ms
(/ (pow (exp m) (log k)) (/ (pow k 4) a))
5.0ms
(/ (pow (exp m) (log k)) (/ k (/ a k)))
0.0ms
(fma (/ (pow (exp m) (log k)) (/ (pow k 4) a)) 99 (fma (/ -10 k) (/ (pow (exp m) (log k)) (/ k (/ a k))) (/ (pow (exp m) (log k)) (/ k (/ a k)))))

series850.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

263.0ms
(fma (/ (pow (exp m) (log k)) (/ (pow k 4) a)) 99 (fma (/ -10 k) (/ (pow (exp m) (log k)) (/ k (/ a k))) (/ (pow (exp m) (log k)) (/ k (/ a k)))))
260.0ms
(fma (/ -10 k) (/ (pow (exp m) (log k)) (/ k (/ a k))) (/ (pow (exp m) (log k)) (/ k (/ a k))))
176.0ms
(/ (pow (exp m) (log k)) (/ k (/ a k)))
150.0ms
(/ (pow (exp m) (log k)) (/ (pow k 4) a))

simplify5.6s

Counts
147 → 141
Calls

147 calls. Slowest were:

676.0ms
(- (+ (* 99 (/ (* (exp (* -1 (* (log (/ 1 k)) m))) a) (pow k 4))) (/ (* (exp (* -1 (* (log (/ 1 k)) m))) a) (pow k 2))) (* 10 (/ (* (exp (* -1 (* (log (/ 1 k)) m))) a) (pow k 3))))
526.0ms
(/ (* a (exp (* m (- (log -1) (log (/ -1 k)))))) (pow k 2))
459.0ms
(- (/ (* (exp (* -1 (* (log (/ 1 k)) m))) a) (pow k 2)) (* 10 (/ (* (exp (* -1 (* (log (/ 1 k)) m))) a) (pow k 3))))

prune2.3s

Pruning

4 alts after pruning (2 fresh and 2 done)

Merged error: 0b

regimes169.0ms

Accuracy

98.7% (0.0b remaining)

Error of 0.1b against oracle of 0.0b and baseline of 2.1b

bsearch43.0ms

end0.0ms

sample2.8s

Algorithm
intervals