Average Error: 2.0 → 0.2
Time: 28.0s
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 8.789402515263768 \cdot 10^{+149}:\\ \;\;\;\;\frac{a}{\sqrt{(k \cdot \left(10 + k\right) + 1)_*}} \cdot \frac{{k}^{m}}{\sqrt{(k \cdot \left(10 + k\right) + 1)_*}}\\ \mathbf{else}:\\ \;\;\;\;\frac{{k}^{m}}{(10 \cdot \left(\frac{k}{a}\right) + \left((\left(\frac{k}{a}\right) \cdot k + \left(\frac{1}{a}\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 < 8.789402515263768e+149

    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 add-sqr-sqrt0.1

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

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

    if 8.789402515263768e+149 < k

    1. Initial program 10.9

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;k \le 8.789402515263768 \cdot 10^{+149}:\\ \;\;\;\;\frac{a}{\sqrt{(k \cdot \left(10 + k\right) + 1)_*}} \cdot \frac{{k}^{m}}{\sqrt{(k \cdot \left(10 + k\right) + 1)_*}}\\ \mathbf{else}:\\ \;\;\;\;\frac{{k}^{m}}{(10 \cdot \left(\frac{k}{a}\right) + \left((\left(\frac{k}{a}\right) \cdot k + \left(\frac{1}{a}\right))_*\right))_*}\\ \end{array}\]

Reproduce

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

sample162.0ms

Algorithm
intervals

simplify44.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

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

prune11.0ms

Pruning

2 alts after pruning (2 fresh and 0 done)

Merged error: 1.7b

localize28.0ms

Local error

Found 1 expressions with local error:

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

rewrite18.0ms

Algorithm
rewrite-expression-head
Counts
1 → 21
Calls

1 calls. Slowest were:

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

series110.0ms

Counts
1 → 3
Calls

1 calls. Slowest were:

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

simplify2.1s

Counts
15 → 24
Calls

15 calls. Slowest were:

852.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)))
586.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))))
266.0ms
(- (+ a (* (log k) (* m a))) (* 10 (* a k)))

prune271.0ms

Pruning

5 alts after pruning (5 fresh and 0 done)

Merged error: 0.0b

localize16.0ms

Local error

Found 4 expressions with local error:

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

rewrite23.0ms

Algorithm
rewrite-expression-head
Counts
4 → 148
Calls

4 calls. Slowest were:

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

series258.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

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

simplify9.6s

Counts
181 → 160
Calls

181 calls. Slowest were:

710.0ms
(/ (* (* (* (pow k m) a) (* (pow k m) a)) (* (pow k m) a)) (* (* (sqrt (fma k (+ k 10) 1)) (sqrt (fma k (+ k 10) 1))) (sqrt (fma k (+ k 10) 1))))
657.0ms
(- (+ (* 37 (/ (* (exp (* -1 (* (log (/ 1 k)) m))) a) (pow k 3))) (/ (* (exp (* -1 (* (log (/ 1 k)) m))) a) k)) (* 5 (/ (* (exp (* -1 (* (log (/ 1 k)) m))) a) (pow k 2))))
526.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))))

prune2.3s

Pruning

5 alts after pruning (4 fresh and 1 done)

Merged error: 0.0b

localize16.0ms

Local error

Found 4 expressions with local error:

13.5b
(sqrt (fma k (+ k 10) 1))
13.5b
(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)))

rewrite13.0ms

Algorithm
rewrite-expression-head
Counts
4 → 115
Calls

4 calls. Slowest were:

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

series249.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

113.0ms
(* (/ (pow k m) (sqrt (fma k (+ k 10) 1))) (/ a (sqrt (fma k (+ k 10) 1))))
94.0ms
(/ (pow k m) (sqrt (fma k (+ k 10) 1)))
26.0ms
(sqrt (fma k (+ k 10) 1))
16.0ms
(sqrt (fma k (+ k 10) 1))

simplify5.7s

Counts
102 → 127
Calls

102 calls. Slowest were:

522.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)))))
483.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))))
445.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))))

prune1.1s

Pruning

5 alts after pruning (3 fresh and 2 done)

Merged error: 0.0b

localize5.0ms

Local error

Found 2 expressions with local error:

3.8b
(/ (fma k (+ k 10) 1) a)
0.1b
(/ (pow k m) (/ (fma k (+ k 10) 1) a))

rewrite7.0ms

Algorithm
rewrite-expression-head
Counts
2 → 50
Calls

2 calls. Slowest were:

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

series129.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

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

simplify2.2s

Counts
41 → 56
Calls

41 calls. Slowest were:

456.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))))
439.0ms
(/ (* (* (pow k m) (pow k m)) (pow k m)) (* (* (/ (fma k (+ k 10) 1) a) (/ (fma k (+ k 10) 1) a)) (/ (fma k (+ k 10) 1) a)))
273.0ms
(- (+ a (* (log k) (* m a))) (* 10 (* a k)))

prune389.0ms

Pruning

4 alts after pruning (2 fresh and 2 done)

Merged error: 0.0b

regimes134.0ms

Accuracy

94.8% (0.1b remaining)

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

bsearch72.0ms

end0.0ms

sample2.6s

Algorithm
intervals