J3/07-336 To: J3 From: Van Snyder Subject: Move special function procedures to a standard module Date: 14 November 2007 1. Introduction Responding to the straw votes on 14 November 2007, this paper changes the intrinsic procedures to evaluate special mathematical functions from intrinsic procedures to module procedures in a nonintrinsic module. 2. Edits w.r.t. 07-007r3 [342ff]------------------------------------------------------------------- Random editorial matter: Add "Table 13.1" to the headings for table 13.1 on its continuation pages. [427:9]------------------------------------------------------------------- Editor: Delete "intrinsic" from the subclause title. [427:11]------------------------------------------------------------------ Editor: Before "five" insert "one standard nonintrinsic module to support special mathematical functions and". [430:27+]----------------------------------------------------------------- Editor: Insert a new subclause heading and introduction: "<<13.8.3>> The FORTRAN_SPECIAL_FUNCTIONS module>> "<<13.8.3.1 General>> "The FORTRAN_SPECIAL_FUNCTIONS module defines public generic identifiers for procedures that evaluate special mathematical functions. This module is optional. If a processor provides this module, it shall provide the procedures specified in this subclause, with the interfaces and functionalities specified in this subclause. The procedure interfaces are summarized in Table 13.3. STRAW VOTE: Require only default integer kinds, and default real and double precision real kinds, as arguments for the specific procedures accessed by the generic names? "In the Class column of Table 13.3, " E indicates that the procedure is an elemental function, and " T indicates that the procedure is a transformational function. " Table 13.3: Standard generic identifiers of procedures to evaluate special mathematical functions" Make a table of the same form as Table 13.1, and move the entries for BESSEL_[JY][01N] (page 342), ERF* (page 343), GAMMA (page 344) and LOG_GAMMA (page 345) to this table. Move the following subclauses from 13.7 to here: 13.7.20 BESSEL_J0 13.7.21 BESSEL_J1 13.7.22 BESSEL_JN 13.7.23 BESSEL_Y0 13.7.24 BESSEL_Y1 13.7.25 BESSEL_YN 17.7.59 ERF 13.7.60 ERFC 13.7.61 ERFC_SCALED 13.7.70 GAMMA 13.7.105 LOG_GAMMA making them subsubsections 13.8.3.2 ... 13.8.3.12