// template
// T chbevl(const T x, const T array[], const int len) {
//     T b0, b1, b2;
//
//     b0 = array[0];
//     b1 = 0;
//
//     for (int i = 1; i < len; ++i)  {
//         b2 = b1;
//         b1 = b0;
//         b0 = x * b1 - b2 + array[i];
//     }
//
//     return T{0.5} * (b0 - b2);
// }

///|
/// Computes the Chebyshev series
pub fn chbevl(x : Double, arr : ReadOnlyArray[Double]) -> Double {
  let mut b0 = arr[0]
  let mut b1 = 0.0
  let mut b2 = 0.0
  for i in 1..