Add doc for `qr` & `svd`
//! }
//! ```
//!
+//! ## QR Decomposition (`O3` feature only)
+//!
+//! * Use `dgeqrf` of LAPACK
+//! * Return `QR` structure.
+//!
+//! ```no-run
+//! extern crate peroxide;
+//! use peroxide::fuga::*;
+//!
+//! pub struct QR {
+//! pub q: Matrix,
+//! pub r: Matrix,
+//! }
+//! ```
+//!
+//! * Example
+//!
+//! ```ignore
+//! extern crate peroxide;
+//! use peroxide::fuga::*;
+//!
+//! let a = ml_matrix("
+//! 1 -1 4;
+//! 1 4 -2;
+//! 1 4 2;
+//! 1 -1 0
+//! ");
+//!
+//! // QR decomposition
+//! let qr = a.qr();
+//!
+//! qr.q().print();
+//! // c[0] c[1] c[2]
+//! // r[0] -0.5 0.5 -0.5
+//! // r[1] -0.5 -0.5000 0.5000
+//! // r[2] -0.5 -0.5000 -0.5
+//! // r[3] -0.5 0.5 0.5000
+//!
+//! qr.r().print();
+//! // c[0] c[1] c[2]
+//! // r[0] -2 -3 -2
+//! // r[1] 0 -5 2
+//! // r[2] 0 0 -4
+//! ```
+//!
+//! ## Singular Value Decomposition (`O3` feature only)
+//!
+//! * Use `dgesvd` of LAPACK
+//! * Return `SVD` structure
+//!
+//! ```no_run
+//! extern crate peroxide;
+//! use peroxide::fuga::*;
+//!
+//! pub struct SVD {
+//! pub s: Vec<f64>,
+//! pub u: Matrix,
+//! pub vt: Matrix,
+//! }
+//! ```
+//!
+//! * Example
+//!
+//! ```
+//! extern crate peroxide;
+//! use peroxide::fuga::*;
+//!
+//! fn main() {
+//! let a = ml_matrix("3 2 2;2 3 -2");
+//! #[cfg(feature="O3")]
+//! {
+//! let svd = a.svd();
+//! assert!(eq_vec(&vec![5f64, 3f64], &svd.s, 1e-7));
+//! }
+//! a.print();
+//! }
+//! ```
+//!
//! ## Moore-Penrose Pseudo Inverse
//!
//! * $ X^\dagger = \left(X^T X\right)^{-1} X $
