Multiple Precision Arithmetic Toolbox (DD_QD MuPAT) is the convenient quadruple
and octuple precision arithmetic toolbox.
MuPAT is based on Double-Double (DD) and Quad-Double (QD) arithmetics. The
precision of floats is increased to 64 digits. The range is unchanged (0,
2.23D-308, 1.80D+308).
DD and QD arithmetics only need double precision arithmetic environment.
REFERENCE
---------
Development of quadruple precision arithmetic toolbox QuPAT on Scilab
Tsubasa Saito1, Emiko Ishiwata2, and Hidehiko Hasegawa
http://www.slis.tsukuba.ac.jp/~hasegawa.hidehiko.ga/GYOSEKI/NMMS2010.pdf
FEATURES
--------
* Real numbers supported.
* Overloads for operators - + * / ' [,] [;] size(), disp()
(mixed double, DD and QD operations on arrays)
* Overloads for comparisons < <= == ~= >= >
(mixed double, DD and QD comparisons between scalars)
* For both DD and QD numbers: Overloads for
-- eye, zeros, ones, rand
-- ceil, floor, abs, norm, min, max
-- cos, sin, tan, exp, sqrt, nthroot(dd) (scalar input)
-- lu, qr
HELP
----
PDF: https://atoms.scilab.org/toolboxes/DD_QD/1.0/files/DD_QD_MuPAT_1.0_user_guide.pdf
CONTENTS
--------
Display — Display of DD and QD numbers
Overloads — Available overloads for DD and QD real numbers
concatenations — Horizontal and vertical concatenations of
D, DD, QD arrays together
size — sizes of a DD or QD array
Conversions
- - - - - -
d2dd — type conversion from double to DD
d2qd — type conversion from double to QD
dd2qd — type conversion from DD to QD
dd2str — prints a DD number in a string
getHi — Get the highest part of dd,qd number
qd2dd — type conversion from QD to DD
qd2str — prints a QD number in a string
str2dd — parses a long input numeric string and converts it into a DD number
DD: 16 bytes decimal arithmetics
- - - - - - - - - - - - - - - - -
dd — builds an array of DD numbers
exp — exponential
ddeye — Identity matrix
ddgqr — QR decomposition with modified Gram-Schmidt orthonormalization
ddip — inner product of DD vectors
lu — LU factorization of a square DD matrix
max — maximal value of an array of DD numbers
min — minimal value of an array of DD numbers
norm — Norm 1|2|p|inf|fro of a matrix of DD numbers
ddnrt — n-th root of a DD real number
ddones — generates a matrix made of DD ones
ddpow — n-th power of DD variable
qr — QR factorization of a DD matrix
ddrand — (Quasi) Pseudorandom DD number generator
ddzeros — generates a matrix made of DD zeros
QD: 32 bytes decimal arithmetics
- - - - - - - - - - - - - - - - -
qd — builds an array of QD numbers
exp — exponential with 64 digits
qdeye — Identity matrix
qdgqr — QR decomposition with modified Gram-Schmidt orthonormalization
qdip — inner product of QD vectors
lu — LU factorization of a square QD matrix
max — maximal value of an array of QD numbers
min — minimal value of an array of QD numbers
norm — Norm 1|2|p|inf|fro of a matrix of QD numbers
qdones — QD matrix made of ones
qdpow — n-th power of a QD real number
qr — QR factorization of a QD matrix
qdrand — (Quasi) Pseudorandom QD number generator
qdzeros — QD matrix made of zeros
(DLL mandatory)
- - - - - - - -
ddGauss — Gaussian Elimination with pivoting for DD
ddinv — Inverse matrix of DD matrix
qdGauss — Gaussian Elimination with pivoting for QD
qdinv — Inverse matrix of QD matrix
CHANGES 0.2 => 1.0
==================
Full Changelog:
https://atoms.scilab.org/toolboxes/DD_QD/1.0/files/changelog.txt
Many improvements have been achieved:
Packaging
---------
* The source archive is now unique, common for Windows,
Linux and Mac. It is heavily repackaged, with new directories:
-- ./bin/windows : DLL and linker scripts
-- ./src : *.c files and their loader
-- ./help: 4 subsections created
-- ./macros: 5 sublibraries created.
./macros/slow: macros used for DD_QD running without DLL
./macros/fast: macros used for DD_QD running with DLL
./macros/both: macros used anyway
* builder.sce can build for both Scilab 5.5 and 6
* DD_QD.start extended and clarified
* Heavy code factorization
WARNING: DLL for Scilab 5.2 have not been recompiled.
All functions can work without them, except Gauss and inv.
Main new features
-----------------
* %dd_p() and %qd_p() display overloads (as for disp()) added.
* norm():
-- The Frobenius norm was not available for DD arrays.
-- norm() accepted only column vectors.
This restriction now holds only for the L2 norm.
* eye(DD), zeros(DD), ones(), rand() overloads added.
* size(): support added for DD and QD arrays, + options 'r'|1|'c'|2'
* min(): support added for DD and QD arrays, + options 'r'|1|'c'|2'
* max(): support added for DD and QD arrays, + options 'r'|1|'c'|2'
* All horizontal and vertical concatenations for D, DD an QD
arrays added (16 overloads).
* Extraction: Extractions with linearized indices were not possible.
Now, for both DD and QD arrays, setting the j=0 index does it.
* str2dd(), dd2str(), qd2str() added.
ddinput(),ddprint(), qdprint() are now internals.
HELP PAGES
----------
* 4 subsections dd, qd, conversions, and needs_DLL created.
* New pages:
-- Display, Overloads, Concatenations, size
-- ddmin, qdmin, ddmax, qdmax, ddnorm, qdnorm
-- ddlu, qdlu, dlqr, qdqr, qdinv
* All existing pages improved
-- Almost all examples are improved and now illustrated.
-- Almost all See also sections are enriched.
Short descriptions are now displayed.
IMPROVEMENTS
* DD and QD scalars and arrays are now nicely displayed.
* Heavy code factorization
* Partial vectorization of lu() and qr() macros => faster
* ... Many other ones: Please see the full changelog
BUGS
Around 20 bugs fixed. Please see the complete Changelog.