Average Error: 2.0 → 0.1
Time: 43.9s
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.006642282481732 \cdot 10^{+144}:\\ \;\;\;\;\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 < 1.006642282481732e+144

    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.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 1.006642282481732e+144 < k

    1. Initial program 9.7

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

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

      \[\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*9.7

      \[\leadsto \frac{\color{blue}{\sqrt{{k}^{m}} \cdot \left(\sqrt{{k}^{m}} \cdot a\right)}}{(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.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.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;k \le 1.006642282481732 \cdot 10^{+144}:\\ \;\;\;\;\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 2019016 +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: 43.2s)Debug log

sample111.0ms

Algorithm
intervals
Results
525×(pre true 80)
377×(body real 80)
148×(body nan 80)

simplify34.0ms

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

prune23.0ms

Pruning

2 alts after pruning (2 fresh and 0 done)

Merged error: 2.4b

localize44.0ms

Local error

Found 2 expressions with local error:

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

rewrite14.0ms

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

series205.0ms

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

simplify2.5s

Counts
20 → 40
Calls
20 calls:
Slowest
843.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)))
572.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))))
265.0ms
(- (+ a (* (log k) (* m a))) (* 10 (* a k)))
245.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))))
160.0ms
(* a (exp (* m (- (log -1) (log (/ -1 k))))))

prune459.0ms

Pruning

4 alts after pruning (4 fresh and 0 done)

Merged error: 0.0b

localize10.0ms

Local error

Found 4 expressions with local error:

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

rewrite26.0ms

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

series440.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
175.0ms
(* (sqrt (pow k m)) a)
104.0ms
(/ (* (sqrt (pow k m)) (* (sqrt (pow k m)) a)) (fma k (+ k 10) 1))
88.0ms
(sqrt (pow k m))
73.0ms
(sqrt (pow k m))

simplify2.9s

Counts
39 → 79
Calls
39 calls:
Slowest
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))))
261.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))))
261.0ms
(- (+ a (* (log k) (* m a))) (* 10 (* a k)))
196.0ms
(+ (* 1/2 (* (log k) m)) (+ (* 1/8 (* (pow (log k) 2) (pow m 2))) 1))
153.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))) (* (* (fma k (+ k 10) 1) (fma k (+ k 10) 1)) (fma k (+ k 10) 1)))

prune1.1s

Pruning

4 alts after pruning (3 fresh and 1 done)

Merged error: 0.0b

localize17.0ms

Local error

Found 4 expressions with local error:

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

rewrite35.0ms

Algorithm
rewrite-expression-head
Rules
108×times-frac
66×sqrt-prod
55×add-sqr-sqrt
53×add-cube-cbrt
53×*-un-lft-identity
12×associate-/r*
11×associate-/l*
11×add-exp-log
11×add-cbrt-cube
div-inv
add-log-exp
log1p-expm1-u
div-exp
cbrt-undiv
pow1
expm1-log1p-u
pow1/2
frac-2neg
clear-num
rem-sqrt-square
associate-/l/
Counts
4 → 148
Calls
4 calls:
Slowest
17.0ms
(/ (/ (* (pow k m) a) (sqrt (fma k (+ k 10) 1))) (sqrt (fma k (+ k 10) 1)))
11.0ms
(/ (* (pow k m) a) (sqrt (fma k (+ k 10) 1)))
2.0ms
(sqrt (fma k (+ k 10) 1))
2.0ms
(sqrt (fma k (+ k 10) 1))

series284.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
134.0ms
(/ (* (pow k m) a) (sqrt (fma k (+ k 10) 1)))
98.0ms
(/ (/ (* (pow k m) a) (sqrt (fma k (+ k 10) 1))) (sqrt (fma k (+ k 10) 1)))
26.0ms
(sqrt (fma k (+ k 10) 1))
25.0ms
(sqrt (fma k (+ k 10) 1))

simplify10.2s

Counts
181 → 160
Calls
181 calls:
Slowest
752.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))))
658.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))))
602.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))))
391.0ms
(/ a (sqrt (cbrt (fma k (+ k 10) 1))))
310.0ms
(- (* 5 (/ (* a (exp (* m (- (log -1) (log (/ -1 k)))))) (pow k 2))) (+ (* 37 (/ (* a (exp (* m (- (log -1) (log (/ -1 k)))))) (pow k 3))) (/ (* a (exp (* m (- (log -1) (log (/ -1 k)))))) k)))

prune2.1s

Pruning

4 alts after pruning (2 fresh and 2 done)

Merged error: 0.0b

localize11.0ms

Local error

Found 4 expressions with local error:

15.1b
(sqrt (fma k (+ k 10) 1))
15.1b
(sqrt (fma k (+ k 10) 1))
0.2b
(/ (pow k m) (/ (sqrt (fma k (+ k 10) 1)) a))
0.0b
(/ (/ (pow k m) (/ (sqrt (fma k (+ k 10) 1)) a)) (sqrt (fma k (+ k 10) 1)))

rewrite16.0ms

Algorithm
rewrite-expression-head
Rules
198×times-frac
109×add-sqr-sqrt
107×add-cube-cbrt
107×*-un-lft-identity
60×sqrt-prod
34×div-inv
20×associate-/l*
14×add-exp-log
11×add-cbrt-cube
10×associate-/r*
associate-/r/
div-exp
add-log-exp
log1p-expm1-u
cbrt-undiv
pow1
expm1-log1p-u
pow1/2
frac-2neg
clear-num
rem-sqrt-square
pow-to-exp
associate-/l/
Counts
4 → 206
Calls
4 calls:
Slowest
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)) a))
1.0ms
(sqrt (fma k (+ k 10) 1))
1.0ms
(sqrt (fma k (+ k 10) 1))

series262.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
136.0ms
(/ (pow k m) (/ (sqrt (fma k (+ k 10) 1)) a))
91.0ms
(/ (/ (pow k m) (/ (sqrt (fma k (+ k 10) 1)) a)) (sqrt (fma k (+ k 10) 1)))
20.0ms
(sqrt (fma k (+ k 10) 1))
15.0ms
(sqrt (fma k (+ k 10) 1))

simplify16.4s

Counts
285 → 218
Calls
285 calls:
Slowest
691.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))))
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))))
277.0ms
(- (+ a (* (log k) (* m a))) (* 5 (* a k)))
269.0ms
(/ (/ (* (cbrt (pow k m)) (cbrt (pow k m))) (* (cbrt (/ (sqrt (fma k (+ k 10) 1)) a)) (cbrt (/ (sqrt (fma k (+ k 10) 1)) a)))) (* (cbrt (sqrt (fma k (+ k 10) 1))) (cbrt (sqrt (fma k (+ k 10) 1)))))
259.0ms
(- (* 5 (/ (* a (exp (* m (- (log -1) (log (/ -1 k)))))) (pow k 2))) (+ (* 37 (/ (* a (exp (* m (- (log -1) (log (/ -1 k)))))) (pow k 3))) (/ (* a (exp (* m (- (log -1) (log (/ -1 k)))))) k)))

prune2.8s

Pruning

4 alts after pruning (1 fresh and 3 done)

Merged error: 0.0b

regimes138.0ms

Accuracy

98% (0.0b remaining)

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

bsearch136.0ms

end0.0ms

sample2.9s

Algorithm
intervals
Results
16270×(pre true 80)
12030×(body real 80)
4240×(body nan 80)