1 #include <../../nrnconf.h>
32 if (x <= ta->argvec[t0]) {
34 }
else if (x >= ta->
argvec[t1]) {
37 while (t0 < (t1 - 1)) {
62 }
else if (x >= ta->
max) {
66 d = (ta->
max - ta->
min) / ((
double) (ta->
nsize - 1));
67 x1 = (x - ta->
min) / d;
70 ta->
frac = x1 - (double)
j;
77 static double inter(
double frac,
double* tab,
int j) {
79 return (1. - frac) * tab[
j] + frac * tab[
j + 1];
85 static double interp(
double frac,
double x1,
double x2) {
87 return (1. - frac) * x1 + frac * x2;
98 hoc_execerror(
"table not specified in hoc_func_table", (
char*) 0);
102 for (
i = 0;
i <
n; ++
i) {
121 y2 =
inter(fy, tab, j1);
153 for (
i = 0;
i <
n; ++
i) {
164 hoc_execerror(
"Vector arguments allowed only for functions",
"of one variable");
168 if (ns != ta[0].nsize) {
172 for (
i = 0;
i <
n; ++
i) {
174 if (ta[
i].nsize < 1) {
void hoc_execerror(const char *, const char *)
static double inter(double frac, double *tab, int j)
struct FuncTable FuncTable
static double interp(double frac, double x1, double x2)
static int arg_index(TableArg *ta, double x)
int hoc_is_object_arg(int narg)
int vector_arg_px(int, double **)
void hoc_spec_table(void **vppt, int n)
int hoc_is_double_arg(int narg)
double hoc_func_table(void *vpft, int n, double *args)
double * hoc_pgetarg(int narg)
void * ecalloc(size_t n, size_t size)
int const size_t const size_t n