Leonardus
Loading...
Searching...
No Matches
Functions
adapter128.cpp File Reference

Implementation of adapters for 128 bit versions of standard functions. More...

#include <string>
#include <charconv>
#include <cstdlib>
#include <quadmath.h>
#include <gmp.h>
#include "algo.h"
#include "dbc.h"
#include "helper.h"
#include "adapter128.h"
#include "error.h"
+ Include dependency graph for adapter128.cpp:

Functions

string int128_to_string (const __int128 p_z)
 We need an adapter function, because __int128 isn't supported by std::to_string().
 
string float128_to_string (__float128 p_float, size_t p_precision)
 We need an adapter function, because __float128 isn't supported by std::to_string().
 
__int128 string_to_int128 (const string &p_s)
 We need an adapter function, because __int128 isn't supported by the standard library.
 
__float128 string_to_float128 (const string &p_s)
 We need an adapter function, because __float128 isn't supported by the standard library.
 
bool mpz_t_to___int128 (__int128 &p_dst, const mpz_t p_src)
 Converts a mpz_t into an __int128.
 
void __int128_to_mpz_t (mpz_t p_dst, __int128 p_src)
 Converts an __int128 into a mpz_t.
 
void __float128_to_mpf_t (mpf_t p_dst, __float128 p_f128)
 Converts a __float128 to a mpf_t, since GMP doesn't support 128 Bit floats directly.
 

Detailed Description

Implementation of adapters for 128 bit versions of standard functions.

Function Documentation

◆ __float128_to_mpf_t()

void __float128_to_mpf_t ( mpf_t  p_dst,
__float128  p_f128 
)

Converts a __float128 to a mpf_t, since GMP doesn't support 128 Bit floats directly.

Parameters
[out]p_dst... destination mpf_t
[in]p_f128... source __float128

◆ float128_to_string()

string float128_to_string ( __float128  p_float,
size_t  p_precision 
)

We need an adapter function, because __float128 isn't supported by std::to_string().

Implementation with GNU quadmath.

Returns
std::string ... the string-representation of p_float

◆ int128_to_string()

string int128_to_string ( __int128  p_z)

We need an adapter function, because __int128 isn't supported by std::to_string().

Parameters
[in]p_zwe need a representation for this integer
Returns
std::string the string-representation of p_z

◆ mpz_t_to___int128()

bool mpz_t_to___int128 ( __int128 &  p_dst,
const mpz_t  p_src 
)

Converts a mpz_t into an __int128.

Returns
bool ... true if mpz_t fits into 128 bit integer

◆ string_to_float128()

__float128 string_to_float128 ( const std::string &  p_s)

We need an adapter function, because __float128 isn't supported by the standard library.

Implemented with GNU quadmath.

Parameters
[in]p_scontains a string representation as described in the POSIX strtof() function.
Returns
__float128 the IEEE float

◆ string_to_int128()

__int128 string_to_int128 ( const std::string &  p_s)

We need an adapter function, because __int128 isn't supported by the standard library.

Precondition
p_s format is: [-][digit]+
MIN_INT <= integer interpretation <= MAX_INT
Returns
__int128 ... the integer interpretation