Skip to content

Array

Structure

typedef struct {
    size_t size;
    float *arr;
} Array;

Array is LinearML way of storing both the C array and the number of elements at the same time.

Examples

1. Creating a simple Array

#include "ds/array.h"

int main(void) {
    // create an array with 3 values
    Array *arr = arr_create(3);

    ARR_AT(arr, 0) = 1;  // set arr[0] = 1
    ARR_AT(arr, 1) = 4;  // set arr[1] = 4
    ARR_AT(arr, 2) = 5;  // set arr[2] = 5

    arr_print(arr);

    // free Array crated using arr_crate
    arr_free(arr);

    return 0;
}
[ 1.00 4.00 5.00 ]

2. Create an Array using existing C array

#include "ds/array.h"

int main(void) {
    float arr_vals[] = {1, 2, 3, 4};

    // use an existing C array with 4 values
    Array *arr = arr_init(arr_vals, 4);

    ARR_AT(arr, 0) = 5;  // set arr[0] = 5
    arr_print(arr);

    // free Array crated using arr_init
    arr_init_free(arr);
    return 0;
}
[ 5.00 2.00 3.00 4.00 ]

3. Changing the float precision during printing

#include "ds/array.h"

int main(void) {
    // create an array with 3 values
    Array *arr = arr_create(3);

    ARR_AT(arr, 0) = 1;  // set arr[0] = 1
    ARR_AT(arr, 1) = 4;  // set arr[1] = 4
    ARR_AT(arr, 2) = 5;  // set arr[2] = 5

    // use arr_printp instead of arr_print
    arr_printp(arr, 0);

    // free Array crated using arr_crate
    arr_free(arr);

    return 0;
}
[ 1 4 5 ]

4. Map a function over the Array

#include "ds/array.h"

float add_three(float val) {
    return val + 3;
}

int main(void) {
    // create an array with 3 values
    Array *arr = arr_create(3);

    ARR_AT(arr, 0) = 1;  // set arr[0] = 1
    ARR_AT(arr, 1) = 4;  // set arr[1] = 4
    ARR_AT(arr, 2) = 5;  // set arr[2] = 5

    // the function will return the same array back for
    // convenience reasons
    arr_print(arr_map(arr, add_three));

    // free Array crated using arr_crate
    arr_free(arr);

    return 0;
}
[ 4.00 7.00 8.00 ]

5. Array stats

#include <stdio.h>

#define INCLUDE_ARRAY_STATS
#include "ds/array.h"


int main(void) {
    // create an array with 3 values
    Array *arr = arr_create(3);

    ARR_AT(arr, 0) = 1;  // set arr[0] = 1
    ARR_AT(arr, 1) = 4;  // set arr[1] = 4
    ARR_AT(arr, 2) = 5;  // set arr[2] = 5

    arr_print(arr);

    printf("Mean: %.2f\n", arr_mean(arr));
    printf("Max: %.2f\n", arr_max(arr));
    printf("Min: %.2f\n", arr_min(arr));

    // free Array crated using arr_crate
    arr_free(arr);

    return 0;
}
[ 1.00 4.00 5.00 ]
Mean: 3.33
Max: 5.00
Min: 1.00