diff options
Diffstat (limited to 'experiments')
| -rw-r--r-- | experiments/cortexm.bin | bin | 0 -> 1024 bytes | |||
| -rwxr-xr-x | experiments/fibonacci.bin | bin | 0 -> 7016 bytes | |||
| -rw-r--r-- | experiments/fibonacci.c | 43 | ||||
| -rwxr-xr-x | experiments/fibonacci.elf | bin | 0 -> 109028 bytes | |||
| -rw-r--r-- | experiments/fibonacci.o | bin | 0 -> 3040 bytes |
5 files changed, 43 insertions, 0 deletions
diff --git a/experiments/cortexm.bin b/experiments/cortexm.bin Binary files differnew file mode 100644 index 0000000..173bb10 --- /dev/null +++ b/experiments/cortexm.bin diff --git a/experiments/fibonacci.bin b/experiments/fibonacci.bin Binary files differnew file mode 100755 index 0000000..6f7b470 --- /dev/null +++ b/experiments/fibonacci.bin diff --git a/experiments/fibonacci.c b/experiments/fibonacci.c new file mode 100644 index 0000000..26fca0c --- /dev/null +++ b/experiments/fibonacci.c @@ -0,0 +1,43 @@ +#include <stdint.h> + +/* Iterative Fibonacci. */ +uint32_t fib_iter(uint32_t n) +{ + uint32_t a = 0, b = 1; + for (uint32_t i = 0; i < n; i++) { + uint32_t t = a + b; + a = b; + b = t; + } + return a; +} + +/* Naive recursive Fibonacci. */ +uint32_t fib_rec(uint32_t n) +{ + if (n < 2) + return n; + return fib_rec(n - 1) + fib_rec(n - 2); +} + +/* Memoized Fibonacci (static table). */ +uint32_t fib_memo(uint32_t n) +{ + static uint32_t cache[48]; + if (n < 2) + return n; + if (n >= sizeof(cache) / sizeof(cache[0])) + return fib_iter(n); + if (cache[n]) + return cache[n]; + return cache[n] = fib_memo(n - 1) + fib_memo(n - 2); +} + +volatile uint32_t sink; + +int main(void) +{ + for (uint32_t n = 0; n < 20; n++) + sink = fib_iter(n) + fib_rec(n) + fib_memo(n); + return 0; +} diff --git a/experiments/fibonacci.elf b/experiments/fibonacci.elf Binary files differnew file mode 100755 index 0000000..05ac21d --- /dev/null +++ b/experiments/fibonacci.elf diff --git a/experiments/fibonacci.o b/experiments/fibonacci.o Binary files differnew file mode 100644 index 0000000..c474d49 --- /dev/null +++ b/experiments/fibonacci.o |
