In regards to your article on quadruple precision, on which the comments are now closed, a much better approach is to represent an extended precision number as an unevaluated sum of two or more double precision numbers. This permits the use of existing fast code for double precision math, including vectorisation. A fairly comprehensive implementation (though somewhat sparsely documented!) is available here: https://github.com/tholden/DoubleDouble

Hope this is of some interest.

Best regards,

Tom ]]>

Although you write the condition number you consider, computed by MATLAB by means of cond(A) (equivalent to cond(A,2)), is related to linear system solving or to the computation of the inverse, I would like to recall a fact about other implications of a large condition number, namely the computation of tiny eigenvalues or singular values.

If we consider A = hilb(10), the Hilbert matrix of order 10, its condition number is cond(A) = 1.6e+13 (the function condest gives a good approximation: 3.5e+13). However, in the computation of the tiniest singular value of A the relative error is err=6.2 e-05 (i.e we have only five correct digits), which is closely related to the large value of the condition number.

So, this condition number also implies difficulties in the accurate computation of eigenvalues and singular values, which is not indicated by the values given by condeig(A). I would like to read your comment about this fact.

By the way, a relative error of 9.2e-16 in the computation of that singular value can be obtained with MATLAB by combining the functions B=TNCauchyBD(x,y) and TNSingularValues(B) of Plamen Koev, if we use the fact that the Hilbert matrix is a totally positive Cauchy matrix.

Thank you again for your work.

]]>The difficulty is not in the constructor, but in |horzcat| and |vertcat|.

I’ve just uploaded Cleve’s Laboratory 3.20 to the File Exchange with fixes to those two functions, and a few other bug fixes.

— Cleve ]]>