Back to Mathematical functions
// Description: Sign function
// Documentation: math_functions.txt
#ifndef PASTELSYS_SIGN_H
#define PASTELSYS_SIGN_H
#include "pastel/sys/real/real_concept.h"
namespace Pastel
{
//! Signum function.
/*!
returns:
-1, if negative,
0, if zero (or NaN), or
+1, if positive.
*/
template <typename Real>
integer sign(const Real& that)
{
// x>0 x<0 Result
// no no 0 (could also be NaN)
// no yes -1
// yes no +1
// yes yes Impossible.
return (integer)positive(that) - (integer)negative(that);
}
}
#endif