# Eliminating a type instability

**URL:** <https://discourse.julialang.org/t/eliminating-a-type-instability/5551>\
**Category:** New to Julia\
**Created:** [August 25, 2017, 12:04am UTC](https://discourse.julialang.org/t/eliminating-a-type-instability/5551 "2017-08-25T00:04:25Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Richard\_Dennis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/richard_dennis/32/7451_2.png) [@Richard\_Dennis](https://discourse.julialang.org/u/Richard_Dennis)\
**Post date:** [August 25, 2017, 12:04am UTC](https://discourse.julialang.org/t/eliminating-a-type-instability/5551/1 "2017-08-25T00:04:25Z")

</div>

Hi All,

I’m getting a type instability in a generated function I’ve written to perform Clenshaw’s recursion on multivariate Chebyshev polynomials. Here is a Gist containing a minimum working example: [https://gist.github.com/RJDennis/81b7d62f12878a14ef1a07a3d7b4a2e9](https://gist.github.com/RJDennis/81b7d62f12878a14ef1a07a3d7b4a2e9)

The type instability is in p which is an Array, but assigned type Any. Suggestions on how to eliminate this type instability would be most welcome.

Thanks,

Richard

---

<div class="post-metadata">

**Author:** ![bramtayl](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bramtayl/32/3614_2.png) [@bramtayl](https://discourse.julialang.org/u/bramtayl)\
**Post date:** [August 25, 2017, 2:49am UTC](https://discourse.julialang.org/t/eliminating-a-type-instability/5551/2 "2017-08-25T02:49:37Z")

</div>

Try Base.tail instead of 2:N

---

<div class="post-metadata">

**Author:** ![Richard\_Dennis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/richard_dennis/32/7451_2.png) [@Richard\_Dennis](https://discourse.julialang.org/u/Richard_Dennis)\
**Post date:** [August 25, 2017, 12:30pm UTC](https://discourse.julialang.org/t/eliminating-a-type-instability/5551/3 "2017-08-25T12:30:43Z")

</div>

Quite why that works where 2:N doesn’t is a bit of a mystery, but it works so thank you.

---

<div class="post-metadata">

**Author:** ![Richard\_Dennis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/richard_dennis/32/7451_2.png) [@Richard\_Dennis](https://discourse.julialang.org/u/Richard_Dennis)\
**Post date:** [August 25, 2017, 12:30pm UTC](https://discourse.julialang.org/t/eliminating-a-type-instability/5551/4 "2017-08-25T12:30:46Z")

</div>

That worked. Thanks.

---

<div class="post-metadata">

**Author:** ![tshort](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tshort/32/43_2.png) [@tshort](https://discourse.julialang.org/u/tshort)\
**Post date:** [August 25, 2017, 12:50pm UTC](https://discourse.julialang.org/t/eliminating-a-type-instability/5551/5 "2017-08-25T12:50:15Z")

</div>

I’m also curious why that works.

Also, Dennis, I looked at the code from your generated function (by leaving off the `@generated`), and you might want to look at the order of the loops. I don’t think they are the best order for Julia’s column-major ordered arrays.

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [August 25, 2017, 1:25pm UTC](https://discourse.julialang.org/t/eliminating-a-type-instability/5551/6 "2017-08-25T13:25:46Z")

</div>

Because the size of the tuple is unknown when you are indexing with a general unit range.
