Documentation for fb5e00f5fb

This commit is contained in:
github-actions
2020-10-31 06:41:30 +00:00
parent 692390090b
commit 407e656e97
219 changed files with 6898 additions and 5393 deletions

View File

@@ -0,0 +1,595 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.20"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Algorithms_in_C++: linear_algebra/gram_schmidt.cpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<link href="../../navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../resize.js"></script>
<script type="text/javascript" src="../../navtreedata.js"></script>
<script type="text/javascript" src="../../navtree.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/MathJax.js?config=TeX-MML-AM_CHTML/MathJax.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Algorithms_in_C++
&#160;<span id="projectnumber">1.0.0</span>
</div>
<div id="projectbrief">Set of algorithms implemented in C++.</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.20 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('../../',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('d5/d33/gram__schmidt_8cpp.html','../../'); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">gram_schmidt.cpp File Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><a href="https://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process">Gram Schmidt Orthogonalisation Process</a>
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;iostream&gt;</code><br />
<code>#include &lt;cassert&gt;</code><br />
<code>#include &lt;cmath&gt;</code><br />
<code>#include &lt;array&gt;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for gram_schmidt.cpp:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d8/d96/gram__schmidt_8cpp__incl.svg" width="331" height="127"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:d3/d78/namespacelinear__algebra"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d3/d78/namespacelinear__algebra.html">linear_algebra</a></td></tr>
<tr class="memdesc:d3/d78/namespacelinear__algebra"><td class="mdescLeft">&#160;</td><td class="mdescRight">Linear Algebra algorithms. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:d4/d0f/namespacegram__schmidt"><td class="memItemLeft" align="right" valign="top"> &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/d0f/namespacegram__schmidt.html">gram_schmidt</a></td></tr>
<tr class="memdesc:d4/d0f/namespacegram__schmidt"><td class="mdescLeft">&#160;</td><td class="mdescRight">Functions for <a href="https://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process">Gram Schmidt Orthogonalisation Process</a> <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:aed4d308f46ca1d91e348ca260ec1d2fb"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d33/gram__schmidt_8cpp.html#aed4d308f46ca1d91e348ca260ec1d2fb">linear_algebra::gram_schmidt::dot_product</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; double, 10 &gt; &amp;x, const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; double, 10 &gt; &amp;y, const int &amp;c)</td></tr>
<tr class="separator:aed4d308f46ca1d91e348ca260ec1d2fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a46e459aff5eafffb5ad9ceb129b4d274"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d33/gram__schmidt_8cpp.html#a46e459aff5eafffb5ad9ceb129b4d274">linear_algebra::gram_schmidt::projection</a> (const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; double, 10 &gt; &amp;x, const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; double, 10 &gt; &amp;y, const int &amp;c)</td></tr>
<tr class="separator:a46e459aff5eafffb5ad9ceb129b4d274"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab6b70f9680752e9fe2ac4e2cce158c40"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d33/gram__schmidt_8cpp.html#ab6b70f9680752e9fe2ac4e2cce158c40">linear_algebra::gram_schmidt::display</a> (const int &amp;r, const int &amp;c, const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; double, 10 &gt;, 20 &gt; &amp;B)</td></tr>
<tr class="separator:ab6b70f9680752e9fe2ac4e2cce158c40"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa31ca28f60c880802462335eedc5d91f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d33/gram__schmidt_8cpp.html#aa31ca28f60c880802462335eedc5d91f">linear_algebra::gram_schmidt::gram_schmidt</a> (int r, const int &amp;c, const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; double, 10 &gt;, 20 &gt; &amp;A, <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; double, 10 &gt;, 20 &gt; B)</td></tr>
<tr class="separator:aa31ca28f60c880802462335eedc5d91f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8dca7b867074164d5f45b0f3851269d"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d33/gram__schmidt_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a> ()</td></tr>
<tr class="separator:aa8dca7b867074164d5f45b0f3851269d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d33/gram__schmidt_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a> ()</td></tr>
<tr class="memdesc:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Main Function. <a href="../../d5/d33/gram__schmidt_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">More...</a><br /></td></tr>
<tr class="separator:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a href="https://en.wikipedia.org/wiki/Gram%E2%80%93Schmidt_process">Gram Schmidt Orthogonalisation Process</a> </p>
<p><br />
</p>
<p>Takes the input of Linearly Independent Vectors, returns vectors orthogonal to each other.</p>
<h3><a class="anchor" id="autotoc_md61"></a>
Algorithm</h3>
<p>Take the first vector of given LI vectors as first vector of Orthogonal vectors. Take projection of second input vector on the first vector of Orthogonal vector and subtract it from the 2nd LI vector. Take projection of third vector on the second vector of Othogonal vectors and subtract it from the 3rd LI vector. Keep repeating the above process until all the vectors in the given input array are exhausted.</p>
<p>For Example: In R2, Input LI Vectors={(3,1),(2,2)} then Orthogonal Vectors= {(3, 1),(-0.4, 1.2)}</p>
<p>Have defined maximum dimension of vectors to be 10 and number of vectors taken is 20. Please do not give linearly dependent vectors</p>
<dl class="section author"><dt>Author</dt><dd><a href="https://github.com/Akanksha-Gupta920">Akanksha Gupta</a> </dd></dl>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="ab6b70f9680752e9fe2ac4e2cce158c40"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab6b70f9680752e9fe2ac4e2cce158c40">&#9670;&nbsp;</a></span>display()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void linear_algebra::gram_schmidt::display </td>
<td>(</td>
<td class="paramtype">const int &amp;&#160;</td>
<td class="paramname"><em>r</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int &amp;&#160;</td>
<td class="paramname"><em>c</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; double, 10 &gt;, 20 &gt; &amp;&#160;</td>
<td class="paramname"><em>B</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Function to print the orthogonalised vector</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">r</td><td>number of vectors </td></tr>
<tr><td class="paramname">c</td><td>dimenaion of vectors </td></tr>
<tr><td class="paramname">B</td><td>stores orthogonalised vectors</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<div class="fragment"><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; {</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; r; ++i) {</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Vector &quot;</span> &lt;&lt; i + 1 &lt;&lt; <span class="stringliteral">&quot;: &quot;</span>;</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; c; ++j) {</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; B[i][j] &lt;&lt; <span class="stringliteral">&quot; &quot;</span>;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; }</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="charliteral">&#39;\n&#39;</span>;</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; }</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="aed4d308f46ca1d91e348ca260ec1d2fb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aed4d308f46ca1d91e348ca260ec1d2fb">&#9670;&nbsp;</a></span>dot_product()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double linear_algebra::gram_schmidt::dot_product </td>
<td>(</td>
<td class="paramtype">const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; double, 10 &gt; &amp;&#160;</td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; double, 10 &gt; &amp;&#160;</td>
<td class="paramname"><em>y</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int &amp;&#160;</td>
<td class="paramname"><em>c</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Dot product function. Takes 2 vectors along with their dimension as input and returns the dot product. </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">x</td><td>vector 1 </td></tr>
<tr><td class="paramname">y</td><td>vector 2 </td></tr>
<tr><td class="paramname">c</td><td>dimension of the vectors</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>sum </dd></dl>
<div class="fragment"><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; {</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; <span class="keywordtype">double</span> <a class="code" href="../../d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44">sum</a> = 0;</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; c; ++i) {</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <a class="code" href="../../d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44">sum</a> += x[i] * y[i];</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; }</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keywordflow">return</span> <a class="code" href="../../d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44">sum</a>;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;}</div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d5/d33/gram__schmidt_8cpp_aed4d308f46ca1d91e348ca260ec1d2fb_cgraph.svg" width="366" height="76"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
</div>
<a id="aa31ca28f60c880802462335eedc5d91f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa31ca28f60c880802462335eedc5d91f">&#9670;&nbsp;</a></span>gram_schmidt()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void linear_algebra::gram_schmidt::gram_schmidt </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>r</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int &amp;&#160;</td>
<td class="paramname"><em>c</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; double, 10 &gt;, 20 &gt; &amp;&#160;</td>
<td class="paramname"><em>A</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; double, 10 &gt;, 20 &gt;&#160;</td>
<td class="paramname"><em>B</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Function for the process of Gram Schimdt Process </p><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">r</td><td>number of vectors </td></tr>
<tr><td class="paramname">c</td><td>dimension of vectors </td></tr>
<tr><td class="paramname">A</td><td>stores input of given LI vectors </td></tr>
<tr><td class="paramname">B</td><td>stores orthogonalised vectors</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<p>we check whether appropriate dimensions are given or not.</p>
<p>First vector is copied as it is.</p>
<p>array to store projections</p>
<p>First initialised to zero</p>
<p>to store previous projected array</p>
<p>to store the factor by which the previous array will change</p>
<p>projected array created</p>
<p>we take the projection with all the previous vector and add them.</p>
<p>subtract total projection vector from the input vector</p>
<div class="fragment"><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; {</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordflow">if</span> (c &lt; r) { <span class="comment">/// we check whether appropriate dimensions are given or not.</span></div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160;<span class="comment"></span> <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a></div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; &lt;&lt; <span class="stringliteral">&quot;Dimension of vector is less than number of vector, hence \n first &quot;</span></div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; &lt;&lt; c &lt;&lt; <span class="stringliteral">&quot; vectors are orthogonalised\n&quot;</span>;</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; r = c;</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; }</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; </div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordtype">int</span> k = 1;</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; </div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordflow">while</span> (k &lt;= r) {</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordflow">if</span> (k == 1) {</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; c; j++) B[0][j] = A[0][j]; <span class="comment">///First vector is copied as it is.</span></div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;<span class="comment"></span> }</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; </div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array&lt;double, 10&gt;</a> all_projection{}; <span class="comment">///array to store projections</span></div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;<span class="comment"></span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; c; ++i) {</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; all_projection[i] = 0; <span class="comment">///First initialised to zero</span></div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160;<span class="comment"></span> }</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; </div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="keywordtype">int</span> l = 1;</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; <span class="keywordflow">while</span> (l &lt; k) {</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array&lt;double, 10&gt;</a> temp{}; <span class="comment">///to store previous projected array</span></div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160;<span class="comment"></span> <span class="keywordtype">double</span> factor; <span class="comment">///to store the factor by which the previous array will change </span></div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;<span class="comment"></span> factor = <a class="code" href="../../d5/d33/gram__schmidt_8cpp.html#a46e459aff5eafffb5ad9ceb129b4d274">projection</a>(A[k - 1], B[l - 1], c);</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; c; ++i)</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; temp[i] = B[l - 1][i] * factor; <span class="comment">///projected array created</span></div>
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160;<span class="comment"></span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; c; ++j) {</div>
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; all_projection[j] = all_projection[j] + temp[j]; <span class="comment">///we take the projection with all the previous vector and add them.</span></div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;<span class="comment"></span> }</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; l++;</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; }</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; c; ++i) {</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; B[k - 1][i] = A[k - 1][i] - all_projection[i]; <span class="comment">///subtract total projection vector from the input vector</span></div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160;<span class="comment"></span> }</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; }</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; k++;</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; display(r, c, B); <span class="comment">//for displaying orthogoanlised vectors</span></div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160;}</div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="../../d5/d33/gram__schmidt_8cpp_aa31ca28f60c880802462335eedc5d91f_cgraph.svg" width="100%" height="300"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
</div>
</div>
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae66f6b31b5ad750f1fe042a706a4e3d4">&#9670;&nbsp;</a></span>main()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int main </td>
<td>(</td>
<td class="paramtype">void&#160;</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Main Function. </p>
<dl class="section return"><dt>Returns</dt><dd>0 on exit </dd></dl>
<p>a 2-D array for storing all vectors</p>
<p>a 2-D array for storing orthogonalised vectors</p>
<p>storing vectors in array A</p>
<p>Input of vectors is taken</p>
<p>To check whether vectors are orthogonal or not</p>
<p>take make the process numerically stable, upper bound for the dot product take 0.1</p>
<div class="fragment"><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; {</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; <span class="keywordtype">int</span> r=0, c=0;</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; <a class="code" href="../../d5/d33/gram__schmidt_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a>(); <span class="comment">// perform self tests</span></div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Enter the dimension of your vectors\n&quot;</span>;</div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_istream.html">std::cin</a> &gt;&gt; c;</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Enter the number of vectors you will enter\n&quot;</span>;</div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_istream.html">std::cin</a> &gt;&gt; r;</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; </div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array&lt;std::array&lt;double, 10&gt;</a>, 20&gt;</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; A{}; <span class="comment">///a 2-D array for storing all vectors</span></div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160;<span class="comment"></span> <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array&lt;std::array&lt;double, 10&gt;</a>, 20&gt; B = {</div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; {0}}; <span class="comment">/// a 2-D array for storing orthogonalised vectors</span></div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160;<span class="comment"></span><span class="comment"> /// storing vectors in array A</span></div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160;<span class="comment"></span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; r; ++i) {</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Enter vector &quot;</span> &lt;&lt; i + 1 &lt;&lt;<span class="charliteral">&#39;\n&#39;</span>; <span class="comment">///Input of vectors is taken</span></div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160;<span class="comment"></span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; c; ++j) {</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Value &quot;</span> &lt;&lt; j + 1 &lt;&lt; <span class="stringliteral">&quot;th of vector: &quot;</span>;</div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_istream.html">std::cin</a> &gt;&gt; A[i][j];</div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; }</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt;<span class="charliteral">&#39;\n&#39;</span>;</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; }</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; </div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; <a class="code" href="../../d5/d33/gram__schmidt_8cpp.html#aa31ca28f60c880802462335eedc5d91f">linear_algebra::gram_schmidt::gram_schmidt</a>(r, c, A, B);</div>
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160; </div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordtype">double</span> dot = 0;</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; <span class="keywordtype">int</span> flag = 1; <span class="comment">///To check whether vectors are orthogonal or not</span></div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160;<span class="comment"></span> <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; r - 1; ++i) {</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = i + 1; j &lt; r; ++j) {</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; dot = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/fabs.html">fabs</a>(linear_algebra::gram_schmidt::dot_product(B[i], B[j], c));</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; <span class="keywordflow">if</span> (dot &gt; 0.1) <span class="comment">/// take make the process numerically stable, upper bound for the dot product take 0.1</span></div>
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;<span class="comment"></span> {</div>
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>&#160; flag = 0;</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; }</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; }</div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; }</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">if</span> (flag == 0) <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Vectors are linearly dependent\n&quot;</span>; </div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; <span class="keywordflow">return</span> 0;</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;}</div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d5/d33/gram__schmidt_8cpp_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.svg" width="154" height="38"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
</div>
<a id="a46e459aff5eafffb5ad9ceb129b4d274"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a46e459aff5eafffb5ad9ceb129b4d274">&#9670;&nbsp;</a></span>projection()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">double linear_algebra::gram_schmidt::projection </td>
<td>(</td>
<td class="paramtype">const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; double, 10 &gt; &amp;&#160;</td>
<td class="paramname"><em>x</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="elRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a>&lt; double, 10 &gt; &amp;&#160;</td>
<td class="paramname"><em>y</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const int &amp;&#160;</td>
<td class="paramname"><em>c</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Projection Function Takes input of 2 vectors along with their dimension and evaluates their projection in temp</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">x</td><td>Vector 1 </td></tr>
<tr><td class="paramname">y</td><td>Vector 2 </td></tr>
<tr><td class="paramname">c</td><td>dimension of each vector</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>factor </dd></dl>
<p>The dot product of two vectors is taken</p>
<p>The norm of the second vector is taken.</p>
<p>multiply that factor with every element in a 3rd vector, whose initial values are same as the 2nd vector.</p>
<div class="fragment"><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; {</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keywordtype">double</span> dot = <a class="code" href="../../d5/d33/gram__schmidt_8cpp.html#aed4d308f46ca1d91e348ca260ec1d2fb">dot_product</a>(x, y, c); <span class="comment">///The dot product of two vectors is taken</span></div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="comment"></span> <span class="keywordtype">double</span> anorm = <a class="code" href="../../d5/d33/gram__schmidt_8cpp.html#aed4d308f46ca1d91e348ca260ec1d2fb">dot_product</a>(y, y, c); <span class="comment">///The norm of the second vector is taken.</span></div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;<span class="comment"></span> <span class="keywordtype">double</span> factor = dot / anorm; <span class="comment">///multiply that factor with every element in a 3rd vector, whose initial values are same as the 2nd vector.</span></div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment"></span> <span class="keywordflow">return</span> factor;</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;}</div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d5/d33/gram__schmidt_8cpp_a46e459aff5eafffb5ad9ceb129b4d274_cgraph.svg" width="552" height="76"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
</div>
</div>
</div>
<a id="aa8dca7b867074164d5f45b0f3851269d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8dca7b867074164d5f45b0f3851269d">&#9670;&nbsp;</a></span>test()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void test </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Test Function. Process has been tested for 3 Sample Inputs </p><dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<div class="fragment"><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; {</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array&lt;std::array&lt;double, 10&gt;</a>, 20&gt; a1 = {</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; {{1, 0, 1, 0}, {1, 1, 1, 1}, {0, 1, 2, 1}}};</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array&lt;std::array&lt;double, 10&gt;</a>, 20&gt; b1 = {{0}};</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; <span class="keywordtype">double</span> dot1 = 0;</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <a class="code" href="../../d5/d33/gram__schmidt_8cpp.html#aa31ca28f60c880802462335eedc5d91f">linear_algebra::gram_schmidt::gram_schmidt</a>(3, 4, a1, b1);</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; <span class="keywordtype">int</span> flag = 1;</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 2; ++i)</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = i + 1; j &lt; 3; ++j) {</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; dot1 = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/fabs.html">fabs</a>(linear_algebra::gram_schmidt::dot_product(b1[i], b1[j], 4));</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; <span class="keywordflow">if</span> (dot1 &gt; 0.1) {</div>
<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160; flag = 0;</div>
<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; }</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; }</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="keywordflow">if</span> (flag == 0) <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Vectors are linearly dependent\n&quot;</span>;</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; assert(flag == 1);</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Passed Test Case 1\n &quot;</span>;</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; </div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array&lt;std::array&lt;double, 10&gt;</a>, 20&gt; a2 = {{{3, 1}, {2, 2}}};</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array&lt;std::array&lt;double, 10&gt;</a>, 20&gt; b2 = {{0}};</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <span class="keywordtype">double</span> dot2 = 0;</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <a class="code" href="../../d5/d33/gram__schmidt_8cpp.html#aa31ca28f60c880802462335eedc5d91f">linear_algebra::gram_schmidt::gram_schmidt</a>(2, 2, a2, b2);</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; flag = 1;</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 1; ++i)</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = i + 1; j &lt; 2; ++j) {</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; dot2 = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/fabs.html">fabs</a>(linear_algebra::gram_schmidt::dot_product(b2[i], b2[j], 2));</div>
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">if</span> (dot2 &gt; 0.1) {</div>
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; flag = 0;</div>
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160; }</div>
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; }</div>
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">if</span> (flag == 0) <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Vectors are linearly dependent\n&quot;</span>;</div>
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160; assert(flag == 1);</div>
<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Passed Test Case 2\n&quot;</span>;</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; </div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array&lt;std::array&lt;double, 10&gt;</a>, 20&gt; a3 = {{{1, 2, 2}, {-4, 3, 2}}};</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/container/array.html">std::array&lt;std::array&lt;double, 10&gt;</a>, 20&gt; b3 = {{0}};</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordtype">double</span> dot3 = 0;</div>
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <a class="code" href="../../d5/d33/gram__schmidt_8cpp.html#aa31ca28f60c880802462335eedc5d91f">linear_algebra::gram_schmidt::gram_schmidt</a>(2, 3, a3, b3);</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; flag = 1;</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i &lt; 1; ++i)</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = i + 1; j &lt; 2; ++j) {</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; dot3 = <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/numeric/math/fabs.html">fabs</a>(linear_algebra::gram_schmidt::dot_product(b3[i], b3[j], 3));</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">if</span> (dot3 &gt; 0.1) {</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; flag = 0;</div>
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>&#160; }</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; }</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <span class="keywordflow">if</span> (flag == 0) <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Vectors are linearly dependent\n&quot;</span> ;</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; assert(flag == 1);</div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <a class="codeRef" target="_blank" href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a> &lt;&lt; <span class="stringliteral">&quot;Passed Test Case 3\n&quot;</span>;</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<div class="ttc" id="agram__schmidt_8cpp_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="../../d5/d33/gram__schmidt_8cpp.html#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdef"><b>Definition:</b> gram_schmidt.cpp:155</div></div>
<div class="ttc" id="afabs_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/numeric/math/fabs.html">std::fabs</a></div><div class="ttdeci">T fabs(T... args)</div></div>
<div class="ttc" id="agram__schmidt_8cpp_html_aed4d308f46ca1d91e348ca260ec1d2fb"><div class="ttname"><a href="../../d5/d33/gram__schmidt_8cpp.html#aed4d308f46ca1d91e348ca260ec1d2fb">linear_algebra::gram_schmidt::dot_product</a></div><div class="ttdeci">double dot_product(const std::array&lt; double, 10 &gt; &amp;x, const std::array&lt; double, 10 &gt; &amp;y, const int &amp;c)</div><div class="ttdef"><b>Definition:</b> gram_schmidt.cpp:53</div></div>
<div class="ttc" id="agram__schmidt_8cpp_html_a46e459aff5eafffb5ad9ceb129b4d274"><div class="ttname"><a href="../../d5/d33/gram__schmidt_8cpp.html#a46e459aff5eafffb5ad9ceb129b4d274">linear_algebra::gram_schmidt::projection</a></div><div class="ttdeci">double projection(const std::array&lt; double, 10 &gt; &amp;x, const std::array&lt; double, 10 &gt; &amp;y, const int &amp;c)</div><div class="ttdef"><b>Definition:</b> gram_schmidt.cpp:71</div></div>
<div class="ttc" id="abasic_ostream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_ostream.html">std::cout</a></div></div>
<div class="ttc" id="aarray_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/array.html">std::array</a></div><div class="ttdoc">STL class.</div></div>
<div class="ttc" id="agram__schmidt_8cpp_html_aa31ca28f60c880802462335eedc5d91f"><div class="ttname"><a href="../../d5/d33/gram__schmidt_8cpp.html#aa31ca28f60c880802462335eedc5d91f">linear_algebra::gram_schmidt::gram_schmidt</a></div><div class="ttdeci">void gram_schmidt(int r, const int &amp;c, const std::array&lt; std::array&lt; double, 10 &gt;, 20 &gt; &amp;A, std::array&lt; std::array&lt; double, 10 &gt;, 20 &gt; B)</div><div class="ttdef"><b>Definition:</b> gram_schmidt.cpp:107</div></div>
<div class="ttc" id="abasic_istream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_istream.html">std::cin</a></div></div>
<div class="ttc" id="anamespacemachine__learning_html_a5305cc18d11943d3dc0d66e70d7e9c44"><div class="ttname"><a href="../../d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44">machine_learning::sum</a></div><div class="ttdeci">T sum(const std::vector&lt; std::valarray&lt; T &gt;&gt; &amp;A)</div><div class="ttdef"><b>Definition:</b> vector_ops.hpp:232</div></div>
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_8c4128baa09a573ad2b8b8c0061a04c9.html">linear_algebra</a></li><li class="navelem"><a class="el" href="../../d5/d33/gram__schmidt_8cpp.html">gram_schmidt.cpp</a></li>
<li class="footer">Generated by <a href="http://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.8.20 </li>
</ul>
</div>
</body>
</html>

9
d5/d33/gram__schmidt_8cpp.js vendored Normal file
View File

@@ -0,0 +1,9 @@
var gram__schmidt_8cpp =
[
[ "display", "d5/d33/gram__schmidt_8cpp.html#ab6b70f9680752e9fe2ac4e2cce158c40", null ],
[ "dot_product", "d5/d33/gram__schmidt_8cpp.html#aed4d308f46ca1d91e348ca260ec1d2fb", null ],
[ "gram_schmidt", "d5/d33/gram__schmidt_8cpp.html#aa31ca28f60c880802462335eedc5d91f", null ],
[ "main", "d5/d33/gram__schmidt_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4", null ],
[ "projection", "d5/d33/gram__schmidt_8cpp.html#a46e459aff5eafffb5ad9ceb129b4d274", null ],
[ "test", "d5/d33/gram__schmidt_8cpp.html#aa8dca7b867074164d5f45b0f3851269d", null ]
];

View File

@@ -0,0 +1,5 @@
<map id="linear_algebra::gram_schmidt::projection" name="linear_algebra::gram_schmidt::projection">
<area shape="rect" id="node1" title=" " alt="" coords="5,29,144,71"/>
<area shape="rect" id="node2" href="$d5/d33/gram__schmidt_8cpp.html#aed4d308f46ca1d91e348ca260ec1d2fb" title=" " alt="" coords="192,29,343,71"/>
<area shape="rect" id="node3" href="$d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44" title=" " alt="" coords="391,37,547,63"/>
</map>

View File

@@ -0,0 +1 @@
d01db209ea1f40231571867947eccaa2

View File

@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.44.1 (20200629.0846)
-->
<!-- Title: linear_algebra::gram_schmidt::projection Pages: 1 -->
<svg width="414pt" height="57pt"
viewBox="0.00 0.00 414.00 57.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 53)">
<title>linear_algebra::gram_schmidt::projection</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-53 410,-53 410,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node">
<title>Node1</title>
<g id="a_node1"><a xlink:title=" ">
<polygon fill="#bfbfbf" stroke="black" points="0,-0.5 0,-30.5 104,-30.5 104,-0.5 0,-0.5"/>
<text text-anchor="start" x="8" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">linear_algebra::gram</text>
<text text-anchor="middle" x="52" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_schmidt::projection</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node1 -->
<g id="edge4" class="edge">
<title>Node1&#45;&gt;Node1</title>
<path fill="none" stroke="midnightblue" d="M26.91,-30.66C20.85,-40.06 29.22,-49 52,-49 65.88,-49 74.41,-45.68 77.59,-40.96"/>
<polygon fill="midnightblue" stroke="midnightblue" points="81.07,-40.48 77.09,-30.66 74.08,-40.81 81.07,-40.48"/>
</g>
<!-- Node2 -->
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a xlink:href="../../d5/d33/gram__schmidt_8cpp.html#aed4d308f46ca1d91e348ca260ec1d2fb" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="140,-0.5 140,-30.5 253,-30.5 253,-0.5 140,-0.5"/>
<text text-anchor="start" x="148" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">linear_algebra::gram</text>
<text text-anchor="middle" x="196.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_schmidt::dot_product</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M104.04,-15.5C112.42,-15.5 121.21,-15.5 129.89,-15.5"/>
<polygon fill="midnightblue" stroke="midnightblue" points="129.99,-19 139.99,-15.5 129.99,-12 129.99,-19"/>
</g>
<!-- Node2&#45;&gt;Node2 -->
<g id="edge2" class="edge">
<title>Node2&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M171.41,-30.66C165.35,-40.06 173.72,-49 196.5,-49 210.38,-49 218.91,-45.68 222.09,-40.96"/>
<polygon fill="midnightblue" stroke="midnightblue" points="225.57,-40.48 221.59,-30.66 218.58,-40.81 225.57,-40.48"/>
</g>
<!-- Node3 -->
<g id="node3" class="node">
<title>Node3</title>
<g id="a_node3"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="289,-6 289,-25 406,-25 406,-6 289,-6"/>
<text text-anchor="middle" x="347.5" y="-13" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::sum</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node3 -->
<g id="edge3" class="edge">
<title>Node2&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M253.41,-15.5C261.62,-15.5 270.17,-15.5 278.59,-15.5"/>
<polygon fill="midnightblue" stroke="midnightblue" points="278.79,-19 288.79,-15.5 278.79,-12 278.79,-19"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -0,0 +1,6 @@
<map id="linear_algebra::gram_schmidt::gram_schmidt" name="linear_algebra::gram_schmidt::gram_schmidt">
<area shape="rect" id="node1" title=" " alt="" coords="5,29,171,71"/>
<area shape="rect" id="node2" href="$d5/d33/gram__schmidt_8cpp.html#a46e459aff5eafffb5ad9ceb129b4d274" title=" " alt="" coords="219,29,357,71"/>
<area shape="rect" id="node3" href="$d5/d33/gram__schmidt_8cpp.html#aed4d308f46ca1d91e348ca260ec1d2fb" title=" " alt="" coords="405,29,556,71"/>
<area shape="rect" id="node4" href="$d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44" title=" " alt="" coords="604,37,760,63"/>
</map>

View File

@@ -0,0 +1 @@
b6fdadb3e9a16b4603c1881c8dfce0f6

View File

@@ -0,0 +1,170 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.44.1 (20200629.0846)
-->
<!-- Title: linear_algebra::gram_schmidt::gram_schmidt Pages: 1 -->
<!--zoomable 57 -->
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" onload="init(evt)">
<style type="text/css"><![CDATA[
.edge:hover path { stroke: red; }
.edge:hover polygon { stroke: red; fill: red; }
]]></style>
<script type="text/javascript"><![CDATA[
var edges = document.getElementsByTagName('g');
if (edges && edges.length) {
for (var i=0;i<edges.length;i++) {
if (edges[i].id.substr(0,4)=='edge') {
edges[i].setAttribute('class','edge');
}
}
}
]]></script>
<defs>
<circle id="rim" cx="0" cy="0" r="7"/>
<circle id="rim2" cx="0" cy="0" r="3.5"/>
<g id="zoomPlus">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="zoomplus.mouseover" end="zoomplus.mouseout"/>
</use>
<path d="M-4,0h8M0,-4v8" fill="none" stroke="white" stroke-width="1.5" pointer-events="none"/>
</g>
<g id="zoomMin">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="zoomminus.mouseover" end="zoomminus.mouseout"/>
</use>
<path d="M-4,0h8" fill="none" stroke="white" stroke-width="1.5" pointer-events="none"/>
</g>
<g id="dirArrow">
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="resetDef">
<use xlink:href="#rim2" fill="#404040">
<set attributeName="fill" to="#808080" begin="reset.mouseover" end="reset.mouseout"/>
</use>
</g>
</defs>
<script type="text/javascript">
var viewWidth = 574;
var viewHeight = 57;
var sectionId = 'dynsection-2';
</script>
<script xlink:href="../../svgpan.js"/>
<svg id="graph" class="graph">
<g id="viewport">
<title>linear_algebra::gram_schmidt::gram_schmidt</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-53 570,-53 570,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node">
<title>Node1</title>
<g id="a_node1"><a xlink:title=" ">
<polygon fill="#bfbfbf" stroke="black" points="0,-0.5 0,-30.5 124,-30.5 124,-0.5 0,-0.5"/>
<text text-anchor="start" x="8" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">linear_algebra::gram</text>
<text text-anchor="middle" x="62" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_schmidt::gram_schmidt</text>
</a>
</g>
</g>
<!-- Node2 -->
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a xlink:href="../../d5/d33/gram__schmidt_8cpp.html#a46e459aff5eafffb5ad9ceb129b4d274" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="160,-0.5 160,-30.5 264,-30.5 264,-0.5 160,-0.5"/>
<text text-anchor="start" x="168" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">linear_algebra::gram</text>
<text text-anchor="middle" x="212" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_schmidt::projection</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M124.05,-15.5C132.54,-15.5 141.27,-15.5 149.76,-15.5"/>
<polygon fill="midnightblue" stroke="midnightblue" points="149.98,-19 159.98,-15.5 149.98,-12 149.98,-19"/>
</g>
<!-- Node2&#45;&gt;Node2 -->
<g id="edge5" class="edge">
<title>Node2&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M186.91,-30.66C180.85,-40.06 189.22,-49 212,-49 225.88,-49 234.41,-45.68 237.59,-40.96"/>
<polygon fill="midnightblue" stroke="midnightblue" points="241.07,-40.48 237.09,-30.66 234.08,-40.81 241.07,-40.48"/>
</g>
<!-- Node3 -->
<g id="node3" class="node">
<title>Node3</title>
<g id="a_node3"><a xlink:href="../../d5/d33/gram__schmidt_8cpp.html#aed4d308f46ca1d91e348ca260ec1d2fb" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="300,-0.5 300,-30.5 413,-30.5 413,-0.5 300,-0.5"/>
<text text-anchor="start" x="308" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">linear_algebra::gram</text>
<text text-anchor="middle" x="356.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_schmidt::dot_product</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node3 -->
<g id="edge2" class="edge">
<title>Node2&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M264.04,-15.5C272.42,-15.5 281.21,-15.5 289.89,-15.5"/>
<polygon fill="midnightblue" stroke="midnightblue" points="289.99,-19 299.99,-15.5 289.99,-12 289.99,-19"/>
</g>
<!-- Node3&#45;&gt;Node3 -->
<g id="edge3" class="edge">
<title>Node3&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M331.41,-30.66C325.35,-40.06 333.72,-49 356.5,-49 370.38,-49 378.91,-45.68 382.09,-40.96"/>
<polygon fill="midnightblue" stroke="midnightblue" points="385.57,-40.48 381.59,-30.66 378.58,-40.81 385.57,-40.48"/>
</g>
<!-- Node4 -->
<g id="node4" class="node">
<title>Node4</title>
<g id="a_node4"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="449,-6 449,-25 566,-25 566,-6 449,-6"/>
<text text-anchor="middle" x="507.5" y="-13" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::sum</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node4 -->
<g id="edge4" class="edge">
<title>Node3&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M413.41,-15.5C421.62,-15.5 430.17,-15.5 438.59,-15.5"/>
<polygon fill="midnightblue" stroke="midnightblue" points="438.79,-19 448.79,-15.5 438.79,-12 438.79,-19"/>
</g>
</g>
</svg>
<g id="navigator" transform="translate(0 0)" fill="#404254">
<rect fill="#f2f5e9" fill-opacity="0.5" stroke="#606060" stroke-width=".5" x="0" y="0" width="60" height="60"/>
<use id="zoomplus" xlink:href="#zoomPlus" x="17" y="9" onmousedown="handleZoom(evt,'in')"/>
<use id="zoomminus" xlink:href="#zoomMin" x="42" y="9" onmousedown="handleZoom(evt,'out')"/>
<use id="reset" xlink:href="#resetDef" x="30" y="36" onmousedown="handleReset()"/>
<g id="arrowUp" xlink:href="#dirArrow" transform="translate(30 24)" onmousedown="handlePan(0,-1)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowUp.mouseover" end="arrowUp.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="arrowRight" xlink:href="#dirArrow" transform="rotate(90) translate(36 -43)" onmousedown="handlePan(1,0)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowRight.mouseover" end="arrowRight.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="arrowDown" xlink:href="#dirArrow" transform="rotate(180) translate(-30 -48)" onmousedown="handlePan(0,1)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowDown.mouseover" end="arrowDown.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
<g id="arrowLeft" xlink:href="#dirArrow" transform="rotate(270) translate(-36 17)" onmousedown="handlePan(-1,0)">
<use xlink:href="#rim" fill="#404040">
<set attributeName="fill" to="#808080" begin="arrowLeft.mouseover" end="arrowLeft.mouseout"/>
</use>
<path fill="none" stroke="white" stroke-width="1.5" d="M0,-3.0v7 M-2.5,-0.5L0,-3.0L2.5,-0.5"/>
</g>
</g>
<svg viewBox="0 0 15 15" width="100%" height="30px" preserveAspectRatio="xMaxYMin meet">
<g id="arrow_out" transform="scale(0.3 0.3)">
<a xlink:href="gram__schmidt_8cpp_aa31ca28f60c880802462335eedc5d91f_cgraph_org.svg" target="_base">
<rect id="button" ry="5" rx="5" y="6" x="6" height="38" width="38"
fill="#f2f5e9" fill-opacity="0.5" stroke="#606060" stroke-width="1.0"/>
<path id="arrow"
d="M 11.500037,31.436501 C 11.940474,20.09759 22.043105,11.32322 32.158766,21.979434 L 37.068811,17.246167 C 37.068811,17.246167 37.088388,32 37.088388,32 L 22.160133,31.978069 C 22.160133,31.978069 26.997745,27.140456 26.997745,27.140456 C 18.528582,18.264221 13.291696,25.230495 11.500037,31.436501 z"
style="fill:#404040;"/>
</a>
</g>
</svg>
</svg>

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.44.1 (20200629.0846)
-->
<!-- Title: linear_algebra::gram_schmidt::gram_schmidt Pages: 1 -->
<svg width="574pt" height="57pt"
viewBox="0.00 0.00 574.00 57.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 53)">
<title>linear_algebra::gram_schmidt::gram_schmidt</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-53 570,-53 570,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node">
<title>Node1</title>
<g id="a_node1"><a xlink:title=" ">
<polygon fill="#bfbfbf" stroke="black" points="0,-0.5 0,-30.5 124,-30.5 124,-0.5 0,-0.5"/>
<text text-anchor="start" x="8" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">linear_algebra::gram</text>
<text text-anchor="middle" x="62" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_schmidt::gram_schmidt</text>
</a>
</g>
</g>
<!-- Node2 -->
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a xlink:href="../../d5/d33/gram__schmidt_8cpp.html#a46e459aff5eafffb5ad9ceb129b4d274" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="160,-0.5 160,-30.5 264,-30.5 264,-0.5 160,-0.5"/>
<text text-anchor="start" x="168" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">linear_algebra::gram</text>
<text text-anchor="middle" x="212" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_schmidt::projection</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M124.05,-15.5C132.54,-15.5 141.27,-15.5 149.76,-15.5"/>
<polygon fill="midnightblue" stroke="midnightblue" points="149.98,-19 159.98,-15.5 149.98,-12 149.98,-19"/>
</g>
<!-- Node2&#45;&gt;Node2 -->
<g id="edge5" class="edge">
<title>Node2&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M186.91,-30.66C180.85,-40.06 189.22,-49 212,-49 225.88,-49 234.41,-45.68 237.59,-40.96"/>
<polygon fill="midnightblue" stroke="midnightblue" points="241.07,-40.48 237.09,-30.66 234.08,-40.81 241.07,-40.48"/>
</g>
<!-- Node3 -->
<g id="node3" class="node">
<title>Node3</title>
<g id="a_node3"><a xlink:href="../../d5/d33/gram__schmidt_8cpp.html#aed4d308f46ca1d91e348ca260ec1d2fb" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="300,-0.5 300,-30.5 413,-30.5 413,-0.5 300,-0.5"/>
<text text-anchor="start" x="308" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">linear_algebra::gram</text>
<text text-anchor="middle" x="356.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_schmidt::dot_product</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node3 -->
<g id="edge2" class="edge">
<title>Node2&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M264.04,-15.5C272.42,-15.5 281.21,-15.5 289.89,-15.5"/>
<polygon fill="midnightblue" stroke="midnightblue" points="289.99,-19 299.99,-15.5 289.99,-12 289.99,-19"/>
</g>
<!-- Node3&#45;&gt;Node3 -->
<g id="edge3" class="edge">
<title>Node3&#45;&gt;Node3</title>
<path fill="none" stroke="midnightblue" d="M331.41,-30.66C325.35,-40.06 333.72,-49 356.5,-49 370.38,-49 378.91,-45.68 382.09,-40.96"/>
<polygon fill="midnightblue" stroke="midnightblue" points="385.57,-40.48 381.59,-30.66 378.58,-40.81 385.57,-40.48"/>
</g>
<!-- Node4 -->
<g id="node4" class="node">
<title>Node4</title>
<g id="a_node4"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="449,-6 449,-25 566,-25 566,-6 449,-6"/>
<text text-anchor="middle" x="507.5" y="-13" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::sum</text>
</a>
</g>
</g>
<!-- Node3&#45;&gt;Node4 -->
<g id="edge4" class="edge">
<title>Node3&#45;&gt;Node4</title>
<path fill="none" stroke="midnightblue" d="M413.41,-15.5C421.62,-15.5 430.17,-15.5 438.59,-15.5"/>
<polygon fill="midnightblue" stroke="midnightblue" points="438.79,-19 448.79,-15.5 438.79,-12 438.79,-19"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@@ -0,0 +1,4 @@
<map id="main" name="main">
<area shape="rect" id="node1" title="Main Function." alt="" coords="5,5,56,32"/>
<area shape="rect" id="node2" href="$d5/d33/gram__schmidt_8cpp.html#aa8dca7b867074164d5f45b0f3851269d" title=" " alt="" coords="104,5,148,32"/>
</map>

View File

@@ -0,0 +1 @@
062956b052f3401ab5124352bc563b9c

View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.44.1 (20200629.0846)
-->
<!-- Title: main Pages: 1 -->
<svg width="115pt" height="28pt"
viewBox="0.00 0.00 115.00 28.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 24)">
<title>main</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-24 111,-24 111,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node">
<title>Node1</title>
<g id="a_node1"><a xlink:title="Main Function.">
<polygon fill="#bfbfbf" stroke="black" points="0,-0.5 0,-19.5 38,-19.5 38,-0.5 0,-0.5"/>
<text text-anchor="middle" x="19" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">main</text>
</a>
</g>
</g>
<!-- Node2 -->
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a xlink:href="../../d5/d33/gram__schmidt_8cpp.html#aa8dca7b867074164d5f45b0f3851269d" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="74,-0.5 74,-19.5 107,-19.5 107,-0.5 74,-0.5"/>
<text text-anchor="middle" x="90.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">test</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M38.26,-10C46.07,-10 55.31,-10 63.79,-10"/>
<polygon fill="midnightblue" stroke="midnightblue" points="63.95,-13.5 73.95,-10 63.95,-6.5 63.95,-13.5"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1,4 @@
<map id="linear_algebra::gram_schmidt::dot_product" name="linear_algebra::gram_schmidt::dot_product">
<area shape="rect" id="node1" title=" " alt="" coords="5,29,156,71"/>
<area shape="rect" id="node2" href="$d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44" title=" " alt="" coords="204,37,360,63"/>
</map>

View File

@@ -0,0 +1 @@
99db7f1b10447ebfdcbf9c6fbac7adc2

View File

@@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.44.1 (20200629.0846)
-->
<!-- Title: linear_algebra::gram_schmidt::dot_product Pages: 1 -->
<svg width="274pt" height="57pt"
viewBox="0.00 0.00 274.00 57.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 53)">
<title>linear_algebra::gram_schmidt::dot_product</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-53 270,-53 270,4 -4,4"/>
<!-- Node1 -->
<g id="node1" class="node">
<title>Node1</title>
<g id="a_node1"><a xlink:title=" ">
<polygon fill="#bfbfbf" stroke="black" points="0,-0.5 0,-30.5 113,-30.5 113,-0.5 0,-0.5"/>
<text text-anchor="start" x="8" y="-18.5" font-family="Helvetica,sans-Serif" font-size="10.00">linear_algebra::gram</text>
<text text-anchor="middle" x="56.5" y="-7.5" font-family="Helvetica,sans-Serif" font-size="10.00">_schmidt::dot_product</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node1 -->
<g id="edge1" class="edge">
<title>Node1&#45;&gt;Node1</title>
<path fill="none" stroke="midnightblue" d="M30.36,-30.66C24.06,-40.06 32.77,-49 56.5,-49 70.96,-49 79.85,-45.68 83.15,-40.96"/>
<polygon fill="midnightblue" stroke="midnightblue" points="86.63,-40.47 82.64,-30.66 79.64,-40.82 86.63,-40.47"/>
</g>
<!-- Node2 -->
<g id="node2" class="node">
<title>Node2</title>
<g id="a_node2"><a xlink:href="../../d8/d77/namespacemachine__learning.html#a5305cc18d11943d3dc0d66e70d7e9c44" target="_top" xlink:title=" ">
<polygon fill="white" stroke="black" points="149,-6 149,-25 266,-25 266,-6 149,-6"/>
<text text-anchor="middle" x="207.5" y="-13" font-family="Helvetica,sans-Serif" font-size="10.00">machine_learning::sum</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge2" class="edge">
<title>Node1&#45;&gt;Node2</title>
<path fill="none" stroke="midnightblue" d="M113.41,-15.5C121.62,-15.5 130.17,-15.5 138.59,-15.5"/>
<polygon fill="midnightblue" stroke="midnightblue" points="138.79,-19 148.79,-15.5 138.79,-12 138.79,-19"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -230,6 +230,11 @@ Hashing</h1>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/hashing/quadratic_probing_hash_table.cpp">Quadratic Probing Hash Table</a></li>
</ul>
<h1><a class="anchor" id="autotoc_md38"></a>
Linear Algebra</h1>
<ul>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/linear_algebra/gram_schmidt.cpp">Gram Schmidt</a></li>
</ul>
<h1><a class="anchor" id="autotoc_md39"></a>
Machine Learning</h1>
<ul>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/machine_learning/adaline_learning.cpp">Adaline Learning</a></li>
@@ -239,7 +244,7 @@ Machine Learning</h1>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/machine_learning/ordinary_least_squares_regressor.cpp">Ordinary Least Squares Regressor</a></li>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/machine_learning/vector_ops.hpp">Vector Ops</a></li>
</ul>
<h1><a class="anchor" id="autotoc_md39"></a>
<h1><a class="anchor" id="autotoc_md40"></a>
Math</h1>
<ul>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/math/armstrong_number.cpp">Armstrong Number</a></li>
@@ -280,7 +285,7 @@ Math</h1>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/math/sum_of_binomial_coefficient.cpp">Sum Of Binomial Coefficient</a></li>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/math/sum_of_digits.cpp">Sum Of Digits</a></li>
</ul>
<h1><a class="anchor" id="autotoc_md40"></a>
<h1><a class="anchor" id="autotoc_md41"></a>
Numerical Methods</h1>
<ul>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/numerical_methods/bisection_method.cpp">Bisection Method</a></li>
@@ -301,7 +306,7 @@ Numerical Methods</h1>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/numerical_methods/rungekutta.cpp">Rungekutta</a></li>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/numerical_methods/successive_approximation.cpp">Successive Approximation</a></li>
</ul>
<h1><a class="anchor" id="autotoc_md41"></a>
<h1><a class="anchor" id="autotoc_md42"></a>
Operations On Datastructures</h1>
<ul>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/operations_on_datastructures/array_left_rotation.cpp">Array Left Rotation</a></li>
@@ -314,7 +319,7 @@ Operations On Datastructures</h1>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/operations_on_datastructures/selectionsortlinkedlist.cpp">Selectionsortlinkedlist</a></li>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/operations_on_datastructures/union_of_2_arrays.cpp">Union Of 2 Arrays</a></li>
</ul>
<h1><a class="anchor" id="autotoc_md42"></a>
<h1><a class="anchor" id="autotoc_md43"></a>
Others</h1>
<ul>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/others/buzz_number.cpp">Buzz Number</a></li>
@@ -336,7 +341,7 @@ Others</h1>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/others/tower_of_hanoi.cpp">Tower Of Hanoi</a></li>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/others/vector_important_functions.cpp">Vector Important Functions</a></li>
</ul>
<h1><a class="anchor" id="autotoc_md43"></a>
<h1><a class="anchor" id="autotoc_md44"></a>
Probability</h1>
<ul>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/probability/addition_rule.cpp">Addition Rule</a></li>
@@ -344,7 +349,7 @@ Probability</h1>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/probability/binomial_dist.cpp">Binomial Dist</a></li>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/probability/poisson_dist.cpp">Poisson Dist</a></li>
</ul>
<h1><a class="anchor" id="autotoc_md44"></a>
<h1><a class="anchor" id="autotoc_md45"></a>
Range Queries</h1>
<ul>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/range_queries/fenwick_tree.cpp">Fenwick Tree</a></li>
@@ -353,7 +358,7 @@ Range Queries</h1>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/range_queries/segtree.cpp">Segtree</a></li>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/range_queries/sparse_table.cpp">Sparse Table</a></li>
</ul>
<h1><a class="anchor" id="autotoc_md45"></a>
<h1><a class="anchor" id="autotoc_md46"></a>
Search</h1>
<ul>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/search/binary_search.cpp">Binary Search</a></li>
@@ -368,7 +373,7 @@ Search</h1>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/search/ternary_search.cpp">Ternary Search</a></li>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/search/text_search.cpp">Text Search</a></li>
</ul>
<h1><a class="anchor" id="autotoc_md46"></a>
<h1><a class="anchor" id="autotoc_md47"></a>
Sorting</h1>
<ul>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/sorting/bead_sort.cpp">Bead Sort</a></li>
@@ -404,7 +409,7 @@ Sorting</h1>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/sorting/tim_sort.cpp">Tim Sort</a></li>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/sorting/wiggle_sort.cpp">Wiggle Sort</a></li>
</ul>
<h1><a class="anchor" id="autotoc_md47"></a>
<h1><a class="anchor" id="autotoc_md48"></a>
Strings</h1>
<ul>
<li><a href="https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/strings/brute_force_string_searching.cpp">Brute Force String Searching</a></li>

View File

@@ -136,7 +136,7 @@ Functions</h2></td></tr>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Implementation of <a href="https://en.wikipedia.org/wiki/Bogosort">Bogosort algorithm</a> </p>
<p>In computer science, bogosort (also known as permutation sort, stupid sort, slowsort, shotgun sort, random sort, monkey sort, bobosort or shuffle sort) is a highly inefficient sorting algorithm based on the generate and test paradigm. Two versions of this algorithm exist: a deterministic version that enumerates all permutations until it hits a sorted one, and a randomized version that randomly permutes its input.Randomized version is implemented here.</p>
<h3><a class="anchor" id="autotoc_md65"></a>
<h3><a class="anchor" id="autotoc_md67"></a>
Algorithm</h3>
<p>Shuffle the array untill array is sorted.</p>
<dl class="section author"><dt>Author</dt><dd><a href="https://github.com/imdeep2905">Deep Raval</a> </dd></dl>