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

FreeBSD Manual Pages

  
 
  

home | help
std::subtra...carry_engine(3) C++ Standard Libarystd::subtra...carry_engine(3)

NAME
       std::subtract_with_carry_engine - std::subtract_with_carry_engine

Synopsis
	  Defined in header <random>
	  template<

	      class UIntType,				   (since C++11)
	      std::size_t w, std::size_t s, std::size_t	r

	  > class subtract_with_carry_engine;

	  Is a random number engine that uses subtract with carry algorithm.

Template parameters
		     The result	type generated by the generator. The effect is
       undefined if
	  UIntType - this is not one of	unsigned short,	unsigned int, unsigned
       long, or
		     unsigned long long.
	  w	   - the word size, in bits, of	the state sequence
	  s	   - the short lag
	  r	   - the long lag

	  If  w	 is not	in [1, std::numeric_limits<UIntType>::digits], or s is
       not in [1, r),
	  the program is ill-formed.

	  Generator properties

	  The  size   of   the	 states	  of   subtract_with_carry_engine   is
       \(O(r)\)O(r), each of them
	  consists of two parts:

	    * A	sequence X of r	integer	values,	where each value is in [0, 2w
	      ).
	    * An integer c (known as the carry), whose value is	either 0 or 1.

	  Given	that \(X_j\)X
	  j  stands for	the \(j\mod r\)j mod rth value (starting from 0) of X,
       the transition
	  algorithm of subtract_with_carry_engine (\(TA(x_i)\)TA(x
	  i)) is defined as follows:

	   1. Let Y be \(X_{i-s}-X_{i-r}-c\)X
	      i-s-X
	      i-r-c.
	   2. Let y be \(Y\mod 2^w\)Y mod 2w
	      ,	and set	\(X_i\)X
	      i	to y.
	   3. If Y is negative,	set c to 1, otherwise set c to 0.

	  The generation algorithm of subtract_with_carry_engine is  \(GA(x_i)
       = y\)GA(x
	  i)  =	 y,  where y is	the value produced in step 2 of	the transition
       algorithm.

	  Predefined specializations

	  The following	specializations	define the random number  engine  with
       two commonly used
	  parameter sets:

	  Defined in header <random>
	  Type		       Definition
	  ranlux24_base				  std::subtract_with_carry_en-
       gine<std::uint_fast32_t,	24, 10,
	  (C++11)	       24>
	  ranlux48_base				  std::subtract_with_carry_en-
       gine<std::uint_fast64_t,	48, 5,
	  (C++11)	       12>

	  Nested types

	  Type	      Definition
	  result_type UIntType

	  Data members

	  constexpr std::size_t	word_size	     w
	  [static]				       (public	static	member
       constant)
	  constexpr std::size_t	short_lag	     s
	  [static]				      (public  static	member
       constant)
	  constexpr std::size_t	long_lag	     r
	  [static]				       (public	static	member
       constant)
	  constexpr std::uint_least32_t	default_seed 19780503u
	  [static]				      (public  static	member
       constant)

Member functions
Construction and Seeding
	  constructor	   constructs the engine
	  (C++11)	   (public member function)
	  seed		   sets	the current state of the engine
	  (C++11)	   (public member function)

Generation
	  operator()	    advances the engine's state	and returns the	gener-
       ated value
	  (C++11)	   (public member function)
	  discard	   advances the	engine's state by a specified amount
	  (C++11)	   (public member function)

Characteristics
	  min		   gets	the smallest  possible	value  in  the	output
       range
	  [static] (C++11) (public static member function)
	  max		   gets	the largest possible value in the output range
	  [static] (C++11) (public static member function)

Non-member functions
	  operator==		      compares	the  internal  states  of  two
       pseudo-random number
	  operator!=		    engines
	  (C++11)		    (function)
	  (C++11)(removed in C++20)
	  operator<<		     performs  stream  input  and  output   on
       pseudo-random number
	  operator>>		    engine
	  (C++11)		    (function template)

Example
	   This	section	is incomplete
	   Reason: no example

	  Defect reports

	  The following	behavior-changing defect reports were applied retroac-
       tively to
	  previously published C++ standards.

	     DR	   Applied to	  Behavior as published	      Correct behavior
	  LWG  3809 C++11      default_seed might not be      changed its type
       to
			      representable	     with	   result_type
       std::uint_least32_t

Category:
	    * Todo no example

http://cppreference.com		  2024.06.10	 std::subtra...carry_engine(3)

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

home | help