# Stability of arithmetic expressions in Julia

**URL:** <https://discourse.julialang.org/t/stability-of-arithmetic-expressions-in-julia/53084>\
**Category:** General Usage\
**Created:** [January 9, 2021, 3:23pm UTC](https://discourse.julialang.org/t/stability-of-arithmetic-expressions-in-julia/53084 "2021-01-09T15:23:31Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![gideonsimpson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gideonsimpson/32/1928_2.png) [@gideonsimpson](https://discourse.julialang.org/u/gideonsimpson)\
**Post date:** [January 9, 2021, 3:23pm UTC](https://discourse.julialang.org/t/stability-of-arithmetic-expressions-in-julia/53084/1 "2021-01-09T15:23:31Z")

</div>

I was thinking about numerical stability (with respect to floating point) of polynomial evaluation, and I had the following question: if I naively write a polynomial (or other) expression in Julia, is it evaluated in a way so as to be backwards stable (a la Horner’s rule)?

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [January 9, 2021, 4:42pm UTC](https://discourse.julialang.org/t/stability-of-arithmetic-expressions-in-julia/53084/2 "2021-01-09T16:42:40Z")

</div>

Not automatically. It is evaluated using the expressions you wrote in the order you wrote them. There is, however, an `evalpoly` function that uses Horner’s rule for real values (and an even more efficient, stable rule for complex values). One of the general principles of the language is that it doesn’t play any clever games and just evaluates what you asked it to; however it also makes it easy to ask for something clever to be done.

---

<div class="post-metadata">

**Author:** ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)\
**Post date:** [January 9, 2021, 5:55pm UTC](https://discourse.julialang.org/t/stability-of-arithmetic-expressions-in-julia/53084/3 "2021-01-09T17:55:17Z")

</div>

> [@gideonsimpson](#):
>
> if I naively write a polynomial (or other) expression in Julia, is it evaluated in a way so as to be backwards stable (a la Horner’s rule)?

Naive evaluation is also backwards stable IIRC. The advantage of Horner’s rule is not improved accuracy, it is improved efficiency.
