// Fibonacci Number // // fibonacci - F(n) // // F(0)=0, F(1)=1, F(n)=F(n-1)+F(n-2) // // Inputs: 1 (n) // Outputs: 1 (F(n)) // Constants: 0 #include #include "ts.h" ts_parameter_t const ts_fibonacci_p = { .n_inputs = 1, .n_outputs = 1, .n_constants = 0, .params_size = 0 }; uint_t ts_fibonacci_offset( ts_constant_t const *c ) { ( void )c; return ( 0 ); } int ts_fibonacci( fp_t * const *y, uint_t y_n, fp_t const * const *x, uint_t x_n, uint_t n, ts_constant_t const *c ) { TS_PROLOGUE( ts_fibonacci_p ); (void)c; for (uint_t i = 0; i < n; ++i) { if (x[0][i] < 0) { y[0][i] = 0; continue; } uint_t k = (uint_t)floor(x[0][i]); if (k == 0) { y[0][i] = 0; continue; } if (k == 1) { y[0][i] = 1; continue; } fp_t a = 0, b = 1, cv = 0; for (uint_t j = 2; j <= k; ++j) { cv = a + b; a = b; b = cv; } y[0][i] = cv; } return 0; }