Scilab Home Page | Wiki | Bug Tracker | Forge | Mailing List Archives | Scilab Online Help | File Exchange
ATOMS : Multiple Precision Arithmetic details
Login with GitLab

Multiple Precision Arithmetic

Quadruple and octuple precision real arithmetic
(16811 downloads for this version - 23002 downloads for all versions)
Details
Version
1.0
Author
Tsubasa Saito
Owner Organization
not applicable
Maintainers
Samuel Gougeon
Tsubasa Saito
Administrator ATOMS
Categories
License
Creation Date
August 2, 2018
Source created on
Scilab 6.0.x
Binaries available on
Scilab 5.5.x:
Windows 64-bit Windows 32-bit Linux 64-bit Linux 32-bit macOS
Scilab 6.0.x:
Windows 64-bit Windows 32-bit Linux 64-bit Linux 32-bit macOS
Scilab 6.1.x:
Windows 64-bit Windows 32-bit Linux 64-bit Linux 32-bit macOS
Install command
--> atomsInstall("DD_QD")
Description
            
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 range
of DD and QD 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.            
Files (6)
[6.94 kB]
Miscellaneous file

[517.63 kB]
Miscellaneous file

[467.28 kB]
Source code archive

[845.73 kB]
OS-independent binary for Scilab 5.5.x

[1.15 MB]
OS-independent binary for Scilab 6.0.x

[1.15 MB]
OS-independent binary for Scilab 6.1.x

News (0)
Comments (1)     Leave a comment 
Comment from Hugo Veuillez -- September 19, 2018, 10:34:16 AM    
Hello,
I need to perform high precision computations of cholesky and svd décompositions. Are
these
these decompistions planned to be added in the toolbox?
I tried to find a way with the existing functions but could not. If you have a way to do
it
it, I'd be glad to know it.
Thank you
Sincerely, 
Hugo
Answer from Samuel Gougeon -- September 19, 2018, 10:12:46 PM    
Hello Hugo,

The author did not post anything since March 2012.
So, IMO, it would be unwise to wait for short-term news.

The likely most fruitful approach would be to code yourself the Cholesky factorization and

SVD decomposition, at least in Scilab language, as it is done for the LU decomposition in 
the file ./macros/slow/ddqd_lu.sci
It will be slow, but should work. And if you need them for not huge matrices, it could be 
OK.

If you do this, your contribution to the module would be welcome, as likely you may 
already welcome it.

Best regards
Samuel
Leave a comment
You must register and log in before leaving a comment.
Login with GitLab
Email notifications
Send me email when this toolbox has changes, new files or a new release.
You must register and log in before setting up notifications.