Average Error: 1.9 → 0.2
Time: 23.2s
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 4.6379660858617284 \cdot 10^{+148}:\\ \;\;\;\;\frac{\frac{1}{\sqrt{(k \cdot \left(k + 10\right) + 1)_*}}}{\sqrt{(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{{\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 < 4.6379660858617284e+148

    1. Initial program 0.1

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

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

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

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

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

    if 4.6379660858617284e+148 < k

    1. Initial program 9.2

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

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

      \[\leadsto \color{blue}{\left({k}^{m} \cdot a\right) \cdot \frac{1}{(k \cdot \left(k + 10\right) + 1)_*}}\]
    5. Using strategy rm
    6. Applied add-sqr-sqrt9.2

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

      \[\leadsto \left({k}^{m} \cdot a\right) \cdot \color{blue}{\frac{\frac{1}{\sqrt{(k \cdot \left(k + 10\right) + 1)_*}}}{\sqrt{(k \cdot \left(k + 10\right) + 1)_*}}}\]
    8. 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}}}\]
    9. Simplified0.5

      \[\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 4.6379660858617284 \cdot 10^{+148}:\\ \;\;\;\;\frac{\frac{1}{\sqrt{(k \cdot \left(k + 10\right) + 1)_*}}}{\sqrt{(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{{\left(e^{m}\right)}^{\left(\log k\right)}}{\frac{k}{\frac{a}{k}}}\right))_*\right))_*\\ \end{array}\]

Reproduce

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

start108.0ms

Algorithm
intervals

setup82.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 1.7b

localize17.0ms

Local error

Found 2 expressions with local error:

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

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

series208.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

107.0ms
(* (pow k m) a)
100.0ms
(/ (* (pow k m) a) (fma k (+ k 10) 1))

simplify2.3s

Counts
20 → 40
Calls

20 calls. Slowest were:

892.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)))
436.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))))
234.0ms
(- (+ a (* (log k) (* m a))) (* 10 (* a k)))

prune592.0ms

Pruning

7 alts after pruning (6 fresh and 1 done)

Merged error: 0.0b

localize16.0ms

Local error

Found 3 expressions with local error:

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

rewrite21.0ms

Algorithm
rewrite-expression-head
Counts
3 → 52
Calls

3 calls. Slowest were:

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

series227.0ms

Counts
3 → 9
Calls

3 calls. Slowest were:

124.0ms
(* (* (pow k m) a) (/ 1 (fma k (+ k 10) 1)))
91.0ms
(* (pow k m) a)
11.0ms
(/ 1 (fma k (+ k 10) 1))

simplify2.3s

Counts
26 → 61
Calls

26 calls. Slowest were:

460.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))))
423.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))))
308.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))))

prune676.0ms

Pruning

5 alts after pruning (5 fresh and 0 done)

Merged error: 0.0b

localize10.0ms

Local error

Found 4 expressions with local error:

15.6b
(sqrt (fma k (+ k 10) 1))
15.6b
(sqrt (fma k (+ k 10) 1))
1.7b
(* (* (pow k m) a) (/ (/ 1 (sqrt (fma k (+ k 10) 1))) (sqrt (fma k (+ k 10) 1))))
0.1b
(/ (/ 1 (sqrt (fma k (+ k 10) 1))) (sqrt (fma k (+ k 10) 1)))

rewrite17.0ms

Algorithm
rewrite-expression-head
Counts
4 → 127
Calls

4 calls. Slowest were:

9.0ms
(* (* (pow k m) a) (/ (/ 1 (sqrt (fma k (+ k 10) 1))) (sqrt (fma k (+ k 10) 1))))
5.0ms
(/ (/ 1 (sqrt (fma k (+ k 10) 1))) (sqrt (fma k (+ k 10) 1)))
1.0ms
(sqrt (fma k (+ k 10) 1))

series145.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

99.0ms
(* (* (pow k m) a) (/ (/ 1 (sqrt (fma k (+ k 10) 1))) (sqrt (fma k (+ k 10) 1))))
15.0ms
(sqrt (fma k (+ k 10) 1))
15.0ms
(sqrt (fma k (+ k 10) 1))
14.0ms
(/ (/ 1 (sqrt (fma k (+ k 10) 1))) (sqrt (fma k (+ k 10) 1)))

simplify6.2s

Counts
121 → 139
Calls

121 calls. Slowest were:

1.3s
(/ (* (* (/ 1 (sqrt (fma k (+ k 10) 1))) (/ 1 (sqrt (fma k (+ k 10) 1)))) (/ 1 (sqrt (fma k (+ k 10) 1)))) (* (* (sqrt (fma k (+ k 10) 1)) (sqrt (fma k (+ k 10) 1))) (sqrt (fma k (+ k 10) 1))))
358.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)))

prune2.2s

Pruning

5 alts after pruning (4 fresh and 1 done)

Merged error: 0.0b

localize30.0ms

Local error

Found 4 expressions with local error:

15.6b
(sqrt (fma k (+ k 10) 1))
15.6b
(sqrt (fma k (+ k 10) 1))
15.6b
(sqrt (fma k (+ k 10) 1))
15.6b
(sqrt (fma k (+ k 10) 1))

rewrite7.0ms

Algorithm
rewrite-expression-head
Counts
4 → 56
Calls

4 calls. Slowest were:

2.0ms
(sqrt (fma k (+ k 10) 1))
2.0ms
(sqrt (fma k (+ k 10) 1))
2.0ms
(sqrt (fma k (+ k 10) 1))

series73.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

25.0ms
(sqrt (fma k (+ k 10) 1))
18.0ms
(sqrt (fma k (+ k 10) 1))
15.0ms
(sqrt (fma k (+ k 10) 1))
15.0ms
(sqrt (fma k (+ k 10) 1))

simplify938.0ms

Counts
28 → 68
Calls

28 calls. Slowest were:

97.0ms
(- (+ 1 (* 5 k)) (* 12 (pow k 2)))
79.0ms
(- (+ 1 (* 5 k)) (* 12 (pow k 2)))
72.0ms
(- (* 12 (/ 1 k)) (+ 5 k))

prune1.3s

Pruning

5 alts after pruning (3 fresh and 2 done)

Merged error: 0.0b

regimes182.0ms

Accuracy

95.4% (0.1b remaining)

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

bsearch165.0ms