1、 INCITS/ISO/IEC 24747:20092010 (ISO/IEC 24747:2009, IDT) Information technology - Programming languages, their environments and system software interfaces - Extensions to the C Library to support mathematical special functions Reaffirmed as INCITS/ISO/IEC 24747:2009 R2015INCITS/ISO/IEC 24747:2009201
2、0 PDF disclaimer This PDF file may contain embedded typefaces. In accordance with Adobes licensing policy, this file may be printed or viewed but shall not be edited unless the typefaces which are embedded are licensed to and installed on the computer performing the editing. In downloading this file
3、, parties accept therein the responsibility of not infringing Adobes licensing policy. The ISO Central Secretariat accepts no liability in this area. Adobe is a trademark of Adobe Systems Incorporated. Details of the software products used to create this PDF file can be found in the General Info rel
4、ative to the file; the PDF-creation parameters were optimized for printing. Every care has been taken to ensure that the file is suitable for use by ISO member bodies. In the unlikely event that a problem relating to it is found, please inform the Central Secretariat at the address given below. Adop
5、ted by INCITS (InterNational Committee for Information Technology Standards) as an American National Standard. Date of ANSI Approval: 11/17/2010 Published by American National Standards Institute, 25 West 43rd Street, New York, New York 10036 Copyright 2010 by Information Technology Industry Council
6、 (ITI). All rights reserved. These materials are subject to copyright claims of International Standardization Organization (ISO), International Electrotechnical Commission (IEC), American National Standards Institute (ANSI), and Information Technology Industry Council (ITI). Not for resale. No part
7、of this publication may be reproduced in any form, including an electronic retrieval system, without the prior written permission of ITI. All requests pertaining to this standard should be submitted to ITI, 1101 K Street NW, Suite 610, Washington DC 20005. Printed in the United States of America ii
8、ITIC 2010 All rights reserved ContentsContents iiiList of Tables vForeword viIntroduction vii1 Scope 11.1 Relation to C Standard Library Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Categories of extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9、. . . . . . . . . . . . . . 12 Normative references 33 Terms, definitions, and symbols 54 Conformance 75 Predefined macro names 96 Mathematical special functions 116.1 Standard headers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116.2 Additions to head
10、er . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116.2.1 associated Laguerre polynomials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146.2.2 associated Legendre polynomials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146.2
11、.3 beta function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156.2.4 (complete) elliptic integral of the first kind . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156.2.5 (complete) elliptic integral of the second kind . . . . . . . . . . . . . .
12、. . . . . . . . . . . . . 156.2.6 (complete) elliptic integral of the third kind . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166.2.7 regular modified cylindrical Bessel functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 166.2.8 cylindrical Bessel functions (of the first kind
13、) . . . . . . . . . . . . . . . . . . . . . . . . . . . 166.2.9 irregular modified cylindrical Bessel functions . . . . . . . . . . . . . . . . . . . . . . . . . . 176.2.10 cylindrical Neumann functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176.2.11 (incomplete) ellip
14、tic integral of the first kind . . . . . . . . . . . . . . . . . . . . . . . . . . . 176.2.12 (incomplete) elliptic integral of the second kind . . . . . . . . . . . . . . . . . . . . . . . . . . 18iiiISO/IEC 24747:2009(E) ISO/IEC 24747:2009(E) ISO/IEC 2009 All rights reservedCONTENTS CONTENTS iv6.2
15、.13 (incomplete) elliptic integral of the third kind . . . . . . . . . . . . . . . . . . . . . . . . . . . 186.2.14 exponential integral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186.2.15 Hermite polynomials . . . . . . . . . . . . . . . . . . . . . . . . . .
16、. . . . . . . . . . . . . . 196.2.16 Laguerre polynomials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196.2.17 Legendre polynomials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196.2.18 Riemann zeta function . . . . . . . . . . . . .
17、 . . . . . . . . . . . . . . . . . . . . . . . . . . 206.2.19 spherical Bessel functions (of the first kind) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206.2.20 spherical associated Legendre functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206.2.21 spherical Neumann
18、 functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216.3 Additions to header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21Bibliography 23Index 25iv ISO/IEC 24747:2009(E) ISO/IEC 2009 All rights reservedList of Tables1 Numerical library
19、 summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Additions to header synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Additions to header synopsis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22vISO/IEC
20、 24747:2009(E) ISO/IEC 2009 All rights reservedForewordISO (the International Organization for Standardization) and IEC (the International Electrotechnical Commission) formthe specialized system for worldwide standardization. National bodies that are members of ISO or IEC participate in thedevelopme
21、nt of International Standards through technical committees established by the respective organization to dealwith particular fields of technical activity. ISO and IEC technical committees collaborate in fields of mutual interest.Other international organizations, governmental and non-governmental, i
22、n liaison with ISO and IEC, also take part inthe work. In the field of information technology, ISO and IEC have established a joint technical committee, ISO/IECJTC 1.International Standards are drafted in accordance with the rules given in the ISO/IEC Directives, Part 2.The main task of the joint te
23、chnical committee is to prepare International Standards. Draft International Standardsadopted by the joint technical committee are circulated to national bodies for voting. Publication as an InternationalStandard requires approval by at least 75 % of the national bodies casting a vote.Attention is d
24、rawn to the possibility that some of the elements of this document may be the subject of patent rights. ISOand IEC shall not be held responsible for identifying any or all such patent rights.vi ISO/IEC 24747 was prepared by Joint Technical Committee ISO/IEC JTC 1, Information technology, Subcommitte
25、e SC 22, Programming languages, their environments and system software interfaces. ISO/IEC 24747:2009(E) ISO/IEC 2009 All rights reservedIntroductionThis International Standard is divided into three major subdivisions: preliminary elements (clauses 1 - 4); indicating conformance (clause 5); the libr
26、ary facilities (clause 6).Footnotes are provided to emphasize consequences of the rules described in that subclause or elsewhere in this In-ternational Standard. References are used to refer to other related and subclauses. A bibliography listsdocuments that were referred to during the preparation o
27、f this International Standard.viidocumentsISO/IEC 24747:2009(E) ISO/IEC 2009 All rights reserved1 Scope scop1.1 Relation to C Standard Library Introduction descr1 This International Standard defines extensions to the C standard library that is defined in the International Standard forthe C programmi
28、ng language, see Clause 2.2 Unless otherwise specified, the whole of the C Standard Library is included into this International Standard by reference,see Clause 2.1.2 Categories of extensions exten1 This International Standard defines library extensions to the C Standard Library to support Mathemati
29、cal Special func-tions to be added to and .Table 1: Numerical library summarySubclause Header(s)6.2 Additions to 6.3 Additions to 1INTERNATIONAL STANDARD Information technology Programming languages, their environments and system software interfaces Extensions to the C Library to support mathematica
30、l special functions ISO/IEC 24747:2009(E) ISO/IEC 2009 All rights reserved(Blank page) 2ISO/IEC 24747:2009(E) ISO/IEC 2009 All rights reserved2 Normative references norm1 The following referenced documents are indispensable for the application of this document. For dated references,only the edition
31、cited applies. For undated references, the latest edition of the referenced document (including anyamendments) applies.234563ISO/IEC 9899:1999, Programming languages C ISO/IEC 9899:1999/Cor. 1:2001, Programming languages C Technical Corrigendum 1 ISO/IEC 9899:1999/Cor. 2:2004, Programming languages
32、C Technical Corrigendum 2 ISO/IEC 9899:1999/Cor. 3:2007, Programming languages C Technical Corrigendum 3 ISO/IEC 2382-1:1993, Information technology Vocabulary Part 1: Fundamental terms ISO/IEC 24747:2009(E) ISO/IEC 2009 All rights reserved(Blank page) 4ISO/IEC 24747:2009(E) ISO/IEC 2009 All rights
33、reserved3 Terms, definitions, and symbols terms1 For the purposes of this document, the terms and definitions given in ISO/IEC 9899:1999 and the associated TechnicalCorrigenda and ISO/IEC 2382-1 apply, see Clause 2.51ISO/IEC 24747:2009(E) ISO/IEC 2009 All rights reserved(Blank page) 6ISO/IEC 24747:2
34、009(E) ISO/IEC 2009 All rights reserved4 Conformance confor1 If a “shall“ requirement is violated, the behavior is undefined.7ISO/IEC 24747:2009(E) ISO/IEC 2009 All rights reserved(Blank page) 8ISO/IEC 24747:2009(E) ISO/IEC 2009 All rights reserved5 Predefined macro names pred1 The following macro n
35、ame is conditionally defined by the implementation:_STDC_MATH_SPEC_FUNCS_ The integer constant 200808, intended to indicate conformance to this InternationalStandard. 1)1)The intention is that this will remain an integer constant of type long int that is increased with each revision of this Internat
36、ional Standard.9ISO/IEC 24747:2009(E) ISO/IEC 2009 All rights reserved(Blank page) 10ISO/IEC 24747:2009(E) ISO/IEC 2009 All rights reserved6 Mathematical special functions num.sf6.1 Standard headers num.sf.header1 The functions declared in Clause 6 and its subclauses are not declared by their respec
37、tive header if _STDC_WANT_-MATH_SPEC_FUNCS_ is defined as a macro which expands to the integer constant 0 at the point in the source file wherethe appropriate header is included.2 The functions declared in Clause 6 and its subclauses are declared by their respective headers if _STDC_WANT_MATH_-SPEC_
38、FUNCS_ is defined as a macro which expands to the integer constant 1 at the point in the source file where theappropriate header is included. 2)3 Functions declared in Clause 6 and its subclauses shall not be declared by their respective headers if _STDC_WANT_-MATH_SPEC_FUNCS_ is not defined as a ma
39、cro at the point in the source file where the appropriate header is included.4 Within a preprocessing translation unit, _STDC_WANT_MATH_SPEC_FUNCS_ shall be defined identically for all in-clusions of any headers from Clause 6. If _STDC_WANT_MATH_SPEC_FUNCS_ is defined differently for any suchinclusi
40、on, the implementation shall issue a diagnostic as if a preprocessor error directive was used.6.2 Additions to header num.sf.math1 Table 2 summarizes the functions that are added to header . The detailed signatures are given in the synopsis.2 Each of these functions is provided for arguments of type
41、 float, double, and long double. The signatures added toheader are:/ 6.2.1 associated Laguerre polynomials:double assoc_laguerre(unsigned n, unsigned m, double x);float assoc_laguerref(unsigned n, unsigned m, float x);long double assoc_laguerrel(unsigned n, unsigned m, long double x);/ 6.2.2 associa
42、ted Legendre polynomials:double assoc_legendre(unsigned l, unsigned m, double x);float assoc_legendref(unsigned l, unsigned m, float x);long double assoc_legendrel(unsigned l, unsigned m, long double x);/ 6.2.3 beta function:double beta(double x, double y);float betaf(float x, float y);long double b
43、etal(long double x, long double y);2)Future revisions of this International Standard may define meanings for other values of _STDC_WANT_MATH_SPEC_FUNCS_.11ISO/IEC 24747:2009(E) ISO/IEC 2009 All rights reserved6.2 Additions to header Mathematical special functions 12/ 6.2.4 (complete) elliptic integr
44、al of the first kind:double comp_ellint_1(double k);float comp_ellint_1f(float k);long double comp_ellint_1l(long double k);/ 6.2.5 (complete) elliptic integral of the second kind:double comp_ellint_2(double k);float comp_ellint_2f(float k);long double comp_ellint_2l(long double k);/ 6.2.6 (complete
45、) elliptic integral of the third kind:double comp_ellint_3(double k, double nu);float comp_ellint_3f(float k, float nu);long double comp_ellint_3l(long double k, long double nu);/ 6.2.7 regular modified cylindrical Bessel functions:double cyl_bessel_i(double nu, double x);float cyl_bessel_if(float n
46、u, float x);long double cyl_bessel_il(long double nu, long double x);/ 6.2.8 cylindrical Bessel functions (of the first kind):double cyl_bessel_j(double nu, double x);float cyl_bessel_jf(float nu, float x);long double cyl_bessel_jl(long double nu, long double x);/ 6.2.9 irregular modified cylindrica
47、l Bessel functions:double cyl_bessel_k(double nu, double x);float cyl_bessel_kf(float nu, float x);long double cyl_bessel_kl(long double nu, long double x);/ 6.2.10 cylindrical Neumann functions;/ cylindrical Bessel functions (of the second kind):double cyl_neumann(double nu, double x);float cyl_neu
48、mannf(float nu, float x);long double cyl_neumannl(long double nu, long double x);/ 6.2.11 (incomplete) elliptic integral of the first kind:double ellint_1(double k, double phi);float ellint_1f(float k, float phi);long double ellint_1l(long double k, long double phi);/ 6.2.12 (incomplete) elliptic in
49、tegral of the second kind:double ellint_2(double k, double phi);float ellint_2f(float k, float phi);long double ellint_2l(long double k, long double phi);/ 6.2.13 (incomplete) elliptic integral of the third kind:double ellint_3(double k, double nu, double phi);float ellint_3f(float k, float nu, float phi);long double ellint_3l(long double