rblas/vector/
ll.rs

1// Copyright 2014 Michael Yang. All rights reserved.
2// Use of this source code is governed by a MIT-style
3// license that can be found in the LICENSE file.
4
5//! Bindings for vector functions.
6
7pub mod cblas_s {
8    use libc::{c_float, c_int, c_void};
9
10    pub use self::cblas_scopy as copy;
11    pub use self::cblas_saxpy as axpy;
12    pub use self::cblas_sscal as scal;
13    pub use self::cblas_sswap as swap;
14    pub use self::cblas_sdsdot as dsdot;
15    pub use self::cblas_sdot as dot;
16    pub use self::cblas_sasum as asum;
17    pub use self::cblas_scasum as casum;
18    pub use self::cblas_snrm2 as nrm2;
19    pub use self::cblas_scnrm2 as cnrm2;
20    pub use self::cblas_srot as rot;
21    pub use self::cblas_srotm as rotm;
22    pub use self::cblas_srotg as rotg;
23    pub use self::cblas_srotmg as rotmg;
24
25    extern {
26        pub fn cblas_scopy(n: c_int, x: *const c_float,  inc_x: c_int, y: *mut c_float,  inc_y: c_int);
27        pub fn cblas_saxpy(n: c_int, alpha: c_float,       x: *const c_float,  inc_x: c_int, y: *mut c_float,  inc_y: c_int);
28        pub fn cblas_sscal(n: c_int, alpha: c_float,       x: *mut c_float,  inc_x: c_int);
29        pub fn cblas_sswap(n: c_int, x: *mut c_float,  inc_x: c_int, y: *mut c_float,  inc_y: c_int);
30        pub fn cblas_sdsdot(n: c_int, alpha: c_float, x: *const c_float, inc_x: c_int, y: *const c_float, inc_y: c_int) -> c_float;
31        pub fn cblas_sdot(n: c_int, x: *const c_float,  inc_x: c_int, y: *const c_float,  inc_y: c_int) -> c_float;
32        pub fn cblas_sasum(n: c_int, x: *const c_float,  inc_x: c_int) -> c_float;
33        pub fn cblas_scasum(n: c_int, x: *const c_void,   inc_x: c_int) -> c_float;
34        pub fn cblas_snrm2(n: c_int, x: *const c_float,  inc_x: c_int) -> c_float;
35        pub fn cblas_scnrm2(n: c_int, x: *const c_void,   inc_x: c_int) -> c_float;
36        pub fn cblas_srot(n: c_int, x: *mut c_float,  inc_x: c_int, y: *mut c_float,  inc_y: c_int, c: c_float,  s: c_float);
37        pub fn cblas_srotm(n: c_int, x: *mut c_float,  inc_x: c_int, y: *mut c_float,  inc_y: c_int, p: *const c_float);
38        pub fn cblas_srotg(a: *mut c_float,  b: *mut c_float,  c: *mut c_float,  s: *mut c_float);
39        pub fn cblas_srotmg(d1: *mut c_float,  d2: *mut c_float,  b1: *mut c_float,  b2: c_float,  p: *mut c_float);
40    }
41}
42
43pub mod cblas_d {
44    use libc::{c_double, c_float, c_int, c_void};
45
46    pub use self::cblas_dcopy as copy;
47    pub use self::cblas_daxpy as axpy;
48    pub use self::cblas_dscal as scal;
49    pub use self::cblas_dswap as swap;
50    pub use self::cblas_dsdot as dsdot;
51    pub use self::cblas_ddot as dot;
52    pub use self::cblas_dasum as asum;
53    pub use self::cblas_dzasum as zasum;
54    pub use self::cblas_dnrm2 as nrm2;
55    pub use self::cblas_dznrm2 as znrm2;
56    pub use self::cblas_drot as rot;
57    pub use self::cblas_drotm as rotm;
58    pub use self::cblas_drotg as rotg;
59    pub use self::cblas_drotmg as rotmg;
60
61    extern {
62        pub fn cblas_dcopy(n: c_int, x: *const c_double, inc_x: c_int, y: *mut c_double, inc_y: c_int);
63        pub fn cblas_daxpy(n: c_int, alpha: c_double,      x: *const c_double, inc_x: c_int, y: *mut c_double, inc_y: c_int);
64        pub fn cblas_dscal (n: c_int, alpha: c_double,      x: *mut c_double, inc_x: c_int);
65        pub fn cblas_dswap(n: c_int, x: *mut c_double, inc_x: c_int, y: *mut c_double, inc_y: c_int);
66        pub fn cblas_dsdot(n: c_int, x: *const c_float,  inc_x: c_int, y: *const c_float,  inc_y: c_int) -> c_double;
67        pub fn cblas_ddot (n: c_int, x: *const c_double, inc_x: c_int, y: *const c_double, inc_y: c_int) -> c_double;
68        pub fn cblas_dasum (n: c_int, x: *const c_double, inc_x: c_int) -> c_double;
69        pub fn cblas_dzasum(n: c_int, x: *const c_void,   inc_x: c_int) -> c_double;
70        pub fn cblas_dnrm2 (n: c_int, x: *const c_double, inc_x: c_int) -> c_double;
71        pub fn cblas_dznrm2(n: c_int, x: *const c_void,   inc_x: c_int) -> c_double;
72        pub fn cblas_drot(n: c_int, x: *mut c_double, inc_x: c_int, y: *mut c_double, inc_y: c_int, c: c_double, s: c_double);
73        pub fn cblas_drotm(n: c_int, x: *mut c_double, inc_x: c_int, y: *mut c_double, inc_y: c_int, p: *const c_double);
74        pub fn cblas_drotg(a: *mut c_double, b: *mut c_double, c: *mut c_double, s: *mut c_double);
75        pub fn cblas_drotmg(d1: *mut c_double, d2: *mut c_double, b1: *mut c_double, b2: c_double, p: *mut c_double);
76    }
77}
78
79pub mod cblas_c {
80    use libc::{c_float, c_int, c_void};
81
82    pub use self::cblas_ccopy as copy;
83    pub use self::cblas_caxpy as axpy;
84    pub use self::cblas_cscal as scal;
85    pub use self::cblas_csscal as sscal;
86    pub use self::cblas_cswap as swap;
87    pub use self::cblas_cdotu_sub as dotu_sub;
88    pub use self::cblas_cdotc_sub as dotc_sub;
89
90    extern {
91        pub fn cblas_ccopy(n: c_int, x: *const c_void,   inc_x: c_int, y: *mut c_void,   inc_y: c_int);
92        pub fn cblas_caxpy(n: c_int, alpha: *const c_void, x: *const c_void,   inc_x: c_int, y: *mut c_void,   inc_y: c_int);
93        pub fn cblas_cscal (n: c_int, alpha: *const c_void, x: *mut c_void,   inc_x: c_int);
94        pub fn cblas_csscal(n: c_int, alpha: c_float,       x: *mut c_void,   inc_x: c_int);
95        pub fn cblas_cswap(n: c_int, x: *mut c_void,   inc_x: c_int, y: *mut c_void,   inc_y: c_int);
96        pub fn cblas_cdotu_sub(n: c_int, x: *const c_void, inc_x: c_int, y: *const c_void, inc_y: c_int, dotu: *mut c_void);
97        pub fn cblas_cdotc_sub(n: c_int, x: *const c_void, inc_x: c_int, y: *const c_void, inc_y: c_int, dotc: *mut c_void);
98    }
99}
100
101pub mod cblas_z {
102    use libc::{c_double, c_int, c_void};
103
104    pub use self::cblas_zcopy as copy;
105    pub use self::cblas_zaxpy as axpy;
106    pub use self::cblas_zscal as scal;
107    pub use self::cblas_zdscal as dscal;
108    pub use self::cblas_zswap as swap;
109    pub use self::cblas_zdotu_sub as dotu_sub;
110    pub use self::cblas_zdotc_sub as dotc_sub;
111
112    extern {
113        pub fn cblas_zcopy(n: c_int, x: *const c_void,   inc_x: c_int, y: *mut c_void,   inc_y: c_int);
114        pub fn cblas_zaxpy(n: c_int, alpha: *const c_void, x: *const c_void,   inc_x: c_int, y: *mut c_void,   inc_y: c_int);
115        pub fn cblas_zscal (n: c_int, alpha: *const c_void, x: *mut c_void,   inc_x: c_int);
116        pub fn cblas_zdscal(n: c_int, alpha: c_double,      x: *mut c_void,   inc_x: c_int);
117        pub fn cblas_zswap(n: c_int, x: *mut c_void,   inc_x: c_int, y: *mut c_void,   inc_y: c_int);
118        pub fn cblas_zdotu_sub(n: c_int, x: *const c_void, inc_x: c_int, y: *const c_void, inc_y: c_int, dotu: *mut c_void);
119        pub fn cblas_zdotc_sub(n: c_int, x: *const c_void, inc_x: c_int, y: *const c_void, inc_y: c_int, dotc: *mut c_void);
120    }
121}
122
123pub mod cblas_i {
124    use libc::{c_double, c_float, c_int, c_void, size_t};
125
126    pub use self::cblas_isamax as samax;
127    pub use self::cblas_idamax as damax;
128    pub use self::cblas_icamax as camax;
129    pub use self::cblas_izamax as zamax;
130
131    extern {
132        pub fn cblas_isamax(n: c_int, x: *const c_float,  inc_x: c_int) -> size_t;
133        pub fn cblas_idamax(n: c_int, x: *const c_double, inc_x: c_int) -> size_t;
134        pub fn cblas_icamax(n: c_int, x: *const c_void,   inc_x: c_int) -> size_t;
135        pub fn cblas_izamax(n: c_int, x: *const c_void,   inc_x: c_int) -> size_t;
136    }
137}