PageRenderTime 24ms CodeModel.GetById 12ms app.highlight 8ms RepoModel.GetById 1ms app.codeStats 1ms

/src/FreeImage/Source/OpenEXR/Half/halfLimits.h

https://bitbucket.org/cabalistic/ogredeps/
C++ Header | 102 lines | 42 code | 19 blank | 41 comment | 0 complexity | d04a773160bd43f3b57520a97c687978 MD5 | raw file
  1///////////////////////////////////////////////////////////////////////////
  2//
  3// Copyright (c) 2002, Industrial Light & Magic, a division of Lucas
  4// Digital Ltd. LLC
  5// 
  6// All rights reserved.
  7// 
  8// Redistribution and use in source and binary forms, with or without
  9// modification, are permitted provided that the following conditions are
 10// met:
 11// *       Redistributions of source code must retain the above copyright
 12// notice, this list of conditions and the following disclaimer.
 13// *       Redistributions in binary form must reproduce the above
 14// copyright notice, this list of conditions and the following disclaimer
 15// in the documentation and/or other materials provided with the
 16// distribution.
 17// *       Neither the name of Industrial Light & Magic nor the names of
 18// its contributors may be used to endorse or promote products derived
 19// from this software without specific prior written permission. 
 20// 
 21// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 22// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 23// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 24// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 25// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 26// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 27// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 28// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 29// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 30// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 31// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 32//
 33///////////////////////////////////////////////////////////////////////////
 34
 35
 36// Primary authors:
 37//     Florian Kainz <kainz@ilm.com>
 38//     Rod Bogart <rgb@ilm.com>
 39
 40
 41#ifndef INCLUDED_HALF_LIMITS_H
 42#define INCLUDED_HALF_LIMITS_H
 43
 44
 45//------------------------------------------------------------------------
 46//
 47//	C++ standard library-style numeric_limits for class half
 48//
 49//------------------------------------------------------------------------
 50
 51#include <limits>
 52#include "half.h"
 53
 54namespace std {
 55
 56template <>
 57class numeric_limits <half>
 58{
 59  public:
 60
 61    static const bool is_specialized = true;
 62
 63    static half min () throw () {return HALF_NRM_MIN;}
 64    static half max () throw () {return HALF_MAX;}
 65
 66    static const int digits = HALF_MANT_DIG;
 67    static const int digits10 = HALF_DIG;
 68    static const bool is_signed = true;
 69    static const bool is_integer = false;
 70    static const bool is_exact = false;
 71    static const int radix = HALF_RADIX;
 72    static half epsilon () throw () {return HALF_EPSILON;}
 73    static half round_error () throw () {return HALF_EPSILON / 2;}
 74
 75    static const int min_exponent = HALF_MIN_EXP;
 76    static const int min_exponent10 = HALF_MIN_10_EXP;
 77    static const int max_exponent = HALF_MAX_EXP;
 78    static const int max_exponent10 = HALF_MAX_10_EXP;
 79
 80    static const bool has_infinity = true;
 81    static const bool has_quiet_NaN = true;
 82    static const bool has_signaling_NaN = true;
 83    static const float_denorm_style has_denorm = denorm_present;
 84    static const bool has_denorm_loss = false;
 85    static half infinity () throw () {return half::posInf();}
 86    static half quiet_NaN () throw () {return half::qNan();}
 87    static half signaling_NaN () throw () {return half::sNan();}
 88    static half denorm_min () throw () {return HALF_MIN;}
 89
 90    static const bool is_iec559 = false;
 91    static const bool is_bounded = false;
 92    static const bool is_modulo = false;
 93
 94    static const bool traps = true;
 95    static const bool tinyness_before = false;
 96    static const float_round_style round_style = round_to_nearest;
 97};
 98
 99
100} // namespace std
101
102#endif