=================================================
CHANGELOG of DD_QD (MuPAT) external Scilab module
=================================================

v. 1.0 - 2018-08-01 - Samuel GOUGEON <sgougeon@free.fr>
===================
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<a
  -- a>=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
