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-2:2015 extends programming language C as specified in ISO/IEC 9899:2011, (C11) with changes specified in ISO/IEC/TS 18661-1, to support decimal floating-point arithmetic conforming to ISO/IEC/IEEE 60559:2011. It covers all requirements of IEC 60559 as they pertain to C decimal floating types. ISO/IEC/TS 18661-2:2015 does not cover binary floating-point arithmetic (which is covered in ISO/IEC/TS 18661-1), nor does it cover most optional features of IEC 60559.

Technologies de l'information — Langages de programmation, leurs environnements et interfaces du logiciel système — Extensions à virgule flottante pour C — Partie 2: Arithmétique décimal en virgule flottante

General Information

Status
Published
Publication Date
17-May-2015
Current Stage
9093 - International Standard confirmed
Completion Date
14-Mar-2022
Ref Project

Relations

Buy Standard

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

Standards Content (Sample)

TECHNICAL ISO/IEC TS
SPECIFICATION 18661-2
Second edition
2015-05-15
Information Technology —
Programming languages, their
environments, and system software
interfaces — Floating-point
extensions for C —
Part 2:
Decimal floating-point arithmetic
Technologies de l’information — Langages de programmation, leurs
environnements et interfaces du logiciel système — Extensions à
virgule flottante pour C —
Partie 2: Arithmétique décimal en virgule flottante
Reference number
ISO/IEC TS 18661-2:2015(E)
©
ISO/IEC 2015

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

COPYRIGHT PROTECTED DOCUMENT
© ISO/IEC 2015
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 2015 – All rights reserved

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

6
  Decimal
 floating
 types
 .
 9

7
  Characteristics
 of
 decimal
 floating
 types
 
 .
 10

8
  Operation
 binding
 .
 16

9
  Conversions
 .
 17

9.1
  Conversions
 between
 decimal
 floating
 and
 integer
 types
 .
 17

9.2
  Conversions
 among
 decimal
 floating
 types,
 and
 between
 decimal
 floating
 and
 standard

floating
 types
 .
 17

9.3
  Conversions
 between
 decimal
 floating
 and
 complex
 types
 .
 18

9.4
  Usual
 arithmetic
 conversions
 .
 18

9.5
  Default
 argument
 promotion
 .
 19

10
  Constants
 .
 19

11
  Arithmetic
 operations
 .
 20

11.1
  Operators
 .
 20

11.2
  Functions
 .
 20

11.3
  Conversions
 .
 22

11.4
  Expression
 transformations
 .
 22

12
  Library
 .
 22

12.1
  Standard
 headers
 .
 22

12.2
  Decimal
 floating-­‐point
 environment
 in
 
 .
 22

12.3
  Decimal
 mathematics
 in
 
 .
 27

12.4
  Decimal-­‐only
 functions
 in
 
 .
 37

12.4.1
  Quantum
 and
 quantum
 exponent
 functions
 .
 37

12.4.2
  Decimal
 re-­‐encoding
 functions
 .
 39

12.5
  Formatted
 input/output
 specifiers
 .
 41

12.6
  strtodN
 functions
 in
 
 .
 43

12.7
  wcstodN
 functions
 in
 
 .
 46

12.8
  strfromdN
 functions
 in
 
 .
 49

12.9
  Type-­‐generic
 math
 for
 decimal
 in
 
 .
 49




©
 ISO/IEC
 2015
 –
 All
 rights
 reserved
  iii

---------------------- Page: 3 ----------------------
ISO/IEC
 TS
 18661-­‐2: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.
This second edition cancels and replaces the first edition (ISO/IEC TS 18661-2:2015), of which it constitutes
a minor revision.

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

The
 following
 parts
 are
 under
 preparation:

⎯ Part
 3:
 Interchange
 and
 extended
 types

⎯ Part
 4:
 Supplementary
 functions

⎯ 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-­‐2:2015(E)

ISO/IEC
 TS
 18661-­‐3,
 ISO/IEC
 TS
 18661-­‐4,
 and
 ISO/IEC
 TS
 18661-­‐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-­‐2: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-­‐2: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-­‐2: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/IECIEEE
  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
 decimal
 floating-­‐point
 arithmetic

Most
 of
 today's
 general-­‐purpose
 computing
 architectures
 provide
 binary
 floating-­‐point
 arithmetic
 in

hardware.
  Binary
  floating
  point
  is
  an
  efficient
  representation
  that
  minimizes
  memory
  use,
  and
  is

simpler
 to
 implement
 than
 floating-­‐point
 arithmetic
 using
 other
 bases.
 It
 has
 therefore
 become
 the

norm
 for
 scientific
 computations,
 with
 almost
 all
 implementations
 following
 the
 IEEE
 754
 standard
 for

binary
 floating-­‐point
 arithmetic
 (and
 the
 equivalent
 international
 ISO/IEC/IEEE
 60559
 standard).

However,
  human
  computation
  and
  communication
  of
  numeric
  values
  almost
  always
  uses
  decimal

arithmetic
  and
  decimal
  notations.
  Laboratory
  notes,
  scientific
  papers,
  legal
  documents,
  business

reports,
 and
 financial
 statements
 all
 record
 numeric
 values
 in
 decimal
 form.
 When
 numeric
 data
 are

given
 to
 a
 program
 or
 are
 displayed
 to
 a
 user,
 conversion
 between
 binary
 and
 decimal
 is
 required.

There
 are
 inherent
 rounding
 errors
 involved
 in
 such
 conversions;
 decimal
 fractions
 cannot,
 in
 general,

viii
  ©
 ISO/IEC
 2015
 –
 All
 rights
 reserved

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

be
 represented
 exactly
 by
 binary
 floating-­‐point
 values.
 These
 errors
 often
 cause
 usability
 and
 efficiency

problems,
 depending
 on
 the
 application.

These
 problems
 are
 minor
 when
 the
 application
 domain
 accepts,
 or
 requires
 results
 to
 have,
 associated

error
  estimates
  (as
  is
  the
  case
  with
  scientific
  applications).
  However,
  in
  business
  and
  financial

applications,
 computations
 are
 either
 required
 to
 be
 exact
 (with
 no
 rounding
 errors)
 unless
 explicitly

rounded,
 or
 be
 supported
 by
 detailed
 analyses
 that
 are
 auditable
 to
 be
 correct.
 Such
 applications

therefore
 have
 to
 take
 special
 care
 in
 handling
 any
 rounding
 errors
 introduced
 by
 the
 computations.

The
 most
 efficient
 way
 to
 avoid
 conversion
 error
 is
 to
 use
 decimal
 arithmetic.
 Currently,
 the
 IBM

z/Architecture
 (and
 its
 predecessors
 since
 System/360)
 is
 a
 widely
 used
 system
 that
 supports
 built-­‐in

decimal
 arithmetic.
 Prior
 to
 the
 IBM
 System
 z10
 processor,
 however,
 this
 provided
 integer
 arithmetic

only,
 meaning
 that
 every
 number
 and
 computation
 has
 to
 have
 separate
 scale
 information
 preserved

and
 computed
 in
 order
 to
 maintain
 the
 required
 precision
 and
 value
 range.
 Such
 scaling
 is
 difficult
 to

code
 and
 is
 error-­‐prone;
 it
 affects
 execution
 time
 significantly,
 and
 the
 resulting
 program
 is
...

Questions, Comments and Discussion

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