Information Technology — Programming languages, their environments, and system software interfaces — Floating-point extensions for C — Part 4: Supplementary functions

ISO/IEC TS 18661-4:2015 extends programming language C to include functions specified and recommended in ISO/IEC/IEEE 60559:2011.

Technologies de l'information — Langages de programmation, leurs environnements et interfaces du logiciel système — Extensions à virgule flottante pour C — Partie 4: Fonctions supplémentaires

General Information

Status
Published
Publication Date
05-Oct-2015
Current Stage
9092 - International Standard to be revised
Completion Date
25-Aug-2021
Ref Project

Buy Standard

Technical specification
ISO/IEC TS 18661-4:2015 - Information Technology -- Programming languages, their environments, and system software interfaces -- Floating-point extensions for C
English language
31 pages
sale 15% off
Preview
sale 15% off
Preview

Standards Content (Sample)

TECHNICAL ISO/IEC TS
SPECIFICATION 18661-4
First edition
2015-10-01
Information Technology —
Programming languages, their
environments, and system software
interfaces — Floating-point
extensions for C —
Part 4:
Supplementary functions
Technologies de l’information — Langages de programmation, leurs
environnements et interfaces du logiciel système — Extensions à
virgule flottante pour C —
Partie 4: Fonctions supplémentaires
Reference number
ISO/IEC TS 18661-4:2015(E)
©
ISO/IEC 2015

---------------------- Page: 1 ----------------------
ISO/IEC TS 18661-4:2015(E)

COPYRIGHT PROTECTED DOCUMENT
© ISO/IEC 2015, Published in Switzerland
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
Ch. de Blandonnet 8 • CP 401
CH-1214 Vernier, Geneva, Switzerland
Tel. +41 22 749 01 11
Fax +41 22 749 09 47
copyright@iso.org
www.iso.org
ii © ISO/IEC 2015 – All rights reserved

---------------------- Page: 2 ----------------------
ISO/IEC
 TS
 18661-­‐4:2015(E)

Foreword
 .
 iv

Introduction
 .
 vi

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
 .
 2

6
  Operation
 binding
 .
 5

7
  Mathematical
 functions
 in
 
 .
 6

8
  Reduction
 functions
 in
 
 .
 19

9
  Future
 directions
 for
 
 .
 26

10
  Type-­‐generic
 macros
 
 .
 27

11
  Constant
 rounding
 modes
 
 .
 27

Bibliography
 .
 31

©
 ISO/IEC
 2015
 –
 All
 rights
 reserved
  iii

---------------------- Page: 3 ----------------------
ISO/IEC
 TS
 18661-­‐4:2015(E)

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,
 Subcommittee

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

The
 following
 part
 is
 under
 preparation:

⎯ Part
 5:
 Supplementary
 attributes

ISO/IEC
 TS
 18661-­‐1
 updates
 ISO/IEC
 9899:2011,
 Information
 technology
 —
 Programming
 Language
 C,

annex
  F
  in
  particular,
  to
  support
  all
  required
  features
  of
  ISO/IEC/IEEE
  60559:2011,
  Information

technology
 —
 Microprocessor
 Systems
 —
 Floating-­‐point
 arithmetic.

ISO/IEC
  TS
  18661-­‐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.

iv
  ©
 ISO/IEC
 2015
 –
 All
 rights
 reserved

---------------------- Page: 4 ----------------------
ISO/IEC
 TS
 18661-­‐4:2015(E)

ISO/IEC
  TS
  18661O-3,
  ISO/IEC
  TS
  18661O-4,
  and
  ISO/IEC
  TS
  18661O-5
  specify
  extensions
  to

ISO/IEC
  9899:2011
 for
 features
 recommended
 in
 ISO/IEC/IEEE
 60559:2011.
©
 ISO/IEC
 2015
 –
 All
 rights
 reserved
  v

---------------------- Page: 5 ----------------------
ISO/IEC
 TS
 18661-­‐4:2015(E)

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
 the
 following:

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
 the
 following:

— 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
 specified
 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

vi
  ©
 ISO/IEC
 2015
 –
 All
 rights
 reserved

---------------------- Page: 6 ----------------------
ISO/IEC
 TS
 18661-­‐4:2015(E)

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
 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

managing
 flags
 and
 modes.
 New
 recommendations
 include
 an
 extensive
 set
 of
 mathematical
 functions

and
 seven
 reduction
 functions
 for
 sums
 and
 scaled
 products.

The
  revised
  standard
  places
  more
  emphasis
  on
  reproducible
  results,
  which
  is
  reflected
  in
  its

standardization
 of
 more
 operations.
 For
 the
 most
 part,
 behaviors
 are
 completely
 specified.
 The
 standard

requires
 conversions
 between
 floating-­‐point
 formats
 and
 decimal
 character
 sequences
 to
 be
 correctly

rounded
 for
 at
 least
 three
 more
 decimal
 digits
 than
 is
 required
 to
 distinguish
 all
 numbers
 in
 the
 widest

supported
  binary
  format;
  it
  fully
  specifies
  conversions
  involving
  any
  number
  of
  decimal
  digits.
  It

recommends
 that
 transcendental
 functions
 be
 correctly
 rounded.

The
 revised
 standard
 requires
 a
 way
 to
 specify
 a
 constant
 rounding
 direction
 for
 a
 static
 portion
 of

code,
 with
 details
 left
 to
 programming
 language
 standards.
 This
 feature
 potentially
 allows
 rounding

control
 without
 incurring
 the
 overhead
 of
 runtime
 access
 to
 a
 global
 (or
 thread)
 rounding
 mode.

Other
 features
 recommended
 by
 the
 revised
 standard
 include
 alternate
 methods
 for
 exception
 handling,

controls
 for
 expression
 evaluation
 (allowing
 or
 disallowing
 various
 optimizations),
 support
 for
 fully

reproducible
 results,
 and
 support
 for
 program
 debugging.

The
 revised
 standard,
 like
 its
 predecessor,
 defines
 its
 model
 of
 floating-­‐point
 arithmetic
 in
 the
 abstract.

It
 neither
 defines
 the
 way
 in
 which
 operations
 are
 expressed
 (which
 might
 vary
 depending
 on
 the

computer
 language
 or
 other
 interface
 being
 used),
 nor
 does
 it
 define
 the
 concrete
 representation

(specific
 layout
 in
 storage,
 or
 in
 a
 processor's
 register,
 for
 example)
 of
 data
 or
 context,
 except
 that
 it

does
 define
 specific
 encodings
 that
 are
 to
 be
 used
 for
 the
 exchange
 of
 floating-­‐point
 data
 between

different
 implementations
 that
 conform
 to
 the
 specification.

IEC
 60559
 does
 not
 include
 bindings
 of
 its
 floating-­‐point
 model
 for
 particular
 programming
 languages.

However,
  the
  revised
  standard
  does
  include
  guidance
  for
  programming
  language
  standards,
  in

recognition
  of
  the
  fact
  that
  features
  of
  the
  floating-­‐point
  standard,
  even
  if
  well
  supported
  in
  the

hardware,
 are
 not
 available
 to
 users
 unless
 the
 programming
 language
 provides
 a
 commensurate
 level

of
 support.
 The
 implementation’s
 combination
 of
 both
 hardware
 and
 software
 determines
 conformance

to
 the
 floating-­‐point
 standard.

C
 support
 for
 IEC
 60559

The
 C
 standard
 specifies
 floating-­‐point
 arithmetic
 using
 an
 abstract
 model.
 The
 representation
 of
 a

floating-­‐point
  number
  is
  specified
  in
  an
  abstract
  form
  where
  the
  constituent
  components
  (sign,

exponent,
 significand)
 of
 the
 representation
 are
 defined
 but
 not
 the
 internals
 of
 these
 components.
 In

particular,
 the
 exponent
 range,
 significand
 size,
 and
 the
 base
 (or
 radix)
 are
 implementation-­‐defined.

This
 allows
 flexibility
 for
 an
 implementation
 to
 take
 advantage
 of
 its
 underlying
 hardware
 architecture.

Furthermore,
 certain
 behaviors
 of
 operations
 are
 also
 implementation-­‐defined,
 for
 example
 in
 the
 area

of
 handling
 of
 special
 numbers
 and
 in
 exceptions.

©
 ISO/IEC
 2015
 –
 All
 rights
 reserved
  vii

---------------------- Page: 7 ----------------------
ISO/IEC
 TS
 18661-­‐4:2015(E)

The
 reason
 for
 this
 approach
 is
 historical.
 At
 the
 time
 when
 C
 was
 first
 standardized,
 before
 the
 floating-­‐
point
  standard
  was
  established,
  there
  were
  various
  hardware
  implementations
  of
  floating-­‐point

arithmetic
 in
 common
 use.
 Specifying
 the
 exact
 details
 of
 a
 representation
 would
 have
 made
 most
 of
 the

existing
 implementations
 at
 the
 time
 not
 conforming.

Beginning
 with
 ISO/IEC
 9899:1999
 (C99),
 C
 has
 included
 an
 optional
 second
 level
 of
 specification
 for

implementations
  supporting
  the
  floating-­‐point
  standard.
  C99,
  in
  conditionally
  normative
  annex
  F,

introduced
  nearly
  complete
  support
  for
  the
  IEC
  60559:1989
  standard
  for
  binary
  floating-­‐point

arithmetic.
  Also,
  C99’s
  informative
  annex
  G
  offered
  a
  specification
  of
  complex
  arithmetic
  that
  is

compatible
 with
 IEC
 60559:1989.

ISO/IEC
 9899:2011
 (C11)
 includes
 refinements
 to
 the
 C99
 floating-­‐point
 specification,
 though
 it
 is
 still

based
 on
 IEC
 60559:1989.
 C11
 upgraded
 annex
 G
 from
 “informative”
 to
 “conditionally
 normative”.

ISO/IEC
  TR
  24732:2009
  introduced
  partial
  C
  support
  for
  the
  decimal
  floating-­‐point
  arithmetic
  in

ISO/IEC/IEEE
 60559:2011.
 ISO/IEC
 TR
 24732,
 for
 which
 technical
 content
 was
 completed
 while
 IEEE

754-­‐2008
 was
 still
 in
 the
 later
 stages
 of
 development,
 specifies
 decimal
 types
 based
 on
 ISO/IEC/IEEE

60559:2011
 decimal
 formats,
 though
 it
 does
 not
 include
 all
 of
 the
 operations
 required
 by
 ISO/IEC/IEEE

60559:2011.

Purpose

The
 purpose
 of
 ISO/IEC
 TS
 18661
 is
 to
 provide
 a
 C
 language
 binding
 for
 ISO/IEC/IEEE
 60559:2011,

based
 on
 the
 C11
 standard,
 that
 delivers
 the
 goals
 of
 ISO/IEC/IEEE
 60559
 to
 users
 and
 is
 feasible
 to

implement.
 It
 is
 organized
 into
 five
 parts.

ISO/IEC
  TS
  18661-1
  provides
  changes
  to
  C11
  that
  cover
  all
  the
  requirements,
  plus
  some
  basic

recommendations,
  of
  ISO/IEC/IEEE
  60559:2011
  for
  binary
  floating-­‐point
  arithmetic.
  C

implementations
  intending
  to
  support
  ISO/IEC/IEEE
  60559:2011
  are
  expected
  to
  conform
  to

conditionally
 normative
 annex
 F
 as
 enhanced
 by
 the
 changes
 in
 ISO/IEC
 TS
 18661-1.

ISO/IEC
  TS
  18661-2
  enhances
  ISO/IEC
  TR
  24732
  to
  cover
  all
  the
  requirements,
  plus
  some
  basic

recommendations,
  of
  ISO/IEC/IEEE
  60559:2011
  for
  decimal
  floating-­‐point
  arithmetic.
  C

implementations
 intending
 to
 provide
 an
 extension
 for
 decimal
 floating-­‐point
 arithmetic
 supporting

ISO/IEC/IEEE
 60559:2011
 are
 expected
 to
 conform
 to
 ISO/IEC
 TS
 18661-2.

ISO/IEC
 TS
 18661-3
 (Interchange
 and
 extended
 types),
 ISO/IEC
 TS
 18661-4
 (Supplementary
 functions),

and
 ISO/IEC
 TS
 18661-5
 (Supplementary
 attributes)
 cover
 recommended
 features
 of
 ISO/IEC/IEEE

60559:2011.
 C
 implementations
 intending
 to
 provide
 extensions
 for
 these
 features
 are
 expected
 to

conform
 to
 the
 corresponding
 parts.

Additional
 background
 on
 supplementary
 functions

This
 document
 uses
 the
 term
 supplementary
 functions
 to
 refer
 to
 functions
 that
 provide
 operations

recommended,
 but
 not
 required,
 by
 IEC
 60559.

ISO/IEC/IEEE
 60559:2011
 specifies
 and
 recommends
 a
 more
 extensive
 set
 of
 mathematical
 operations

than
  C11
  provides.
  The
  IEC
  60559
  specification
  is
  generally
  consistent
  with
  C11,
  though
  it
  adds

requirements
 for
 symmetry
 and
 antisymmetry.
 This
 part
 of
 ISO/IEC
 TS
 18661
 extends
 the
 specification

in
  Library
  subclause
  7.12
  Mathematics
  to
  include
  the
  complete
  set
  of
  IEC
  60559
  mathematical

operations.
 For
 implementations
 conforming
 to
 annex
 F,
 it
 also
 requires
 full
 IEC
 60559
 semantics,

including
 symmetry
 and
 antisymmetry
 properties.

viii
  ©
 ISO/IEC
 2015
 –
 All
 rights
 reserved

---------------------- Page: 8 ----------------------
ISO/IEC
 TS
 18661-­‐4:2015(E)

IEC
 60559
 requires
 correct
 rounding
 for
 its
 required
 operations
 (squareRoot,
 fusedMultiplyAdd,
 etc.),

and
 recommends
 correct
 rounding
 for
 its
 recommended
 mathematical
 operations.
 This
 part
 of
 ISO/IEC

TS
 18661
 reserves
 identifiers,
 with
 cr
 prefixes,
 for
 C
 functions
 corresponding
 to
 correctly
 rounded

versions
 of
 the
 IEC
 60559
 mathematical
 operations,
 which
 may
 be
 provided
 at
 the
 option
 of
 the

implementation.
 For
 example,
 the
 identifier
 crexp
 is
 reserved
 for
 a
 correctly
 rounded
 version
 of
 the

exp
 function.

IEC
 60559
 also
 specifies
 and
 recommends
 reduction
 operations,
 which
 operate
 on
 vector
 operands.

These
 operations,
 which
 compute
 sums
 and
 products,
 may
 associate
 in
 any
 order
 and
 may
 evaluate
 in

any
 wider
 format.
 Hence,
 unlike
 other
 IEC
 60559
 operations,
 they
 do
 not
 have
 unique
 specified
 results.

This
 part
 of
 ISO/IEC
 TS
 18661
 extends
 the
 specification
 in
 Library
 subclause
 7.12
 Mathematics
 to

include
  functions
  corresponding
  to
  the
  IEC
  60559
  reduction
  operations.
  For
  implementations

conforming
 to
 annex
 F,
 it
 also
 requires
 the
 IEC
 60559
 specified
 behavior
 for
 floating-­‐point
 exceptions.
©
 ISO/IEC
 2015
 –
 All
 rights
 reserved
  ix

---------------------- Page: 9 ----------------------
TECHNICAL
 SPECIFICATION
  ISO/IEC/TS
 18661-­‐4:2015(E)



Information
 technology
 —
 Programming
 languages,
 their

environments,
 and
 system
 software
 interfaces
 —
 Floating-­‐point

extensions
 for
 C
 —



Part
 4:


Supplementary
 functions

1
  Scope

This
 part
 of
 ISO/IEC
 TS
 18661
 extends
 programming
 language
 C
 to
 include
 functions
 specified
 and

recommended
 in
 ISO/IEC/IEEE
 60559:2011.

2
  Conformance

An
 implementation
 conforms
 to
 this
 part
 of
 ISO/IEC
 TS
 18661
 if

a) it
 meets
 the
 requirements
 for
 a
 conforming
 implementation
 of
 C11
 with
 all
 the
 changes
 to
 C11
 as

specified
 in
 parts
 1-­‐4
 of
 ISO/IEC
 TS
 18661;



b) it
 conforms
 to
 ISO/IEC
 TS
 18661-­‐1
 or
 ISO/IEC
 TS
 18661-­‐2
 (or
 both);
 and



c) it
 defines
 __STDC_IEC_60559_FUNCS__
 to
 201506L.

3
  Normative
 references

The
 following
 documents,
 in
 whole
 or
 in
 part,
 are
 normatively
 referenced
 in
 this
 document
 and
 are

indispensable
 for
 its
 application.
 For
 dated
 references,
 only
 the
 edition
 cited
 applies.
 For
 undated

references,
 the
 latest
 edition
 of
 the
 referenced
 document
 (including
 any
 amendments)
 applies.

ISO/IEC
 9899:2011,
 Information
 technology
 —
 Programming
 languages
 —
 C

ISO/IEC/IEEE
  60559:2011,
  Information
  technology
 —
  Microprocessor
  Systems
 —
  Floating-­‐point

arithmetic

ISO/IEC
 TS
 18661-­‐1:2014,
 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-­‐2:2015,
 Information
 technology
 —
 Programming
 languages,
 their
 environments
 and

system
 software
 interfaces
 —
 Floating-­‐point
 extensions
 for
 C
 —
 Part
 2:
 Decimal
 floating-­‐point
 arithmetic

ISO/IEC
 TS
 18661-­‐3:2015,
 Information
 technology
 —
 Programming
 languages,
 their
 environments
 and

system
 software
 interfaces
 —
 Floating-­‐point
 extensions
 for
 C
 —
 Part
 3:
 Interchange
 and
 extended
 types

©
 ISO/IEC
 2015
 –
 All
 rights
 reserved
  1

---------------------- Page: 10 ----------------------
ISO/IEC
 TS
 18661-­‐4:2015(E)

4
  Terms
 and
 definitions

For
  the
  purposes
  of
  this
  document,
  the
  terms
  and
  definitions
  given
  in
  ISO/IEC
  9899:2011,

ISO/IEC/IEEE
  60559:2011,
  ISO/IEC
  TS
  18661-­‐1:2014,
  ISO/IEC
  TS
  18661-­‐2:2015,
  ISO/IEC

TS
 18661-­‐3:2015,
 and
 the
 following
 apply.

4.1

C11

standard
 ISO/IEC
 9899:2011,
 Information
 technology
 —
 Programming
 languages
 C,
 including
 Technical

Corrigendum
 1
 (ISO/IEC
 9899:2011/Cor.
 1:2012)

5
  C
 standard
 conformance

5.1
  Freestanding
 implementations

The
 specification
 in
 C11
 +
 TS18661-­‐1
 +
 TS18661-­‐2
 allows
 freestanding
 implementations
 to
 conform
 to

this
 part
 of
 ISO/IEC
 TS
 18661.

5.2
  Predefined
 macros

Change
 to
 C11
 +
 TS18661-­‐1
 +
 TS18661-­‐2
 +
 TS18661-­‐3:


In
 6.10.8.3#1,
 add:

__STDC_IEC_60559_FUNCS__
 The
  integer
  constant
  201506L,
  intended
  to
  indicate

support
 of
 functions
 specified
 and
 recommended
 in
 IEC
 60559.

5.3
  Standard
 headers

...

Questions, Comments and Discussion

Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.