Boost logo

Boost :

From: John Maddock (john_at_[hidden])
Date: 2005-12-06 05:53:02


> Just explain that in slightly more detail and I will raise a support
> ticket with QNX.

Basically fpclassify is returning FP_NORMAL rather than FP_SUBNORMAL when
passed a denormalised number (at least that's my assumption based on the
results you reported).

The simple test case below should allow you to check this,

Regards, John.

P.S. It's probably not a good idea to post headers that aren't open-source
to a public list mailing list ;-)

#include <assert.h>
#include <math.h>
#include <limits>

template <class T>
void test(T t)
{
  T denorm;

  // denorm_min should be either zero or a denormalised number:
  denorm = std::numeric_limits<T>::denorm_min();
  if(denorm != static_cast<T>(0.0))
    assert(fpclassify(denorm) == FP_SUBNORMAL);

  // any number less than min() should be demormal or zero:
  denorm = std::numeric_limits<T>::min() / 2;
  if(denorm != static_cast<T>(0.0))
    assert(fpclassify(denorm) == FP_SUBNORMAL);
}

int main()
{
  test(1.0F);
  test(1.0);
  test(1.0L);
}


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk