In general, the algorithms in the library are written for double
precision only. The
long double type is not supported for
One reason for this choice is that the precision of
is platform dependent. The IEEE standard only specifies the minimum
precision of extended precision numbers, while the precision of
double is the same on all platforms.
However, it is sometimes necessary to interact with external data in long-double format, so the vector and matrix datatypes include long-double versions.
It should be noted that in some system libraries the
formatted input/output functions
not implemented correctly for
long double. Undefined or
incorrect results are avoided by testing these functions during the
configure stage of library compilation and eliminating certain
GSL functions which depend on them if necessary. The corresponding
line in the
configure output looks like this,
checking whether printf works with long double... no
long double formatted input/output does not
work on a given system it should be impossible to link a program which
uses GSL functions dependent on this.
If it is necessary to work on a system which does not support formatted
long double input/output then the options are to use binary
formats or to convert
long double results into
reading and writing.