RcdMathLib_doc
Open Source Library for Linear and Non-linear Algebra
utils_test.c
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2020 Zakaria Kasmi <zkasmi@inf.fu-berlin.de>
3  * 2020 Freie Universität Berlin
4  *
5  * This file is subject to the terms and conditions of the GNU Lesser General
6  * Public License v2.1. See the file LICENSE in the top level directory for more
7  * details.
8  */
9 
23 #include <stdio.h>
24 
25 #include "utils.h"
26 #include "vector.h"
27 
28 void utils_test(void)
29 {
30  puts("############ Test Utils ###############");
31  double deg_ang = 45;
32  double rad_ang = utils_to_radian(deg_ang);
33  printf("rad_ang = %.4f\n", rad_ang);
34 
35  float f1 = 4.78;
36  float f2 = 11.77;
37  float f_max = (float)utils_max(f1, f2);
38  printf("f_max = %.4f\n", f_max);
39 
40  float f_min = (float)utils_min(f1, f2);
41  printf("f_min = %.4f\n", f_min);
42 
43  uint8_t a1 = 9;
44  uint8_t b1 = 13;
45  utils_swap(&a1, &b1);
46  printf("a1 = %u, b1 = %u\n", a1, b1);
47 
48  printf("sind(45) = %.4f\n", utils_sind(deg_ang));
49 
50  vector_t arr[10] = { 4, 8, 6, -1, -2, -3, -1, 3, 4, 5 };
51  vector_t mv_aver_arr[10];
52  uint8_t win_size = 5;
53  double mean = 0.0;
54 
55  printf("arr = ");
56  vector_flex_print(10, arr, 3, 0);
57  puts("");
58  printf("win_size = %u\n", win_size);
59  utils_moving_average(10, arr, win_size, mv_aver_arr);
60  printf("mv_av_arr = ");
61  vector_flex_print(10, mv_aver_arr, 3, 4);
62  puts("");
63  mean = utils_mean(10, arr);
64  printf("mean = %3.4f\n", mean);
65 
66  puts("!!! Median algorithm !!!");
67  vector_t arr1[9] = { 100, 91, 92, 85, 40, 77, 92, 91, 94 };
68  vector_t median_val = 0.0;
69 
70  printf("arr1 = ");
71  vector_flex_print(9, arr1, 3, 0);
72  puts("");
73  median_val = utils_get_median(arr1, 9);
74  printf("median1 = %3.4f\n", median_val);
75 
76  vector_t arr2[13] = { 0.4854, 0.8003, 0.1419, 0.4218, 0.9157, 0.7922,
77  0.9595, 0.6557, 0.0357, 0.8491, 0.9340, 0.6787,
78  0.7577 };
79  printf("arr2 = ");
80  vector_flex_print(13, arr2, 3, 4);
81  puts("");
82  median_val = utils_get_median(arr2, 13);
83  printf("median2 = %3.4f\n", median_val);
84 
85  vector_t arr3[12] = { 0.9502, 0.0344, -0.4387, 0.3816, 0.7655, 0.7952,
86  0.1869, 0.4898, 0.4456, 0.6463, -0.7094, 0.7547 };
87  printf("arr3 = ");
88  vector_flex_print(12, arr3, 3, 4);
89  puts("");
90  median_val = utils_get_median(arr3, 12);
91  printf("median3 = %3.4f\n", median_val);
92 }
vector_flex_print
void vector_flex_print(uint32_t length, vector_t arr[], uint8_t before_dot, uint8_t after_dot)
Display the values of the vector's elements.
Definition: vector.c:284
utils_to_radian
double utils_to_radian(double deg_angle)
Convert the angle from degrees to radians.
Definition: utils.c:31
vector_t
#define vector_t
Define the data type of the vector elements.
Definition: vector.h:33
utils_min
double utils_min(double a, double b)
Returns the smaller of two real numbers.
Definition: utils.c:65
utils.h
Utilities for linear algebra.
utils_max
double utils_max(double a, double b)
Returns the greater of two real numbers.
Definition: utils.c:55
utils_sind
double utils_sind(double deg_angle)
Compute the sine of a variable in degrees.
Definition: utils.c:39
utils_mean
double utils_mean(uint8_t arr_size, vector_t in_arr[])
Compute the mean value of a data set.
Definition: utils.c:105
utils_test
void utils_test(void)
Examples of the utility functions.
Definition: utils_test.c:28
utils_get_median
double utils_get_median(vector_t arr[], uint8_t length)
Compute the median of a finite array of numbers.
Definition: utils.c:152
vector.h
Vector computations.
utils_swap
void utils_swap(uint8_t *a, uint8_t *b)
Interchange the values of two variables of type uint8_t.
Definition: utils.c:46
utils_moving_average
void utils_moving_average(uint8_t arr_size, vector_t in_arr[], uint8_t window_size, vector_t out_arr[])
Compute the moving average of a data set.
Definition: utils.c:121