pardiso-wrapper 0.1.2

Wrappers for MKL and Panua Pardiso dynamic libraries
Documentation
#![allow(non_camel_case_types)]

use libloading::Symbol;
use std::ffi::c_void;

#[derive(Debug)]
pub(crate) struct PanuaPardisoPointers<'a> {
    pub pardiso: Symbol<'a, PARDISO>,
    pub pardisoinit: Symbol<'a, PARDISOINIT>,
    pub pardiso_chkmatrix: Symbol<'a, PARDISO_CHKMATRIX>,
    pub pardiso_chkvec: Symbol<'a, PARDISO_CHKVEC>,
    pub pardiso_printstats: Symbol<'a, PARDISO_PRINTSTATS>,
}

pub(crate) type PARDISO = extern "C" fn(
    pt: *mut c_void,
    maxfct: *const i32,
    mnum: *const i32,
    mtype: *const i32,
    phase: *const i32,
    n: *const i32,
    a: *const f64,
    ia: *const i32,
    ja: *const i32,
    perm: *mut i32,
    nrhs: *const i32,
    iparm: *mut i32,
    msglvl: *const i32,
    b: *mut f64,
    x: *mut f64,
    error: *mut i32,
    dparm: *mut f64,
);

pub(crate) type PARDISOINIT = extern "C" fn(
    pt: *mut c_void,
    mtype: *const i32,
    solver: *const i32,
    iparm: *mut i32,
    dparm: *mut f64,
    error: *mut i32,
);

pub(crate) type PARDISO_CHKMATRIX = extern "C" fn(
    mtype: *const i32,
    n: *const i32,
    a: *const f64,
    ia: *const i32,
    ja: *const i32,
    error: *mut i32,
);

pub(crate) type PARDISO_CHKVEC =
    extern "C" fn(n: *const i32, nrhs: *const i32, b: *const f64, error: *mut i32);

pub(crate) type PARDISO_PRINTSTATS = extern "C" fn(
    mtype: *const i32,
    n: *const i32,
    a: *const f64,
    ia: *const i32,
    ja: *const i32,
    nrhs: *const i32,
    b: *const f64,
    error: *mut i32,
);