Average Error: 2.0 → 0.1
Time: 27.5s
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.0081275135800521 \cdot 10^{+152}:\\ \;\;\;\;\frac{{k}^{m} \cdot 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{{k}^{m}}{k} \cdot \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.0081275135800521e+152

    1. Initial program 0.1

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

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

    if 1.0081275135800521e+152 < k

    1. Initial program 9.9

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

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

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

      \[\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)_*}}}\]
    6. 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}}}\]
    7. Simplified0.4

      \[\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))_*}\]
    8. Taylor expanded around inf 9.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{e^{-1 \cdot \left(\log \left(\frac{1}{k}\right) \cdot m\right)} \cdot a}{{k}^{2}}\right)})_*\right))_*\]
    9. 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{a}{k} \cdot \frac{{k}^{m}}{k}\right)})_*\right))_*\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;k \le 1.0081275135800521 \cdot 10^{+152}:\\ \;\;\;\;\frac{{k}^{m} \cdot 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{{k}^{m}}{k} \cdot \frac{a}{k}\right))_*\right))_*\\ \end{array}\]

Reproduce

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

sample63.0ms

Algorithm
intervals
Results
36.0ms390×body80valid
10.0ms124×body80nan

simplify55.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
55.0ms
(/ (* a (pow k m)) (+ (+ 1 (* 10 k)) (* k k)))

prune39.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 2.9b

localize32.0ms

Local error

Found 2 expressions with local error:

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

rewrite11.0ms

Algorithm
rewrite-expression-head
Rules
add-cube-cbrt
add-exp-log
add-cbrt-cube
*-un-lft-identity
add-sqr-sqrt
times-frac
associate-/r*
add-log-exp
log1p-expm1-u
pow1
expm1-log1p-u
associate-/l*
div-inv
fma-udef
div-exp
frac-2neg
clear-num
cbrt-undiv
Counts
2 → 31
Calls
2 calls:
Slowest
10.0ms
(/ (* (pow k m) a) (fma k (+ k 10) 1))
0.0ms
(fma k (+ k 10) 1)

series151.0ms

Counts
2 → 6
Calls
2 calls:
Slowest
136.0ms
(/ (* (pow k m) a) (fma k (+ k 10) 1))
15.0ms
(fma k (+ k 10) 1)

simplify2.3s

Counts
18 → 37
Calls
18 calls:
Slowest
871.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)))
544.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))))
289.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))))
275.0ms
(- (+ a (* (log k) (* m a))) (* 10 (* a k)))
52.0ms
(- (log (* (pow k m) a)) (log (fma k (+ k 10) 1)))

prune375.0ms

Pruning

3 alts after pruning (2 fresh and 1 done)

Merged error: 0.0b

localize11.0ms

Local error

Found 4 expressions with local error:

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

rewrite11.0ms

Algorithm
rewrite-expression-head
Rules
24×add-sqr-sqrt
22×add-cube-cbrt
22×associate-*l*
22×*-un-lft-identity
18×sqrt-prod
18×times-frac
11×add-exp-log
add-cbrt-cube
associate-/r*
pow1
add-log-exp
log1p-expm1-u
associate-*r*
expm1-log1p-u
div-inv
prod-exp
cbrt-unprod
div-exp
pow1/2
rem-sqrt-square
*-commutative
associate-*r/
associate-*l/
pow-prod-down
frac-2neg
clear-num
cbrt-undiv
pow-to-exp
frac-times
Counts
4 → 91
Calls
4 calls:
Slowest
7.0ms
(* (/ (pow k m) (sqrt (fma k (+ k 10) 1))) (/ a (sqrt (fma k (+ k 10) 1))))
1.0ms
(/ a (sqrt (fma k (+ k 10) 1)))
1.0ms
(sqrt (fma k (+ k 10) 1))
1.0ms
(sqrt (fma k (+ k 10) 1))

series204.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
111.0ms
(* (/ (pow k m) (sqrt (fma k (+ k 10) 1))) (/ a (sqrt (fma k (+ k 10) 1))))
62.0ms
(/ a (sqrt (fma k (+ k 10) 1)))
16.0ms
(sqrt (fma k (+ k 10) 1))
15.0ms
(sqrt (fma k (+ k 10) 1))

simplify4.7s

Counts
61 → 103
Calls
61 calls:
Slowest
519.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))))
511.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)))))
354.0ms
(+ (- (* (log k) m) (log (sqrt (fma k (+ k 10) 1)))) (log (/ a (sqrt (fma k (+ k 10) 1)))))
299.0ms
(- (+ (* 37 (* a (pow k 2))) a) (* 5 (* a k)))
292.0ms
(- (+ a (* (log k) (* m a))) (* 10 (* a k)))

prune1.2s

Pruning

3 alts after pruning (1 fresh and 2 done)

Merged error: 0.0b

localize33.0ms

Local error

Found 4 expressions with local error:

11.6b
(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)))))
8.3b
(fma (/ -10 k) (/ (pow (exp m) (log k)) (/ k (/ a k))) (/ (pow (exp m) (log k)) (/ k (/ a k))))
6.8b
(/ (pow (exp m) (log k)) (/ (pow k 4) a))
3.4b
(/ (pow (exp m) (log k)) (/ k (/ a k)))

rewrite21.0ms

Algorithm
rewrite-expression-head
Rules
54×times-frac
40×add-cube-cbrt
40×*-un-lft-identity
40×add-sqr-sqrt
33×unpow-prod-down
16×div-inv
12×associate-/l*
12×add-exp-log
associate-/r/
associate-/r*
add-cbrt-cube
div-exp
add-log-exp
log1p-expm1-u
pow1
expm1-log1p-u
fma-udef
pow-exp
frac-2neg
clear-num
cbrt-undiv
pow-to-exp
Counts
4 → 129
Calls
4 calls:
Slowest
9.0ms
(/ (pow (exp m) (log k)) (/ (pow k 4) a))
8.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)))))
0.0ms
(fma (/ -10 k) (/ (pow (exp m) (log k)) (/ k (/ a k))) (/ (pow (exp m) (log k)) (/ k (/ a k))))

series746.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
235.0ms
(fma (/ -10 k) (/ (pow (exp m) (log k)) (/ k (/ a k))) (/ (pow (exp m) (log k)) (/ k (/ a k))))
218.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)))))
148.0ms
(/ (pow (exp m) (log k)) (/ (pow k 4) a))
146.0ms
(/ (pow (exp m) (log k)) (/ k (/ a k)))

simplify4.8s

Counts
147 → 141
Calls
147 calls:
Slowest
437.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))))
376.0ms
(- (/ (* (exp (* -1 (* (log (/ 1 k)) m))) a) (pow k 2)) (* 10 (/ (* (exp (* -1 (* (log (/ 1 k)) m))) a) (pow k 3))))
340.0ms
(+ (* 1/2 (/ (* (pow (log k) 2) (* (pow m 2) a)) (pow k 2))) (+ (/ (* (log k) (* m a)) (pow k 2)) (/ a (pow k 2))))
269.0ms
(/ (* a (exp (* m (- (log -1) (log (/ -1 k)))))) (pow k 2))
249.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))))

prune2.4s

Pruning

6 alts after pruning (3 fresh and 3 done)

Merged error: 0b

localize14.0ms

Local error

Found 4 expressions with local error:

11.6b
(fma (/ (pow (exp m) (log k)) (/ (pow k 4) a)) 99 (fma (/ -10 k) (/ (pow (exp m) (log k)) (/ k (/ a k))) (* (/ a k) (/ (pow k m) k))))
8.3b
(fma (/ -10 k) (/ (pow (exp m) (log k)) (/ k (/ a k))) (* (/ a k) (/ (pow k m) k)))
6.8b
(/ (pow (exp m) (log k)) (/ (pow k 4) a))
3.5b
(* (/ a k) (/ (pow k m) k))

rewrite10.0ms

Algorithm
rewrite-expression-head
Rules
24×times-frac
23×add-cube-cbrt
23×*-un-lft-identity
23×add-sqr-sqrt
15×unpow-prod-down
10×div-inv
10×add-exp-log
add-cbrt-cube
associate-/l*
pow1
add-log-exp
log1p-expm1-u
associate-*l*
associate-*r*
associate-/r*
expm1-log1p-u
div-exp
fma-udef
cbrt-unprod
*-commutative
associate-/r/
associate-*r/
prod-exp
pow-exp
associate-*l/
pow-prod-down
frac-2neg
clear-num
cbrt-undiv
pow-to-exp
frac-times
Counts
4 → 95
Calls
4 calls:
Slowest
5.0ms
(/ (pow (exp m) (log k)) (/ (pow k 4) a))
4.0ms
(* (/ a k) (/ (pow k m) 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))) (* (/ a k) (/ (pow k m) k))))
0.0ms
(fma (/ -10 k) (/ (pow (exp m) (log k)) (/ k (/ a k))) (* (/ a k) (/ (pow k m) k)))

series702.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
224.0ms
(fma (/ (pow (exp m) (log k)) (/ (pow k 4) a)) 99 (fma (/ -10 k) (/ (pow (exp m) (log k)) (/ k (/ a k))) (* (/ a k) (/ (pow k m) k))))
220.0ms
(fma (/ -10 k) (/ (pow (exp m) (log k)) (/ k (/ a k))) (* (/ a k) (/ (pow k m) k)))
179.0ms
(/ (pow (exp m) (log k)) (/ (pow k 4) a))
80.0ms
(* (/ a k) (/ (pow k m) k))

simplify4.6s

Counts
85 → 107
Calls
85 calls:
Slowest
676.0ms
(+ (* 1/2 (/ (* (pow (log k) 2) (* (pow m 2) a)) (pow k 2))) (+ (/ (* (log k) (* m a)) (pow k 2)) (/ a (pow k 2))))
482.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))))
465.0ms
(* (* (* (/ a k) (/ a k)) (/ a k)) (* (* (/ (pow k m) k) (/ (pow k m) k)) (/ (pow k m) k)))
367.0ms
(- (/ (* (exp (* -1 (* (log (/ 1 k)) m))) a) (pow k 2)) (* 10 (/ (* (exp (* -1 (* (log (/ 1 k)) m))) a) (pow k 3))))
266.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.6s

Pruning

6 alts after pruning (2 fresh and 4 done)

Merged error: 0b

regimes211.0ms

Accuracy

97.6% (0.0b remaining)

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

bsearch94.0ms

end0.0ms

sample2.3s

Algorithm
intervals
Results
1.4s12010×body80valid
516.0ms4281×body80nan