Oliver,
Thanks for using the library and for the comparisons.
I did not mean to "challenge" your implementation. By
"non comparable" I just meant to say that C++ is quite
different from Octave, in many respects.
For instance, in order to compare your library with mine
I would need to time different processes, using a
wall clock. The comparisons with the libraries in
my article involved a single process, using a
different kind of timer.
Both C++ and Octave are great tools, but they
have different purposes (and this is why it
is hard to compare them)
One the one hand, as you mentioned, I would expect
C++ to be much faster than Octave in the interpreted
parts of the code. On the other, Octave is much
better than C++ for prototyping for instance. It is
much more flexible. Moreover, your reliance on
Octave makes your library much more portable
than mine.
In parts of the code depending on external libraries,
like MPFR and crmlib, the overhead caused by both
my library and yours is minimal, and the library
using the faster dependency will win. Therefore,
now that you use crmlib I do expect that your
library will be much faster for the elementary
functions.
In any case, when revision time comes I
will rewrite the part of the article that you mention
and try to express "comparable" in a different way.
I will also change the times for the asin and acos
functions that you correctly pointed out to have
problems. I will present the results of better
experiments in this case.
Finally, I find it great that there are several
libraries, specially for testing the correctness
of the results. It is quite hard to implement this
kind of library without bugs, and the more
libraries by different people we have, the
greater the chance that bugs will be detected
and fixed. Even very slow libraries are quite
useful in this regard.
regards,
walter.