#include #include #include #include #include #define MAX_DIMS 256 #define MAX_LAYERS 8 struct vec { size_t n; float data[256]; }; struct mat { size_t rows, cols; float data[256][256]; }; struct vec mv(struct mat mat, struct vec vec); struct mat mm(struct mat mat1, struct mat mat2); struct mat m_random(size_t rows, size_t cols); struct vec mv_bp_v(struct mat constant, struct vec variable, struct vec out_deltas); struct mat mv_bp_m(struct mat variable, struct vec constant, struct vec out_deltas); struct vec v_relu(struct vec vec); struct vec v_relu_bp(struct vec vec_in, struct vec deltas); struct mat m_random(size_t rows, size_t cols); void add_mat(struct mat *out, struct mat in); void print_vec(struct vec vec);