linxal 0.6.0

Linear Algebra package with rust-ndarray interface
use super::ffi;
use libc::c_char;
use lapack::{c32, c64};

#[inline]
pub fn slaror(side: u8, init: u8, m: i32, n: i32, a: &mut [f32], lda: i32, iseed: &mut [i32],
              x: &mut [f32], info: &mut i32) {

    unsafe {
        ffi::slaror_(&(side as c_char), &(init as c_char), &m, &n, a.as_mut_ptr(), &lda,
                     iseed.as_mut_ptr(), x.as_mut_ptr(), info)
    }
}

#[inline]
pub fn dlaror(side: u8, init: u8, m: i32, n: i32, a: &mut [f64], lda: i32, iseed: &mut [i32],
              x: &mut [f64], info: &mut i32) {

    unsafe {
        ffi::dlaror_(&(side as c_char), &(init as c_char), &m, &n, a.as_mut_ptr(), &lda,
                     iseed.as_mut_ptr(), x.as_mut_ptr(), info)
    }
}

#[inline]
pub fn claror(side: u8, init: u8, m: i32, n: i32, a: &mut [c32], lda: i32, iseed: &mut [i32],
              x: &mut [c32], info: &mut i32) {

    unsafe {
        ffi::claror_(&(side as c_char), &(init as c_char), &m, &n, a.as_mut_ptr() as *mut _, &lda,
                     iseed.as_mut_ptr(), x.as_mut_ptr() as *mut _, info)
    }
}

#[inline]
pub fn zlaror(side: u8, init: u8, m: i32, n: i32, a: &mut [c64], lda: i32, iseed: &mut [i32],
              x: &mut [c64], info: &mut i32) {

    unsafe {
        ffi::zlaror_(&(side as c_char), &(init as c_char), &m, &n, a.as_mut_ptr() as *mut _, &lda,
                     iseed.as_mut_ptr(), x.as_mut_ptr() as *mut _, info)
    }
}

#[inline]
pub fn slatmt(m: i32, n: i32, dist: u8, iseed: &mut [i32],
              sym: u8, d: &mut [f32], mode: i32,
              cond: f32, dmax: f32, rank: i32, kl: i32, ku: i32,
              pack: u8, a: &mut [f32], lda: i32,
              work: &mut [f32]) -> i32 {
    let mut info = 0;
    unsafe {
        ffi::slatmt_(&m, &n, &(dist as c_char), iseed.as_mut_ptr(),
                    &(sym as c_char), d.as_mut_ptr(), &mode,
                    &cond, &dmax, &rank, &kl, &ku,
                    &(pack as c_char), a.as_mut_ptr(), &lda,
                    work.as_mut_ptr(), &mut info);
    }
    info
}

#[inline]
pub fn dlatmt(m: i32, n: i32, dist: u8, iseed: &mut [i32],
              sym: u8, d: &mut [f64], mode: i32,
              cond: f64, dmax: f64, rank: i32, kl: i32, ku: i32,
              pack: u8, a: &mut [f64], lda: i32,
              work: &mut [f64]) -> i32 {
    let mut info = 0;
    unsafe {
        ffi::dlatmt_(&m, &n, &(dist as c_char), iseed.as_mut_ptr(),
                    &(sym as c_char), d.as_mut_ptr(), &mode,
                    &cond, &dmax, &rank, &kl, &ku,
                    &(pack as c_char), a.as_mut_ptr(), &lda,
                    work.as_mut_ptr(), &mut info);
    }
    info
}

#[inline]
pub fn clatmt(m: i32, n: i32, dist: u8, iseed: &mut [i32],
              sym: u8, d: &mut [f32], mode: i32,
              cond: f32, dmax: f32, rank: i32, kl: i32, ku: i32,
              pack: u8, a: &mut [c32], lda: i32,
              work: &mut [c32]) -> i32 {
    let mut info = 0;
    unsafe {
        ffi::clatmt_(&m, &n, &(dist as c_char), iseed.as_mut_ptr(),
                    &(sym as c_char), d.as_mut_ptr(), &mode,
                    &cond, &dmax, &rank, &kl, &ku,
                    &(pack as c_char), a.as_mut_ptr() as *mut _, &lda,
                    work.as_mut_ptr() as *mut _, &mut info);
    }
    info
}


#[inline]
pub fn zlatmt(m: i32, n: i32, dist: u8, iseed: &mut [i32],
              sym: u8, d: &mut [f64], mode: i32,
              cond: f64, dmax: f64, rank: i32, kl: i32, ku: i32,
              pack: u8, a: &mut [c64], lda: i32,
              work: &mut [c64]) -> i32 {
    let mut info = 0;
    unsafe {
        ffi::zlatmt_(&m, &n, &(dist as c_char), iseed.as_mut_ptr(),
                    &(sym as c_char), d.as_mut_ptr(), &mode,
                    &cond, &dmax, &rank, &kl, &ku,
                    &(pack as c_char), a.as_mut_ptr() as *mut _, &lda,
                    work.as_mut_ptr() as *mut _, &mut info);
    }
    info
}