use core::ffi::*;
use num::Complex;
pub const TBLIS_ENABLE_CPLUSPLUS: u32 = 0;
pub const TBLIS_MAX_UNROLL: u32 = 8;
pub type scomplex = Complex<f32>;
pub type dcomplex = Complex<f64>;
pub type tblis_config = c_void;
impl reduce_t {
pub const REDUCE_NORM_1: reduce_t = reduce_t::REDUCE_SUM_ABS;
}
impl reduce_t {
pub const REDUCE_NORM_INF: reduce_t = reduce_t::REDUCE_MAX_ABS;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum reduce_t {
REDUCE_SUM = 0,
REDUCE_SUM_ABS = 1,
REDUCE_MAX = 2,
REDUCE_MAX_ABS = 3,
REDUCE_MIN = 4,
REDUCE_MIN_ABS = 5,
REDUCE_NORM_2 = 6,
}
pub type type_t = c_int;
pub const TYPE_SINGLE: type_t = 0;
pub const TYPE_FLOAT: type_t = 0;
pub const TYPE_DOUBLE: type_t = 2;
pub const TYPE_SCOMPLEX: type_t = 1;
pub const TYPE_DCOMPLEX: type_t = 3;
pub type len_type = isize;
pub type stride_type = isize;
pub type label_type = c_char;
#[repr(C)]
#[derive(Copy, Clone)]
pub struct tblis_scalar {
pub data: tblis_scalar_scalar,
pub type_: type_t,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union tblis_scalar_scalar {
pub s: f32,
pub d: f64,
pub c: scomplex,
pub z: dcomplex,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct tblis_tensor {
pub type_: type_t,
pub conj: c_int,
pub scalar: tblis_scalar,
pub data: *mut c_void,
pub ndim: c_int,
pub len: *mut len_type,
pub stride: *mut stride_type,
}
pub type tblis_comm = c_void;