#![deny(warnings)]
#[cfg(feature = "alga")]
extern crate alga;
extern crate ndarray;
extern crate num_complex;
extern crate num_traits;
#[cfg(feature = "serde")]
extern crate serde;
#[cfg(feature = "serde_derive")]
#[macro_use]
extern crate serde_derive;
#[cfg(test)]
extern crate tempdir;
pub mod array_backend;
pub mod errors;
pub mod indexing;
pub mod io;
mod num_kinds;
mod sparse;
pub mod stack;
pub type Ix_ = ndarray::Ix1;
pub type Ix1 = ndarray::Ix1;
pub type Ix2 = ndarray::Ix2;
pub use indexing::SpIndex;
pub use sparse::{
CsMat, CsMatBase, CsMatI, CsMatVecView, CsMatView, CsMatViewI,
CsMatViewMut, CsMatViewMutI, CsVec, CsVecBase, CsVecI, CsVecView,
CsVecViewI, CsVecViewMut, CsVecViewMutI, SparseMat, TriMat, TriMatBase,
TriMatI, TriMatIter, TriMatView, TriMatViewI, TriMatViewMut,
TriMatViewMutI,
};
pub use sparse::symmetric::is_symmetric;
pub use sparse::permutation::{
PermOwned, PermOwnedI, PermView, PermViewI, Permutation,
};
pub use sparse::CompressedStorage::{self, CSC, CSR};
pub use sparse::binop;
pub use sparse::linalg;
pub use sparse::prod;
pub mod vec {
pub use sparse::{CsVec, CsVecBase, CsVecView, CsVecViewMut};
pub use sparse::vec::{
IntoSparseVecIter, NnzEither, NnzIndex, NnzOrZip, SparseIterTools,
VecDim, VectorIterator, VectorIteratorMut,
};
}
pub use sparse::construct::{bmat, hstack, vstack};
pub use sparse::to_dense::assign_to_dense;
pub type Shape = (usize, usize);
pub type SpRes<T> = Result<T, errors::SprsError>;
#[cfg(test)]
mod test_data;
#[cfg(test)]
mod test {
use super::CsMat;
#[test]
fn iter_rbr() {
let mat = CsMat::new(
(3, 3),
vec![0, 2, 3, 3],
vec![1, 2, 0],
vec![0.1, 0.2, 0.3],
);
let view = mat.view();
let mut iter = view.iter();
assert_eq!(iter.next(), Some((&0.1, (0, 1))));
assert_eq!(iter.next(), Some((&0.2, (0, 2))));
assert_eq!(iter.next(), Some((&0.3, (1, 0))));
assert_eq!(iter.next(), None);
}
}