3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>Tangent Numbers</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="../number_series.html" title="Number Series">
9 <link rel="prev" href="bernoulli_numbers.html" title="Bernoulli Numbers">
10 <link rel="next" href="primes.html" title="Prime Numbers">
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="bernoulli_numbers.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../number_series.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="primes.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.number_series.tangent_numbers"></a><a class="link" href="tangent_numbers.html" title="Tangent Numbers">Tangent Numbers</a>
28 </h3></div></div></div>
30 <a href="http://en.wikipedia.org/wiki/Tangent_numbers" target="_top">Tangent numbers</a>,
31 also called a zag function. See also <a href="http://mathworld.wolfram.com/TangentNumber.html" target="_top">Tangent
35 The first few values are 1, 2, 16, 272, 7936, 353792, 22368256, 1903757312
36 ... (sequence <a href="http://oeis.org/A000182" target="_top">A000182 in OEIS</a>).
37 They are called tangent numbers because they appear as numerators in the
38 Maclaurin series of <code class="computeroutput"><span class="identifier">tan</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span></code>.
41 <span class="bold"><strong>Important:</strong></span> there are two competing definitions
42 of Tangent numbers in common use (depending on whether you take the even
43 or odd numbered values as non-zero), we use:
45 <div class="blockquote"><blockquote class="blockquote"><p>
46 <span class="inlinemediaobject"><img src="../../../equations/tangent_number_def.svg"></span>
48 </p></blockquote></div>
52 <div class="blockquote"><blockquote class="blockquote"><p>
53 <span class="inlinemediaobject"><img src="../../../equations/tangent_number_def2.svg"></span>
55 </p></blockquote></div>
57 Tangent numbers are used in the computation of Bernoulli numbers, but are
58 also made available here.
61 <a name="math_toolkit.number_series.tangent_numbers.h0"></a>
62 <span class="phrase"><a name="math_toolkit.number_series.tangent_numbers.synopsis"></a></span><a class="link" href="tangent_numbers.html#math_toolkit.number_series.tangent_numbers.synopsis">Synopsis</a>
64 <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">detail</span><span class="special">/</span><span class="identifier">bernoulli</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
66 <pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
67 <span class="identifier">T</span> <span class="identifier">tangent_t2n</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">);</span> <span class="comment">// Single tangent number (default policy).</span>
69 <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> <span class="identifier">Policy</span><span class="special">></span>
70 <span class="identifier">T</span> <span class="identifier">tangent_t2n</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">i</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">Policy</span> <span class="special">&</span><span class="identifier">pol</span><span class="special">);</span> <span class="comment">// Single tangent number (user policy).</span>
72 <span class="comment">// Multiple tangent numbers (default policy).</span>
73 <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> <span class="identifier">OutputIterator</span><span class="special">></span>
74 <span class="identifier">OutputIterator</span> <span class="identifier">tangent_t2n</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">start_index</span><span class="special">,</span>
75 <span class="keyword">const</span> <span class="keyword">unsigned</span> <span class="identifier">number_of_tangent_t2n</span><span class="special">,</span>
76 <span class="identifier">OutputIterator</span> <span class="identifier">out_it</span><span class="special">);</span>
78 <span class="comment">// Multiple tangent numbers (user policy).</span>
79 <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> <span class="identifier">OutputIterator</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Policy</span><span class="special">></span>
80 <span class="identifier">OutputIterator</span> <span class="identifier">tangent_t2n</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">start_index</span><span class="special">,</span>
81 <span class="keyword">const</span> <span class="keyword">unsigned</span> <span class="identifier">number_of_tangent_t2n</span><span class="special">,</span>
82 <span class="identifier">OutputIterator</span> <span class="identifier">out_it</span><span class="special">,</span>
83 <span class="keyword">const</span> <span class="identifier">Policy</span><span class="special">&</span> <span class="identifier">pol</span><span class="special">);</span>
86 <a name="math_toolkit.number_series.tangent_numbers.h1"></a>
87 <span class="phrase"><a name="math_toolkit.number_series.tangent_numbers.examples"></a></span><a class="link" href="tangent_numbers.html#math_toolkit.number_series.tangent_numbers.examples">Examples</a>
90 We can compute and save a few Tangent numbers.
92 <pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">float</span><span class="special">></span> <span class="identifier">tn</span><span class="special">;</span> <span class="comment">// Space for some `float` precision Tangent numbers.</span>
94 <span class="comment">// Start with Bernoulli number 0.</span>
95 <span class="identifier">boost</span><span class="special">::</span><span class="identifier">math</span><span class="special">::</span><span class="identifier">tangent_t2n</span><span class="special"><</span><span class="keyword">float</span><span class="special">>(</span><span class="number">1</span><span class="special">,</span> <span class="number">6</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">back_inserter</span><span class="special">(</span><span class="identifier">tn</span><span class="special">));</span> <span class="comment">// Fill vector with even Tangent numbers.</span>
97 <span class="keyword">for</span><span class="special">(</span><span class="identifier">size_t</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special"><</span> <span class="identifier">tn</span><span class="special">.</span><span class="identifier">size</span><span class="special">();</span> <span class="identifier">i</span><span class="special">++)</span>
98 <span class="special">{</span> <span class="comment">// Show vector of even Tangent numbers, showing all significant decimal digits.</span>
99 <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">float</span><span class="special">>::</span><span class="identifier">digits10</span><span class="special">)</span>
100 <span class="special"><<</span> <span class="string">" "</span>
101 <span class="special"><<</span> <span class="identifier">tn</span><span class="special">[</span><span class="identifier">i</span><span class="special">];</span>
102 <span class="special">}</span>
103 <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
108 <pre class="programlisting"><span class="number">1</span> <span class="number">2</span> <span class="number">16</span> <span class="number">272</span> <span class="number">7936</span> <span class="number">353792</span>
111 The source of this example is at <a href="../../../../example/bernoulli_example.cpp" target="_top">bernoulli_example.cpp</a>
114 <a name="math_toolkit.number_series.tangent_numbers.h2"></a>
115 <span class="phrase"><a name="math_toolkit.number_series.tangent_numbers.implementation"></a></span><a class="link" href="tangent_numbers.html#math_toolkit.number_series.tangent_numbers.implementation">Implementation</a>
118 Tangent numbers are calculated as intermediates in the calculation of the
119 <a class="link" href="bernoulli_numbers.html" title="Bernoulli Numbers">Bernoulli numbers</a>:
120 refer to the <a class="link" href="bernoulli_numbers.html" title="Bernoulli Numbers">Bernoulli
121 numbers</a> documentation for details.
124 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
125 <td align="left"></td>
126 <td align="right"><div class="copyright-footer">Copyright © 2006-2019 Nikhar
127 Agrawal, Anton Bikineev, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos,
128 Hubert Holin, Bruno Lalande, John Maddock, Jeremy Murphy, Matthew Pulver, Johan
129 Råde, Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg,
130 Daryle Walker and Xiaogang Zhang<p>
131 Distributed under the Boost Software License, Version 1.0. (See accompanying
132 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>)
137 <div class="spirit-nav">
138 <a accesskey="p" href="bernoulli_numbers.html"><img src="../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../number_series.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="primes.html"><img src="../../../../../../doc/src/images/next.png" alt="Next"></a>