m_last_idx
mutable int m_last_idx;
m_last_idx = -1;
m_last_idx = -1;
if(m_last_idx >= 0)
if(x < m_x[m_last_idx] || x > m_x[m_last_idx + 1])
if(m_last_idx < m_num - 2 &&
x >= m_x[m_last_idx + 1] &&
x <= m_x[m_last_idx + 2])
++m_last_idx;
if(m_last_idx > 0 &&
x >= m_x[m_last_idx - 1] &&
x <= m_x[m_last_idx])
--m_last_idx;
bsearch(m_num, m_x, x, &m_last_idx);
return interpolation(x, m_last_idx);
bsearch(m_num, m_x, x, &m_last_idx);
return interpolation(x, m_last_idx);
m_last_idx = -1;