rstsr_blas_traits/
cblas_flags.rs

1/* #region flags of cblas */
2
3#[repr(u32)]
4#[derive(Debug, Clone, Copy, PartialEq, Eq)]
5pub enum CblasLayout {
6    RowMajor = 101,
7    ColMajor = 102,
8}
9
10pub type CblasOrder = CblasLayout;
11
12#[repr(u32)]
13#[derive(Debug, Clone, Copy, PartialEq, Eq)]
14pub enum CblasTranspose {
15    NoTrans = 111,
16    Trans = 112,
17    ConjTrans = 113,
18    ConjNoTrans = 114,
19}
20
21#[repr(u32)]
22#[derive(Debug, Clone, Copy, PartialEq, Eq)]
23pub enum CblasUplo {
24    Upper = 121,
25    Lower = 122,
26}
27
28#[repr(u32)]
29#[derive(Debug, Clone, Copy, PartialEq, Eq)]
30pub enum CblasDiag {
31    NonUnit = 131,
32    Unit = 132,
33}
34
35#[repr(u32)]
36#[derive(Debug, Clone, Copy, PartialEq, Eq)]
37pub enum CblasSide {
38    Left = 141,
39    Right = 142,
40}
41
42pub type CBLAS_ORDER = u32;
43pub type CBLAS_TRANSPOSE = u32;
44pub type CBLAS_UPLO = u32;
45pub type CBLAS_DIAG = u32;
46pub type CBLAS_SIDE = u32;
47
48/* #endregion */
49
50/* #region flag into */
51
52use rstsr_core::prelude::rstsr_structs::{FlagDiag, FlagOrder, FlagSide, FlagTrans, FlagUpLo};
53
54impl From<FlagTrans> for CblasTranspose {
55    fn from(flag: FlagTrans) -> Self {
56        match flag {
57            FlagTrans::N => CblasTranspose::NoTrans,
58            FlagTrans::T => CblasTranspose::Trans,
59            FlagTrans::C => CblasTranspose::ConjTrans,
60            _ => panic!("Invalid flag for trans"),
61        }
62    }
63}
64
65impl From<FlagUpLo> for CblasUplo {
66    fn from(flag: FlagUpLo) -> Self {
67        match flag {
68            FlagUpLo::U => CblasUplo::Upper,
69            FlagUpLo::L => CblasUplo::Lower,
70        }
71    }
72}
73
74impl From<FlagDiag> for CblasDiag {
75    fn from(flag: FlagDiag) -> Self {
76        match flag {
77            FlagDiag::U => CblasDiag::Unit,
78            FlagDiag::N => CblasDiag::NonUnit,
79        }
80    }
81}
82
83impl From<FlagSide> for CblasSide {
84    fn from(flag: FlagSide) -> Self {
85        match flag {
86            FlagSide::L => CblasSide::Left,
87            FlagSide::R => CblasSide::Right,
88        }
89    }
90}
91
92impl From<FlagOrder> for CblasLayout {
93    fn from(order: FlagOrder) -> Self {
94        match order {
95            FlagOrder::RowMajor => CblasOrder::RowMajor,
96            FlagOrder::ColMajor => CblasOrder::ColMajor,
97        }
98    }
99}
100
101/* #endregion */