• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4<title>Rising 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.12.0">
8<link rel="up" href="../factorials.html" title="Factorials and Binomial Coefficients">
9<link rel="prev" href="sf_double_factorial.html" title="Double Factorial">
10<link rel="next" href="sf_falling_factorial.html" title="Falling Factorial">
11</head>
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>
20</tr></table>
21<hr>
22<div class="spirit-nav">
23<a accesskey="p" href="sf_double_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_falling_factorial.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
24</div>
25<div class="section">
26<div class="titlepage"><div><div><h3 class="title">
27<a name="math_toolkit.factorials.sf_rising_factorial"></a><a class="link" href="sf_rising_factorial.html" title="Rising Factorial">Rising Factorial</a>
28</h3></div></div></div>
29<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</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">&gt;</span>
30</pre>
31<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>
32
33<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
34<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">rising_factorial</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">);</span>
35
36<span class="keyword">template</span> <span class="special">&lt;</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 21. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&gt;</span>
37<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">rising_factorial</span><span class="special">(</span><span class="identifier">T</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 21. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&amp;);</span>
38
39<span class="special">}}</span> <span class="comment">// namespaces</span>
40</pre>
41<p>
42        Returns the rising factorial of <span class="emphasis"><em>x</em></span> and <span class="emphasis"><em>i</em></span>:
43      </p>
44<div class="blockquote"><blockquote class="blockquote"><p>
45          <span class="serif_italic"><span class="emphasis"><em>rising_factorial(x, i) = Γ(x + i)
46          / Γ(x)</em></span></span>
47        </p></blockquote></div>
48<p>
49        or
50      </p>
51<div class="blockquote"><blockquote class="blockquote"><p>
52          <span class="serif_italic"><span class="emphasis"><em>rising_factorial(x, i) = x(x+1)(x+2)(x+3)...(x+i-1)</em></span></span>
53        </p></blockquote></div>
54<p>
55        Note that both <span class="emphasis"><em>x</em></span> and <span class="emphasis"><em>i</em></span> can be negative
56        as well as positive.
57      </p>
58<p>
59        The final <a class="link" href="../../policy.html" title="Chapter 21. Policies: Controlling Precision, Error Handling etc">Policy</a> argument is optional and can
60        be used to control the behaviour of the function: how it handles errors,
61        what level of precision to use etc. Refer to the <a class="link" href="../../policy.html" title="Chapter 21. Policies: Controlling Precision, Error Handling etc">policy
62        documentation for more details</a>.
63      </p>
64<p>
65        May return the result of <a class="link" href="../error_handling.html#math_toolkit.error_handling.overflow_error">overflow_error</a>
66        if the result is too large to represent in type T.
67      </p>
68<p>
69        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
70        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
71        the type of the result is T.
72      </p>
73<h5>
74<a name="math_toolkit.factorials.sf_rising_factorial.h0"></a>
75        <span class="phrase"><a name="math_toolkit.factorials.sf_rising_factorial.accuracy"></a></span><a class="link" href="sf_rising_factorial.html#math_toolkit.factorials.sf_rising_factorial.accuracy">Accuracy</a>
76      </h5>
77<p>
78        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>
79        function.
80      </p>
81<h5>
82<a name="math_toolkit.factorials.sf_rising_factorial.h1"></a>
83        <span class="phrase"><a name="math_toolkit.factorials.sf_rising_factorial.testing"></a></span><a class="link" href="sf_rising_factorial.html#math_toolkit.factorials.sf_rising_factorial.testing">Testing</a>
84      </h5>
85<p>
86        The spot tests for the rising factorials use data generated by <a href="https://functions.wolfram.com" target="_top">functions.wolfram.com</a>.
87      </p>
88<h5>
89<a name="math_toolkit.factorials.sf_rising_factorial.h2"></a>
90        <span class="phrase"><a name="math_toolkit.factorials.sf_rising_factorial.implementation"></a></span><a class="link" href="sf_rising_factorial.html#math_toolkit.factorials.sf_rising_factorial.implementation">Implementation</a>
91      </h5>
92<p>
93        Rising and factorials are implemented as ratios of gamma functions using
94        <a class="link" href="../sf_gamma/gamma_ratios.html" title="Ratios of Gamma Functions">tgamma_delta_ratio</a>.
95        Optimisations for small integer arguments are handled internally by that
96        function.
97      </p>
98</div>
99<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
100<td align="left"></td>
101<td align="right"><div class="copyright-footer">Copyright © 2006-2019 Nikhar
102      Agrawal, Anton Bikineev, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos,
103      Hubert Holin, Bruno Lalande, John Maddock, Jeremy Murphy, Matthew Pulver, Johan
104      Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg,
105      Daryle Walker and Xiaogang Zhang<p>
106        Distributed under the Boost Software License, Version 1.0. (See accompanying
107        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>)
108      </p>
109</div></td>
110</tr></table>
111<hr>
112<div class="spirit-nav">
113<a accesskey="p" href="sf_double_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_falling_factorial.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>
114</div>
115</body>
116</html>
117