blob: 117f6d4b0dfd45bd5f6fc6f1dcb3fbabda4bc29a [file] [log] [blame]
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Trait for immutable matrix structs."><meta name="keywords" content="rust, rustlang, rust-lang, BaseMatrix"><title>BaseMatrix in rulinalg::matrix - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" href="../../normalize.css"><link rel="stylesheet" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" href="../../ayu.css" disabled><link rel="stylesheet" href="../../dark.css" disabled><link rel="stylesheet" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../main.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="sidebar-logo" href="../../rulinalg/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../rulinalg/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div></a><h2 class="location"><a href="#">BaseMatrix</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.as_ptr">as_ptr</a></li><li><a href="#tymethod.cols">cols</a></li><li><a href="#tymethod.row_stride">row_stride</a></li><li><a href="#tymethod.rows">rows</a></li></ul><h3><a href="#provided-methods">Provided Methods</a></h3><ul class="block"><li><a href="#method.as_slice">as_slice</a></li><li><a href="#method.col">col</a></li><li><a href="#method.col_iter">col_iter</a></li><li><a href="#method.col_unchecked">col_unchecked</a></li><li><a href="#method.diag">diag</a></li><li><a href="#method.diag_iter">diag_iter</a></li><li><a href="#method.elediv">elediv</a></li><li><a href="#method.elemul">elemul</a></li><li><a href="#method.get">get</a></li><li><a href="#method.get_unchecked">get_unchecked</a></li><li><a href="#method.hcat">hcat</a></li><li><a href="#method.into_matrix">into_matrix</a></li><li><a href="#method.is_diag">is_diag</a></li><li><a href="#method.is_empty">is_empty</a></li><li><a href="#method.iter">iter</a></li><li><a href="#method.max">max</a></li><li><a href="#method.metric">metric</a></li><li><a href="#method.min">min</a></li><li><a href="#method.norm">norm</a></li><li><a href="#method.row">row</a></li><li><a href="#method.row_iter">row_iter</a></li><li><a href="#method.row_unchecked">row_unchecked</a></li><li><a href="#method.select">select</a></li><li><a href="#method.select_cols">select_cols</a></li><li><a href="#method.select_rows">select_rows</a></li><li><a href="#method.solve_l_triangular">solve_l_triangular</a></li><li><a href="#method.solve_u_triangular">solve_u_triangular</a></li><li><a href="#method.split_at">split_at</a></li><li><a href="#method.sub_slice">sub_slice</a></li><li><a href="#method.sum">sum</a></li><li><a href="#method.sum_cols">sum_cols</a></li><li><a href="#method.sum_rows">sum_rows</a></li><li><a href="#method.transpose">transpose</a></li><li><a href="#method.vcat">vcat</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In rulinalg::matrix</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Trait <a href="../index.html">rulinalg</a>::<wbr><a href="index.html">matrix</a>::<wbr><a class="trait" href="#">BaseMatrix</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/rulinalg/matrix/base/mod.rs.html#44-1145">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><div class="item-decl"><pre class="rust trait"><code>pub trait BaseMatrix&lt;T&gt;: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> {
<details class="rustdoc-toggle type-contents-toggle"><summary class="hideme"><span>Show 38 methods</span></summary> fn <a href="#tymethod.rows" class="fnname">rows</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>;
<span class="item-spacer"></span> fn <a href="#tymethod.cols" class="fnname">cols</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>;
<span class="item-spacer"></span> fn <a href="#tymethod.row_stride" class="fnname">row_stride</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>;
<span class="item-spacer"></span> fn <a href="#tymethod.as_ptr" class="fnname">as_ptr</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.pointer.html">*const T</a>;
fn <a href="#method.is_empty" class="fnname">is_empty</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a> { ... }
<span class="item-spacer"></span> fn <a href="#method.as_slice" class="fnname">as_slice</a>(&amp;self) -&gt; <a class="struct" href="struct.MatrixSlice.html" title="struct rulinalg::matrix::MatrixSlice">MatrixSlice</a>&lt;'_, T&gt; { ... }
<span class="item-spacer"></span> unsafe fn <a href="#method.get_unchecked" class="fnname">get_unchecked</a>(&amp;self, index: [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">2</a>]) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>T { ... }
<span class="item-spacer"></span> fn <a href="#method.get" class="fnname">get</a>(&amp;self, index: [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">2</a>]) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>T&gt; { ... }
<span class="item-spacer"></span> fn <a href="#method.col" class="fnname">col</a>(&amp;self, index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="struct.Column.html" title="struct rulinalg::matrix::Column">Column</a>&lt;'_, T&gt; { ... }
<span class="item-spacer"></span> unsafe fn <a href="#method.col_unchecked" class="fnname">col_unchecked</a>(&amp;self, index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="struct.Column.html" title="struct rulinalg::matrix::Column">Column</a>&lt;'_, T&gt; { ... }
<span class="item-spacer"></span> fn <a href="#method.row" class="fnname">row</a>(&amp;self, index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="struct.Row.html" title="struct rulinalg::matrix::Row">Row</a>&lt;'_, T&gt; { ... }
<span class="item-spacer"></span> unsafe fn <a href="#method.row_unchecked" class="fnname">row_unchecked</a>(&amp;self, index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="struct.Row.html" title="struct rulinalg::matrix::Row">Row</a>&lt;'_, T&gt; { ... }
<span class="item-spacer"></span> fn <a href="#method.iter" class="fnname">iter</a>&lt;'a&gt;(&amp;self) -&gt; <a class="struct" href="struct.SliceIter.html" title="struct rulinalg::matrix::SliceIter">SliceIter</a>&lt;'a, T&gt;<span class="notable-traits"><span class="notable-traits-tooltip"><span class="notable-traits-tooltiptext"><span class="docblock"><span class="notable">Notable traits for <a class="struct" href="struct.SliceIter.html" title="struct rulinalg::matrix::SliceIter">SliceIter</a>&lt;'a, T&gt;</span><code class="content"><span class="where fmt-newline">impl&lt;'a, T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="struct.SliceIter.html" title="struct rulinalg::matrix::SliceIter">SliceIter</a>&lt;'a, T&gt;</span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="associatedtype">Item</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a </a>T;</span></code></span></span></span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T: 'a</span>,
{ ... }
<span class="item-spacer"></span> fn <a href="#method.col_iter" class="fnname">col_iter</a>(&amp;self) -&gt; <a class="struct" href="struct.Cols.html" title="struct rulinalg::matrix::Cols">Cols</a>&lt;'_, T&gt;<span class="notable-traits"><span class="notable-traits-tooltip"><span class="notable-traits-tooltiptext"><span class="docblock"><span class="notable">Notable traits for <a class="struct" href="struct.Cols.html" title="struct rulinalg::matrix::Cols">Cols</a>&lt;'a, T&gt;</span><code class="content"><span class="where fmt-newline">impl&lt;'a, T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="struct.Cols.html" title="struct rulinalg::matrix::Cols">Cols</a>&lt;'a, T&gt;</span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="associatedtype">Item</a> = <a class="struct" href="struct.Column.html" title="struct rulinalg::matrix::Column">Column</a>&lt;'a, T&gt;;</span></code></span></span></span></span> { ... }
<span class="item-spacer"></span> fn <a href="#method.row_iter" class="fnname">row_iter</a>(&amp;self) -&gt; <a class="struct" href="struct.Rows.html" title="struct rulinalg::matrix::Rows">Rows</a>&lt;'_, T&gt;<span class="notable-traits"><span class="notable-traits-tooltip"><span class="notable-traits-tooltiptext"><span class="docblock"><span class="notable">Notable traits for <a class="struct" href="struct.Rows.html" title="struct rulinalg::matrix::Rows">Rows</a>&lt;'a, T&gt;</span><code class="content"><span class="where fmt-newline">impl&lt;'a, T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="struct.Rows.html" title="struct rulinalg::matrix::Rows">Rows</a>&lt;'a, T&gt;</span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="associatedtype">Item</a> = <a class="struct" href="struct.Row.html" title="struct rulinalg::matrix::Row">Row</a>&lt;'a, T&gt;;</span></code></span></span></span></span> { ... }
<span class="item-spacer"></span> fn <a href="#method.diag_iter" class="fnname">diag_iter</a>(&amp;self, k: <a class="enum" href="enum.DiagOffset.html" title="enum rulinalg::matrix::DiagOffset">DiagOffset</a>) -&gt; <a class="struct" href="struct.Diagonal.html" title="struct rulinalg::matrix::Diagonal">Diagonal</a>&lt;'_, T, Self&gt;<span class="notable-traits"><span class="notable-traits-tooltip"><span class="notable-traits-tooltiptext"><span class="docblock"><span class="notable">Notable traits for <a class="struct" href="struct.Diagonal.html" title="struct rulinalg::matrix::Diagonal">Diagonal</a>&lt;'a, T, M&gt;</span><code class="content"><span class="where fmt-newline">impl&lt;'a, T, M:&nbsp;<a class="trait" href="trait.BaseMatrix.html" title="trait rulinalg::matrix::BaseMatrix">BaseMatrix</a>&lt;T&gt;&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="struct.Diagonal.html" title="struct rulinalg::matrix::Diagonal">Diagonal</a>&lt;'a, T, M&gt;</span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="associatedtype">Item</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a </a>T;</span></code></span></span></span></span> { ... }
<span class="item-spacer"></span> fn <a href="#method.sum_rows" class="fnname">sum_rows</a>(&amp;self) -&gt; <a class="struct" href="../vector/struct.Vector.html" title="struct rulinalg::vector::Vector">Vector</a>&lt;T&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> + <a class="trait" href="../../num_traits/identities/trait.Zero.html" title="trait num_traits::identities::Zero">Zero</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Add.html" title="trait core::ops::arith::Add">Add</a>&lt;T, Output = T&gt;</span>,
{ ... }
<span class="item-spacer"></span> fn <a href="#method.sum_cols" class="fnname">sum_cols</a>(&amp;self) -&gt; <a class="struct" href="../vector/struct.Vector.html" title="struct rulinalg::vector::Vector">Vector</a>&lt;T&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> + <a class="trait" href="../../num_traits/identities/trait.Zero.html" title="trait num_traits::identities::Zero">Zero</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Add.html" title="trait core::ops::arith::Add">Add</a>&lt;T, Output = T&gt;</span>,
{ ... }
<span class="item-spacer"></span> fn <a href="#method.norm" class="fnname">norm</a>&lt;N:&nbsp;<a class="trait" href="../norm/trait.MatrixNorm.html" title="trait rulinalg::norm::MatrixNorm">MatrixNorm</a>&lt;T, Self&gt;&gt;(&amp;self, norm: N) -&gt; T<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="../../num_traits/float/trait.Float.html" title="trait num_traits::float::Float">Float</a></span>,
{ ... }
<span class="item-spacer"></span> fn <a href="#method.metric" class="fnname">metric</a>&lt;'a, 'b, B, M&gt;(&amp;'a self, mat: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'b </a>B, metric: M) -&gt; T<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B: 'b + <a class="trait" href="trait.BaseMatrix.html" title="trait rulinalg::matrix::BaseMatrix">BaseMatrix</a>&lt;T&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;M: <a class="trait" href="../norm/trait.MatrixMetric.html" title="trait rulinalg::norm::MatrixMetric">MatrixMetric</a>&lt;'a, 'b, T, Self, B&gt;</span>,
{ ... }
<span class="item-spacer"></span> fn <a href="#method.sum" class="fnname">sum</a>(&amp;self) -&gt; T<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> + <a class="trait" href="../../num_traits/identities/trait.Zero.html" title="trait num_traits::identities::Zero">Zero</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Add.html" title="trait core::ops::arith::Add">Add</a>&lt;T, Output = T&gt;</span>,
{ ... }
<span class="item-spacer"></span> fn <a href="#method.min" class="fnname">min</a>(&amp;self, axis: <a class="enum" href="enum.Axes.html" title="enum rulinalg::matrix::Axes">Axes</a>) -&gt; <a class="struct" href="../vector/struct.Vector.html" title="struct rulinalg::vector::Vector">Vector</a>&lt;T&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a></span>,
{ ... }
<span class="item-spacer"></span> fn <a href="#method.max" class="fnname">max</a>(&amp;self, axis: <a class="enum" href="enum.Axes.html" title="enum rulinalg::matrix::Axes">Axes</a>) -&gt; <a class="struct" href="../vector/struct.Vector.html" title="struct rulinalg::vector::Vector">Vector</a>&lt;T&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a></span>,
{ ... }
<span class="item-spacer"></span> fn <a href="#method.into_matrix" class="fnname">into_matrix</a>(self) -&gt; <a class="struct" href="struct.Matrix.html" title="struct rulinalg::matrix::Matrix">Matrix</a>&lt;T&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a></span>,
{ ... }
<span class="item-spacer"></span> fn <a href="#method.select_rows" class="fnname">select_rows</a>&lt;'a, I&gt;(&amp;self, rows: I) -&gt; <a class="struct" href="struct.Matrix.html" title="struct rulinalg::matrix::Matrix">Matrix</a>&lt;T&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&lt;Item = &amp;'a <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/exact_size/trait.ExactSizeIterator.html" title="trait core::iter::traits::exact_size::ExactSizeIterator">ExactSizeIterator</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a></span>,
{ ... }
<span class="item-spacer"></span> fn <a href="#method.select_cols" class="fnname">select_cols</a>&lt;'a, I&gt;(&amp;self, cols: I) -&gt; <a class="struct" href="struct.Matrix.html" title="struct rulinalg::matrix::Matrix">Matrix</a>&lt;T&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&lt;Item = &amp;'a <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/exact_size/trait.ExactSizeIterator.html" title="trait core::iter::traits::exact_size::ExactSizeIterator">ExactSizeIterator</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a></span>,
{ ... }
<span class="item-spacer"></span> fn <a href="#method.elemul" class="fnname">elemul</a>(&amp;self, m: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>Self) -&gt; <a class="struct" href="struct.Matrix.html" title="struct rulinalg::matrix::Matrix">Matrix</a>&lt;T&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Mul.html" title="trait core::ops::arith::Mul">Mul</a>&lt;T, Output = T&gt;</span>,
{ ... }
<span class="item-spacer"></span> fn <a href="#method.elediv" class="fnname">elediv</a>(&amp;self, m: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>Self) -&gt; <a class="struct" href="struct.Matrix.html" title="struct rulinalg::matrix::Matrix">Matrix</a>&lt;T&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Div.html" title="trait core::ops::arith::Div">Div</a>&lt;T, Output = T&gt;</span>,
{ ... }
<span class="item-spacer"></span> fn <a href="#method.select" class="fnname">select</a>(&amp;self, rows: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>], cols: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>]) -&gt; <a class="struct" href="struct.Matrix.html" title="struct rulinalg::matrix::Matrix">Matrix</a>&lt;T&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a></span>,
{ ... }
<span class="item-spacer"></span> fn <a href="#method.hcat" class="fnname">hcat</a>&lt;S&gt;(&amp;self, m: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>S) -&gt; <a class="struct" href="struct.Matrix.html" title="struct rulinalg::matrix::Matrix">Matrix</a>&lt;T&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S: <a class="trait" href="trait.BaseMatrix.html" title="trait rulinalg::matrix::BaseMatrix">BaseMatrix</a>&lt;T&gt;</span>,
{ ... }
<span class="item-spacer"></span> fn <a href="#method.vcat" class="fnname">vcat</a>&lt;S&gt;(&amp;self, m: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>S) -&gt; <a class="struct" href="struct.Matrix.html" title="struct rulinalg::matrix::Matrix">Matrix</a>&lt;T&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S: <a class="trait" href="trait.BaseMatrix.html" title="trait rulinalg::matrix::BaseMatrix">BaseMatrix</a>&lt;T&gt;</span>,
{ ... }
<span class="item-spacer"></span> fn <a href="#method.diag" class="fnname">diag</a>(&amp;self) -&gt; <a class="struct" href="struct.Diagonal.html" title="struct rulinalg::matrix::Diagonal">Diagonal</a>&lt;'_, T, Self&gt;<span class="notable-traits"><span class="notable-traits-tooltip"><span class="notable-traits-tooltiptext"><span class="docblock"><span class="notable">Notable traits for <a class="struct" href="struct.Diagonal.html" title="struct rulinalg::matrix::Diagonal">Diagonal</a>&lt;'a, T, M&gt;</span><code class="content"><span class="where fmt-newline">impl&lt;'a, T, M:&nbsp;<a class="trait" href="trait.BaseMatrix.html" title="trait rulinalg::matrix::BaseMatrix">BaseMatrix</a>&lt;T&gt;&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="struct.Diagonal.html" title="struct rulinalg::matrix::Diagonal">Diagonal</a>&lt;'a, T, M&gt;</span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="associatedtype">Item</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a </a>T;</span></code></span></span></span></span> { ... }
<span class="item-spacer"></span> fn <a href="#method.transpose" class="fnname">transpose</a>(&amp;self) -&gt; <a class="struct" href="struct.Matrix.html" title="struct rulinalg::matrix::Matrix">Matrix</a>&lt;T&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a></span>,
{ ... }
<span class="item-spacer"></span> fn <a href="#method.is_diag" class="fnname">is_diag</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="../../num_traits/identities/trait.Zero.html" title="trait num_traits::identities::Zero">Zero</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a></span>,
{ ... }
<span class="item-spacer"></span> fn <a href="#method.solve_u_triangular" class="fnname">solve_u_triangular</a>(&amp;self, y: <a class="struct" href="../vector/struct.Vector.html" title="struct rulinalg::vector::Vector">Vector</a>&lt;T&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../vector/struct.Vector.html" title="struct rulinalg::vector::Vector">Vector</a>&lt;T&gt;, <a class="struct" href="../error/struct.Error.html" title="struct rulinalg::error::Error">Error</a>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> + <a class="trait" href="../../num_traits/float/trait.Float.html" title="trait num_traits::float::Float">Float</a></span>,
{ ... }
<span class="item-spacer"></span> fn <a href="#method.solve_l_triangular" class="fnname">solve_l_triangular</a>(&amp;self, y: <a class="struct" href="../vector/struct.Vector.html" title="struct rulinalg::vector::Vector">Vector</a>&lt;T&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../vector/struct.Vector.html" title="struct rulinalg::vector::Vector">Vector</a>&lt;T&gt;, <a class="struct" href="../error/struct.Error.html" title="struct rulinalg::error::Error">Error</a>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> + <a class="trait" href="../../num_traits/float/trait.Float.html" title="trait num_traits::float::Float">Float</a></span>,
{ ... }
<span class="item-spacer"></span> fn <a href="#method.split_at" class="fnname">split_at</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;self,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mid: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;axis: <a class="enum" href="enum.Axes.html" title="enum rulinalg::matrix::Axes">Axes</a><br>&nbsp;&nbsp;&nbsp;&nbsp;) -&gt; (<a class="struct" href="struct.MatrixSlice.html" title="struct rulinalg::matrix::MatrixSlice">MatrixSlice</a>&lt;'_, T&gt;, <a class="struct" href="struct.MatrixSlice.html" title="struct rulinalg::matrix::MatrixSlice">MatrixSlice</a>&lt;'_, T&gt;) { ... }
<span class="item-spacer"></span> fn <a href="#method.sub_slice" class="fnname">sub_slice</a>&lt;'a&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;self,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start: [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">2</a>],<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rows: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cols: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><br>&nbsp;&nbsp;&nbsp;&nbsp;) -&gt; <a class="struct" href="struct.MatrixSlice.html" title="struct rulinalg::matrix::MatrixSlice">MatrixSlice</a>&lt;'a, T&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="where">where<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T: 'a</span>,
{ ... }
</details>}</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait for immutable matrix structs.</p>
</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.rows" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#46">source</a><h4 class="code-header">fn <a href="#tymethod.rows" class="fnname">rows</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Rows in the matrix.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.cols" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#49">source</a><h4 class="code-header">fn <a href="#tymethod.cols" class="fnname">cols</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Columns in the matrix.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.row_stride" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#52">source</a><h4 class="code-header">fn <a href="#tymethod.row_stride" class="fnname">row_stride</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Row stride in the matrix.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="tymethod.as_ptr" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#60">source</a><h4 class="code-header">fn <a href="#tymethod.as_ptr" class="fnname">as_ptr</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.pointer.html">*const T</a></h4></section></summary><div class="docblock"><p>Top left index of the matrix.</p>
</div></details></div><h2 id="provided-methods" class="small-section-header">Provided Methods<a href="#provided-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_empty" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#55-57">source</a><h4 class="code-header">fn <a href="#method.is_empty" class="fnname">is_empty</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns true if the matrix contais no elements</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.as_slice" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#72-76">source</a><h4 class="code-header">fn <a href="#method.as_slice" class="fnname">as_slice</a>(&amp;self) -&gt; <a class="struct" href="struct.MatrixSlice.html" title="struct rulinalg::matrix::MatrixSlice">MatrixSlice</a>&lt;'_, T&gt;</h4></section></summary><div class="docblock"><p>Returns a <code>MatrixSlice</code> over the whole matrix.</p>
<h5 id="examples"><a href="#examples">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::{Matrix, BaseMatrix};
<span class="kw">let </span>a = Matrix::new(<span class="number">3</span>, <span class="number">3</span>, <span class="macro">vec!</span>[<span class="number">2.0</span>; <span class="number">9</span>]);
<span class="kw">let </span>b = a.as_slice();</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get_unchecked" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#79-81">source</a><h4 class="code-header">unsafe fn <a href="#method.get_unchecked" class="fnname">get_unchecked</a>(&amp;self, index: [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">2</a>]) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>T</h4></section></summary><div class="docblock"><p>Get a reference to an element in the matrix without bounds checking.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.get" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#101-110">source</a><h4 class="code-header">fn <a href="#method.get" class="fnname">get</a>(&amp;self, index: [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">2</a>]) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>T&gt;</h4></section></summary><div class="docblock"><p>Get a reference to an element in the matrix.</p>
<h5 id="examples-1"><a href="#examples-1">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::{Matrix, BaseMatrix};
<span class="kw">let </span>mat = <span class="macro">matrix!</span>[<span class="number">0</span>, <span class="number">1</span>;
<span class="number">3</span>, <span class="number">4</span>;
<span class="number">6</span>, <span class="number">7</span>];
<span class="macro">assert_eq!</span>(mat.get([<span class="number">0</span>, <span class="number">2</span>]), <span class="prelude-val">None</span>);
<span class="macro">assert_eq!</span>(mat.get([<span class="number">3</span>, <span class="number">0</span>]), <span class="prelude-val">None</span>);
<span class="macro">assert_eq!</span>( <span class="kw-2">*</span>mat.get([<span class="number">0</span>, <span class="number">0</span>]).unwrap(), <span class="number">0</span>)</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.col" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#133-139">source</a><h4 class="code-header">fn <a href="#method.col" class="fnname">col</a>(&amp;self, index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="struct.Column.html" title="struct rulinalg::matrix::Column">Column</a>&lt;'_, T&gt;</h4></section></summary><div class="docblock"><p>Returns the column of a matrix at the given index.
<code>None</code> if the index is out of bounds.</p>
<h5 id="examples-2"><a href="#examples-2">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::{Matrix, BaseMatrix};
<span class="kw">let </span>mat = <span class="macro">matrix!</span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>;
<span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>;
<span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>];
<span class="kw">let </span>col = mat.col(<span class="number">1</span>);
<span class="kw">let </span>expected = <span class="macro">matrix!</span>[<span class="number">1usize</span>; <span class="number">4</span>; <span class="number">7</span>];
<span class="macro">assert_matrix_eq!</span>(<span class="kw-2">*</span>col, expected);</code></pre></div>
<h5 id="panics"><a href="#panics">Panics</a></h5>
<p>Will panic if the column index is out of bounds.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.col_unchecked" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#158-161">source</a><h4 class="code-header">unsafe fn <a href="#method.col_unchecked" class="fnname">col_unchecked</a>(&amp;self, index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="struct.Column.html" title="struct rulinalg::matrix::Column">Column</a>&lt;'_, T&gt;</h4></section></summary><div class="docblock"><p>Returns the column of a matrix at the given
index without doing a bounds check.</p>
<h5 id="examples-3"><a href="#examples-3">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::{Matrix, BaseMatrix};
<span class="kw">let </span>mat = <span class="macro">matrix!</span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>;
<span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>;
<span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>];
<span class="kw">let </span>col = <span class="kw">unsafe </span>{ mat.col_unchecked(<span class="number">2</span>) };
<span class="kw">let </span>expected = <span class="macro">matrix!</span>[<span class="number">2usize</span>; <span class="number">5</span>; <span class="number">8</span>];
<span class="macro">assert_matrix_eq!</span>(<span class="kw-2">*</span>col, expected);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.row" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#183-189">source</a><h4 class="code-header">fn <a href="#method.row" class="fnname">row</a>(&amp;self, index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="struct.Row.html" title="struct rulinalg::matrix::Row">Row</a>&lt;'_, T&gt;</h4></section></summary><div class="docblock"><p>Returns the row of a matrix at the given index.</p>
<h5 id="examples-4"><a href="#examples-4">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::{Matrix, BaseMatrix};
<span class="kw">let </span>mat = <span class="macro">matrix!</span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>;
<span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>;
<span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>];
<span class="kw">let </span>row = mat.row(<span class="number">1</span>);
<span class="kw">let </span>expected = <span class="macro">matrix!</span>[<span class="number">3usize</span>, <span class="number">4</span>, <span class="number">5</span>];
<span class="macro">assert_matrix_eq!</span>(<span class="kw-2">*</span>row, expected);</code></pre></div>
<h5 id="panics-1"><a href="#panics-1">Panics</a></h5>
<p>Will panic if the row index is out of bounds.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.row_unchecked" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#207-210">source</a><h4 class="code-header">unsafe fn <a href="#method.row_unchecked" class="fnname">row_unchecked</a>(&amp;self, index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="struct.Row.html" title="struct rulinalg::matrix::Row">Row</a>&lt;'_, T&gt;</h4></section></summary><div class="docblock"><p>Returns the row of a matrix at the given index without doing unbounds checking</p>
<h5 id="examples-5"><a href="#examples-5">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::{Matrix, BaseMatrix};
<span class="kw">let </span>mat = <span class="macro">matrix!</span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>;
<span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>;
<span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>];
<span class="kw">let </span>row = <span class="kw">unsafe </span>{ mat.row_unchecked(<span class="number">2</span>) };
<span class="kw">let </span>expected = <span class="macro">matrix!</span>[<span class="number">6usize</span>, <span class="number">7</span>, <span class="number">8</span>];
<span class="macro">assert_matrix_eq!</span>(<span class="kw-2">*</span>row, expected);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.iter" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#229-241">source</a><h4 class="code-header">fn <a href="#method.iter" class="fnname">iter</a>&lt;'a&gt;(&amp;self) -&gt; <a class="struct" href="struct.SliceIter.html" title="struct rulinalg::matrix::SliceIter">SliceIter</a>&lt;'a, T&gt;<span class="notable-traits"><span class="notable-traits-tooltip"><span class="notable-traits-tooltiptext"><span class="docblock"><span class="notable">Notable traits for <a class="struct" href="struct.SliceIter.html" title="struct rulinalg::matrix::SliceIter">SliceIter</a>&lt;'a, T&gt;</span><code class="content"><span class="where fmt-newline">impl&lt;'a, T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="struct.SliceIter.html" title="struct rulinalg::matrix::SliceIter">SliceIter</a>&lt;'a, T&gt;</span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="associatedtype">Item</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a </a>T;</span></code></span></span></span></span><span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: 'a,</span></h4></section></summary><div class="docblock"><p>Returns an iterator over the matrix data.</p>
<h5 id="examples-6"><a href="#examples-6">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::{Matrix, BaseMatrix};
<span class="kw">let </span>mat = <span class="macro">matrix!</span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>;
<span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>;
<span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>];
<span class="kw">let </span>slice = mat.sub_slice([<span class="number">1</span>, <span class="number">1</span>], <span class="number">2</span>, <span class="number">2</span>);
<span class="kw">let </span>slice_data = slice.iter().map(|v| <span class="kw-2">*</span>v).collect::&lt;Vec&lt;usize&gt;&gt;();
<span class="macro">assert_eq!</span>(slice_data, <span class="macro">vec!</span>[<span class="number">4</span>, <span class="number">5</span>, <span class="number">7</span>, <span class="number">8</span>]);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.col_iter" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#262-271">source</a><h4 class="code-header">fn <a href="#method.col_iter" class="fnname">col_iter</a>(&amp;self) -&gt; <a class="struct" href="struct.Cols.html" title="struct rulinalg::matrix::Cols">Cols</a>&lt;'_, T&gt;<span class="notable-traits"><span class="notable-traits-tooltip"><span class="notable-traits-tooltiptext"><span class="docblock"><span class="notable">Notable traits for <a class="struct" href="struct.Cols.html" title="struct rulinalg::matrix::Cols">Cols</a>&lt;'a, T&gt;</span><code class="content"><span class="where fmt-newline">impl&lt;'a, T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="struct.Cols.html" title="struct rulinalg::matrix::Cols">Cols</a>&lt;'a, T&gt;</span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="associatedtype">Item</a> = <a class="struct" href="struct.Column.html" title="struct rulinalg::matrix::Column">Column</a>&lt;'a, T&gt;;</span></code></span></span></span></span></h4></section></summary><div class="docblock"><p>Iterate over the columns of the matrix.</p>
<h5 id="examples-7"><a href="#examples-7">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::{Matrix, BaseMatrix};
<span class="kw">let </span>a = <span class="macro">matrix!</span>[<span class="number">0</span>, <span class="number">1</span>;
<span class="number">2</span>, <span class="number">3</span>;
<span class="number">4</span>, <span class="number">5</span>];
<span class="kw">let </span><span class="kw-2">mut </span>iter = a.col_iter();
<span class="macro">assert_matrix_eq!</span>(<span class="kw-2">*</span>iter.next().unwrap(), <span class="macro">matrix!</span>[ <span class="number">0</span>; <span class="number">2</span>; <span class="number">4 </span>]);
<span class="macro">assert_matrix_eq!</span>(<span class="kw-2">*</span>iter.next().unwrap(), <span class="macro">matrix!</span>[ <span class="number">1</span>; <span class="number">3</span>; <span class="number">5 </span>]);
<span class="macro">assert!</span>(iter.next().is_none());</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.row_iter" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#292-301">source</a><h4 class="code-header">fn <a href="#method.row_iter" class="fnname">row_iter</a>(&amp;self) -&gt; <a class="struct" href="struct.Rows.html" title="struct rulinalg::matrix::Rows">Rows</a>&lt;'_, T&gt;<span class="notable-traits"><span class="notable-traits-tooltip"><span class="notable-traits-tooltiptext"><span class="docblock"><span class="notable">Notable traits for <a class="struct" href="struct.Rows.html" title="struct rulinalg::matrix::Rows">Rows</a>&lt;'a, T&gt;</span><code class="content"><span class="where fmt-newline">impl&lt;'a, T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="struct.Rows.html" title="struct rulinalg::matrix::Rows">Rows</a>&lt;'a, T&gt;</span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="associatedtype">Item</a> = <a class="struct" href="struct.Row.html" title="struct rulinalg::matrix::Row">Row</a>&lt;'a, T&gt;;</span></code></span></span></span></span></h4></section></summary><div class="docblock"><p>Iterate over the rows of the matrix.</p>
<h5 id="examples-8"><a href="#examples-8">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::{Matrix, BaseMatrix};
<span class="kw">let </span>a = <span class="macro">matrix!</span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>;
<span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>;
<span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>];
<span class="kw">let </span><span class="kw-2">mut </span>iter = a.row_iter();
<span class="macro">assert_matrix_eq!</span>(<span class="kw-2">*</span>iter.next().unwrap(), <span class="macro">matrix!</span>[ <span class="number">0</span>, <span class="number">1</span>, <span class="number">2 </span>]);
<span class="macro">assert_matrix_eq!</span>(<span class="kw-2">*</span>iter.next().unwrap(), <span class="macro">matrix!</span>[ <span class="number">3</span>, <span class="number">4</span>, <span class="number">5 </span>]);
<span class="macro">assert_matrix_eq!</span>(<span class="kw-2">*</span>iter.next().unwrap(), <span class="macro">matrix!</span>[ <span class="number">6</span>, <span class="number">7</span>, <span class="number">8 </span>]);
<span class="macro">assert!</span>(iter.next().is_none());</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.diag_iter" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#336-357">source</a><h4 class="code-header">fn <a href="#method.diag_iter" class="fnname">diag_iter</a>(&amp;self, k: <a class="enum" href="enum.DiagOffset.html" title="enum rulinalg::matrix::DiagOffset">DiagOffset</a>) -&gt; <a class="struct" href="struct.Diagonal.html" title="struct rulinalg::matrix::Diagonal">Diagonal</a>&lt;'_, T, Self&gt;<span class="notable-traits"><span class="notable-traits-tooltip"><span class="notable-traits-tooltiptext"><span class="docblock"><span class="notable">Notable traits for <a class="struct" href="struct.Diagonal.html" title="struct rulinalg::matrix::Diagonal">Diagonal</a>&lt;'a, T, M&gt;</span><code class="content"><span class="where fmt-newline">impl&lt;'a, T, M:&nbsp;<a class="trait" href="trait.BaseMatrix.html" title="trait rulinalg::matrix::BaseMatrix">BaseMatrix</a>&lt;T&gt;&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="struct.Diagonal.html" title="struct rulinalg::matrix::Diagonal">Diagonal</a>&lt;'a, T, M&gt;</span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="associatedtype">Item</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a </a>T;</span></code></span></span></span></span></h4></section></summary><div class="docblock"><p>Iterate over diagonal entries</p>
<h5 id="examples-9"><a href="#examples-9">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code>
<span class="kw">use </span>rulinalg::matrix::{DiagOffset, Matrix, BaseMatrix};
<span class="kw">let </span>a = <span class="macro">matrix!</span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>;
<span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>;
<span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>];
<span class="comment">// Print super diag [1, 5]
</span><span class="kw">for </span>d <span class="kw">in </span>a.diag_iter(DiagOffset::Above(<span class="number">1</span>)) {
<span class="macro">println!</span>(<span class="string">&quot;{}&quot;</span>, d);
}
<span class="comment">// Print sub diag [3, 7]
// Equivalent to `diag_iter(DiagOffset::Below(1))`
</span><span class="kw">for </span>d <span class="kw">in </span>a.diag_iter(DiagOffset::from(-<span class="number">1</span>)) {
<span class="macro">println!</span>(<span class="string">&quot;{}&quot;</span>, d);
}</code></pre></div>
<h5 id="panics-2"><a href="#panics-2">Panics</a></h5>
<p>If using an <code>Above</code> or <code>Below</code> offset which is
out-of-bounds this function will panic.</p>
<p>This function will never panic if the <code>Main</code> diagonal
offset is used.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.sum_rows" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#379-387">source</a><h4 class="code-header">fn <a href="#method.sum_rows" class="fnname">sum_rows</a>(&amp;self) -&gt; <a class="struct" href="../vector/struct.Vector.html" title="struct rulinalg::vector::Vector">Vector</a>&lt;T&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> + <a class="trait" href="../../num_traits/identities/trait.Zero.html" title="trait num_traits::identities::Zero">Zero</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Add.html" title="trait core::ops::arith::Add">Add</a>&lt;T, Output = T&gt;,</span></h4></section></summary><div class="docblock"><p>The sum of the rows of the matrix.</p>
<p>Returns a Vector equal to the sums of elements over the matrices rows.</p>
<p>Note that the resulting vector is identical to the sums of
elements along each column of the matrix.</p>
<h5 id="examples-10"><a href="#examples-10">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::{Matrix, BaseMatrix};
<span class="kw">let </span>a = <span class="macro">matrix!</span>[<span class="number">1.0</span>, <span class="number">2.0</span>;
<span class="number">3.0</span>, <span class="number">4.0</span>];
<span class="kw">let </span>c = a.sum_rows();
<span class="macro">assert_eq!</span>(c, <span class="macro">vector!</span>[<span class="number">4.0</span>, <span class="number">6.0</span>]);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.sum_cols" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#409-415">source</a><h4 class="code-header">fn <a href="#method.sum_cols" class="fnname">sum_cols</a>(&amp;self) -&gt; <a class="struct" href="../vector/struct.Vector.html" title="struct rulinalg::vector::Vector">Vector</a>&lt;T&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> + <a class="trait" href="../../num_traits/identities/trait.Zero.html" title="trait num_traits::identities::Zero">Zero</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Add.html" title="trait core::ops::arith::Add">Add</a>&lt;T, Output = T&gt;,</span></h4></section></summary><div class="docblock"><p>The sum of the columns of the matrix.</p>
<p>Returns a Vector equal to the sums of elements over the matrices columns.</p>
<p>Note that the resulting vector is identical to the sums of
elements along each row of the matrix.</p>
<h5 id="examples-11"><a href="#examples-11">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::{Matrix, BaseMatrix};
<span class="kw">let </span>a = <span class="macro">matrix!</span>[<span class="number">1.0</span>, <span class="number">2.0</span>;
<span class="number">3.0</span>, <span class="number">4.0</span>];
<span class="kw">let </span>c = a.sum_cols();
<span class="macro">assert_eq!</span>(c, <span class="macro">vector!</span>[<span class="number">3.0</span>, <span class="number">7.0</span>]);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.norm" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#432-436">source</a><h4 class="code-header">fn <a href="#method.norm" class="fnname">norm</a>&lt;N:&nbsp;<a class="trait" href="../norm/trait.MatrixNorm.html" title="trait rulinalg::norm::MatrixNorm">MatrixNorm</a>&lt;T, Self&gt;&gt;(&amp;self, norm: N) -&gt; T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="../../num_traits/float/trait.Float.html" title="trait num_traits::float::Float">Float</a>,</span></h4></section></summary><div class="docblock"><p>Compute given matrix norm for matrix.</p>
<h5 id="examples-12"><a href="#examples-12">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::BaseMatrix;
<span class="kw">use </span>rulinalg::norm::Euclidean;
<span class="kw">let </span>a = <span class="macro">matrix!</span>[<span class="number">3.0</span>, <span class="number">4.0</span>];
<span class="kw">let </span>c = a.norm(Euclidean);
<span class="macro">assert_eq!</span>(c, <span class="number">5.0</span>);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.metric" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#459-464">source</a><h4 class="code-header">fn <a href="#method.metric" class="fnname">metric</a>&lt;'a, 'b, B, M&gt;(&amp;'a self, mat: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'b </a>B, metric: M) -&gt; T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;B: 'b + <a class="trait" href="trait.BaseMatrix.html" title="trait rulinalg::matrix::BaseMatrix">BaseMatrix</a>&lt;T&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;M: <a class="trait" href="../norm/trait.MatrixMetric.html" title="trait rulinalg::norm::MatrixMetric">MatrixMetric</a>&lt;'a, 'b, T, Self, B&gt;,</span></h4></section></summary><div class="docblock"><p>Compute the metric distance between two matrices.</p>
<h5 id="examples-13"><a href="#examples-13">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::BaseMatrix;
<span class="kw">use </span>rulinalg::norm::Euclidean;
<span class="kw">let </span>a = <span class="macro">matrix!</span>[<span class="number">3.0</span>, <span class="number">4.0</span>;
<span class="number">1.0</span>, <span class="number">2.0</span>];
<span class="kw">let </span>b = <span class="macro">matrix!</span>[<span class="number">2.0</span>, <span class="number">5.0</span>;
<span class="number">0.0</span>, <span class="number">3.0</span>];
<span class="comment">// Compute the square root of the sum of
// elementwise squared-differences
</span><span class="kw">let </span>c = a.metric(<span class="kw-2">&amp;</span>b, Euclidean);
<span class="macro">assert_eq!</span>(c, <span class="number">2.0</span>);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.sum" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#481-487">source</a><h4 class="code-header">fn <a href="#method.sum" class="fnname">sum</a>(&amp;self) -&gt; T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> + <a class="trait" href="../../num_traits/identities/trait.Zero.html" title="trait num_traits::identities::Zero">Zero</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Add.html" title="trait core::ops::arith::Add">Add</a>&lt;T, Output = T&gt;,</span></h4></section></summary><div class="docblock"><p>The sum of all elements in the matrix</p>
<h5 id="examples-14"><a href="#examples-14">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::BaseMatrix;
<span class="kw">let </span>a = <span class="macro">matrix!</span>[<span class="number">1.0</span>, <span class="number">2.0</span>;
<span class="number">3.0</span>, <span class="number">4.0</span>];
<span class="kw">let </span>c = a.sum();
<span class="macro">assert_eq!</span>(c, <span class="number">10.0</span>);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.min" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#507-531">source</a><h4 class="code-header">fn <a href="#method.min" class="fnname">min</a>(&amp;self, axis: <a class="enum" href="enum.Axes.html" title="enum rulinalg::matrix::Axes">Axes</a>) -&gt; <a class="struct" href="../vector/struct.Vector.html" title="struct rulinalg::vector::Vector">Vector</a>&lt;T&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>,</span></h4></section></summary><div class="docblock"><p>The min of the specified axis of the matrix.</p>
<h5 id="examples-15"><a href="#examples-15">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::{Matrix, BaseMatrix, Axes};
<span class="kw">let </span>a = <span class="macro">matrix!</span>[<span class="number">1.0</span>, <span class="number">2.0</span>;
<span class="number">3.0</span>, <span class="number">4.0</span>];
<span class="kw">let </span>cmin = a.min(Axes::Col);
<span class="macro">assert_eq!</span>(cmin, <span class="macro">vector!</span>[<span class="number">1.0</span>, <span class="number">3.0</span>]);
<span class="kw">let </span>rmin = a.min(Axes::Row);
<span class="macro">assert_eq!</span>(rmin, <span class="macro">vector!</span>[<span class="number">1.0</span>, <span class="number">2.0</span>]);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#551-575">source</a><h4 class="code-header">fn <a href="#method.max" class="fnname">max</a>(&amp;self, axis: <a class="enum" href="enum.Axes.html" title="enum rulinalg::matrix::Axes">Axes</a>) -&gt; <a class="struct" href="../vector/struct.Vector.html" title="struct rulinalg::vector::Vector">Vector</a>&lt;T&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>,</span></h4></section></summary><div class="docblock"><p>The max of the specified axis of the matrix.</p>
<h5 id="examples-16"><a href="#examples-16">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::{BaseMatrix, Axes};
<span class="kw">let </span>a = <span class="macro">matrix!</span>[<span class="number">1.0</span>, <span class="number">2.0</span>;
<span class="number">3.0</span>, <span class="number">4.0</span>];
<span class="kw">let </span>cmax = a.max(Axes::Col);
<span class="macro">assert_eq!</span>(cmax, <span class="macro">vector!</span>[<span class="number">2.0</span>, <span class="number">4.0</span>]);
<span class="kw">let </span>rmax = a.max(Axes::Row);
<span class="macro">assert_eq!</span>(rmax, <span class="macro">vector!</span>[<span class="number">3.0</span>, <span class="number">4.0</span>]);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_matrix" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#578-582">source</a><h4 class="code-header">fn <a href="#method.into_matrix" class="fnname">into_matrix</a>(self) -&gt; <a class="struct" href="struct.Matrix.html" title="struct rulinalg::matrix::Matrix">Matrix</a>&lt;T&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a>,</span></h4></section></summary><div class="docblock"><p>Convert the matrix struct into a owned Matrix.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.select_rows" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#605-630">source</a><h4 class="code-header">fn <a href="#method.select_rows" class="fnname">select_rows</a>&lt;'a, I&gt;(&amp;self, rows: I) -&gt; <a class="struct" href="struct.Matrix.html" title="struct rulinalg::matrix::Matrix">Matrix</a>&lt;T&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&lt;Item = &amp;'a <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;I::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/exact_size/trait.ExactSizeIterator.html" title="trait core::iter::traits::exact_size::ExactSizeIterator">ExactSizeIterator</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h4></section></summary><div class="docblock"><p>Select rows from matrix</p>
<h5 id="examples-17"><a href="#examples-17">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::{Matrix, BaseMatrix};
<span class="kw">let </span>a = Matrix::&lt;f64&gt;::ones(<span class="number">3</span>,<span class="number">3</span>);
<span class="kw">let </span>b = <span class="kw-2">&amp;</span>a.select_rows(<span class="kw-2">&amp;</span>[<span class="number">2</span>]);
<span class="macro">assert_eq!</span>(b.rows(), <span class="number">1</span>);
<span class="macro">assert_eq!</span>(b.cols(), <span class="number">3</span>);
<span class="kw">let </span>c = <span class="kw-2">&amp;</span>a.select_rows(<span class="kw-2">&amp;</span>[<span class="number">1</span>,<span class="number">2</span>]);
<span class="macro">assert_eq!</span>(c.rows(), <span class="number">2</span>);
<span class="macro">assert_eq!</span>(c.cols(), <span class="number">3</span>);</code></pre></div>
<h5 id="panics-3"><a href="#panics-3">Panics</a></h5>
<ul>
<li>Panics if row indices exceed the matrix dimensions.</li>
</ul>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.select_cols" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#652-678">source</a><h4 class="code-header">fn <a href="#method.select_cols" class="fnname">select_cols</a>&lt;'a, I&gt;(&amp;self, cols: I) -&gt; <a class="struct" href="struct.Matrix.html" title="struct rulinalg::matrix::Matrix">Matrix</a>&lt;T&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&lt;Item = &amp;'a <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;I::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/exact_size/trait.ExactSizeIterator.html" title="trait core::iter::traits::exact_size::ExactSizeIterator">ExactSizeIterator</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h4></section></summary><div class="docblock"><p>Select columns from matrix</p>
<h5 id="examples-18"><a href="#examples-18">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::{Matrix, BaseMatrix};
<span class="kw">let </span>a = Matrix::&lt;f64&gt;::ones(<span class="number">3</span>,<span class="number">3</span>);
<span class="kw">let </span>b = <span class="kw-2">&amp;</span>a.select_cols(<span class="kw-2">&amp;</span>[<span class="number">2</span>]);
<span class="macro">assert_eq!</span>(b.rows(), <span class="number">3</span>);
<span class="macro">assert_eq!</span>(b.cols(), <span class="number">1</span>);
<span class="kw">let </span>c = <span class="kw-2">&amp;</span>a.select_cols(<span class="kw-2">&amp;</span>[<span class="number">1</span>,<span class="number">2</span>]);
<span class="macro">assert_eq!</span>(c.rows(), <span class="number">3</span>);
<span class="macro">assert_eq!</span>(c.cols(), <span class="number">2</span>);</code></pre></div>
<h5 id="panics-4"><a href="#panics-4">Panics</a></h5>
<ul>
<li>Panics if column indices exceed the matrix dimensions.</li>
</ul>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.elemul" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#702-713">source</a><h4 class="code-header">fn <a href="#method.elemul" class="fnname">elemul</a>(&amp;self, m: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>Self) -&gt; <a class="struct" href="struct.Matrix.html" title="struct rulinalg::matrix::Matrix">Matrix</a>&lt;T&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Mul.html" title="trait core::ops::arith::Mul">Mul</a>&lt;T, Output = T&gt;,</span></h4></section></summary><div class="docblock"><p>The elementwise product of two matrices.</p>
<h5 id="examples-19"><a href="#examples-19">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::{Matrix, BaseMatrix};
<span class="kw">let </span>a = <span class="macro">matrix!</span>[<span class="number">1.0</span>, <span class="number">2.0</span>;
<span class="number">3.0</span>, <span class="number">4.0</span>];
<span class="kw">let </span>b = <span class="macro">matrix!</span>[<span class="number">1.0</span>, <span class="number">2.0</span>;
<span class="number">3.0</span>, <span class="number">4.0</span>];
<span class="kw">let </span>c = <span class="kw-2">&amp;</span>a.elemul(<span class="kw-2">&amp;</span>b);
<span class="macro">assert_matrix_eq!</span>(c, <span class="kw-2">&amp;</span><span class="macro">matrix!</span>[<span class="number">1.0</span>, <span class="number">4.0</span>; <span class="number">9.0</span>, <span class="number">16.0</span>]);
}</code></pre></div>
<h5 id="panics-5"><a href="#panics-5">Panics</a></h5>
<ul>
<li>The matrices have different row counts.</li>
<li>The matrices have different column counts.</li>
</ul>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.elediv" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#737-748">source</a><h4 class="code-header">fn <a href="#method.elediv" class="fnname">elediv</a>(&amp;self, m: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>Self) -&gt; <a class="struct" href="struct.Matrix.html" title="struct rulinalg::matrix::Matrix">Matrix</a>&lt;T&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/arith/trait.Div.html" title="trait core::ops::arith::Div">Div</a>&lt;T, Output = T&gt;,</span></h4></section></summary><div class="docblock"><p>The elementwise division of two matrices.</p>
<h5 id="examples-20"><a href="#examples-20">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::{Matrix, BaseMatrix};
<span class="kw">let </span>a = <span class="macro">matrix!</span>[<span class="number">1.0</span>, <span class="number">2.0</span>;
<span class="number">3.0</span>, <span class="number">4.0</span>];
<span class="kw">let </span>b = <span class="macro">matrix!</span>[<span class="number">1.0</span>, <span class="number">2.0</span>;
<span class="number">3.0</span>, <span class="number">4.0</span>];
<span class="kw">let </span>c = <span class="kw-2">&amp;</span>a.elediv(<span class="kw-2">&amp;</span>b);
<span class="macro">assert_matrix_eq!</span>(c, <span class="kw-2">&amp;</span><span class="macro">matrix!</span>[<span class="number">1.0</span>, <span class="number">1.0</span>; <span class="number">1.0</span>, <span class="number">1.0</span>]);</code></pre></div>
<h5 id="panics-6"><a href="#panics-6">Panics</a></h5>
<ul>
<li>The matrices have different row counts.</li>
<li>The matrices have different column counts.</li>
</ul>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.select" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#771-800">source</a><h4 class="code-header">fn <a href="#method.select" class="fnname">select</a>(&amp;self, rows: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>], cols: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>]) -&gt; <a class="struct" href="struct.Matrix.html" title="struct rulinalg::matrix::Matrix">Matrix</a>&lt;T&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a>,</span></h4></section></summary><div class="docblock"><p>Select block matrix from matrix</p>
<h5 id="examples-21"><a href="#examples-21">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::{Matrix, BaseMatrix};
<span class="kw">let </span>a = Matrix::&lt;f64&gt;::identity(<span class="number">3</span>);
<span class="kw">let </span>b = <span class="kw-2">&amp;</span>a.select(<span class="kw-2">&amp;</span>[<span class="number">0</span>,<span class="number">1</span>], <span class="kw-2">&amp;</span>[<span class="number">1</span>,<span class="number">2</span>]);
<span class="comment">// We get the 2x2 block matrix in the upper right corner.
</span><span class="macro">assert_eq!</span>(b.rows(), <span class="number">2</span>);
<span class="macro">assert_eq!</span>(b.cols(), <span class="number">2</span>);
<span class="comment">// Prints [0,0, 1,0]
</span><span class="macro">println!</span>(<span class="string">&quot;{:?}&quot;</span>, b.data());</code></pre></div>
<h5 id="panics-7"><a href="#panics-7">Panics</a></h5>
<ul>
<li>Panics if row or column indices exceed the matrix dimensions.</li>
</ul>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.hcat" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#826-844">source</a><h4 class="code-header">fn <a href="#method.hcat" class="fnname">hcat</a>&lt;S&gt;(&amp;self, m: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>S) -&gt; <a class="struct" href="struct.Matrix.html" title="struct rulinalg::matrix::Matrix">Matrix</a>&lt;T&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;S: <a class="trait" href="trait.BaseMatrix.html" title="trait rulinalg::matrix::BaseMatrix">BaseMatrix</a>&lt;T&gt;,</span></h4></section></summary><div class="docblock"><p>Horizontally concatenates two matrices. With self on the left.</p>
<h5 id="examples-22"><a href="#examples-22">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::{Matrix, BaseMatrix};
<span class="kw">let </span>a = <span class="macro">matrix!</span>[<span class="number">1.0</span>, <span class="number">2.0</span>;
<span class="number">3.0</span>, <span class="number">4.0</span>;
<span class="number">5.0</span>, <span class="number">6.0</span>];
<span class="kw">let </span>b = <span class="macro">matrix!</span>[<span class="number">4.0</span>;
<span class="number">5.0</span>;
<span class="number">6.0</span>];
<span class="kw">let </span>c = <span class="kw-2">&amp;</span>a.hcat(<span class="kw-2">&amp;</span>b);
<span class="macro">assert_eq!</span>(c.cols(), a.cols() + b.cols());
<span class="macro">assert_eq!</span>(c[[<span class="number">1</span>, <span class="number">2</span>]], <span class="number">5.0</span>);</code></pre></div>
<h5 id="panics-8"><a href="#panics-8">Panics</a></h5>
<ul>
<li>Self and m have different row counts.</li>
</ul>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.vcat" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#867-885">source</a><h4 class="code-header">fn <a href="#method.vcat" class="fnname">vcat</a>&lt;S&gt;(&amp;self, m: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>S) -&gt; <a class="struct" href="struct.Matrix.html" title="struct rulinalg::matrix::Matrix">Matrix</a>&lt;T&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;S: <a class="trait" href="trait.BaseMatrix.html" title="trait rulinalg::matrix::BaseMatrix">BaseMatrix</a>&lt;T&gt;,</span></h4></section></summary><div class="docblock"><p>Vertically concatenates two matrices. With self on top.</p>
<h5 id="examples-23"><a href="#examples-23">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::{Matrix, BaseMatrix};
<span class="kw">let </span>a = <span class="macro">matrix!</span>[<span class="number">1.0</span>, <span class="number">2.0</span>, <span class="number">3.0</span>;
<span class="number">4.0</span>, <span class="number">5.0</span>, <span class="number">6.0</span>];
<span class="kw">let </span>b = <span class="macro">matrix!</span>[<span class="number">4.0</span>, <span class="number">5.0</span>, <span class="number">6.0</span>];;
<span class="kw">let </span>c = <span class="kw-2">&amp;</span>a.vcat(<span class="kw-2">&amp;</span>b);
<span class="macro">assert_eq!</span>(c.rows(), a.rows() + b.rows());
<span class="macro">assert_eq!</span>(c[[<span class="number">2</span>, <span class="number">2</span>]], <span class="number">6.0</span>);</code></pre></div>
<h5 id="panics-9"><a href="#panics-9">Panics</a></h5>
<ul>
<li>Self and m have different column counts.</li>
</ul>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.diag" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#909-911">source</a><h4 class="code-header">fn <a href="#method.diag" class="fnname">diag</a>(&amp;self) -&gt; <a class="struct" href="struct.Diagonal.html" title="struct rulinalg::matrix::Diagonal">Diagonal</a>&lt;'_, T, Self&gt;<span class="notable-traits"><span class="notable-traits-tooltip"><span class="notable-traits-tooltiptext"><span class="docblock"><span class="notable">Notable traits for <a class="struct" href="struct.Diagonal.html" title="struct rulinalg::matrix::Diagonal">Diagonal</a>&lt;'a, T, M&gt;</span><code class="content"><span class="where fmt-newline">impl&lt;'a, T, M:&nbsp;<a class="trait" href="trait.BaseMatrix.html" title="trait rulinalg::matrix::BaseMatrix">BaseMatrix</a>&lt;T&gt;&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a> for <a class="struct" href="struct.Diagonal.html" title="struct rulinalg::matrix::Diagonal">Diagonal</a>&lt;'a, T, M&gt;</span><span class="where fmt-newline"> type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item" class="associatedtype">Item</a> = <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a </a>T;</span></code></span></span></span></span></h4></section></summary><div class="docblock"><p>Extract the diagonal of the matrix</p>
<p>Examples</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code>
<span class="kw">use </span>rulinalg::matrix::BaseMatrix;
<span class="kw">let </span>a = <span class="macro">matrix!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>;
<span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>;
<span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>].diag().cloned().collect::&lt;Vec&lt;<span class="kw">_</span>&gt;&gt;();
<span class="kw">let </span>b = <span class="macro">matrix!</span>[<span class="number">1</span>, <span class="number">2</span>;
<span class="number">3</span>, <span class="number">4</span>;
<span class="number">5</span>, <span class="number">6</span>].diag().cloned().collect::&lt;Vec&lt;<span class="kw">_</span>&gt;&gt;();
<span class="macro">assert_eq!</span>(a, <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">5</span>, <span class="number">9</span>]);
<span class="macro">assert_eq!</span>(b, <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">4</span>]);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.transpose" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#930-949">source</a><h4 class="code-header">fn <a href="#method.transpose" class="fnname">transpose</a>(&amp;self) -&gt; <a class="struct" href="struct.Matrix.html" title="struct rulinalg::matrix::Matrix">Matrix</a>&lt;T&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a>,</span></h4></section></summary><div class="docblock"><p>Tranposes the given matrix</p>
<h5 id="examples-24"><a href="#examples-24">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::{Matrix, BaseMatrix};
<span class="kw">let </span>mat = <span class="macro">matrix!</span>[<span class="number">1.0</span>, <span class="number">2.0</span>, <span class="number">3.0</span>;
<span class="number">4.0</span>, <span class="number">5.0</span>, <span class="number">6.0</span>];
<span class="kw">let </span>expected = <span class="macro">matrix!</span>[<span class="number">1.0</span>, <span class="number">4.0</span>;
<span class="number">2.0</span>, <span class="number">5.0</span>;
<span class="number">3.0</span>, <span class="number">6.0</span>];
<span class="macro">assert_matrix_eq!</span>(mat.transpose(), expected);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.is_diag" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#972-982">source</a><h4 class="code-header">fn <a href="#method.is_diag" class="fnname">is_diag</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="../../num_traits/identities/trait.Zero.html" title="trait num_traits::identities::Zero">Zero</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>,</span></h4></section></summary><div class="docblock"><p>Checks if matrix is diagonal.</p>
<h5 id="examples-25"><a href="#examples-25">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::{Matrix, BaseMatrix};
<span class="kw">let </span>a = <span class="macro">matrix!</span>[<span class="number">1.0</span>, <span class="number">0.0</span>;
<span class="number">0.0</span>, <span class="number">1.0</span>];
<span class="kw">let </span>a_diag = a.is_diag();
<span class="macro">assert_eq!</span>(a_diag, <span class="bool-val">true</span>);
<span class="kw">let </span>b = <span class="macro">matrix!</span>[<span class="number">1.0</span>, <span class="number">0.0</span>;
<span class="number">1.0</span>, <span class="number">0.0</span>];
<span class="kw">let </span>b_diag = b.is_diag();
<span class="macro">assert_eq!</span>(b_diag, <span class="bool-val">false</span>);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.solve_u_triangular" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#1015-1024">source</a><h4 class="code-header">fn <a href="#method.solve_u_triangular" class="fnname">solve_u_triangular</a>(&amp;self, y: <a class="struct" href="../vector/struct.Vector.html" title="struct rulinalg::vector::Vector">Vector</a>&lt;T&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../vector/struct.Vector.html" title="struct rulinalg::vector::Vector">Vector</a>&lt;T&gt;, <a class="struct" href="../error/struct.Error.html" title="struct rulinalg::error::Error">Error</a>&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> + <a class="trait" href="../../num_traits/float/trait.Float.html" title="trait num_traits::float::Float">Float</a>,</span></h4></section></summary><div class="docblock"><p>Solves an upper triangular linear system.</p>
<p>Given a matrix <code>A</code> and a vector <code>b</code>, this function returns the
solution of the upper triangular system <code>Ux = b</code>, where <code>U</code> is
the upper triangular part of <code>A</code>.</p>
<h5 id="examples-26"><a href="#examples-26">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::BaseMatrix;
<span class="kw">use </span>std::f32;
<span class="kw">let </span>u = <span class="macro">matrix!</span>[<span class="number">1.0</span>, <span class="number">2.0</span>;
<span class="number">0.0</span>, <span class="number">1.0</span>];
<span class="kw">let </span>y = <span class="macro">vector!</span>[<span class="number">3.0</span>, <span class="number">1.0</span>];
<span class="kw">let </span>x = u.solve_u_triangular(y).expect(<span class="string">&quot;A solution should exist!&quot;</span>);
<span class="macro">assert!</span>((x[<span class="number">0</span>] - <span class="number">1.0</span>) &lt; f32::EPSILON);
<span class="macro">assert!</span>((x[<span class="number">1</span>] - <span class="number">1.0</span>) &lt; f32::EPSILON);</code></pre></div>
<h5 id="panics-10"><a href="#panics-10">Panics</a></h5>
<ul>
<li>Vector size and matrix column count are not equal.</li>
</ul>
<h5 id="failures"><a href="#failures">Failures</a></h5>
<ul>
<li>There is no valid solution to the system (matrix is singular).</li>
<li>The matrix is empty.</li>
</ul>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.solve_l_triangular" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#1058-1067">source</a><h4 class="code-header">fn <a href="#method.solve_l_triangular" class="fnname">solve_l_triangular</a>(&amp;self, y: <a class="struct" href="../vector/struct.Vector.html" title="struct rulinalg::vector::Vector">Vector</a>&lt;T&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../vector/struct.Vector.html" title="struct rulinalg::vector::Vector">Vector</a>&lt;T&gt;, <a class="struct" href="../error/struct.Error.html" title="struct rulinalg::error::Error">Error</a>&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> + <a class="trait" href="../../num_traits/float/trait.Float.html" title="trait num_traits::float::Float">Float</a>,</span></h4></section></summary><div class="docblock"><p>Solves a lower triangular linear system.</p>
<p>Given a matrix <code>A</code> and a vector <code>b</code>, this function returns the
solution of the lower triangular system <code>Lx = b</code>, where <code>L</code> is
the lower triangular part of <code>A</code>.</p>
<h5 id="examples-27"><a href="#examples-27">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::BaseMatrix;
<span class="kw">use </span>std::f32;
<span class="kw">let </span>l = <span class="macro">matrix!</span>[<span class="number">1.0</span>, <span class="number">0.0</span>;
<span class="number">2.0</span>, <span class="number">1.0</span>];
<span class="kw">let </span>y = <span class="macro">vector!</span>[<span class="number">1.0</span>, <span class="number">3.0</span>];
<span class="kw">let </span>x = l.solve_l_triangular(y).expect(<span class="string">&quot;A solution should exist!&quot;</span>);
<span class="macro">println!</span>(<span class="string">&quot;{:?}&quot;</span>, x);
<span class="macro">assert!</span>((x[<span class="number">0</span>] - <span class="number">1.0</span>) &lt; f32::EPSILON);
<span class="macro">assert!</span>((x[<span class="number">1</span>] - <span class="number">1.0</span>) &lt; f32::EPSILON);</code></pre></div>
<h5 id="panics-11"><a href="#panics-11">Panics</a></h5>
<ul>
<li>Vector size and matrix column count are not equal.</li>
</ul>
<h5 id="failures-1"><a href="#failures-1">Failures</a></h5>
<ul>
<li>There is no valid solution to the system (matrix is singular).</li>
<li>The matrix is empty.</li>
</ul>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.split_at" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#1079-1115">source</a><h4 class="code-header">fn <a href="#method.split_at" class="fnname">split_at</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self,<br>&nbsp;&nbsp;&nbsp;&nbsp;mid: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;axis: <a class="enum" href="enum.Axes.html" title="enum rulinalg::matrix::Axes">Axes</a><br>) -&gt; (<a class="struct" href="struct.MatrixSlice.html" title="struct rulinalg::matrix::MatrixSlice">MatrixSlice</a>&lt;'_, T&gt;, <a class="struct" href="struct.MatrixSlice.html" title="struct rulinalg::matrix::MatrixSlice">MatrixSlice</a>&lt;'_, T&gt;)</h4></section></summary><div class="docblock"><p>Split the matrix at the specified axis returning two <code>MatrixSlice</code>s.</p>
<h5 id="examples-28"><a href="#examples-28">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::{Axes, Matrix, BaseMatrix};
<span class="kw">let </span>a = Matrix::new(<span class="number">3</span>,<span class="number">3</span>, <span class="macro">vec!</span>[<span class="number">2.0</span>; <span class="number">9</span>]);
<span class="kw">let </span>(b,c) = a.split_at(<span class="number">1</span>, Axes::Row);</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.sub_slice" class="method has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/mod.rs.html#1128-1144">source</a><h4 class="code-header">fn <a href="#method.sub_slice" class="fnname">sub_slice</a>&lt;'a&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self,<br>&nbsp;&nbsp;&nbsp;&nbsp;start: [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">2</a>],<br>&nbsp;&nbsp;&nbsp;&nbsp;rows: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;cols: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><br>) -&gt; <a class="struct" href="struct.MatrixSlice.html" title="struct rulinalg::matrix::MatrixSlice">MatrixSlice</a>&lt;'a, T&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: 'a,</span></h4></section></summary><div class="docblock"><p>Produce a <code>MatrixSlice</code> from an existing matrix.</p>
<h5 id="examples-29"><a href="#examples-29">Examples</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>rulinalg::matrix::{Matrix, BaseMatrix, MatrixSlice};
<span class="kw">let </span>a = Matrix::new(<span class="number">3</span>,<span class="number">3</span>, (<span class="number">0</span>..<span class="number">9</span>).collect::&lt;Vec&lt;usize&gt;&gt;());
<span class="kw">let </span>slice = MatrixSlice::from_matrix(<span class="kw-2">&amp;</span>a, [<span class="number">1</span>,<span class="number">1</span>], <span class="number">2</span>, <span class="number">2</span>);
<span class="kw">let </span>new_slice = slice.sub_slice([<span class="number">0</span>,<span class="number">0</span>], <span class="number">1</span>, <span class="number">1</span>);</code></pre></div>
</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div id="implementors-list"><section id="impl-BaseMatrix%3CT%3E-for-Column%3C%27a%2C%20T%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/impl_base.rs.html#164-178">source</a><a href="#impl-BaseMatrix%3CT%3E-for-Column%3C%27a%2C%20T%3E" class="anchor"></a><h3 class="code-header">impl&lt;'a, T&gt; <a class="trait" href="trait.BaseMatrix.html" title="trait rulinalg::matrix::BaseMatrix">BaseMatrix</a>&lt;T&gt; for <a class="struct" href="struct.Column.html" title="struct rulinalg::matrix::Column">Column</a>&lt;'a, T&gt;</h3></section><section id="impl-BaseMatrix%3CT%3E-for-ColumnMut%3C%27a%2C%20T%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/impl_base.rs.html#180-194">source</a><a href="#impl-BaseMatrix%3CT%3E-for-ColumnMut%3C%27a%2C%20T%3E" class="anchor"></a><h3 class="code-header">impl&lt;'a, T&gt; <a class="trait" href="trait.BaseMatrix.html" title="trait rulinalg::matrix::BaseMatrix">BaseMatrix</a>&lt;T&gt; for <a class="struct" href="struct.ColumnMut.html" title="struct rulinalg::matrix::ColumnMut">ColumnMut</a>&lt;'a, T&gt;</h3></section><section id="impl-BaseMatrix%3CT%3E-for-MatrixSlice%3C%27a%2C%20T%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/impl_base.rs.html#81-94">source</a><a href="#impl-BaseMatrix%3CT%3E-for-MatrixSlice%3C%27a%2C%20T%3E" class="anchor"></a><h3 class="code-header">impl&lt;'a, T&gt; <a class="trait" href="trait.BaseMatrix.html" title="trait rulinalg::matrix::BaseMatrix">BaseMatrix</a>&lt;T&gt; for <a class="struct" href="struct.MatrixSlice.html" title="struct rulinalg::matrix::MatrixSlice">MatrixSlice</a>&lt;'a, T&gt;</h3></section><section id="impl-BaseMatrix%3CT%3E-for-MatrixSliceMut%3C%27a%2C%20T%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/impl_base.rs.html#96-109">source</a><a href="#impl-BaseMatrix%3CT%3E-for-MatrixSliceMut%3C%27a%2C%20T%3E" class="anchor"></a><h3 class="code-header">impl&lt;'a, T&gt; <a class="trait" href="trait.BaseMatrix.html" title="trait rulinalg::matrix::BaseMatrix">BaseMatrix</a>&lt;T&gt; for <a class="struct" href="struct.MatrixSliceMut.html" title="struct rulinalg::matrix::MatrixSliceMut">MatrixSliceMut</a>&lt;'a, T&gt;</h3></section><section id="impl-BaseMatrix%3CT%3E-for-Row%3C%27a%2C%20T%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/impl_base.rs.html#125-139">source</a><a href="#impl-BaseMatrix%3CT%3E-for-Row%3C%27a%2C%20T%3E" class="anchor"></a><h3 class="code-header">impl&lt;'a, T&gt; <a class="trait" href="trait.BaseMatrix.html" title="trait rulinalg::matrix::BaseMatrix">BaseMatrix</a>&lt;T&gt; for <a class="struct" href="struct.Row.html" title="struct rulinalg::matrix::Row">Row</a>&lt;'a, T&gt;</h3></section><section id="impl-BaseMatrix%3CT%3E-for-RowMut%3C%27a%2C%20T%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/impl_base.rs.html#141-155">source</a><a href="#impl-BaseMatrix%3CT%3E-for-RowMut%3C%27a%2C%20T%3E" class="anchor"></a><h3 class="code-header">impl&lt;'a, T&gt; <a class="trait" href="trait.BaseMatrix.html" title="trait rulinalg::matrix::BaseMatrix">BaseMatrix</a>&lt;T&gt; for <a class="struct" href="struct.RowMut.html" title="struct rulinalg::matrix::RowMut">RowMut</a>&lt;'a, T&gt;</h3></section><section id="impl-BaseMatrix%3CT%3E-for-Matrix%3CT%3E" class="impl has-srclink"><a class="srclink rightside" href="../../src/rulinalg/matrix/base/impl_base.rs.html#10-79">source</a><a href="#impl-BaseMatrix%3CT%3E-for-Matrix%3CT%3E" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="trait.BaseMatrix.html" title="trait rulinalg::matrix::BaseMatrix">BaseMatrix</a>&lt;T&gt; for <a class="struct" href="struct.Matrix.html" title="struct rulinalg::matrix::Matrix">Matrix</a>&lt;T&gt;</h3></section></div><script src="../../implementors/rulinalg/matrix/base/trait.BaseMatrix.js" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="rulinalg" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.66.0-nightly (5c8bff74b 2022-10-21)" ></div></body></html>