Linux GNU 11.4.0 Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 1 / 0 / 1
Functions: -% 0 / 1 / 1
Branches: -% 0 / 0 / 0

OMCompiler/SimulationRuntime/c/util/real_array.h
Line Branch Exec Source
1 /*
2 * This file belongs to the OpenModelica Run-Time System
3 *
4 * Copyright (c) 1998-2026, Open Source Modelica Consortium (OSMC), c/o Linköpings
5 * universitet, Department of Computer and Information Science, SE-58183 Linköping, Sweden. All rights
6 * reserved.
7 *
8 * THIS PROGRAM IS PROVIDED UNDER THE TERMS OF THE BSD NEW LICENSE OR THE
9 * AGPL VERSION 3 LICENSE OR THE OSMC PUBLIC LICENSE (OSMC-PL) VERSION 1.8. ANY
10 * USE, REPRODUCTION OR DISTRIBUTION OF THIS PROGRAM CONSTITUTES RECIPIENT'S
11 * ACCEPTANCE OF THE BSD NEW LICENSE OR THE OSMC PUBLIC LICENSE OR THE AGPL
12 * VERSION 3, ACCORDING TO RECIPIENTS CHOICE.
13 *
14 * The OpenModelica software and the OSMC (Open Source Modelica Consortium) Public License
15 * (OSMC-PL) are obtained from OSMC, either from the above address, from the URLs:
16 * http://www.openmodelica.org or https://github.com/OpenModelica/ or
17 * http://www.ida.liu.se/projects/OpenModelica, and in the OpenModelica distribution. GNU
18 * AGPL version 3 is obtained from: https://www.gnu.org/licenses/licenses.html#GPL. The BSD NEW
19 * License is obtained from: http://www.opensource.org/licenses/BSD-3-Clause.
20 *
21 * This program is distributed WITHOUT ANY WARRANTY; without even the implied warranty of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, EXCEPT AS EXPRESSLY
23 * SET FORTH IN THE BY RECIPIENT SELECTED SUBSIDIARY LICENSE CONDITIONS OF
24 * OSMC-PL.
25 *
26 */
27
28 #ifndef REAL_ARRAY_H_
29 #define REAL_ARRAY_H_
30
31 #include "../openmodelica.h"
32 #include "base_array.h"
33 #include "generic_array.h"
34 #include "../gc/omc_gc.h"
35 #include "index_spec.h"
36 #include "omc_msvc.h"
37 #include <stdarg.h>
38
39 modelica_real real_get(const real_array a, size_t i);
40 modelica_real real_get_2D(const real_array a, size_t i, size_t j);
41 modelica_real real_get_3D(const real_array a, size_t i, size_t j, size_t k);
42 modelica_real real_get_4D(const real_array a, size_t i, size_t j, size_t k, size_t l);
43 modelica_real real_get_5D(const real_array a, size_t i, size_t j, size_t k, size_t l, size_t m);
44
45 /* Setting the fields of a real_array */
46 extern void real_array_create(real_array *dest, modelica_real *data, int ndims, ...);
47
48 /* Allocation of a vector */
49 extern void simple_alloc_1d_real_array(real_array *dest, int n);
50 extern void real_array_ensure_size(real_array *a, int n);
51
52 /* Allocation of a matrix */
53 extern void simple_alloc_2d_real_array(real_array *dest, int r, int c);
54
55 extern void alloc_real_array(real_array *dest, int ndims, ...);
56
57 /* Allocation of real data */
58 extern void alloc_real_array_data(real_array *a);
59
60 /* Clones data*/
61 static inline void clone_real_array_spec(const real_array *src, real_array *dst)
62 {
63 710688 clone_base_array_spec(src, dst);
64 }
65
66 /* Copy real data given memory ptr*/
67 extern void copy_real_array_data_mem(const real_array source, modelica_real *dest);
68
69 /* Copy real array*/
70 extern void copy_real_array(const real_array source, real_array *dest);
71
72 extern void create_real_array_from_range(real_array *dest, modelica_real start, modelica_real step, modelica_real stop);
73
74 void fill_real_array_from_range(real_array *dest, modelica_real start, modelica_real step, modelica_real stop);
75
76 extern modelica_real *calc_real_index(int ndims, const _index_t *idx_vec, const real_array *arr);
77 extern modelica_real *calc_real_index_va(const real_array *source, int ndims, va_list ap);
78
79 extern void put_real_element(modelica_real value, int i1, real_array *dest);
80 extern void put_real_matrix_element(modelica_real value, int r, int c, real_array *dest);
81
82 extern void print_real_matrix(const real_array *source);
83 extern void print_real_array(const real_array *source);
84
85 void real_vector_to_string(const real_array *source, modelica_boolean isScalar, char *buffer, size_t bufsize);
86
87 extern void indexed_assign_real_array(const real_array source,
88 real_array *dest,
89 const index_spec_t *dest_spec);
90 extern void simple_indexed_assign_real_array1(const real_array *source,
91 int i1,
92 real_array *dest);
93 extern void simple_indexed_assign_real_array2(const real_array *source,
94 int i1, int i2,
95 real_array *dest);
96
97 extern void index_real_array(const real_array *source,
98 const index_spec_t *source_spec,
99 real_array *dest);
100 extern void index_alloc_real_array(const real_array *source,
101 const index_spec_t *source_spec,
102 real_array *dest);
103
104 extern void simple_index_alloc_real_array1(const real_array *source, int i1,
105 real_array *dest);
106
107 extern void simple_index_real_array1(const real_array *source,
108 int i1,
109 real_array *dest);
110 extern void simple_index_real_array2(const real_array *source,
111 int i1, int i2,
112 real_array *dest);
113
114 /* array(A,B,C) for arrays A,B,C */
115 extern void array_real_array(real_array *dest, int n, real_array first, ...);
116 extern void array_alloc_real_array(real_array *dest, int n, real_array first, ...);
117
118 /* array(s1,s2,s3) for scalars s1,s2,s3 */
119 extern void array_scalar_real_array(real_array *dest, int n, modelica_real first, ...);
120 extern void array_alloc_scalar_real_array(real_array *dest, int n, modelica_real first, ...);
121
122 extern void cat_real_array(int k, real_array *dest, int n, const real_array *first, ...);
123 extern void cat_alloc_real_array(int k, real_array *dest, int n, const real_array *first, ...);
124
125 extern void range_alloc_real_array(modelica_real start, modelica_real stop, modelica_real inc,
126 real_array *dest);
127 extern void range_real_array(modelica_real start, modelica_real stop, modelica_real inc, real_array *dest);
128
129 extern real_array add_alloc_real_array(const real_array a, const real_array b);
130 extern void add_real_array(const real_array *a, const real_array *b, real_array *dest);
131 extern real_array add_alloc_real_array_scalar(const real_array arr, const modelica_real sc);
132 extern real_array sub_alloc_scalar_real_array(const modelica_real sc, const real_array arr);
133
134 /* Unary subtraction */
135 extern void usub_real_array(real_array *a);
136 extern void usub_alloc_real_array(const real_array a, real_array *dest);
137 extern void sub_real_array(const real_array *a, const real_array *b, real_array *dest);
138 extern real_array sub_alloc_real_array(const real_array a, const real_array b);
139
140 extern void sub_real_array_data_mem(const real_array *a, const real_array *b,
141 modelica_real *dest);
142
143 extern void mul_scalar_real_array(modelica_real a, const real_array *b, real_array *dest);
144 extern real_array mul_alloc_scalar_real_array(modelica_real a, const real_array b);
145
146 extern void mul_real_array_scalar(const real_array *a, modelica_real b, real_array *dest);
147 extern real_array mul_alloc_real_array_scalar(const real_array a, const modelica_real b);
148
149 extern void mul_real_array(const real_array *a, const real_array *b, real_array *dest);
150 extern real_array mul_alloc_real_array(const real_array a, const real_array b);
151
152 extern modelica_real mul_real_scalar_product(const real_array a, const real_array b);
153
154 extern void mul_real_matrix_product(const real_array *a, const real_array *b, real_array *dest);
155 extern void mul_real_matrix_vector(const real_array *a, const real_array *b,
156 real_array *dest);
157 extern void mul_real_vector_matrix(const real_array *a, const real_array *b,
158 real_array *dest);
159 extern real_array mul_alloc_real_matrix_product_smart(const real_array a, const real_array b);
160
161 extern void div_real_array(const real_array *a, const real_array *b, real_array *dest);
162 extern real_array div_alloc_real_array(const real_array a, const real_array b);
163
164 extern void div_real_array_scalar(const real_array *a, modelica_real b, real_array *dest);
165 extern real_array div_alloc_real_array_scalar(const real_array a, const modelica_real b);
166
167 extern void division_real_array_scalar(threadData_t *, const real_array *a, modelica_real b, real_array *dest, const char *division_str);
168 extern real_array division_alloc_real_array_scalar(threadData_t *, const real_array a, modelica_real b, const char *division_str);
169 extern real_array division_alloc_real_array_scalar_sim(threadData_t *, const real_array a, modelica_real b, const char *division_str, const int *equationIndexes, modelica_boolean noThrowDivZero, modelica_real time, modelica_boolean initial);
170 extern void div_scalar_real_array(modelica_real a, const real_array *b, real_array *dest);
171 extern real_array div_alloc_scalar_real_array(modelica_real a, const real_array b);
172 extern void pow_real_array_scalar(const real_array *a, modelica_real b, real_array *dest);
173 extern real_array pow_alloc_real_array_scalar(const real_array a, const modelica_real b);
174
175 extern void exp_real_array(const real_array *a, modelica_integer n, real_array *dest);
176 extern real_array exp_alloc_real_array(const real_array a, modelica_integer b);
177
178 extern void promote_real_array(const real_array *a, int n, real_array *dest);
179 extern void promote_scalar_real_array(modelica_real s, int n, real_array *dest);
180 extern void promote_alloc_real_array(const real_array *a, int n, real_array *dest);
181
182 static inline int ndims_real_array(const real_array *a)
183 {
184 return ndims_base_array(a);
185 }
186
187 extern void size_real_array(const real_array *a, integer_array *dest);
188 extern modelica_real scalar_real_array(const real_array *a);
189 extern void vector_real_array(const real_array *a, real_array *dest);
190 extern void vector_real_scalar(modelica_real a, real_array *dest);
191 extern void matrix_real_array(const real_array *a, real_array *dest);
192 extern void matrix_real_scalar(modelica_real a, real_array *dest);
193 extern void transpose_alloc_real_array(const real_array *a, real_array *dest);
194 extern void transpose_real_array(const real_array *a, real_array *dest);
195 extern void outer_product_alloc_real_array(real_array *v1, real_array *v2, real_array *dest);
196 extern void outer_product_real_array(const real_array *v1, const real_array *v2, real_array *dest);
197 extern void identity_real_array(int n, real_array *dest);
198 extern void diagonal_real_array(const real_array *v, real_array *dest);
199 extern void diagonal_alloc_real_array(const real_array *v, real_array *dest);
200 extern void fill_real_array(real_array *dest, modelica_real s);
201 extern void linspace_real_array(modelica_real x1, modelica_real x2, int n,
202 real_array *dest);
203 extern modelica_real min_real_array(const real_array a);
204 extern modelica_real max_real_array(const real_array a);
205 extern modelica_integer argmin_real_array(const real_array a);
206 extern modelica_integer argmax_real_array(const real_array a);
207 extern modelica_real sum_real_array(const real_array a);
208 extern modelica_real product_real_array(const real_array a);
209 extern void symmetric_real_array(const real_array *a, real_array *dest);
210 extern void cross_real_array(const real_array *x, const real_array *y, real_array *dest);
211 extern void cross_alloc_real_array(const real_array *x, const real_array *y, real_array *dest);
212 extern void skew_real_array(const real_array *x, real_array *dest);
213
214 #define real_array_nr_of_elements(X) base_array_nr_of_elements(X)
215
216 static inline void clone_reverse_real_array_spec(const real_array *source,
217 real_array *dest)
218 {
219 clone_reverse_base_array_spec(source, dest);
220 }
221 extern void convert_alloc_real_array_to_f77(const real_array *a, real_array *dest);
222 extern void convert_alloc_real_array_from_f77(const real_array *a, real_array *dest);
223
224 extern void cast_integer_array_to_real(const integer_array *a, real_array *dest);
225 extern void cast_real_array_to_integer(const real_array *a, integer_array *dest);
226
227 extern void fill_alloc_real_array(real_array *dest, modelica_real value, int ndims, ...);
228
229 extern void identity_alloc_real_array(int n, real_array *dest);
230
231 #endif
232