Coder Social home page Coder Social logo

smolar's Introduction

smolar

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.

Working

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:

  1. Integers can also be represented by floats (even though float takes more bytes in memory).
  2. And for educational/learning purposes I just wanted to use float.
  3. Support for more datatypes might be added in the future.

File structure

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

Current progress

  • 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

smolar's People

Contributors

aadityasuri avatar maharshi-pandya avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.