Google OR-Tools v9.12
a fast and portable software suite for combinatorial optimization
Loading...
Searching...
No Matches
util::math::ConstantDivisor< uint64_t > Class Reference

Division and modulus using uint64_t numerators and denominators. More...

#include <constant_divisor.h>

Inheritance diagram for util::math::ConstantDivisor< uint64_t >:
util::math::internal::ConstantDivisorBase< uint64_t, absl::uint128, ConstantDivisor< uint64_t > >

Public Types

typedef uint64_t value_type
 
- Public Types inherited from util::math::internal::ConstantDivisorBase< uint64_t, absl::uint128, ConstantDivisor< uint64_t > >
using value_type
 

Public Member Functions

 ConstantDivisor (value_type denominator)
 REQUIRES: denominator > 1.
 
value_type div (value_type numerator) const
 
 ConstantDivisor (value_type denominator)
 
value_type div (value_type n) const
 
value_type mod (value_type n) const
 
- Public Member Functions inherited from util::math::internal::ConstantDivisorBase< uint64_t, absl::uint128, ConstantDivisor< uint64_t > >
 ConstantDivisorBase (absl::uint128 magic, value_type denominator)
 
value_type mod (value_type numerator) const
 
value_type denominator () const
 

Friends

value_type operator/ (value_type a, const ConstantDivisor &b)
 
value_type operator% (value_type a, const ConstantDivisor &b)
 

Additional Inherited Members

- Protected Types inherited from util::math::internal::ConstantDivisorBase< uint64_t, absl::uint128, ConstantDivisor< uint64_t > >
using MagicValueType
 
- Protected Attributes inherited from util::math::internal::ConstantDivisorBase< uint64_t, absl::uint128, ConstantDivisor< uint64_t > >
absl::uint128 magic_
 

Detailed Description

Division and modulus using uint64_t numerators and denominators.

Definition at line 114 of file constant_divisor.h.

Member Typedef Documentation

◆ value_type

typedef uint64_t util::math::ConstantDivisor< uint64_t >::value_type

Definition at line 59 of file constant_divisor.h.

Constructor & Destructor Documentation

◆ ConstantDivisor() [1/2]

util::math::ConstantDivisor< uint64_t >::ConstantDivisor ( value_type d)
explicit

REQUIRES: denominator > 1.

Fast div/mod implementation based on "Faster Remainder by Direct Computation: Applications to Compilers and Software Libraries" Daniel Lemire, Owen Kaser, Nathan Kurz arXiv:1902.01961

Definition at line 28 of file constant_divisor.cc.

◆ ConstantDivisor() [2/2]

util::math::ConstantDivisor< uint64_t >::ConstantDivisor ( value_type denominator)
inlineexplicit

Definition at line 61 of file constant_divisor.h.

Member Function Documentation

◆ div() [1/2]

value_type util::math::ConstantDivisor< uint64_t >::div ( value_type n) const
inline

Definition at line 64 of file constant_divisor.h.

◆ div() [2/2]

value_type util::math::ConstantDivisor< uint64_t >::div ( value_type numerator) const
inline

Definition at line 121 of file constant_divisor.h.

◆ mod()

value_type util::math::ConstantDivisor< uint64_t >::mod ( value_type n) const
inline

Definition at line 66 of file constant_divisor.h.

Friends And Related Symbol Documentation

◆ operator%

value_type operator% ( value_type a,
const ConstantDivisor< uint64_t > & b )
friend

Definition at line 72 of file constant_divisor.h.

◆ operator/

value_type operator/ ( value_type a,
const ConstantDivisor< uint64_t > & b )
friend

Definition at line 68 of file constant_divisor.h.


The documentation for this class was generated from the following files: