3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>Falling Factorial</title>
5 <link rel="stylesheet" href="../../math.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7 <link rel="home" href="../../index.html" title="Math Toolkit 2.11.0">
8 <link rel="up" href="../factorials.html" title="Factorials and Binomial Coefficients">
9 <link rel="prev" href="sf_rising_factorial.html" title="Rising Factorial">
10 <link rel="next" href="sf_binomial.html" title="Binomial Coefficients">
12 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13 <table cellpadding="2" width="100%"><tr>
14 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
15 <td align="center"><a href="../../../../../../index.html">Home</a></td>
16 <td align="center"><a href="../../../../../../libs/libraries.htm">Libraries</a></td>
17 <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18 <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19 <td align="center"><a href="../../../../../../more/index.htm">More</a></td>
22 <div class="spirit-nav">
23 <a accesskey="p" href="sf_rising_factorial.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../factorials.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="sf_binomial.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
26 <div class="titlepage"><div><div><h3 class="title">
27 <a name="math_toolkit.factorials.sf_falling_factorial"></a><a class="link" href="sf_falling_factorial.html" title="Falling Factorial">Falling
29 </h3></div></div></div>
30 <pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">math</span><span class="special">/</span><span class="identifier">special_functions</span><span class="special">/</span><span class="identifier">factorials</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
32 <pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span><span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">math</span><span class="special">{</span>
34 <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
35 <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">falling_factorial</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">i</span><span class="special">);</span>
37 <span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 20. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">></span>
38 <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">falling_factorial</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">i</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 20. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&);</span>
40 <span class="special">}}</span> <span class="comment">// namespaces</span>
43 Returns the falling factorial of <span class="emphasis"><em>x</em></span> and <span class="emphasis"><em>i</em></span>:
45 <div class="blockquote"><blockquote class="blockquote"><p>
46 <span class="serif_italic"><span class="emphasis"><em>falling_factorial(x, i) = x(x-1)(x-2)(x-3)...(x-i+1)</em></span></span>
47 </p></blockquote></div>
49 Note that this function is only defined for positive <span class="emphasis"><em>i</em></span>,
50 hence the <code class="computeroutput"><span class="keyword">unsigned</span></code> second argument.
51 Argument <span class="emphasis"><em>x</em></span> can be either positive or negative however.
54 The final <a class="link" href="../../policy.html" title="Chapter 20. Policies: Controlling Precision, Error Handling etc">Policy</a> argument is optional and can
55 be used to control the behaviour of the function: how it handles errors,
56 what level of precision to use etc. Refer to the <a class="link" href="../../policy.html" title="Chapter 20. Policies: Controlling Precision, Error Handling etc">policy
57 documentation for more details</a>.
60 May return the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.overflow_error">overflow_error</a>
61 if the result is too large to represent in type T.
64 The return type of these functions is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
65 type calculation rules</em></span></a>: the type of the result is <code class="computeroutput"><span class="keyword">double</span></code> if T is an integer type, otherwise
66 the type of the result is T.
69 <a name="math_toolkit.factorials.sf_falling_factorial.h0"></a>
70 <span class="phrase"><a name="math_toolkit.factorials.sf_falling_factorial.accuracy"></a></span><a class="link" href="sf_falling_factorial.html#math_toolkit.factorials.sf_falling_factorial.accuracy">Accuracy</a>
73 The accuracy will be the same as the <a class="link" href="../sf_gamma/gamma_ratios.html" title="Ratios of Gamma Functions">tgamma_delta_ratio</a>
77 <a name="math_toolkit.factorials.sf_falling_factorial.h1"></a>
78 <span class="phrase"><a name="math_toolkit.factorials.sf_falling_factorial.testing"></a></span><a class="link" href="sf_falling_factorial.html#math_toolkit.factorials.sf_falling_factorial.testing">Testing</a>
81 The spot tests for the falling factorials use data generated by <a href="https://functions.wolfram.com" target="_top">functions.wolfram.com</a>.
84 <a name="math_toolkit.factorials.sf_falling_factorial.h2"></a>
85 <span class="phrase"><a name="math_toolkit.factorials.sf_falling_factorial.implementation"></a></span><a class="link" href="sf_falling_factorial.html#math_toolkit.factorials.sf_falling_factorial.implementation">Implementation</a>
88 Rising and falling factorials are implemented as ratios of gamma functions
89 using <a class="link" href="../sf_gamma/gamma_ratios.html" title="Ratios of Gamma Functions">tgamma_delta_ratio</a>.
90 Optimisations for small integer arguments are handled internally by that
94 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
95 <td align="left"></td>
96 <td align="right"><div class="copyright-footer">Copyright © 2006-2019 Nikhar
97 Agrawal, Anton Bikineev, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos,
98 Hubert Holin, Bruno Lalande, John Maddock, Jeremy Murphy, Matthew Pulver, Johan
99 Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg,
100 Daryle Walker and Xiaogang Zhang<p>
101 Distributed under the Boost Software License, Version 1.0. (See accompanying
102 file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
107 <div class="spirit-nav">
108 <a accesskey="p" href="sf_rising_factorial.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../factorials.html"><img src="../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="sf_binomial.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>