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.77.1">
7 <link rel=
"home" href=
"../../index.html" title=
"Math Toolkit 2.5.1">
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:
46 <span class=
"inlinemediaobject"><img src=
"../../../equations/tangent_number_def.svg"></span>
52 <span class=
"inlinemediaobject"><img src=
"../../../equations/tangent_number_def2.svg"></span>
55 Tangent numbers are used in the computation of Bernoulli numbers, but are
56 also made available here.
59 <a name=
"math_toolkit.number_series.tangent_numbers.h0"></a>
60 <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>
62 <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>
64 <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>
65 <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>
67 <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>
68 <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>
70 <span class=
"comment">// Multiple tangent numbers (default policy).
</span>
71 <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>
72 <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>
73 <span class=
"keyword">const
</span> <span class=
"keyword">unsigned
</span> <span class=
"identifier">number_of_tangent_t2n
</span><span class=
"special">,
</span>
74 <span class=
"identifier">OutputIterator
</span> <span class=
"identifier">out_it
</span><span class=
"special">);
</span>
76 <span class=
"comment">// Multiple tangent numbers (user policy).
</span>
77 <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>
78 <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>
79 <span class=
"keyword">const
</span> <span class=
"keyword">unsigned
</span> <span class=
"identifier">number_of_tangent_t2n
</span><span class=
"special">,
</span>
80 <span class=
"identifier">OutputIterator
</span> <span class=
"identifier">out_it
</span><span class=
"special">,
</span>
81 <span class=
"keyword">const
</span> <span class=
"identifier">Policy
</span><span class=
"special">&</span> <span class=
"identifier">pol
</span><span class=
"special">);
</span>
84 <a name=
"math_toolkit.number_series.tangent_numbers.h1"></a>
85 <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>
88 We can compute and save a few Tangent numbers.
90 <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>
92 <span class=
"comment">// Start with Bernoulli number
0.
</span>
93 <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>
95 <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>
96 <span class=
"special">{
</span> <span class=
"comment">// Show vector of even Tangent numbers, showing all significant decimal digits.
</span>
97 <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>
98 <span class=
"special"><<</span> <span class=
"string">" "</span>
99 <span class=
"special"><<</span> <span class=
"identifier">tn
</span><span class=
"special">[
</span><span class=
"identifier">i
</span><span class=
"special">];
</span>
100 <span class=
"special">}
</span>
101 <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>
106 <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>
109 The source of this example is at
<a href=
"../../../../example/bernoulli_example.cpp" target=
"_top">bernoulli_example.cpp
</a>
112 <a name=
"math_toolkit.number_series.tangent_numbers.h2"></a>
113 <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>
116 Tangent numbers are calculated as intermediates in the calculation of the
117 <a class=
"link" href=
"bernoulli_numbers.html" title=
"Bernoulli Numbers">Bernoulli numbers
</a>:
118 refer to the
<a class=
"link" href=
"bernoulli_numbers.html" title=
"Bernoulli Numbers">Bernoulli
119 numbers
</a> documentation for details.
122 <table xmlns:
rev=
"http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width=
"100%"><tr>
123 <td align=
"left"></td>
124 <td align=
"right"><div class=
"copyright-footer">Copyright
© 2006-
2010,
2012-
2014 Nikhar Agrawal,
125 Anton Bikineev, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert
126 Holin, Bruno Lalande, John Maddock, Jeremy Murphy, Johan R
åde, Gautam Sewani,
127 Benjamin Sobotta, Thijs van den Berg, Daryle Walker and Xiaogang Zhang
<p>
128 Distributed under the Boost Software License, Version
1.0. (See accompanying
129 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>)
134 <div class=
"spirit-nav">
135 <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>