23 #include <gsl/gsl_matrix.h>
24 #include <gsl/gsl_vector.h>
31 template<
typename E>
struct container;
36 template<>
struct container<
double> {
37 using vector= gsl_vector;
38 using vector_view= gsl_vector_view;
39 using matrix= gsl_matrix;
40 using matrix_view= gsl_matrix_view;
46 template<>
struct container<
double const> {
48 using vector= gsl_vector
const;
51 using vector_view= gsl_vector_const_view;
54 using matrix= gsl_matrix
const;
57 using matrix_view= gsl_matrix_const_view;
63 template<>
struct container<
float> {
65 using vector= gsl_vector_float;
68 using vector_view= gsl_vector_float_view;
71 using matrix= gsl_matrix_float;
74 using matrix_view= gsl_matrix_float_view;
80 template<>
struct container<
float const> {
82 using vector= gsl_vector_float
const;
85 using vector_view= gsl_vector_float_const_view;
88 using matrix= gsl_matrix_float
const;
91 using matrix_view= gsl_matrix_float_const_view;
97 template<>
struct container<
long double> {
99 using vector= gsl_vector_long_double;
102 using vector_view= gsl_vector_long_double_view;
105 using matrix= gsl_matrix_long_double;
108 using matrix_view= gsl_matrix_long_double_view;
114 template<>
struct container<
long double const> {
116 using vector= gsl_vector_long_double
const;
119 using vector_view= gsl_vector_long_double_const_view;
122 using matrix= gsl_matrix_long_double
const;
125 using matrix_view= gsl_matrix_long_double_const_view;
131 template<>
struct container<
int> {
133 using vector= gsl_vector_int;
136 using vector_view= gsl_vector_int_view;
139 using matrix= gsl_matrix_int;
142 using matrix_view= gsl_matrix_int_view;
148 template<>
struct container<
int const> {
150 using vector= gsl_vector_int
const;
153 using vector_view= gsl_vector_int_const_view;
156 using matrix= gsl_matrix_int
const;
159 using matrix_view= gsl_matrix_int_const_view;
165 template<>
struct container<
unsigned> {
167 using vector= gsl_vector_uint;
170 using vector_view= gsl_vector_uint_view;
173 using matrix= gsl_matrix_uint;
176 using matrix_view= gsl_matrix_uint_view;
182 template<>
struct container<
unsigned const> {
184 using vector= gsl_vector_uint
const;
187 using vector_view= gsl_vector_uint_const_view;
190 using matrix= gsl_matrix_uint
const;
193 using matrix_view= gsl_matrix_uint_const_view;
199 template<>
struct container<
long> {
201 using vector= gsl_vector_long;
204 using vector_view= gsl_vector_long_view;
207 using matrix= gsl_matrix_long;
210 using matrix_view= gsl_matrix_long_view;
216 template<>
struct container<
long const> {
218 using vector= gsl_vector_long
const;
221 using vector_view= gsl_vector_long_const_view;
224 using matrix= gsl_matrix_long
const;
227 using matrix_view= gsl_matrix_long_const_view;
233 template<>
struct container<
unsigned long> {
235 using vector= gsl_vector_ulong;
238 using vector_view= gsl_vector_ulong_view;
241 using matrix= gsl_matrix_ulong;
244 using matrix_view= gsl_matrix_ulong_view;
250 template<>
struct container<
unsigned long const> {
252 using vector= gsl_vector_ulong
const;
255 using vector_view= gsl_vector_ulong_const_view;
258 using matrix= gsl_matrix_ulong
const;
261 using matrix_view= gsl_matrix_ulong_const_view;
267 template<>
struct container<
short> {
269 using vector= gsl_vector_short;
272 using vector_view= gsl_vector_short_view;
275 using matrix= gsl_matrix_short;
278 using matrix_view= gsl_matrix_short_view;
284 template<>
struct container<
short const> {
286 using vector= gsl_vector_short
const;
289 using vector_view= gsl_vector_short_const_view;
292 using matrix= gsl_matrix_short
const;
295 using matrix_view= gsl_matrix_short_const_view;
301 template<>
struct container<
unsigned short> {
303 using vector= gsl_vector_ushort;
306 using vector_view= gsl_vector_ushort_view;
309 using matrix= gsl_matrix_ushort;
312 using matrix_view= gsl_matrix_ushort_view;
318 template<>
struct container<
unsigned short const> {
320 using vector= gsl_vector_ushort
const;
323 using vector_view= gsl_vector_ushort_const_view;
326 using matrix= gsl_matrix_ushort
const;
329 using matrix_view= gsl_matrix_ushort_const_view;
335 template<>
struct container<
char> {
337 using vector= gsl_vector_char;
340 using vector_view= gsl_vector_char_view;
343 using matrix= gsl_matrix_char;
346 using matrix_view= gsl_matrix_char_view;
352 template<>
struct container<
char const> {
354 using vector= gsl_vector_char
const;
357 using vector_view= gsl_vector_char_const_view;
360 using matrix= gsl_matrix_char
const;
363 using matrix_view= gsl_matrix_char_const_view;
369 template<>
struct container<
unsigned char> {
371 using vector= gsl_vector_uchar;
374 using vector_view= gsl_vector_uchar_view;
377 using matrix= gsl_matrix_uchar;
380 using matrix_view= gsl_matrix_uchar_view;
386 template<>
struct container<
unsigned char const> {
388 using vector= gsl_vector_uchar
const;
391 using vector_view= gsl_vector_uchar_const_view;
394 using matrix= gsl_matrix_uchar
const;
397 using matrix_view= gsl_matrix_uchar_const_view;
403 template<>
struct container<complex<
double>> {
405 using vector= gsl_vector_complex;
408 using vector_view= gsl_vector_complex_view;
411 using matrix= gsl_matrix_complex;
414 using matrix_view= gsl_matrix_complex_view;
420 template<>
struct container<complex<
double>
const> {
422 using vector= gsl_vector_complex
const;
425 using vector_view= gsl_vector_complex_const_view;
428 using matrix= gsl_matrix_complex
const;
431 using matrix_view= gsl_matrix_complex_const_view;
437 template<>
struct container<complex<
float>> {
439 using vector= gsl_vector_complex_float;
442 using vector_view= gsl_vector_complex_float_view;
445 using matrix= gsl_matrix_complex_float;
448 using matrix_view= gsl_matrix_complex_float_view;
454 template<>
struct container<complex<
float>
const> {
456 using vector= gsl_vector_complex_float
const;
459 using vector_view= gsl_vector_complex_float_const_view;
462 using matrix= gsl_matrix_complex_float
const;
465 using matrix_view= gsl_matrix_complex_float_const_view;
471 template<>
struct container<complex<
long double>> {
473 using vector= gsl_vector_complex_long_double;
476 using vector_view= gsl_vector_complex_long_double_view;
479 using matrix= gsl_matrix_complex_long_double;
482 using matrix_view= gsl_matrix_complex_long_double_view;
488 template<>
struct container<complex<
long double>
const> {
490 using vector= gsl_vector_complex_long_double
const;
493 using vector_view= gsl_vector_complex_long_double_const_view;
496 using matrix= gsl_matrix_complex_long_double
const;
499 using matrix_view= gsl_matrix_complex_long_double_const_view;
506 template<
typename E>
using w_vector=
typename container<E>::vector;
512 template<
typename E>
using w_vector_view=
typename container<E>::vector_view;
518 template<
typename E>
using w_matrix=
typename container<E>::matrix;
524 template<
typename E>
using w_matrix_view=
typename container<E>::matrix_view;