Come to think of it, aren't the symptoms Jim reported in <http://lists.gnu.org/archive/html/bug-gnulib/2007-11/msg00131.html> nearly the opposite of the BeOS symptoms?
If I understand things aright, BeOS incorrectly claimed that LDBL_MANT_DIG is 53 when it is actually 64. But FreeBSD has a different problem. Its problem is that some long-double operations use a 53-bit fraction while others use 64 bits. In the example program you gave, division converted to a 53-bit fraction, whereas strtold converted to a 64-bit fraction. For more details about the quirks of FreeBSD and long double, please see <http://lists.gnu.org/archive/html/bug-coreutils/2007-11/msg00149.html> (which talks about the problem with "seq") and <http://lists.freebsd.org/pipermail/freebsd-standards/2007-September/001449.html> and <http://lists.freebsd.org/pipermail/freebsd-standards/2007-October/001450.html> (which talks about the problem with <float.h> sometimes overestimating LDBL_MANT_DIG). One possible workaround is for vasnprintf to use fpsetprec/fesetprec to undo the FreeBSD hack that forces long double operations to generate only 53-bit results.