1#![doc = include_str!("../README.md")]
2
3#[cfg(test)]
4mod tests {
5
6 extern crate libc;
7 use self::libc::*;
8
9 extern "C" {
10 pub fn bli_info_get_version_str() -> *const c_char;
11 pub fn sgemm_(
12 transa: *const c_char,
13 transb: *const c_char,
14 m: *const c_int,
15 n: *const c_int,
16 k: *const c_int,
17 alpha: *const c_float,
18 a: *const c_float,
19 lda: *const c_int,
20 b: *const c_float,
21 ldb: *const c_int,
22 beta: *const c_float,
23 c: *mut c_float,
24 ldc: *const c_int,
25 );
26 }
27
28 #[test]
29 fn it_links() {
30 use std::ffi::CStr;
31 unsafe {
32 let s = CStr::from_ptr(bli_info_get_version_str());
33 println!("blis version: {:?}", s);
34 }
35 }
36
37 #[test]
38 fn sgemm() {
39 let a = [1.0];
40 let b = [2.0];
41 let mut c = [12.0];
42
43 unsafe {
44 sgemm_(
45 &(b'N' as i8),
46 &(b'N' as i8),
47 &1,
48 &1,
49 &1,
50 &1.0,
51 a.as_ptr(),
52 &1,
53 b.as_ptr(),
54 &1,
55 &0.0,
56 c.as_mut_ptr(),
57 &1,
58 );
59 }
60 assert_eq!(&c, &[2.0]);
61 }
62}