A tiny multidimensional array implementation in C similar to numpy, but only one file.
I wanted to dive into the trenches of implementing multidimensional arrays since quite some time. Finally, taking inspiration from numpy I decided to give it a go. I wanted to implement everything from ground up, and hence C was the perfect choice for it.
Currently, smolar
only supports N-d arrays of the float
datatype. That is, every element in the N-d array will be a float
. I did this because:
- Integers can also be represented by floats (even though float takes more bytes in memory).
- And for educational/learning purposes I just wanted to use float.
- Support for more datatypes might be added in the future.
There is only one file: smolar.c
Everything, and I mean EVERYTHING is in that file.
To compile and run this file using clang compiler:
$ clang smolar.c -o smolar
$ ./smolar
- Define Array structure
- Create/Init Array from shape
- Traverse Array using strides
- Ability to broadcast an array
- Elementwise addition operation
- More Unary and Binary Array operations
- Support more
dtypes
- Parallelism loops in Array operations