Prusa Slicer 2.6.0
Loading...
Searching...
No Matches
fast_float.h File Reference
#include <system_error>
#include <cfloat>
#include <cstdint>
#include <cassert>
#include <endian.h>
#include <cstdio>
#include <cctype>
#include <cstring>
#include <cinttypes>
#include <cmath>
#include <cstdlib>
#include <limits>
+ Include dependency graph for fast_float.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  fast_float::from_chars_result
 
struct  fast_float::parse_options
 
struct  fast_float::value128
 
struct  fast_float::adjusted_mantissa
 
struct  fast_float::decimal
 
struct  fast_float::binary_format< T >
 
struct  fast_float::parsed_number_string
 
struct  fast_float::powers_template< unused >
 

Namespaces

namespace  fast_float
 
namespace  fast_float::anonymous_namespace{fast_float.h}
 
namespace  fast_float::detail
 

Macros

#define FASTFLOAT_FLOAT_COMMON_H
 
#define FASTFLOAT_IS_BIG_ENDIAN   0
 
#define FASTFLOAT_IS_BIG_ENDIAN   0
 
#define FASTFLOAT_IS_BIG_ENDIAN   0
 
#define fastfloat_really_inline   inline __attribute__((always_inline))
 
#define FASTFLOAT_ASCII_NUMBER_H
 
#define FASTFLOAT_FAST_TABLE_H
 
#define FASTFLOAT_DECIMAL_TO_BINARY_H
 
#define FASTFLOAT_GENERIC_DECIMAL_TO_BINARY_H
 
#define FASTFLOAT_PARSE_NUMBER_H
 

Typedefs

using fast_float::powers = powers_template<>
 

Enumerations

enum  fast_float::chars_format { fast_float::scientific = 1<<0 , fast_float::fixed = 1<<2 , fast_float::hex = 1<<3 , fast_float::general = fixed | scientific }
 

Functions

template<typename T >
from_chars_result fast_float::from_chars (const char *first, const char *last, T &value, chars_format fmt=chars_format::general) noexcept
 
template<typename T >
from_chars_result fast_float::from_chars_advanced (const char *first, const char *last, T &value, parse_options options) noexcept
 
bool fast_float::fastfloat_strncasecmp (const char *input1, const char *input2, size_t length)
 
fastfloat_really_inline int fast_float::leading_zeroes (uint64_t input_num)
 
fastfloat_really_inline value128 fast_float::full_multiplication (uint64_t a, uint64_t b)
 
template<class OStream >
OStream & operator<< (OStream &out, const fast_float::decimal &d)
 
fastfloat_really_inline bool fast_float::is_integer (char c) noexcept
 
fastfloat_really_inline uint64_t fast_float::byteswap (uint64_t val)
 
fastfloat_really_inline uint64_t fast_float::read_u64 (const char *chars)
 
fastfloat_really_inline void fast_float::write_u64 (uint8_t *chars, uint64_t val)
 
fastfloat_really_inline uint32_t fast_float::parse_eight_digits_unrolled (uint64_t val)
 
fastfloat_really_inline uint32_t fast_float::parse_eight_digits_unrolled (const char *chars) noexcept
 
fastfloat_really_inline bool fast_float::is_made_of_eight_digits_fast (uint64_t val) noexcept
 
fastfloat_really_inline bool fast_float::is_made_of_eight_digits_fast (const char *chars) noexcept
 
fastfloat_really_inline parsed_number_string fast_float::parse_number_string (const char *p, const char *pend, parse_options options) noexcept
 
fastfloat_really_inline decimal fast_float::parse_decimal (const char *p, const char *pend, parse_options options) noexcept
 
template<int bit_precision>
fastfloat_really_inline value128 fast_float::compute_product_approximation (int64_t q, uint64_t w)
 
fastfloat_really_inline int fast_float::detail::power (int q) noexcept
 
template<typename binary >
fastfloat_really_inline adjusted_mantissa fast_float::compute_float (int64_t q, uint64_t w) noexcept
 
void fast_float::detail::trim (decimal &h)
 
uint32_t fast_float::detail::number_of_digits_decimal_left_shift (const decimal &h, uint32_t shift)
 
uint64_t fast_float::detail::round (decimal &h)
 
void fast_float::detail::decimal_left_shift (decimal &h, uint32_t shift)
 
void fast_float::detail::decimal_right_shift (decimal &h, uint32_t shift)
 
template<typename binary >
adjusted_mantissa fast_float::compute_float (decimal &d)
 
template<typename binary >
adjusted_mantissa fast_float::parse_long_mantissa (const char *first, const char *last, parse_options options)
 
template<typename T >
from_chars_result fast_float::detail::parse_infnan (const char *first, const char *last, T &value) noexcept
 
template<typename T >
fastfloat_really_inline void fast_float::detail::to_float (bool negative, adjusted_mantissa am, T &value)
 

Variables

constexpr uint32_t fast_float::anonymous_namespace{fast_float.h}::max_digits = 768
 
constexpr uint32_t fast_float::anonymous_namespace{fast_float.h}::max_digit_without_overflow = 19
 
constexpr int32_t fast_float::anonymous_namespace{fast_float.h}::decimal_point_range = 2047
 
static constexpr double fast_float::powers_of_ten_double []
 
static constexpr float fast_float::powers_of_ten_float []
 

Class Documentation

◆ fast_float::from_chars_result

struct fast_float::from_chars_result
Class Members
errc ec
const char * ptr

◆ fast_float::parsed_number_string

struct fast_float::parsed_number_string
Class Members
int64_t exponent
const char * lastmatch
uint64_t mantissa
bool negative
bool too_many_digits
bool valid

Macro Definition Documentation

◆ FASTFLOAT_ASCII_NUMBER_H

#define FASTFLOAT_ASCII_NUMBER_H

◆ FASTFLOAT_DECIMAL_TO_BINARY_H

#define FASTFLOAT_DECIMAL_TO_BINARY_H

◆ FASTFLOAT_FAST_TABLE_H

#define FASTFLOAT_FAST_TABLE_H

◆ FASTFLOAT_FLOAT_COMMON_H

#define FASTFLOAT_FLOAT_COMMON_H

◆ FASTFLOAT_GENERIC_DECIMAL_TO_BINARY_H

#define FASTFLOAT_GENERIC_DECIMAL_TO_BINARY_H

◆ FASTFLOAT_IS_BIG_ENDIAN [1/3]

#define FASTFLOAT_IS_BIG_ENDIAN   0

◆ FASTFLOAT_IS_BIG_ENDIAN [2/3]

#define FASTFLOAT_IS_BIG_ENDIAN   0

◆ FASTFLOAT_IS_BIG_ENDIAN [3/3]

#define FASTFLOAT_IS_BIG_ENDIAN   0

◆ FASTFLOAT_PARSE_NUMBER_H

#define FASTFLOAT_PARSE_NUMBER_H

◆ fastfloat_really_inline

#define fastfloat_really_inline   inline __attribute__((always_inline))

Function Documentation

◆ operator<<()

template<class OStream >
OStream & operator<< ( OStream &  out,
const fast_float::decimal d 
)
inline
428 {
429 out << "0.";
430 for (size_t i = 0; i < d.num_digits; i++) {
431 out << int32_t(d.digits[i]);
432 }
433 out << " * 10 ** " << d.decimal_point;
434 return out;
435}
__int32 int32_t
Definition unistd.h:75