nns.c
1.0.1
Nanowire Network simulator
tensors.h
Go to the documentation of this file.
1
7
#ifndef TENSORS_H
8
#define TENSORS_H
9
10
#include <stdbool.h>
11
#include <stdlib.h>
12
19
#define vector(TYPE, MACRO_LENGTH) \
20
({ \
21
TYPE* VECTOR_RESULT = (TYPE*)malloc((MACRO_LENGTH) * sizeof(TYPE)); \
22
if (VECTOR_RESULT == NULL) \
23
{ \
24
exit(EXIT_FAILURE); \
25
} \
26
VECTOR_RESULT; \
27
})
28
35
#define zeros_vector(TYPE, MACRO_LENGTH) \
36
({ \
37
TYPE* VECTOR_RESULT = (TYPE*)calloc((MACRO_LENGTH), sizeof(TYPE)); \
38
if (VECTOR_RESULT == NULL) \
39
{ \
40
exit(EXIT_FAILURE); \
41
} \
42
VECTOR_RESULT; \
43
})
44
54
#define matrix(TYPE, MACRO_WIDTH, MACRO_HEIGHT) \
55
({ \
56
TYPE** MATRIX_RESULT = vector(TYPE*, (MACRO_WIDTH)); \
57
for (int MACRO_i = 0; MACRO_i < (MACRO_WIDTH); MACRO_i++) \
58
{ \
59
MATRIX_RESULT[MACRO_i] = vector(TYPE, (MACRO_HEIGHT)); \
60
} \
61
MATRIX_RESULT; \
62
})
63
73
#define zeros_matrix(TYPE, MACRO_WIDTH, MACRO_HEIGHT) \
74
({ \
75
TYPE** MATRIX_RESULT = zeros_vector(TYPE*, (MACRO_WIDTH)); \
76
for (int MACRO_i = 0; MACRO_i < (MACRO_WIDTH); MACRO_i++) \
77
{ \
78
MATRIX_RESULT[MACRO_i] = zeros_vector(TYPE, (MACRO_HEIGHT)); \
79
} \
80
MATRIX_RESULT; \
81
})
82
88
#define free_matrix(MATRIX, MACRO_WIDTH) \
89
({ \
90
for (int MACRO_i = 0; MACRO_i < (MACRO_WIDTH); MACRO_i++) \
91
{ \
92
free(MATRIX[MACRO_i]); \
93
} \
94
free(MATRIX); \
95
})
96
97
#endif
/* TENSORS_H */
headers
util
tensors.h
Generated by
1.9.1