ISO/IEC TS 18661-1:2014
(Main)Information technology — Programming languages, their environments, and system software interfaces — Floating-point extensions for C — Part 1: Binary floating-point arithmetic
Information technology — Programming languages, their environments, and system software interfaces — Floating-point extensions for C — Part 1: Binary floating-point arithmetic
ISO/IEC TS 18661-1:2014 extends programming language C to support binary floating-point arithmetic conforming to ISO/IEC/IEEE 60559:2011. It covers all requirements of IEC 60559 as they pertain to C floating types that use IEC 60559 binary formats. ISO/IEC TS 18661-1:2014 does not cover decimal floating-point arithmetic, nor does it cover most optional features of IEC 60559. ISO/IEC TS 18661-1:2014 is primarily an update to IEC 9899:2011 (C11), normative Annex F (IEC 60559 floating-point arithmetic). However, it proposes that the new interfaces that are suitable for general implementations be added in the Library clauses of C11. Also it includes a few auxiliary changes in C11 where the specification is problematic for IEC 60559 support.
Technologies de l’information — Langages de programmation, leurs environnements et interfaces du logiciel système — Extensions à virgule flottante pour C — Partie 1: Arithmétique binaire en virgule flottante
General Information
Standards Content (Sample)
TECHNICAL ISO/IEC
SPECIFICATION TS
18661-1
First edition
2014-07-15
Information technology — Programming
languages, their environments, and
system software interfaces — Floating-
point extensions for C —
Part 1:
Binary floating-point arithmetic
Technologies de l’information — Langages de programmation, leurs
environnements et interfaces du logiciel système — Extensions à
virgule flottante pour C —
Partie 1: Arithmétique binaire en virgule flottante
Reference number
©
ISO/IEC 2014
© ISO/IEC 2014
All rights reserved. Unless otherwise specified, no part of this publication may be reproduced or utilized otherwise in any form or by any
means, electronic or mechanical, including photocopying, or posting on the internet or an intranet, without prior written permission.
Permission can be requested from either ISO at the address below or ISO’s member body in the country of the requester.
ISO copyright office
Case postale 56 CH-1211 Geneva 20
Tel. + 41 22 749 01 11
Fax + 41 22 749 09 47
E-mail copyright@iso.org
Web www.iso.org
Published in Switzerland
ii © ISO/IEC 2014 – All rights reserved
Contents Page
Introduction . v
Background . v
IEC 60559 floating-point standard . v
C support for IEC 60559 . vi
Purpose . vii
1 Scope . 1
2 Conformance . 1
3 Normative references . 1
4 Terms and definitions . 2
5 C standard conformance . 2
5.1 Freestanding implementations . 2
5.2 Predefined macros . 2
5.3 Standard headers . 3
6 Revised floating-point standard . 5
7 Types . 6
7.1 Terminology . 6
7.2 Canonical representation . 7
8 Operation binding . 8
9 Floating to integer conversion . 13
10 Conversions between floating types and character sequences . 13
10.1 Conversions with decimal character sequences . 13
10.2 Conversions to character sequences . 14
11 Constant rounding directions . 15
12 NaN support . 22
13 Integer width macros . 27
14 Mathematics . 29
14.1 Nearest integer functions . 29
14.1.1 Round to integer value in floating type . 29
14.1.2 Convert to integer type . 31
14.2 The llogb functions . 34
14.3 Max-min magnitude functions . 35
14.4 The nextup and nextdown functions . 36
14.5 Functions that round result to narrower type . 37
14.6 Comparison macros . 40
14.7 Classification macros . 41
14.8 Total order functions . 43
14.9 Canonicalize functions . 44
14.10 NaN functions . 45
15 The floating-point environment . 47
15.1 The fesetexcept function . 47
15.2 The fetestexceptflag function . 48
15.3 Control modes . 48
16 Type-generic math . 50
Bibliography . 52
© ISO/IEC 2014 – All rights reserved iii
Foreword
ISO (the International Organization for Standardization) and IEC (the International Electrotechnical
Commission) form the specialized system for worldwide standardization. National bodies that are members of
ISO or IEC participate in the development of International Standards through technical committees
established by the respective organization to deal with particular fields of technical activity. ISO and IEC
technical committees collaborate in fields of mutual interest. Other international organizations, governmental
and non-governmental, in liaison with ISO and IEC, also take part in the work. In the field of information
technology, ISO and IEC have established a joint technical committee, ISO/IEC JTC 1.
The procedures used to develop this document and those intended for its further maintenance are described
in the ISO/IEC Directives, Part 1. In particular the different approval criteria needed for the different types of
document should be noted. This document was drafted in accordance with the editorial rules of the
ISO/IEC Directives, Part 2 (see www.iso.org/directives).
Attention is drawn to the possibility that some of the elements of this document may be the subject of patent
rights. ISO and IEC shall not be held responsible for identifying any or all such patent rights. Details of any
patent rights identified during the development of the document will be in the Introduction and/or on the ISO
list of patent declarations received (see www.iso.org/patents).
Any trade name used in this document is information given for the convenience of users and does not
constitute an endorsement.
For an explanation on the meaning of ISO specific terms and expressions related to conformity assessment,
as well as information about ISO's adherence to the WTO principles in the Technical Barriers to Trade (TBT)
see the following URL: Foreword - Supplementary information
The committee responsible for this document is ISO/IEC JTC 1, Information technology, SC 22, Programming
languages, their environments, and system software interfaces.
ISO/IEC TS 18661 consists of the following parts, under the general title Information technology —
Programming languages, their environments, and system software interfaces — Floating-point extensions
for C:
Part 1: Binary floating-point arithmetic
Part 2: Decimal floating-point arithmetic
Part 3: Interchange and extended types
Part 4: Supplementary functions
Part 5: Supplementary attributes
Part 1 updates ISO/IEC 9899:2011, Information technology — Programming languages — C, Annex F in
particular, to support all required features of ISO/IEC/IEEE 60559:2011, Information technology —
Microprocessor Systems — Floating-point arithmetic.
Part 2 supersedes ISO/IEC TR 24732:2009, Information technology — Programming languages, their
environments and system software interfaces — Extension for the programming language C to support
decimal floating-point arithmetic.
Parts 3-5 specify extensions to ISO/IEC 9899:2011 for features recommended in ISO/IEC/IEEE 60559:2011.
iv © ISO/IEC 2014 – All rights reserved
Introduction
Background
IEC 60559 floating-point standard
The IEEE 754-1985 standard for binary floating-point arithmetic was motivated by an expanding diversity in
floating-point data representation and arithmetic, which made writing robust programs, debugging, and moving
programs between systems exceedingly difficult. Now the great majority of systems provide data formats and
arithmetic operations according to this standard. The IEC 60559:1989 international standard was equivalent to
the IEEE 754-1985 standard. Its stated goals were:
1 Facilitate movement of existing programs from diverse computers to those that adhere to this
standard.
2 Enhance the capabilities and safety available to programmers who, though not expert in
numerical methods, may well be attempting to produce numerically sophisticated programs.
However, we recognize that utility and safety are sometimes antagonists.
3 Encourage experts to develop and distribute robust and efficient numerical programs that are
portable, by way of minor editing and recompilation, onto any computer that conforms to this
standard and possesses adequate capacity. When restricted to a declared subset of the
standard, these programs should produce identical results on all conforming systems.
4 Provide direct support for
a. Execution-time diagnosis of anomalies
b. Smoother handling of exceptions
c. Interval arithmetic at a reasonable cost
5 Provide for development of
a. Standard elementary functions such as exp and cos
b. Very high precision (multiword) arithmetic
c. Coupling of numerical and symbolic algebraic computation
6 Enable rather than preclude further refinements and extensions.
To these ends, the standard specified a floating-point model comprising:
formats – for binary floating-point data, including representations for Not-a-Number (NaN) and signed
infinities and zeros
operations – basic arithmetic operations (addition, multiplication, etc.) on the format data to compose a
well-defined, closed arithmetic system; also conversions between floating-point formats and decimal
character sequences, and a few auxiliary operations
context – status flags for detecting exceptional conditions (invalid operation, division by zero, overflow,
underflow, and inexact) and controls for choosing different rounding methods
The ISO/IEC/IEEE 60559:2011 international standard is equivalent to the IEEE 754-2008 standard for
floating-point arithmetic, which is a major revision to IEEE 754-1985.
The revised standard specifies more formats, including decimal as well as binary. It adds a 128-bit binary
format to its basic formats. It defines extended formats for all of its basic formats. It specifies data interchange
© ISO/IEC 2014 – All rights reserved v
formats (which may or may not be arithmetic), including a 16-bit binary format and an unbounded tower of
wider formats. To conform to the floating-point standard, an implementation must provide at least one of the
basic formats, along with the required operations.
The revised standard specifies more operations. New requirements include – among others – arithmetic
operations that round their result to a narrower format than the operands (with just one rounding), more
conversions with integer types, more classifications and comparisons, and more operations for ma
...
Questions, Comments and Discussion
Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.