#include "kernels.h" #include double native_signal(double t, double start, int stages, int cyclic, const double *data) { if (t < start) return data[0]; double elapsed = t-start, duration = 0, offset = 0; for (int i=0;i 0) elapsed = fmod(elapsed,duration); else if (elapsed >= duration) return data[8+stages-1]; for (int i=0;i 0 && event <= t) { double cycle=fmax(0,floor((t-event)/duration)+1); event += cycle*duration; if (event <= t) event += duration; } if (event > t) result=fmin(result,event); if (i < stages) offset += data[16+i]; } return result; }