service plugin and qdecimal library has been added
This commit is contained in:
@@ -0,0 +1,172 @@
|
||||
|
||||
Dear Qt users,
|
||||
|
||||
I would like to announce initial public release of QDecimal library.
|
||||
|
||||
Most computers today support binary floating-point in hardware. While suitable
|
||||
for many purposes, binary floating-point arithmetic should not be used
|
||||
for financial, commercial, and user-centric applications because the
|
||||
decimal data used in these applications cannot be represented exactly
|
||||
using binary floating-point.
|
||||
|
||||
The General Decimal Arithmetic (GDA) specification aims to address
|
||||
deficiencies in the binary floating-point arithmetic, and defines a
|
||||
decimal arithmetic which meets the requirements of commercial,
|
||||
financial, and human-oriented applications. It also matches the
|
||||
decimal arithmetic in the IEEE 754-2008 Standard for Floating Point
|
||||
Arithmetic.
|
||||
|
||||
The decNumber library is full implementation of the GDA specification
|
||||
and also matches the decimal arithmetic in the IEEE 754-2008 Standard
|
||||
for Floating Point Arithmetic.
|
||||
|
||||
The QDecimal is a thin layer around IBM's decNumber library which
|
||||
implements the General Decimal Arithmetic Specification in ANSI C. [1]
|
||||
|
||||
The QDecimal/decNumberlibrary [2,3] fully implements the specification,
|
||||
and hence supports integer, fixed-point, and floating-point decimal
|
||||
numbers directly, including infinite, NaN (Not a Number), and
|
||||
subnormal values. Both arbitrary-precision and fixed-size
|
||||
representations are supported.
|
||||
|
||||
The aim of the QDecimal library [4] is to extend decNumber functionality
|
||||
to C++ language and Qt framework by using idioms, tecniques and best
|
||||
practices in both tecnologies. For instance, inline functions are used
|
||||
heavily to aid optimization, operator overloading and conversion
|
||||
operators are defined to aid type casting in between the types defined
|
||||
by QDecimal. Further these types are integrated with Qt object model
|
||||
by introducing them to Qt meta type system.
|
||||
|
||||
|
||||
CONTENTS
|
||||
Following classes are defined by QDecimal library:
|
||||
|
||||
QDecNumber (based on decNumber):
|
||||
----------
|
||||
decNumber module uses an arbitrary-precision decimal number
|
||||
representation designed for efficient computation in software and
|
||||
implements the arithmetic and logical operations, together with a
|
||||
number of conversions and utilities. Once a number is held as a
|
||||
decNumber, no further conversions are necessary to carry out
|
||||
arithmetic.
|
||||
|
||||
The decNumber representation is variable-length and machine-dependent
|
||||
(for example, it contains integers which may be big-endian or
|
||||
little-endian).
|
||||
|
||||
QDecNumber encapsulates decNumber and reimplements global functions
|
||||
that operates upon decNumber as member functions with the same name.
|
||||
|
||||
|
||||
QDecContext (based on decContext):
|
||||
-----------
|
||||
Most functions in the decNumber module take as an argument a
|
||||
decContext structure, which provides the context for operations
|
||||
(precision, rounding mode, etc.) and also controls the handling of
|
||||
exceptional conditions (corresponding to the flags and trap enablers
|
||||
in a hardware floating-point implementation).
|
||||
|
||||
QDecContext encapsulates decContext and provides decNumber library
|
||||
functions that operates upon decContext as member functions.
|
||||
|
||||
|
||||
QDecSingle (based on decSingle/decimal32):
|
||||
----------
|
||||
decimal32 is a 32-bit decimal floating-point representation which
|
||||
provides 7 decimal digits of precision in a compressed format.
|
||||
|
||||
decSingle module provides the functions for the decimal32 format; this
|
||||
format is intended for storage and interchange only and so the module
|
||||
provides utilities and conversions but no arithmetic functions.
|
||||
|
||||
QDecSingle encapsulates decSingle and provides decNumber library
|
||||
functions that operates upon decSingle as member functions with the
|
||||
same name.
|
||||
|
||||
|
||||
QDecDouble (based on decDouble/decimal64):
|
||||
----------
|
||||
decimal64 is a 64-bit decimal floating-point representation which
|
||||
provides 16 decimal digits of precision in a compressed format.
|
||||
|
||||
decDouble module provides the functions for the decimal64 format; this
|
||||
format is an IEEE 754 basic format and so a full set of arithmetic and
|
||||
other functions is included.
|
||||
|
||||
QDecDouble encapsulates decDouble and provides decNumber library
|
||||
functions that operates upon decSingle as member functions with the
|
||||
same name.
|
||||
|
||||
|
||||
QDecQuad (based on decQuad/decimal128):
|
||||
--------
|
||||
decimal128 is a 128-bit decimal floating-point representation which
|
||||
provides 34 decimal digits of precision in a compressed format.
|
||||
|
||||
decQuad module provides the functions for the decimal128 format; this
|
||||
format is an IEEE 754 basic format; it contains the same set of
|
||||
functions as decDouble.
|
||||
|
||||
QDecQuad encapsulates decQuad and provides decNumber library functions
|
||||
that operates upon decSingle as member functions with the same name.
|
||||
|
||||
|
||||
QDecPacked (based on decPacked):
|
||||
---------
|
||||
The decPacked format is the classic packed decimal format implemented
|
||||
by IBM S/360 and later machines, where each digit is encoded as a
|
||||
4-bit binary sequence (BCD) and a number is ended by a 4-bit sign
|
||||
indicator. The decPacked module accepts variable lengths, allowing for
|
||||
very large numbers (up to a billion digits), and also allows the
|
||||
specification of a scale.
|
||||
|
||||
QDecPacked augments decPacked by encapsulating reference counted byte
|
||||
array and scale of the decimal point as member variables, thus, freeing up
|
||||
user of this class from memory management and keeping track of scale value.
|
||||
|
||||
|
||||
LICENSE
|
||||
QDecimal is under the terms of the LGPL v2.1.
|
||||
decNumber is under the terms of ICU v1.8.1
|
||||
See COPYRIGHT file within the package for terms of the these licenses.
|
||||
Both licences allow commercial and non-commercial use of the software.
|
||||
|
||||
|
||||
PLATFORMS
|
||||
QDecimal should be usable in all platforms on which Qt 4.7.x or
|
||||
greater is supported:
|
||||
We regularly test on following platforms:
|
||||
Solaris 11 x86 (sstudio 12.2 CC 5.11)
|
||||
Linux x64 2.6.38 (Ubuntu 11.04 - gcc 4.5.2)
|
||||
Linux x86 2.6.38 (Ubuntu 11.04- gcc 4.5.2)
|
||||
Windows XP (msvc 2008)
|
||||
|
||||
|
||||
CREDITS
|
||||
We are grateful to Mike Cowlishaw et al. from IBM for making decNumber package
|
||||
available. Further, Mr. Cowlishaw has kindly helped us while making
|
||||
QDecimal production ready.
|
||||
|
||||
|
||||
REFERENCES
|
||||
[1] General Decimal Arithmetic Specification
|
||||
http://speleotrove.com/decimal/decarith.html
|
||||
|
||||
[2] The decNumber Library
|
||||
http://speleotrove.com/decimal/decnumber.html
|
||||
|
||||
[3] General Decimal Arithmetic
|
||||
http://speleotrove.com/decimal
|
||||
|
||||
[4] QDecimal Project Home
|
||||
http://code.google.com/p/qdecimal
|
||||
|
||||
|
||||
|
||||
Regards,
|
||||
Semih Cemiloglu
|
||||
|
||||
semih (at) cemiloglu.org
|
||||
PGP/GPG KeyId: FCEE9B7A on keyserver.pgp.com
|
||||
Fingerprint: ED8F48028DE03BE0A2C95E0FACC5043BFCEE9B7A
|
||||
|
||||
Reference in New Issue
Block a user