#include <stdio.h>
double voltage(double v) {
return v;
}
double hdot(double h) {
return h * 2;
}
double ndot(double n) {
return n * 3;
}
typedef double(*eqpointer)(double);
int main() {
eqpointer ODE[] = { voltage, hdot, ndot };
int eq_num = sizeof(ODE)/sizeof(*ODE);
// declared only for this examle
double result;
double k1 [eq_num], oneloop[eq_num], midvalues[eq_num];
// or best malloc(eq_num * sizeof(double));
for (int j = 0; j < eq_num; j++) {
k1[j] = (*ODE[j])((j + 1) * 10); // random arguments ODE for example only
oneloop[j] =20 * (*ODE[j])((j + 1));
midvalues[j] = (k1[j] + oneloop[j]) / 2;
result = (*ODE[j])(midvalues[j]);
printf("*** %d) k1[]: %f, oneloop[]: %f, midvalues[]: %f result: %f\n", j, k1[j], oneloop[j], midvalues[j], result);
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgpkb3VibGUgdm9sdGFnZShkb3VibGUgdikgewoJcmV0dXJuIHY7Cn0KZG91YmxlIGhkb3QoZG91YmxlIGgpIHsKCXJldHVybiBoICogMjsKfQpkb3VibGUgbmRvdChkb3VibGUgbikgewoJcmV0dXJuIG4gKiAzOwp9Cgp0eXBlZGVmIGRvdWJsZSgqZXFwb2ludGVyKShkb3VibGUpOwoKaW50IG1haW4oKSB7CgllcXBvaW50ZXIgT0RFW10gPSB7IHZvbHRhZ2UsIGhkb3QsIG5kb3QgfTsKCWludCBlcV9udW0gPSBzaXplb2YoT0RFKS9zaXplb2YoKk9ERSk7CgkKCS8vIGRlY2xhcmVkIG9ubHkgZm9yIHRoaXMgZXhhbWxlCglkb3VibGUgcmVzdWx0OwoJZG91YmxlIGsxIFtlcV9udW1dLCBvbmVsb29wW2VxX251bV0sIG1pZHZhbHVlc1tlcV9udW1dOwoJLy8gb3IgYmVzdCBtYWxsb2MoZXFfbnVtICogc2l6ZW9mKGRvdWJsZSkpOwoJCglmb3IgKGludCBqID0gMDsgaiA8IGVxX251bTsgaisrKSB7CgkJCgkJazFbal0gPSAoKk9ERVtqXSkoKGogKyAxKSAqIDEwKTsJLy8gcmFuZG9tIGFyZ3VtZW50cyBPREUgZm9yIGV4YW1wbGUgb25seQoJCW9uZWxvb3Bbal0gPTIwICogKCpPREVbal0pKChqICsgMSkpOwoJCW1pZHZhbHVlc1tqXSA9IChrMVtqXSArIG9uZWxvb3Bbal0pIC8gMjsgIAoJCXJlc3VsdCA9ICgqT0RFW2pdKShtaWR2YWx1ZXNbal0pOwoJCQoJCXByaW50ZigiKioqICVkKSBrMVtdOiAlZiwgb25lbG9vcFtdOiAlZiwgbWlkdmFsdWVzW106ICVmIHJlc3VsdDogJWZcbiIsCgkJCWosIGsxW2pdLCBvbmVsb29wW2pdLCBtaWR2YWx1ZXNbal0sIHJlc3VsdCk7Cgl9CglyZXR1cm4gMDsKfQ==
*** 0) k1[]: 10.000000, oneloop[]: 20.000000, midvalues[]: 15.000000 result: 15.000000
*** 1) k1[]: 40.000000, oneloop[]: 80.000000, midvalues[]: 60.000000 result: 120.000000
*** 2) k1[]: 90.000000, oneloop[]: 180.000000, midvalues[]: 135.000000 result: 405.000000