=================================================
CHANGELOG of DD_QD (MuPAT) external Scilab module
=================================================
v. 1.0 - 2018-08-01 - Samuel GOUGEON
===================
PACKAGING
---------
* This changelog: layout overhauled. TODO section added.
* builder.sce standardized. Can now build for both Scilab 5 and Scilab 6
* MuPAT.start
-- renamed DD_QD.start (= standard)
-- the start script is now encapsulated in a function (standard)
-- libraries of macros renamed (=> standard): toolbox_skeletonlib => dd_QD_lib
-- Help chapter renamed: "DD_QD (MuPAT)"
* ./tests and ./tests/nonreg_tests directories created.
* C_SOURCES & DLL PACKAGING
-- ./bin created. All DLL and ddlink.sci and qdlink.sci found in
./macros for the win distrib are now gathered in ./bin/windows.
-- ./src created. All .c files found in ./macros for the maclin
distrib are now gathered in ./src
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
=> There is now only one sources archive for all OS.
-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~-~
HELP PAGES
----------
* 4 subsections dd, qd, conversions, and needs_DLL created.
* New pages: Display, Overloads, Concatenations, size, qdinv
* ddexp() page renamed exp() with xml:id="ddexp". Example simplified and illustrated.
* dd, qd, d2dd, d2qd, dd2qd, qd2dd, str2dd, ddgqr, qdgqr, ddip, ddnrt pages improved.
* ddmin, qdmin, ddmax, qdmax, ddnorm, qdnorm, ddlu, qdlu, dlqr, qdqr pages added.
* Most of examples are improved and now illustrated.
* Most of See also sections are enriched. Now short descriptions are displayed.
MACROS
------
New features
............
* %dd_p() and %qd_p() display overloads (as for disp()) added.
* norm():
-- The Frobenius norm was not available for DD arrays.
It is now included in the %dd_norm() overload.
-- %dd_norm() and %qd_norm() accepted only columns.
This restriction now holds only for the L2 norm.
* %dd_eye(DD), %dd_zeros(DD), %dd_ones(), %dd_rand() added.
* size() is now overloaded for DD and QD arrays, with options 'r'|1|'c'|2'
* min() is now overloaded for DD and QD arrays, with options 'r'|1|'c'|2'
* max() is now overloaded for DD and QD arrays, with 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
means that i ones are linearized, as in A(:,0).
* str2dd() added = ddinput() renamed.
* dd2str() added = ddprint() renamed.
* qd2str() added = qdprint() renamed.
Improvements
............
* ./macros/both/internals, ./macros/both/overloads,
./macros/slow, and ./macros/fast sublibraries created.
* Many overloads simplified (code factorization):
-- #_n_#() simplified: set to ~#_o_#
-- a>b simply set to b=b simply set to b<=a
-- d + dd|qd simply set to dd|qd + d
-- dd + qd simply set to qd + dd
-- D - DD|QD simply set to D + (-DD|-QD)
-- DD - D|DD|QD simply set to DD + (-D|-DD|-QD)
-- QD - D|DD|QD simply set to QD + (-D|-DD|-QD)
-- D*DD simply set to (DD'*D')'
-- D*QD simply set to (QD'*D')'
-- DD*QD simply set to (QD'*DD')'
* cos_table_qd(), sin_table_qd(), nint_qd(), nint_dd(),
cos_taylor_dd(), cos_taylor_qd(), sin_taylor_dd(), sin_taylor_qd(),
sincos_taylor_dd(), sincos_taylor_qd(),
were defined 3 times => code factorized
* z = ddip(x,y) code is now resumed simply to z=x'*y.
* z = qdip(x,y) code is now resumed simply to z=x'*y.
* %dd_lu() and %qd_lu(): code now fully factorized in ddqd_lu().
* %dd_qr() and %qd_qr(): code now fully factorized in ddqd_qr().
* Implementations of norm(DD|QD,1) simplified (with abs()).
* %dd_lu(): the deepest for loops on k are now vectorized:
lu(DD) spends now 10s instead of 34s (for a 50x50 array)
* %qd_lu(): the deepest for loops on k are now vectorized:
lu(QD) spends now 60s instead of 80s (for a 20x20 array)
* ddinput() is renamed str2dd().
ddinput() is kept as internal for back-compatibility.
* ddprint() is renamed dd2str().
qdprint() is renamed qd2str().
ddprint() and qdprint() are kept as internals for back-compatibility.
* norm():
-- qdnormF() was not included in the overload. It is so now.
The explicit qdnormF() is removed.
-- %qd_norm() did not had any default method. Now set to 2.
-- %dd_norm() did not had any default method. Now set to 2.
BUGS FIXED:
..........
* %qd_rand() always used call()
* error(n) was still used. Replaced with proper error messages.
* ddnrt() had an unknown p1 on line #17 (error with its example).
* wrong references to nrt() and qd() (instead of qr())
in the dd() and qd() examples.
* the qr() ending call in the dd() page yielded an error,
requiring a missing %dd_i_s().
* multiplying a DD column by its row transpose yielded an error.
* In the qd() page, the lu() example yielded an error.
%qd_lu() is now fixed.
* The ddgqr() example yielded a "Variable undefined: ddnorm" error.
* In ddinput() (now str2dd()):
-- 'abort' was used instead of 'break' and made str2dd()
almost always returning with no result.
-- The input exponent was not taken into account.
-- An input exponent without sign yielded an error.
* ddnrt() accepted null root and blocked.
* qdnormF(x):
-- An error occurred with running the example: .hi used instead of .d
-- the implementation did not cope with the definition
of the Frobenius norm used by norm(): sqrt(sum(diag(x'*x)))
For instance we had: qdnormF(A) => 47.1... norm(A.d,"f") => 5.53...
* %qd_norm(0,2) returned a DD zero instead of QD zero.
* %dd_qr() and %qd_qr() yielded an error for non-square input matrices.
* The short description of items in the See also sections of help pages
were not displayed.
v. 0.2 - 2012-03-09
===================
* improved functions:
-- multiplication of dd (inner product, matvec, matmat)
-- qdip
* added functions:
-- ddpi (mathematical constant)
-- qdpi (mathematical constant)
v. 0.1 - 2011-09-16
===================
* First release
=============================================================================
TODO:
* Profile and improve performances of ddprint() and qdprint().
* ddinput, ddprint, qdprint: remove the abort()(replace with error() ?)
* extend inequality comparisons to arrays
* add unitary tests (dd() and qd() pages examples are a good start)
* add pages for overloaded functions and operators
* overload size()
* implement the .* operator for DD and QD
* implement a dqdformat() function
REFERENCES
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