1<section xmlns="http://docbook.org/ns/docbook" version="5.0"
2	 xml:id="status.iso.specfun" xreflabel="Status C++ 29124">
3<?dbhtml filename="status_iso_cxxis29124.html"?>
4
5<info><title>C++ IS 29124</title>
6  <keywordset>
7    <keyword>ISO C++</keyword>
8    <keyword>Special Functions</keyword>
9  </keywordset>
10</info>
11
12<para>
13This table is based on the table of contents of ISO/IEC FDIS 29124,
14Doc No: N3060, Date: 2010-03-06,
15"Extensions to the C++ Library to support mathematical special functions".
16</para>
17
18<para>
19Complete support for IS 29124 is in GCC 6.1 and later releases, when using
20at least C++11 (for older releases or C++98/C++03 use TR1 instead).
21For C++11 and C++14 the additions to the library are not declared by their
22respective headers unless <code>__STDCPP_WANT_MATH_SPEC_FUNCS__</code>
23is defined as a macro that expands to a non-zero integer constant.
24For C++17 the special functions are always declared (since GCC 7.1).
25</para>
26
27<para>
28When the special functions are declared the macro
29<code>__STDCPP_MATH_SPEC_FUNCS__</code> is defined to <code>201003L</code>.
30</para>
31
32<para>
33In addition to the special functions defined in IS 29124, for
34non-strict modes (i.e. <code>-std=gnu++NN</code> modes) the
35hypergeometric functions and confluent hypergeometric functions
36from TR1 are also provided, defined in namespace
37<code>__gnu_cxx</code>.
38</para>
39
40<!-- Status is Yes or No, Broken/Partial-->
41<!--
42   Yes
43
44   No
45      <?dbhtml bgcolor="#C8B0B0" ?>
46   Broken/Partial
47      <?dbhtml bgcolor="#B0B0B0" ?>
48-->
49<table frame="all" xml:id="table.specfun_status">
50<title>C++ Special Functions Implementation Status</title>
51
52<tgroup cols="4" align="left" colsep="0" rowsep="1">
53<colspec colname="c1"/>
54<colspec colname="c2"/>
55<colspec colname="c3"/>
56<colspec colname="c4"/>
57
58  <thead>
59    <row>
60      <entry>Section</entry>
61      <entry>Description</entry>
62      <entry>Status</entry>
63      <entry>Comments</entry>
64    </row>
65  </thead>
66  <tbody>
67    <row>
68      <?dbhtml bgcolor="#B0B0B0" ?>
69      <entry>7</entry>
70      <entry>Macro names</entry>
71      <entry>Partial</entry>
72      <entry>No diagnostic for inconsistent definitions of
73             <code>__STDCPP_WANT_MATH_SPEC_FUNCS__</code></entry>
74    </row>
75    <row>
76      <entry>8</entry>
77      <entry>Mathematical special functions</entry>
78      <entry>Y</entry>
79      <entry/>
80    </row>
81    <row>
82      <entry>8.1</entry>
83      <entry>Additions to header <code>&lt;cmath&gt;</code> synopsis</entry>
84      <entry>Y</entry>
85      <entry/>
86    </row>
87    <row>
88      <entry>8.1.1</entry>
89      <entry>associated Laguerre polynomials</entry>
90      <entry>Y</entry>
91      <entry/>
92    </row>
93    <row>
94      <entry>8.1.2</entry>
95      <entry>associated Legendre functions</entry>
96      <entry>Y</entry>
97      <entry/>
98    </row>
99    <row>
100      <entry>8.1.3</entry>
101      <entry>beta function</entry>
102      <entry>Y</entry>
103      <entry/>
104    </row>
105    <row>
106      <entry>8.1.4</entry>
107      <entry>(complete) elliptic integral of the first kind</entry>
108      <entry>Y</entry>
109      <entry/>
110    </row>
111    <row>
112      <entry>8.1.5</entry>
113      <entry>(complete) elliptic integral of the second kind</entry>
114      <entry>Y</entry>
115      <entry/>
116    </row>
117    <row>
118      <entry>8.1.6</entry>
119      <entry>(complete) elliptic integral of the third kind</entry>
120      <entry>Y</entry>
121      <entry/>
122    </row>
123    <row>
124      <entry>8.1.7</entry>
125      <entry>regular modified cylindrical Bessel functions</entry>
126      <entry>Y</entry>
127      <entry/>
128    </row>
129    <row>
130      <entry>8.1.8</entry>
131      <entry>cylindrical Bessel functions (of the first kind)</entry>
132      <entry>Y</entry>
133      <entry/>
134    </row>
135    <row>
136      <entry>8.1.9</entry>
137      <entry>irregular modified cylindrical Bessel functions</entry>
138      <entry>Y</entry>
139      <entry/>
140    </row>
141    <row>
142      <entry>8.1.10</entry>
143      <entry>cylindrical Neumann functions</entry>
144      <entry>Y</entry>
145      <entry/>
146    </row>
147    <row>
148      <entry>8.1.11</entry>
149      <entry>(incomplete) elliptic integral of the first kind</entry>
150      <entry>Y</entry>
151      <entry/>
152    </row>
153    <row>
154      <entry>8.1.12</entry>
155      <entry>(incomplete) elliptic integral of the second kind</entry>
156      <entry>Y</entry>
157      <entry/>
158    </row>
159    <row>
160      <entry>8.1.13</entry>
161      <entry>(incomplete) elliptic integral of the third kind</entry>
162      <entry>Y</entry>
163      <entry/>
164    </row>
165    <row>
166      <entry>8.1.14</entry>
167      <entry>exponential integral</entry>
168      <entry>Y</entry>
169      <entry/>
170    </row>
171    <row>
172      <entry>8.1.15</entry>
173      <entry>Hermite polynomials</entry>
174      <entry>Y</entry>
175      <entry/>
176    </row>
177    <row>
178      <entry>8.1.16</entry>
179      <entry>Laguerre polynomials</entry>
180      <entry>Y</entry>
181      <entry/>
182    </row>
183    <row>
184      <entry>8.1.17</entry>
185      <entry>Legendre polynomials</entry>
186      <entry>Y</entry>
187      <entry/>
188    </row>
189    <row>
190      <entry>8.1.18</entry>
191      <entry>Riemann zeta function</entry>
192      <entry>Y</entry>
193      <entry/>
194    </row>
195    <row>
196      <entry>8.1.19</entry>
197      <entry>spherical Bessel functions (of the first kind)</entry>
198      <entry>Y</entry>
199      <entry/>
200    </row>
201    <row>
202      <entry>8.1.20</entry>
203      <entry>spherical associated Legendre functions</entry>
204      <entry>Y</entry>
205      <entry/>
206    </row>
207    <row>
208      <entry>8.1.21</entry>
209      <entry>spherical Neumann functions</entry>
210      <entry>Y</entry>
211      <entry/>
212    </row>
213    <row>
214      <entry>8.2</entry>
215      <entry>Additions to header <code>&lt;math.h&gt;</code></entry>
216      <entry>Y</entry>
217      <entry/>
218    </row>
219    <row>
220      <?dbhtml bgcolor="#B0B0B0" ?>
221      <entry>8.3</entry>
222      <entry>The header <code>&lt;ctgmath&gt;</code></entry>
223      <entry>Partial</entry>
224      <entry>Conflicts with C++ 2011 requirements.</entry>
225    </row>
226    <row>
227      <?dbhtml bgcolor="#C8B0B0" ?>
228      <entry>8.4</entry>
229      <entry>The header <code>&lt;tgmath.h&gt;</code></entry>
230      <entry>N</entry>
231      <entry>Conflicts with C++ 2011 requirements.</entry>
232    </row>
233  </tbody>
234</tgroup>
235</table>
236
237<section xml:id="iso.specfun.specific" xreflabel="Implementation Specific"><info><title>Implementation Specific Behavior</title></info>
238
239   <para>For behaviour which is specified by the 2011 standard,
240      see <link linkend="iso.2011.specific">C++ 2011 Implementation
241      Specific Behavior</link>. This section documents behaviour which
242      is required by IS 29124.
243   </para>
244
245   <para>
246     <emphasis>7.2 [macro.user]/3 /4</emphasis> The functions declared in
247     Clause 8 are only declared when
248     <code>__STDCPP_WANT_MATH_SPEC_FUNCS__ == 1</code>
249     (or in C++17 mode, for GCC 7.1 and later).
250   </para>
251
252   <para>
253     <emphasis>8.1.1 [sf.cmath.Lnm]/1</emphasis> The effect of calling
254     these functions with <code>n >= 128</code> or <code>m >= 128</code>
255     should be described here.
256   </para>
257
258   <para>
259     <emphasis>8.1.2 [sf.cmath.Plm]/3</emphasis> The effect of calling
260     these functions with <code>l >= 128</code> should be described here.
261   </para>
262
263   <para>
264     <emphasis>8.1.3 [sf.cmath.I]/3</emphasis> The effect of calling
265     these functions with <code>nu >= 128</code> should be described here.
266   </para>
267
268   <para>
269     <emphasis>8.1.8 [sf.cmath.J]/3</emphasis> The effect of calling
270     these functions with <code>nu >= 128</code> should be described here.
271   </para>
272
273   <para>
274     <emphasis>8.1.9 [sf.cmath.K]/3</emphasis> The effect of calling
275     these functions with <code>nu >= 128</code> should be described here.
276   </para>
277
278   <para>
279     <emphasis>8.1.10 [sf.cmath.N]/3</emphasis> The effect of calling
280     these functions with <code>nu >= 128</code> should be described here.
281   </para>
282
283   <para>
284     <emphasis>8.1.15 [sf.cmath.Hn]/3</emphasis> The effect of calling
285     these functions with <code>n >= 128</code> should be described here.
286   </para>
287
288   <para>
289     <emphasis>8.1.16 [sf.cmath.Ln]/3</emphasis> The effect of calling
290     these functions with <code>n >= 128</code> should be described here.
291   </para>
292
293   <para>
294     <emphasis>8.1.17 [sf.cmath.Pl]/3</emphasis> The effect of calling
295     these functions with <code>l >= 128</code> should be described here.
296   </para>
297
298   <para>
299     <emphasis>8.1.19 [sf.cmath.j]/3</emphasis> The effect of calling
300     these functions with <code>n >= 128</code> should be described here.
301   </para>
302
303   <para>
304     <emphasis>8.1.20 [sf.cmath.Ylm]/3</emphasis> The effect of calling
305     these functions with <code>l >= 128</code> should be described here.
306   </para>
307
308   <para>
309     <emphasis>8.1.21 [sf.cmath.n]/3</emphasis> The effect of calling
310     these functions with <code>n >= 128</code> should be described here.
311   </para>
312
313</section>
314
315</section>
316