gslcpp
Modern-C++ Wrapper for GSL
subvector.hpp
Go to the documentation of this file.
1 /// \file include/gslcpp/wrap/subvector.hpp
2 /// \copyright 2022 Thomas E. Vaughan, all rights reserved.
3 /// \brief Definition of gsl::w_subvector().
4 
5 #pragma once
6 #include "container.hpp" // w_vector
7 
8 namespace gsl {
9 
10 
11 /// View of subvector of vector `v`.
12 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
13 /// @param v Pointer to vector.
14 /// @param i Offset in `v` of view's first element.
15 /// @param s Stride of successive elements in view relative to offsets in `v`.
16 /// @param n Number of elements in view.
17 /// @return View of subvector.
18 inline auto w_subvector(w_vector<double> *v, size_t i, size_t s, size_t n) {
19  return gsl_vector_subvector_with_stride(v, i, s, n);
20 }
21 
22 
23 /// View of subvector of vector `v`.
24 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
25 /// @param v Pointer to vector.
26 /// @param i Offset in `v` of view's first element.
27 /// @param s Stride of successive elements in view relative to offsets in `v`.
28 /// @param n Number of elements in view.
29 /// @return View of subvector.
30 inline auto
31 w_subvector(w_vector<double const> *v, size_t i, size_t s, size_t n) {
32  return gsl_vector_const_subvector_with_stride(v, i, s, n);
33 }
34 
35 
36 /// View of subvector of vector `v`.
37 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
38 /// @param v Pointer to vector.
39 /// @param i Offset in `v` of view's first element.
40 /// @param s Stride of successive elements in view relative to offsets in `v`.
41 /// @param n Number of elements in view.
42 /// @return View of subvector.
43 inline auto w_subvector(w_vector<float> *v, size_t i, size_t s, size_t n) {
44  return gsl_vector_float_subvector_with_stride(v, i, s, n);
45 }
46 
47 
48 /// View of subvector of vector `v`.
49 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
50 /// @param v Pointer to vector.
51 /// @param i Offset in `v` of view's first element.
52 /// @param s Stride of successive elements in view relative to offsets in `v`.
53 /// @param n Number of elements in view.
54 /// @return View of subvector.
55 inline auto
56 w_subvector(w_vector<float const> *v, size_t i, size_t s, size_t n) {
57  return gsl_vector_float_const_subvector_with_stride(v, i, s, n);
58 }
59 
60 
61 /// View of subvector of vector `v`.
62 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
63 /// @param v Pointer to vector.
64 /// @param i Offset in `v` of view's first element.
65 /// @param s Stride of successive elements in view relative to offsets in `v`.
66 /// @param n Number of elements in view.
67 /// @return View of subvector.
68 inline auto
69 w_subvector(w_vector<long double> *v, size_t i, size_t s, size_t n) {
70  return gsl_vector_long_double_subvector_with_stride(v, i, s, n);
71 }
72 
73 
74 /// View of subvector of vector `v`.
75 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
76 /// @param v Pointer to vector.
77 /// @param i Offset in `v` of view's first element.
78 /// @param s Stride of successive elements in view relative to offsets in `v`.
79 /// @param n Number of elements in view.
80 /// @return View of subvector.
81 inline auto
82 w_subvector(w_vector<long double const> *v, size_t i, size_t s, size_t n) {
83  return gsl_vector_long_double_const_subvector_with_stride(v, i, s, n);
84 }
85 
86 
87 /// View of subvector of vector `v`.
88 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
89 /// @param v Pointer to vector.
90 /// @param i Offset in `v` of view's first element.
91 /// @param s Stride of successive elements in view relative to offsets in `v`.
92 /// @param n Number of elements in view.
93 /// @return View of subvector.
94 inline auto w_subvector(w_vector<int> *v, size_t i, size_t s, size_t n) {
95  return gsl_vector_int_subvector_with_stride(v, i, s, n);
96 }
97 
98 
99 /// View of subvector of vector `v`.
100 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
101 /// @param v Pointer to vector.
102 /// @param i Offset in `v` of view's first element.
103 /// @param s Stride of successive elements in view relative to offsets in `v`.
104 /// @param n Number of elements in view.
105 /// @return View of subvector.
106 inline auto w_subvector(w_vector<int const> *v, size_t i, size_t s, size_t n) {
107  return gsl_vector_int_const_subvector_with_stride(v, i, s, n);
108 }
109 
110 
111 /// View of subvector of vector `v`.
112 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
113 /// @param v Pointer to vector.
114 /// @param i Offset in `v` of view's first element.
115 /// @param s Stride of successive elements in view relative to offsets in `v`.
116 /// @param n Number of elements in view.
117 /// @return View of subvector.
118 inline auto w_subvector(w_vector<unsigned> *v, size_t i, size_t s, size_t n) {
119  return gsl_vector_uint_subvector_with_stride(v, i, s, n);
120 }
121 
122 
123 /// View of subvector of vector `v`.
124 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
125 /// @param v Pointer to vector.
126 /// @param i Offset in `v` of view's first element.
127 /// @param s Stride of successive elements in view relative to offsets in `v`.
128 /// @param n Number of elements in view.
129 /// @return View of subvector.
130 inline auto
131 w_subvector(w_vector<unsigned const> *v, size_t i, size_t s, size_t n) {
132  return gsl_vector_uint_const_subvector_with_stride(v, i, s, n);
133 }
134 
135 
136 /// View of subvector of vector `v`.
137 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
138 /// @param v Pointer to vector.
139 /// @param i Offset in `v` of view's first element.
140 /// @param s Stride of successive elements in view relative to offsets in `v`.
141 /// @param n Number of elements in view.
142 /// @return View of subvector.
143 inline auto w_subvector(w_vector<long> *v, size_t i, size_t s, size_t n) {
144  return gsl_vector_long_subvector_with_stride(v, i, s, n);
145 }
146 
147 
148 /// View of subvector of vector `v`.
149 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
150 /// @param v Pointer to vector.
151 /// @param i Offset in `v` of view's first element.
152 /// @param s Stride of successive elements in view relative to offsets in `v`.
153 /// @param n Number of elements in view.
154 /// @return View of subvector.
155 inline auto
156 w_subvector(w_vector<long const> *v, size_t i, size_t s, size_t n) {
157  return gsl_vector_long_const_subvector_with_stride(v, i, s, n);
158 }
159 
160 
161 /// View of subvector of vector `v`.
162 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
163 /// @param v Pointer to vector.
164 /// @param i Offset in `v` of view's first element.
165 /// @param s Stride of successive elements in view relative to offsets in `v`.
166 /// @param n Number of elements in view.
167 /// @return View of subvector.
168 inline auto
169 w_subvector(w_vector<unsigned long> *v, size_t i, size_t s, size_t n) {
170  return gsl_vector_ulong_subvector_with_stride(v, i, s, n);
171 }
172 
173 
174 /// View of subvector of vector `v`.
175 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
176 /// @param v Pointer to vector.
177 /// @param i Offset in `v` of view's first element.
178 /// @param s Stride of successive elements in view relative to offsets in `v`.
179 /// @param n Number of elements in view.
180 /// @return View of subvector.
181 inline auto
182 w_subvector(w_vector<unsigned long const> *v, size_t i, size_t s, size_t n) {
183  return gsl_vector_ulong_const_subvector_with_stride(v, i, s, n);
184 }
185 
186 
187 /// View of subvector of vector `v`.
188 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
189 /// @param v Pointer to vector.
190 /// @param i Offset in `v` of view's first element.
191 /// @param s Stride of successive elements in view relative to offsets in `v`.
192 /// @param n Number of elements in view.
193 /// @return View of subvector.
194 inline auto w_subvector(w_vector<short> *v, size_t i, size_t s, size_t n) {
195  return gsl_vector_short_subvector_with_stride(v, i, s, n);
196 }
197 
198 
199 /// View of subvector of vector `v`.
200 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
201 /// @param v Pointer to vector.
202 /// @param i Offset in `v` of view's first element.
203 /// @param s Stride of successive elements in view relative to offsets in `v`.
204 /// @param n Number of elements in view.
205 /// @return View of subvector.
206 inline auto
207 w_subvector(w_vector<short const> *v, size_t i, size_t s, size_t n) {
208  return gsl_vector_short_const_subvector_with_stride(v, i, s, n);
209 }
210 
211 
212 /// View of subvector of vector `v`.
213 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
214 /// @param v Pointer to vector.
215 /// @param i Offset in `v` of view's first element.
216 /// @param s Stride of successive elements in view relative to offsets in `v`.
217 /// @param n Number of elements in view.
218 /// @return View of subvector.
219 inline auto
220 w_subvector(w_vector<unsigned short> *v, size_t i, size_t s, size_t n) {
221  return gsl_vector_ushort_subvector_with_stride(v, i, s, n);
222 }
223 
224 
225 /// View of subvector of vector `v`.
226 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
227 /// @param v Pointer to vector.
228 /// @param i Offset in `v` of view's first element.
229 /// @param s Stride of successive elements in view relative to offsets in `v`.
230 /// @param n Number of elements in view.
231 /// @return View of subvector.
232 inline auto
233 w_subvector(w_vector<unsigned short const> *v, size_t i, size_t s, size_t n) {
234  return gsl_vector_ushort_const_subvector_with_stride(v, i, s, n);
235 }
236 
237 
238 /// View of subvector of vector `v`.
239 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
240 /// @param v Pointer to vector.
241 /// @param i Offset in `v` of view's first element.
242 /// @param s Stride of successive elements in view relative to offsets in `v`.
243 /// @param n Number of elements in view.
244 /// @return View of subvector.
245 inline auto w_subvector(w_vector<char> *v, size_t i, size_t s, size_t n) {
246  return gsl_vector_char_subvector_with_stride(v, i, s, n);
247 }
248 
249 
250 /// View of subvector of vector `v`.
251 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
252 /// @param v Pointer to vector.
253 /// @param i Offset in `v` of view's first element.
254 /// @param s Stride of successive elements in view relative to offsets in `v`.
255 /// @param n Number of elements in view.
256 /// @return View of subvector.
257 inline auto
258 w_subvector(w_vector<char const> *v, size_t i, size_t s, size_t n) {
259  return gsl_vector_char_const_subvector_with_stride(v, i, s, n);
260 }
261 
262 
263 /// View of subvector of vector `v`.
264 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
265 /// @param v Pointer to vector.
266 /// @param i Offset in `v` of view's first element.
267 /// @param s Stride of successive elements in view relative to offsets in `v`.
268 /// @param n Number of elements in view.
269 /// @return View of subvector.
270 inline auto
271 w_subvector(w_vector<unsigned char> *v, size_t i, size_t s, size_t n) {
272  return gsl_vector_uchar_subvector_with_stride(v, i, s, n);
273 }
274 
275 
276 /// View of subvector of vector `v`.
277 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
278 /// @param v Pointer to vector.
279 /// @param i Offset in `v` of view's first element.
280 /// @param s Stride of successive elements in view relative to offsets in `v`.
281 /// @param n Number of elements in view.
282 /// @return View of subvector.
283 inline auto
284 w_subvector(w_vector<unsigned char const> *v, size_t i, size_t s, size_t n) {
285  return gsl_vector_uchar_const_subvector_with_stride(v, i, s, n);
286 }
287 
288 
289 /// View of subvector of vector `v`.
290 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
291 /// @param v Pointer to vector.
292 /// @param i Offset in `v` of view's first element.
293 /// @param s Stride of successive elements in view relative to offsets in `v`.
294 /// @param n Number of elements in view.
295 /// @return View of subvector.
296 inline auto
297 w_subvector(w_vector<complex<double>> *v, size_t i, size_t s, size_t n) {
298  return gsl_vector_complex_subvector_with_stride(v, i, s, n);
299 }
300 
301 
302 /// View of subvector of vector `v`.
303 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
304 /// @param v Pointer to vector.
305 /// @param i Offset in `v` of view's first element.
306 /// @param s Stride of successive elements in view relative to offsets in `v`.
307 /// @param n Number of elements in view.
308 /// @return View of subvector.
309 inline auto
310 w_subvector(w_vector<complex<double> const> *v, size_t i, size_t s, size_t n) {
311  return gsl_vector_complex_const_subvector_with_stride(v, i, s, n);
312 }
313 
314 
315 /// View of subvector of vector `v`.
316 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
317 /// @param v Pointer to vector.
318 /// @param i Offset in `v` of view's first element.
319 /// @param s Stride of successive elements in view relative to offsets in `v`.
320 /// @param n Number of elements in view.
321 /// @return View of subvector.
322 inline auto
323 w_subvector(w_vector<complex<float>> *v, size_t i, size_t s, size_t n) {
324  return gsl_vector_complex_float_subvector_with_stride(v, i, s, n);
325 }
326 
327 
328 /// View of subvector of vector `v`.
329 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
330 /// @param v Pointer to vector.
331 /// @param i Offset in `v` of view's first element.
332 /// @param s Stride of successive elements in view relative to offsets in `v`.
333 /// @param n Number of elements in view.
334 /// @return View of subvector.
335 inline auto
336 w_subvector(w_vector<complex<float> const> *v, size_t i, size_t s, size_t n) {
337  return gsl_vector_complex_float_const_subvector_with_stride(v, i, s, n);
338 }
339 
340 
341 /// View of subvector of vector `v`.
342 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
343 /// @param v Pointer to vector.
344 /// @param i Offset in `v` of view's first element.
345 /// @param s Stride of successive elements in view relative to offsets in `v`.
346 /// @param n Number of elements in view.
347 /// @return View of subvector.
348 inline auto
349 w_subvector(w_vector<complex<long double>> *v, size_t i, size_t s, size_t n) {
350  return gsl_vector_complex_long_double_subvector_with_stride(v, i, s, n);
351 }
352 
353 
354 /// View of subvector of vector `v`.
355 /// https://www.gnu.org/software/gsl/doc/html/vectors.html#c.gsl_vector_subvector_with_stride
356 /// @param v Pointer to vector.
357 /// @param i Offset in `v` of view's first element.
358 /// @param s Stride of successive elements in view relative to offsets in `v`.
359 /// @param n Number of elements in view.
360 /// @return View of subvector.
361 inline auto w_subvector(
362  w_vector<complex<long double> const> *v, size_t i, size_t s, size_t n) {
363  return gsl_vector_complex_long_double_const_subvector_with_stride(
364  v, i, s, n);
365 }
366 
367 
368 } // namespace gsl
369 
370 // EOF
gsl::w_subvector
auto w_subvector(w_vector< float const > *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:56
gsl::w_subvector
auto w_subvector(w_vector< complex< float >> *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:323
gsl::w_subvector
auto w_subvector(w_vector< unsigned char > *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:271
gsl::w_subvector
auto w_subvector(w_vector< long > *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:143
gsl::w_subvector
auto w_subvector(w_vector< short const > *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:207
gsl::w_subvector
auto w_subvector(w_vector< unsigned short const > *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:233
gsl::w_subvector
auto w_subvector(w_vector< float > *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:43
gsl::w_subvector
auto w_subvector(w_vector< complex< double > const > *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:310
gsl::w_subvector
auto w_subvector(w_vector< complex< double >> *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:297
gsl::w_subvector
auto w_subvector(w_vector< unsigned const > *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:131
gsl::w_subvector
auto w_subvector(w_vector< double > *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:18
gsl::w_subvector
auto w_subvector(w_vector< unsigned > *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:118
gsl::w_subvector
auto w_subvector(w_vector< double const > *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:31
gsl::w_subvector
auto w_subvector(w_vector< char > *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:245
gsl::w_subvector
auto w_subvector(w_vector< complex< long double > const > *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:361
gsl::w_subvector
auto w_subvector(w_vector< unsigned long > *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:169
gsl::w_subvector
auto w_subvector(w_vector< long double > *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:69
gsl::w_subvector
auto w_subvector(w_vector< complex< long double >> *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:349
gsl::w_subvector
auto w_subvector(w_vector< unsigned short > *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:220
gsl::w_subvector
auto w_subvector(w_vector< int const > *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:106
gsl::w_subvector
auto w_subvector(w_vector< int > *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:94
gsl::w_subvector
auto w_subvector(w_vector< long const > *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:156
gsl::w_subvector
auto w_subvector(w_vector< short > *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:194
gsl::w_subvector
auto w_subvector(w_vector< complex< float > const > *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:336
gsl::w_subvector
auto w_subvector(w_vector< unsigned char const > *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:284
gsl::w_subvector
auto w_subvector(w_vector< long double const > *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:82
gsl::w_subvector
auto w_subvector(w_vector< char const > *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:258
gsl
Namespace for C++-interface to GSL.
Definition: v-iface.hpp:51
gsl::w_subvector
auto w_subvector(w_vector< unsigned long const > *v, size_t i, size_t s, size_t n)
View of subvector of vector v.
Definition: subvector.hpp:182