Average Error: 2.1 → 0.2
Time: 26.7s
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 2.9740929793241473 \cdot 10^{+109}:\\ \;\;\;\;\frac{\left(\sqrt{{k}^{m}} \cdot a\right) \cdot \sqrt{{k}^{m}}}{(k \cdot \left(k + 10\right) + 1)_*}\\ \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{{\left(e^{m}\right)}^{\left(\log k\right)}}{\frac{k}{\frac{a}{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 < 2.9740929793241473e+109

    1. Initial program 0.0

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

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

      \[\leadsto \frac{\color{blue}{\left(\sqrt{{k}^{m}} \cdot \sqrt{{k}^{m}}\right)} \cdot a}{(k \cdot \left(k + 10\right) + 1)_*}\]
    5. Applied associate-*l*0.0

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

    if 2.9740929793241473e+109 < k

    1. Initial program 8.4

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

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

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

      \[\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))_*}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.2

    \[\leadsto \begin{array}{l} \mathbf{if}\;k \le 2.9740929793241473 \cdot 10^{+109}:\\ \;\;\;\;\frac{\left(\sqrt{{k}^{m}} \cdot a\right) \cdot \sqrt{{k}^{m}}}{(k \cdot \left(k + 10\right) + 1)_*}\\ \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{{\left(e^{m}\right)}^{\left(\log k\right)}}{\frac{k}{\frac{a}{k}}}\right))_*\right))_*\\ \end{array}\]

Reproduce

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

start139.0ms

Algorithm
intervals

setup86.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 2.3b

localize30.0ms

Local error

Found 2 expressions with local error:

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

rewrite15.0ms

Algorithm
rewrite-expression-head
Counts
2 → 34
Calls

2 calls. Slowest were:

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

series242.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

132.0ms
(/ (* (pow k m) a) (fma k (+ k 10) 1))
110.0ms
(* (pow k m) a)

simplify2.6s

Counts
20 → 40
Calls

20 calls. Slowest were:

922.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)))
594.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))))
293.0ms
(- (+ a (* (log k) (* m a))) (* 10 (* a k)))

prune657.0ms

Pruning

4 alts after pruning (4 fresh and 0 done)

Merged error: 0.0b

localize10.0ms

Local error

Found 3 expressions with local error:

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

rewrite30.0ms

Algorithm
rewrite-expression-head
Counts
3 → 59
Calls

3 calls. Slowest were:

11.0ms
(* (sqrt (pow k m)) (* (sqrt (pow k m)) a))
11.0ms
(/ (* (sqrt (pow k m)) (* (sqrt (pow k m)) a)) (fma k (+ k 10) 1))
6.0ms
(* (sqrt (pow k m)) a)

series404.0ms

Counts
3 → 9
Calls

3 calls. Slowest were:

177.0ms
(* (sqrt (pow k m)) a)
113.0ms
(/ (* (sqrt (pow k m)) (* (sqrt (pow k m)) a)) (fma k (+ k 10) 1))
113.0ms
(* (sqrt (pow k m)) (* (sqrt (pow k m)) a))

simplify3.2s

Counts
36 → 68
Calls

36 calls. Slowest were:

612.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))))
486.0ms
(* (* (* (sqrt (pow k m)) (sqrt (pow k m))) (sqrt (pow k m))) (* (* (* (sqrt (pow k m)) a) (* (sqrt (pow k m)) a)) (* (sqrt (pow k m)) a)))
338.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))))

prune1.0s

Pruning

4 alts after pruning (3 fresh and 1 done)

Merged error: 0.0b

localize10.0ms

Local error

Found 4 expressions with local error:

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

rewrite14.0ms

Algorithm
rewrite-expression-head
Counts
4 → 115
Calls

4 calls. Slowest were:

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

series218.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

105.0ms
(* (/ (pow k m) (sqrt (fma k (+ k 10) 1))) (/ a (sqrt (fma k (+ k 10) 1))))
64.0ms
(/ (pow k m) (sqrt (fma k (+ k 10) 1)))
25.0ms
(sqrt (fma k (+ k 10) 1))
24.0ms
(sqrt (fma k (+ k 10) 1))

simplify6.5s

Counts
102 → 127
Calls

102 calls. Slowest were:

660.0ms
(+ (- (log (pow k m)) (log (sqrt (fma k (+ k 10) 1)))) (log (/ a (sqrt (fma k (+ k 10) 1)))))
611.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))))
473.0ms
(* (* (* (/ (pow k m) (sqrt (fma k (+ k 10) 1))) (/ (pow k m) (sqrt (fma k (+ k 10) 1)))) (/ (pow k m) (sqrt (fma k (+ k 10) 1)))) (* (* (/ a (sqrt (fma k (+ k 10) 1))) (/ a (sqrt (fma k (+ k 10) 1)))) (/ a (sqrt (fma k (+ k 10) 1)))))

prune2.0s

Pruning

3 alts after pruning (2 fresh and 1 done)

Merged error: 0.0b

localize24.0ms

Local error

Found 4 expressions with local error:

14.4b
(cbrt (fma k (+ k 10) 1))
14.4b
(cbrt (fma (+ 10 k) k 1))
14.0b
(sqrt (fma k (+ k 10) 1))
0.2b
(* (fabs (cbrt (fma (+ 10 k) k 1))) (sqrt (cbrt (fma k (+ k 10) 1))))

rewrite9.0ms

Algorithm
rewrite-expression-head
Counts
4 → 65
Calls

4 calls. Slowest were:

6.0ms
(* (fabs (cbrt (fma (+ 10 k) k 1))) (sqrt (cbrt (fma k (+ k 10) 1))))
1.0ms
(sqrt (fma k (+ k 10) 1))
1.0ms
(cbrt (fma k (+ k 10) 1))

series160.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

51.0ms
(cbrt (fma k (+ k 10) 1))
46.0ms
(cbrt (fma (+ 10 k) k 1))
40.0ms
(* (fabs (cbrt (fma (+ 10 k) k 1))) (sqrt (cbrt (fma k (+ k 10) 1))))
22.0ms
(sqrt (fma k (+ k 10) 1))

simplify2.3s

Counts
36 → 77
Calls

36 calls. Slowest were:

420.0ms
(- (+ (fabs (pow (fma (+ 10 k) k 1) 1/3)) (* 5/3 (* (fabs (pow (fma (+ 10 k) k 1) 1/3)) k))) (* 61/9 (* (fabs (pow (fma (+ 10 k) k 1) 1/3)) (pow k 2))))
304.0ms
(- (+ (* (fabs (pow (fma (+ 10 k) k 1) 1/3)) (pow k 1/3)) (* 5/3 (* (fabs (pow (fma (+ 10 k) k 1) 1/3)) (pow (/ 1 (pow k 2)) 1/3)))) (* 61/9 (* (fabs (pow (fma (+ 10 k) k 1) 1/3)) (pow (/ 1 (pow k 5)) 1/3))))
270.0ms
(- (+ (* (pow (* k -1) 1/3) (fabs (pow (fma (+ 10 k) k 1) 1/3))) (* 5/3 (* (pow (/ -1 (pow k 2)) 1/3) (fabs (pow (fma (+ 10 k) k 1) 1/3))))) (* 61/9 (* (pow (/ -1 (pow k 5)) 1/3) (fabs (pow (fma (+ 10 k) k 1) 1/3)))))

prune1.7s

Pruning

3 alts after pruning (1 fresh and 2 done)

Merged error: 0.0b

regimes166.0ms

Accuracy

97.2% (0.1b remaining)

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

bsearch139.0ms