Cryptonic 0.1.0

This project includes a tensor library, utilities for FHE functionality and most importantly an FHE based ML library
Documentation
#![allow(non_snake_case)]

use Cryptonic::neural_network::dense_layer::DenseLayer;
use Cryptonic::neural_network::layer_type::LayerType;
use Cryptonic::neural_network::nnet::Nnet;
use Cryptonic::tensor_library::layout::Layout;
use Cryptonic::tensor_library::matrix::Matrix;

fn main() {
    let dense_layer1: DenseLayer<i32> = DenseLayer::new(Some(vec![2]), Some(vec![2]));
    let layer1 = LayerType::DenseLayer(dense_layer1);
    let weights1 : Vec<i32> = vec![2 ; 4];
    let biases1 : Vec<i32> = vec![17; 2];

    let dense_layer2 : DenseLayer<i32> = DenseLayer::new(Some(vec![2]), Some(vec![2]));
    let layer2 = LayerType::DenseLayer(dense_layer2);
    let biases2 : Vec<i32> = vec![0; 2];
    let weights2 : Vec<i32> = vec![1 ; 4];

    let mut network : Nnet<i32>  = Nnet::new();
    let id1 = network.add_layer(layer1, weights1, biases1);
    let id2 = network.add_layer(layer2, weights2, biases2);

    let _x = network.add_node(None, Some(id1));
    let _x = network.add_node(Some(id1), Some(id2));
    let _x = network.add_node(Some(id2), None);

    let input = vec![12, 42];
    let input_matrix : Matrix<i32> = Matrix::from_iter(vec![input.len()], input, Layout::RowMajor);

    let result = network.forward(input_matrix).unwrap();

    println!("{:?}", result);
}