join 1.0
lightweight network framework library
Loading...
Searching...
No Matches
join::DiyFp Class Reference

hand made floating point. More...

#include <diyfp.hpp>

Public Member Functions

constexpr DiyFp () noexcept=default
 default constructor.
 
constexpr DiyFp (const DiyFp &other) noexcept=default
 copy constructor.
 
constexpr DiyFpoperator= (const DiyFp &other) noexcept=default
 copy assignment.
 
 DiyFp (double value) noexcept
 create floating point using double.
 
constexpr DiyFp (uint64_t mantissa, int exponent) noexcept
 create floating point using mantissa and exponent.
 
 ~DiyFp ()=default
 destroy instance.
 
constexpr DiyFpnormalize () noexcept
 normalize floating point.
 
constexpr void normalizedBoundaries (DiyFp &minus, DiyFp &plus) const noexcept
 get normalized boundaries.
 
constexpr DiyFpoperator-= (const DiyFp &rhs) noexcept
 minus operator
 
constexpr DiyFpoperator*= (const DiyFp &rhs) noexcept
 multiplication operator.
 

Public Attributes

uint64_t _mantissa = 0
 mantissa.
 
int _exponent = 0
 exponent.
 

Static Public Attributes

static constexpr int _diyMantissaSize = std::numeric_limits <uint64_t>::digits
 home made double mantissa size.
 
static constexpr int _mantissaSize = std::numeric_limits <double>::digits - 1
 double mantissa size.
 
static constexpr int _exponentBias = 0x3FF + _mantissaSize
 exponent bias.
 
static constexpr uint64_t _mantissaMask = 0x000FFFFFFFFFFFFFLLU
 mantissa mask.
 
static constexpr uint64_t _exponentMask = 0x7FF0000000000000LLU
 exponent mask.
 
static constexpr uint64_t _hiddenBit = 0x0010000000000000LLU
 hidden bit.
 

Detailed Description

hand made floating point.

Constructor & Destructor Documentation

◆ DiyFp() [1/4]

join::DiyFp::DiyFp ( )
constexprdefaultnoexcept

default constructor.

◆ DiyFp() [2/4]

join::DiyFp::DiyFp ( const DiyFp & other)
constexprdefaultnoexcept

copy constructor.

Parameters
otherobject to copy.

◆ DiyFp() [3/4]

join::DiyFp::DiyFp ( double value)
inlineexplicitnoexcept

create floating point using double.

Parameters
valuedouble value.

◆ DiyFp() [4/4]

join::DiyFp::DiyFp ( uint64_t mantissa,
int exponent )
inlineconstexprnoexcept

create floating point using mantissa and exponent.

Parameters
mantissamantissa.
exponentexponent.

◆ ~DiyFp()

join::DiyFp::~DiyFp ( )
default

destroy instance.

Member Function Documentation

◆ normalize()

DiyFp & join::DiyFp::normalize ( )
inlineconstexprnoexcept

normalize floating point.

Returns
a reference of the current object.

◆ normalizedBoundaries()

void join::DiyFp::normalizedBoundaries ( DiyFp & minus,
DiyFp & plus ) const
inlineconstexprnoexcept

get normalized boundaries.

Returns
normalized boundaries.

◆ operator*=()

DiyFp & join::DiyFp::operator*= ( const DiyFp & rhs)
inlineconstexprnoexcept

multiplication operator.

Parameters
rhsfloating point.
Returns
a reference of the current object.

◆ operator-=()

DiyFp & join::DiyFp::operator-= ( const DiyFp & rhs)
inlineconstexprnoexcept

minus operator

Parameters
rhsfloating point.
Returns
a reference of the current object.

◆ operator=()

DiyFp & join::DiyFp::operator= ( const DiyFp & other)
constexprdefaultnoexcept

copy assignment.

Parameters
otherobject to copy.
Returns
a reference of the current object.

Member Data Documentation

◆ _diyMantissaSize

int join::DiyFp::_diyMantissaSize = std::numeric_limits <uint64_t>::digits
staticconstexpr

home made double mantissa size.

◆ _exponent

int join::DiyFp::_exponent = 0

exponent.

◆ _exponentBias

int join::DiyFp::_exponentBias = 0x3FF + _mantissaSize
staticconstexpr

exponent bias.

◆ _exponentMask

uint64_t join::DiyFp::_exponentMask = 0x7FF0000000000000LLU
staticconstexpr

exponent mask.

◆ _hiddenBit

uint64_t join::DiyFp::_hiddenBit = 0x0010000000000000LLU
staticconstexpr

hidden bit.

◆ _mantissa

uint64_t join::DiyFp::_mantissa = 0

mantissa.

◆ _mantissaMask

uint64_t join::DiyFp::_mantissaMask = 0x000FFFFFFFFFFFFFLLU
staticconstexpr

mantissa mask.

◆ _mantissaSize

int join::DiyFp::_mantissaSize = std::numeric_limits <double>::digits - 1
staticconstexpr

double mantissa size.


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