TheAlgorithms-C/d8/d75/fibonacci__formula_8c.html
2022-09-30 08:55:00 +00:00

269 lines
17 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.5"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Algorithms_in_C: misc/fibonacci_formula.c 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 id="projectrow">
<td id="projectalign">
<div id="projectname">Algorithms_in_C<span id="projectnumber">&#160;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.9.5 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
/* @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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(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:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('d8/d75/fibonacci__formula_8c.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">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle"><div class="title">fibonacci_formula.c File Reference</div></div>
</div><!--header-->
<div class="contents">
<p>Finding Fibonacci number of any <code>n</code> number using [Binet's closed form formula](<a href="https://en.wikipedia.org/wiki/Fibonacci_number#Binet's_formula">https://en.wikipedia.org/wiki/Fibonacci_number#Binet's_formula</a>) compute \(f_{nth}\) Fibonacci number using the binet's formula: Fn = 1√5 * (1+√5 / 2)^n+1 1√5 * (1√5 / 2)^n+1.
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &lt;math.h&gt;</code><br />
<code>#include &lt;stdio.h&gt;</code><br />
<code>#include &lt;assert.h&gt;</code><br />
</div><div class="textblock"><div class="dynheader">
Include dependency graph for fibonacci_formula.c:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../d3/da6/fibonacci__formula_8c__incl.svg" width="254" height="110"><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 id="func-members" name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a4d369ae048e0ccc7f515a243533cd946"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../d8/d75/fibonacci__formula_8c.html#a4d369ae048e0ccc7f515a243533cd946">fib</a> (unsigned int n)</td></tr>
<tr class="memdesc:a4d369ae048e0ccc7f515a243533cd946"><td class="mdescLeft">&#160;</td><td class="mdescRight">for pow and sqrt for printf for assert <a href="../../d8/d75/fibonacci__formula_8c.html#a4d369ae048e0ccc7f515a243533cd946">More...</a><br /></td></tr>
<tr class="separator:a4d369ae048e0ccc7f515a243533cd946"><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="../../d8/d75/fibonacci__formula_8c.html#aa8dca7b867074164d5f45b0f3851269d">test</a> ()</td></tr>
<tr class="memdesc:aa8dca7b867074164d5f45b0f3851269d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Self-test implementations. <a href="../../d8/d75/fibonacci__formula_8c.html#aa8dca7b867074164d5f45b0f3851269d">More...</a><br /></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="../../d8/d75/fibonacci__formula_8c.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a> ()</td></tr>
<tr class="memdesc:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Main function. <a href="../../d8/d75/fibonacci__formula_8c.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 >Finding Fibonacci number of any <code>n</code> number using [Binet's closed form formula](<a href="https://en.wikipedia.org/wiki/Fibonacci_number#Binet's_formula">https://en.wikipedia.org/wiki/Fibonacci_number#Binet's_formula</a>) compute \(f_{nth}\) Fibonacci number using the binet's formula: Fn = 1√5 * (1+√5 / 2)^n+1 1√5 * (1√5 / 2)^n+1. </p>
<dl class="section author"><dt>Author</dt><dd><a href="https://github.com/GrandSir/" target="_blank">GrandSir</a> </dd></dl>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="a4d369ae048e0ccc7f515a243533cd946" name="a4d369ae048e0ccc7f515a243533cd946"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4d369ae048e0ccc7f515a243533cd946">&#9670;&#160;</a></span>fib()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int fib </td>
<td>(</td>
<td class="paramtype">unsigned int&#160;</td>
<td class="paramname"><em>n</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>for pow and sqrt for printf for assert </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">n</td><td>index of number in Fibonacci sequence </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>nth value of fibonacci sequence for all n &gt;= 0 </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 17</span> {</div>
<div class="line"><span class="lineno"> 18</span> <span class="keywordtype">float</span> seq = (1 / sqrt(5) * pow(((1 + sqrt(5)) / 2), n + 1)) - (1 / sqrt(5) * pow(((1 - sqrt(5)) / 2), n + 1));</div>
<div class="line"><span class="lineno"> 19</span> </div>
<div class="line"><span class="lineno"> 20</span> <span class="comment">// removing unnecessary fractional part by implicitly converting float to int</span></div>
<div class="line"><span class="lineno"> 21</span> <span class="keywordflow">return</span> seq;</div>
<div class="line"><span class="lineno"> 22</span>}</div>
</div><!-- fragment -->
</div>
</div>
<a id="ae66f6b31b5ad750f1fe042a706a4e3d4" name="ae66f6b31b5ad750f1fe042a706a4e3d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae66f6b31b5ad750f1fe042a706a4e3d4">&#9670;&#160;</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>
<div class="fragment"><div class="line"><span class="lineno"> 52</span> {</div>
<div class="line"><span class="lineno"> 53</span> <a class="code hl_function" href="../../d8/d75/fibonacci__formula_8c.html#aa8dca7b867074164d5f45b0f3851269d">test</a>(); <span class="comment">// run self-test implementations</span></div>
<div class="line"><span class="lineno"> 54</span> </div>
<div class="line"><span class="lineno"> 55</span> <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt;= 10; i++){</div>
<div class="line"><span class="lineno"> 56</span> printf(<span class="stringliteral">&quot;%d. fibonacci number is: %d\n&quot;</span>, i, <a class="code hl_function" href="../../d8/d75/fibonacci__formula_8c.html#a4d369ae048e0ccc7f515a243533cd946">fib</a>(i));</div>
<div class="line"><span class="lineno"> 57</span> }</div>
<div class="line"><span class="lineno"> 58</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><span class="lineno"> 59</span>}</div>
<div class="ttc" id="afibonacci__formula_8c_html_a4d369ae048e0ccc7f515a243533cd946"><div class="ttname"><a href="../../d8/d75/fibonacci__formula_8c.html#a4d369ae048e0ccc7f515a243533cd946">fib</a></div><div class="ttdeci">int fib(unsigned int n)</div><div class="ttdoc">for pow and sqrt for printf for assert</div><div class="ttdef"><b>Definition:</b> fibonacci_formula.c:17</div></div>
<div class="ttc" id="afibonacci__formula_8c_html_aa8dca7b867074164d5f45b0f3851269d"><div class="ttname"><a href="../../d8/d75/fibonacci__formula_8c.html#aa8dca7b867074164d5f45b0f3851269d">test</a></div><div class="ttdeci">static void test()</div><div class="ttdoc">Self-test implementations.</div><div class="ttdef"><b>Definition:</b> fibonacci_formula.c:28</div></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="../../d8/d75/fibonacci__formula_8c_ae66f6b31b5ad750f1fe042a706a4e3d4_cgraph.svg" width="240" height="62"><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" name="aa8dca7b867074164d5f45b0f3851269d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8dca7b867074164d5f45b0f3851269d">&#9670;&#160;</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="paramtype">void&#160;</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>Self-test implementations. </p>
<dl class="section return"><dt>Returns</dt><dd>void </dd></dl>
<div class="fragment"><div class="line"><span class="lineno"> 28</span> {</div>
<div class="line"><span class="lineno"> 29</span> <span class="comment">/* this ensures that the first 10 number of fibonacci sequence</span></div>
<div class="line"><span class="lineno"> 30</span><span class="comment"> * (1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89)</span></div>
<div class="line"><span class="lineno"> 31</span><span class="comment"> * matches with algorithm</span></div>
<div class="line"><span class="lineno"> 32</span><span class="comment"> */</span></div>
<div class="line"><span class="lineno"> 33</span> assert(<a class="code hl_function" href="../../d8/d75/fibonacci__formula_8c.html#a4d369ae048e0ccc7f515a243533cd946">fib</a>(0) == 1);</div>
<div class="line"><span class="lineno"> 34</span> assert(<a class="code hl_function" href="../../d8/d75/fibonacci__formula_8c.html#a4d369ae048e0ccc7f515a243533cd946">fib</a>(1) == 1);</div>
<div class="line"><span class="lineno"> 35</span> assert(<a class="code hl_function" href="../../d8/d75/fibonacci__formula_8c.html#a4d369ae048e0ccc7f515a243533cd946">fib</a>(2) == 2);</div>
<div class="line"><span class="lineno"> 36</span> assert(<a class="code hl_function" href="../../d8/d75/fibonacci__formula_8c.html#a4d369ae048e0ccc7f515a243533cd946">fib</a>(3) == 3);</div>
<div class="line"><span class="lineno"> 37</span> assert(<a class="code hl_function" href="../../d8/d75/fibonacci__formula_8c.html#a4d369ae048e0ccc7f515a243533cd946">fib</a>(4) == 5);</div>
<div class="line"><span class="lineno"> 38</span> assert(<a class="code hl_function" href="../../d8/d75/fibonacci__formula_8c.html#a4d369ae048e0ccc7f515a243533cd946">fib</a>(5) == 8);</div>
<div class="line"><span class="lineno"> 39</span> assert(<a class="code hl_function" href="../../d8/d75/fibonacci__formula_8c.html#a4d369ae048e0ccc7f515a243533cd946">fib</a>(6) == 13);</div>
<div class="line"><span class="lineno"> 40</span> assert(<a class="code hl_function" href="../../d8/d75/fibonacci__formula_8c.html#a4d369ae048e0ccc7f515a243533cd946">fib</a>(7) == 21);</div>
<div class="line"><span class="lineno"> 41</span> assert(<a class="code hl_function" href="../../d8/d75/fibonacci__formula_8c.html#a4d369ae048e0ccc7f515a243533cd946">fib</a>(8) == 34);</div>
<div class="line"><span class="lineno"> 42</span> assert(<a class="code hl_function" href="../../d8/d75/fibonacci__formula_8c.html#a4d369ae048e0ccc7f515a243533cd946">fib</a>(9) == 55);</div>
<div class="line"><span class="lineno"> 43</span> assert(<a class="code hl_function" href="../../d8/d75/fibonacci__formula_8c.html#a4d369ae048e0ccc7f515a243533cd946">fib</a>(10) == 89);</div>
<div class="line"><span class="lineno"> 44</span> </div>
<div class="line"><span class="lineno"> 45</span> printf(<span class="stringliteral">&quot;All tests have successfully passed!\n&quot;</span>);</div>
<div class="line"><span class="lineno"> 46</span>}</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="../../d8/d75/fibonacci__formula_8c_aa8dca7b867074164d5f45b0f3851269d_cgraph.svg" width="142" height="36"><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><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_a52f4d3d586a58b02f3a4ddf0a992157.html">misc</a></li><li class="navelem"><a class="el" href="../../d8/d75/fibonacci__formula_8c.html">fibonacci_formula.c</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.5 </li>
</ul>
</div>
</body>
</html>