Average Error: 2.0 → 0.2
Time: 24.3s
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 1.3283693179329341 \cdot 10^{+154}:\\ \;\;\;\;{k}^{m} \cdot \frac{a}{(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 < 1.3283693179329341e+154

    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 *-un-lft-identity0.0

      \[\leadsto \frac{{k}^{m} \cdot a}{\color{blue}{1 \cdot (k \cdot \left(k + 10\right) + 1)_*}}\]
    5. Applied times-frac0.0

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

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

    if 1.3283693179329341e+154 < k

    1. Initial program 10.3

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

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

      \[\leadsto \frac{{k}^{m} \cdot a}{\color{blue}{1 \cdot (k \cdot \left(k + 10\right) + 1)_*}}\]
    5. Applied times-frac10.2

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

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

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

      \[\leadsto \color{blue}{\sqrt{{k}^{m}} \cdot \left(\sqrt{{k}^{m}} \cdot \frac{a}{(k \cdot \left(k + 10\right) + 1)_*}\right)}\]
    10. 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}}}\]
    11. 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))_*}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.2

    \[\leadsto \begin{array}{l} \mathbf{if}\;k \le 1.3283693179329341 \cdot 10^{+154}:\\ \;\;\;\;{k}^{m} \cdot \frac{a}{(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 2019004 +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: 23.4s)Debug log

sample143.0ms

Algorithm
intervals

simplify75.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

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

prune21.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 1.9b

localize18.0ms

Local error

Found 2 expressions with local error:

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

rewrite8.0ms

Algorithm
rewrite-expression-head
Counts
2 → 34
Calls

2 calls. Slowest were:

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

series231.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

127.0ms
(* (pow k m) a)
103.0ms
(/ (* (pow k m) a) (fma k (+ k 10) 1))

simplify2.5s

Counts
20 → 40
Calls

20 calls. Slowest were:

886.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)))
522.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))))
285.0ms
(- (+ a (* (log k) (* m a))) (* 10 (* a k)))

prune387.0ms

Pruning

5 alts after pruning (5 fresh and 0 done)

Merged error: 0.0b

localize14.0ms

Local error

Found 2 expressions with local error:

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

rewrite9.0ms

Algorithm
rewrite-expression-head
Counts
2 → 36
Calls

2 calls. Slowest were:

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

series181.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

134.0ms
(* (pow k m) (/ a (fma k (+ k 10) 1)))
47.0ms
(/ a (fma k (+ k 10) 1))

simplify2.3s

Counts
19 → 42
Calls

19 calls. Slowest were:

504.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))))
358.0ms
(- (+ (* 99 (* a (pow k 2))) a) (* 10 (* a k)))
273.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))))

prune526.0ms

Pruning

5 alts after pruning (4 fresh and 1 done)

Merged error: 0.0b

localize17.0ms

Local error

Found 4 expressions with local error:

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

rewrite16.0ms

Algorithm
rewrite-expression-head
Counts
4 → 67
Calls

4 calls. Slowest were:

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

series335.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

123.0ms
(* (sqrt (pow k m)) (* (sqrt (pow k m)) (/ a (fma k (+ k 10) 1))))
93.0ms
(sqrt (pow k m))
82.0ms
(sqrt (pow k m))
36.0ms
(/ a (fma k (+ k 10) 1))

simplify4.1s

Counts
36 → 79
Calls

36 calls. Slowest were:

532.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))))
457.0ms
(* (* (* (sqrt (pow k m)) (sqrt (pow k m))) (sqrt (pow k m))) (* (* (* (sqrt (pow k m)) (/ a (fma k (+ k 10) 1))) (* (sqrt (pow k m)) (/ a (fma k (+ k 10) 1)))) (* (sqrt (pow k m)) (/ a (fma k (+ k 10) 1)))))
388.0ms
(* (* (* (sqrt (pow k m)) (sqrt (pow k m))) (sqrt (pow k m))) (* (* (* (sqrt (pow k m)) (sqrt (pow k m))) (sqrt (pow k m))) (* (* (/ a (fma k (+ k 10) 1)) (/ a (fma k (+ k 10) 1))) (/ a (fma k (+ k 10) 1)))))

prune946.0ms

Pruning

5 alts after pruning (3 fresh and 2 done)

Merged error: 0.0b

localize11.0ms

Local error

Found 4 expressions with local error:

14.5b
(sqrt (fma k (+ k 10) 1))
14.5b
(sqrt (fma k (+ k 10) 1))
0.1b
(* (/ (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)))

rewrite26.0ms

Algorithm
rewrite-expression-head
Counts
4 → 115
Calls

4 calls. Slowest were:

13.0ms
(* (/ (pow k m) (sqrt (fma k (+ k 10) 1))) (/ a (sqrt (fma k (+ k 10) 1))))
7.0ms
(/ (pow k m) (sqrt (fma k (+ k 10) 1)))
2.0ms
(sqrt (fma k (+ k 10) 1))

series278.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

128.0ms
(* (/ (pow k m) (sqrt (fma k (+ k 10) 1))) (/ a (sqrt (fma k (+ k 10) 1))))
95.0ms
(/ (pow k m) (sqrt (fma k (+ k 10) 1)))
30.0ms
(sqrt (fma k (+ k 10) 1))
25.0ms
(sqrt (fma k (+ k 10) 1))

simplify5.6s

Counts
102 → 127
Calls

102 calls. Slowest were:

506.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))))
454.0ms
(/ (* (* (pow k m) (pow k m)) (pow k m)) (* (* (sqrt (fma k (+ k 10) 1)) (sqrt (fma k (+ k 10) 1))) (sqrt (fma k (+ k 10) 1))))
443.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)))))

prune1.8s

Pruning

5 alts after pruning (2 fresh and 3 done)

Merged error: 0.0b

regimes120.0ms

Accuracy

98.8% (0.0b remaining)

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

bsearch155.0ms

end0.0ms

sample3.7s

Algorithm
intervals