def _evaluate(self, x):
    '\n        Returns the level of the interpolated function at each value in x.  Only\n        called internally by HARKinterpolator1D.__call__ (etc).\n        '
    if _isscalar(x):
        pos = np.searchsorted(self.x_list, x)
        if (pos == 0):
            y = (self.coeffs[(0, 0)] + (self.coeffs[(0, 1)] * (x - self.x_list[0])))
        elif (pos < self.n):
            alpha = ((x - self.x_list[(pos - 1)]) / (self.x_list[pos] - self.x_list[(pos - 1)]))
            y = (self.coeffs[(pos, 0)] + (alpha * (self.coeffs[(pos, 1)] + (alpha * (self.coeffs[(pos, 2)] + (alpha * self.coeffs[(pos, 3)]))))))
        else:
            alpha = (x - self.x_list[(self.n - 1)])
            y = ((self.coeffs[(pos, 0)] + (x * self.coeffs[(pos, 1)])) - (self.coeffs[(pos, 2)] * np.exp((alpha * self.coeffs[(pos, 3)]))))
    else:
        m = len(x)
        pos = np.searchsorted(self.x_list, x)
        y = np.zeros(m)
        if (y.size > 0):
            out_bot = (pos == 0)
            out_top = (pos == self.n)
            in_bnds = np.logical_not(np.logical_or(out_bot, out_top))
            i = pos[in_bnds]
            coeffs_in = self.coeffs[i, :]
            alpha = ((x[in_bnds] - self.x_list[(i - 1)]) / (self.x_list[i] - self.x_list[(i - 1)]))
            y[in_bnds] = (coeffs_in[:, 0] + (alpha * (coeffs_in[:, 1] + (alpha * (coeffs_in[:, 2] + (alpha * coeffs_in[:, 3]))))))
            y[out_bot] = (self.coeffs[(0, 0)] + (self.coeffs[(0, 1)] * (x[out_bot] - self.x_list[0])))
            alpha = (x[out_top] - self.x_list[(self.n - 1)])
            y[out_top] = ((self.coeffs[(self.n, 0)] + (x[out_top] * self.coeffs[(self.n, 1)])) - (self.coeffs[(self.n, 2)] * np.exp((alpha * self.coeffs[(self.n, 3)]))))
    return y
Returns the level of the interpolated function at each value in x.  Only
called internally by HARKinterpolator1D.__call__ (etc).
def _evaluate(self, x):
    '\n        Returns the level of the interpolated function at each value in x.  Only\n        called internally by HARKinterpolator1D.__call__ (etc).\n        '
    if _isscalar(x):
        pos = np.searchsorted(self.x_list, x)
        if (pos == 0):
            y = (self.coeffs[(0, 0)] + (self.coeffs[(0, 1)] * (x - self.x_list[0])))
        elif (pos < self.n):
            alpha = ((x - self.x_list[(pos - 1)]) / (self.x_list[pos] - self.x_list[(pos - 1)]))
            y = (self.coeffs[(pos, 0)] + (alpha * (self.coeffs[(pos, 1)] + (alpha * (self.coeffs[(pos, 2)] + (alpha * self.coeffs[(pos, 3)]))))))
        else:
            alpha = (x - self.x_list[(self.n - 1)])
            y = ((self.coeffs[(pos, 0)] + (x * self.coeffs[(pos, 1)])) - (self.coeffs[(pos, 2)] * np.exp((alpha * self.coeffs[(pos, 3)]))))
    else:
        m = len(x)
        pos = np.searchsorted(self.x_list, x)
        y = np.zeros(m)
        if (y.size > 0):
            out_bot = (pos == 0)
            out_top = (pos == self.n)
            in_bnds = np.logical_not(np.logical_or(out_bot, out_top))
            i = pos[in_bnds]
            coeffs_in = self.coeffs[i, :]
            alpha = ((x[in_bnds] - self.x_list[(i - 1)]) / (self.x_list[i] - self.x_list[(i - 1)]))
            y[in_bnds] = (coeffs_in[:, 0] + (alpha * (coeffs_in[:, 1] + (alpha * (coeffs_in[:, 2] + (alpha * coeffs_in[:, 3]))))))
            y[out_bot] = (self.coeffs[(0, 0)] + (self.coeffs[(0, 1)] * (x[out_bot] - self.x_list[0])))
            alpha = (x[out_top] - self.x_list[(self.n - 1)])
            y[out_top] = ((self.coeffs[(self.n, 0)] + (x[out_top] * self.coeffs[(self.n, 1)])) - (self.coeffs[(self.n, 2)] * np.exp((alpha * self.coeffs[(self.n, 3)]))))
    return y