Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::numeri...::denorm_min(3) C++ Standard Libarystd::numeri...::denorm_min(3)

NAME
       std::numeric_limits::denorm_min - std::numeric_limits::denorm_min

Synopsis
	  static T denorm_min()	throw();	     (until C++11)
	  static constexpr T denorm_min() noexcept;  (since C++11)

	  Returns the minimum positive subnormal value of the type T, if
	  std::numeric_limits<T>::has_denorm  != std::denorm_absent, otherwise
       returns
	  std::numeric_limits<T>::min()	for floating point types and  T()  for
       all other types.
	  Only meaningful for floating-point types.

Return value
	  T			     std::numeric_limits<T>::denorm_min()
	  /* non-specialized */	     T()
	  bool			     false
	  char			     0
	  signed char		     0
	  unsigned char		     0
	  wchar_t		     0
	  char8_t (C++20)	     0
	  char16_t (C++11)	     0
	  char32_t (C++11)	     0
	  short			     0
	  unsigned short	     0
	  int			     0
	  unsigned int		     0
	  long			     0
	  unsigned long		     0
	  long long (C++11)	     0
	  unsigned long	long (C++11) 0
	  float				    FLT_TRUE_MIN	(\(\scriptsize
       2^{-149}\)2-149
				     if	 std::numeric_limits<float>::is_iec559
       is true)
	  double			    DBL_TRUE_MIN	(\(\scriptsize
       2^{-1074}\)2-1074
				     if	std::numeric_limits<double>::is_iec559
       is true)
	  long double		     LDBL_TRUE_MIN

Example
	  Demonstates the underlying bit structure  of	the  denorm_min()  and
       prints the values

       // Run this code

	#include <cassert>
	#include <cstdint>
	#include <cstring>
	#include <iostream>
	#include <limits>

	int main()
	{
	    // the smallest subnormal value has	sign bit = 0, exponent = 0
	    // and only	the least significant bit of the fraction is 1
	    std::uint32_t denorm_bits =	0x0001;
	    float denorm_float;
	    std::memcpy(&denorm_float, &denorm_bits, sizeof(float));

	    assert(denorm_float	== std::numeric_limits<float>::denorm_min());

	    std::cout << "float\tmin()\t\tdenorm_min()\n";
	    std::cout << "\t" << std::numeric_limits<float>::min() << '\t';
	    std::cout  <<	   std::numeric_limits<float>::denorm_min() <<
       '\n';

	    std::cout << "double\tmin()\t\tdenorm_min()\n";
	    std::cout << "\t" << std::numeric_limits<double>::min() << '\t';
	    std::cout <<	 std::numeric_limits<double>::denorm_min()  <<
       '\n';
	}

Possible output:
	float	min()		denorm_min()
		1.17549e-38	1.4013e-45
	double	min()		denorm_min()
		2.22507e-308	4.94066e-324

See also
	  min		   returns the smallest	finite value of	the given type
	  [static]	   (public static member function)
	  has_denorm	    identifies	the  denormalization style used	by the
       floating-point
	  [static]	   type
			   (public static member constant)
	  lowest	   returns the lowest finite value of the given	type
	  [static] (C++11) (public static member function)

http://cppreference.com		  2022.07.31	 std::numeri...::denorm_min(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::numeric_limits::denorm_min&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help