Audacity 3.2.0
Classes | Namespaces | Macros | Typedefs | Enumerations | Functions | Variables
fast_float.h File Reference
#include <system_error>
#include <cfloat>
#include <cstdint>
#include <cassert>
#include <cstring>
#include <endian.h>
#include <cctype>
#include <iterator>
#include <cinttypes>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#include <climits>
#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::span< T >
 
struct  fast_float::value128
 
struct  fast_float::adjusted_mantissa
 
struct  fast_float::binary_format< T >
 
struct  fast_float::parsed_number_string
 
struct  fast_float::powers_template< unused >
 
struct  fast_float::stackvec< size >
 
struct  fast_float::bigint
 

Namespaces

namespace  fast_float
 
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_ASSERT(x)   { if (!(x)) abort(); }
 
#define FASTFLOAT_DEBUG_ASSERT(x)   assert(x)
 
#define FASTFLOAT_TRY(x)   { if (!(x)) return false; }
 
#define FASTFLOAT_ASCII_NUMBER_H
 
#define FASTFLOAT_FAST_TABLE_H
 
#define FASTFLOAT_DECIMAL_TO_BINARY_H
 
#define FASTFLOAT_BIGINT_H
 
#define FASTFLOAT_32BIT_LIMB
 
#define FASTFLOAT_DIGIT_COMPARISON_H
 
#define FASTFLOAT_PARSE_NUMBER_H
 

Typedefs

typedef span< const char > fast_float::byte_span
 
using fast_float::powers = powers_template<>
 
typedef uint32_t fast_float::limb
 
typedef span< limb > fast_float::limb_span
 

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<typename T >
fastfloat_really_inline void fast_float::to_float (bool negative, adjusted_mantissa am, T &value)
 
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
 
template<int bit_precision>
fastfloat_really_inline value128 fast_float::compute_product_approximation (int64_t q, uint64_t w)
 
constexpr fastfloat_really_inline int32_t fast_float::detail::power (int32_t q) noexcept
 
template<typename binary >
fastfloat_really_inline adjusted_mantissa fast_float::compute_error_scaled (int64_t q, uint64_t w, int lz) noexcept
 
template<typename binary >
fastfloat_really_inline adjusted_mantissa fast_float::compute_error (int64_t q, uint64_t w) noexcept
 
template<typename binary >
fastfloat_really_inline adjusted_mantissa fast_float::compute_float (int64_t q, uint64_t w) noexcept
 
fastfloat_really_inline uint64_t fast_float::empty_hi64 (bool &truncated) noexcept
 
fastfloat_really_inline uint64_t fast_float::uint64_hi64 (uint64_t r0, bool &truncated) noexcept
 
fastfloat_really_inline uint64_t fast_float::uint64_hi64 (uint64_t r0, uint64_t r1, bool &truncated) noexcept
 
fastfloat_really_inline uint64_t fast_float::uint32_hi64 (uint32_t r0, bool &truncated) noexcept
 
fastfloat_really_inline uint64_t fast_float::uint32_hi64 (uint32_t r0, uint32_t r1, bool &truncated) noexcept
 
fastfloat_really_inline uint64_t fast_float::uint32_hi64 (uint32_t r0, uint32_t r1, uint32_t r2, bool &truncated) noexcept
 
fastfloat_really_inline limb fast_float::scalar_add (limb x, limb y, bool &overflow) noexcept
 
fastfloat_really_inline limb fast_float::scalar_mul (limb x, limb y, limb &carry) noexcept
 
template<uint16_t size>
bool fast_float::small_add_from (stackvec< size > &vec, limb y, size_t start) noexcept
 
template<uint16_t size>
fastfloat_really_inline bool fast_float::small_add (stackvec< size > &vec, limb y) noexcept
 
template<uint16_t size>
bool fast_float::small_mul (stackvec< size > &vec, limb y) noexcept
 
template<uint16_t size>
bool fast_float::large_add_from (stackvec< size > &x, limb_span y, size_t start) noexcept
 
template<uint16_t size>
fastfloat_really_inline bool fast_float::large_add_from (stackvec< size > &x, limb_span y) noexcept
 
template<uint16_t size>
bool fast_float::long_mul (stackvec< size > &x, limb_span y) noexcept
 
template<uint16_t size>
bool fast_float::large_mul (stackvec< size > &x, limb_span y) noexcept
 
fastfloat_really_inline int32_t fast_float::scientific_exponent (parsed_number_string &num) noexcept
 
template<typename T >
fastfloat_really_inline adjusted_mantissa fast_float::to_extended (T value) noexcept
 
template<typename T >
fastfloat_really_inline adjusted_mantissa fast_float::to_extended_halfway (T value) noexcept
 
template<typename T , typename callback >
fastfloat_really_inline void fast_float::round (adjusted_mantissa &am, callback cb) noexcept
 
template<typename callback >
fastfloat_really_inline void fast_float::round_nearest_tie_even (adjusted_mantissa &am, int32_t shift, callback cb) noexcept
 
fastfloat_really_inline void fast_float::round_down (adjusted_mantissa &am, int32_t shift) noexcept
 
fastfloat_really_inline void fast_float::skip_zeros (const char *&first, const char *last) noexcept
 
fastfloat_really_inline bool fast_float::is_truncated (const char *first, const char *last) noexcept
 
fastfloat_really_inline bool fast_float::is_truncated (byte_span s) noexcept
 
fastfloat_really_inline void fast_float::parse_eight_digits (const char *&p, limb &value, size_t &counter, size_t &count) noexcept
 
fastfloat_really_inline void fast_float::parse_one_digit (const char *&p, limb &value, size_t &counter, size_t &count) noexcept
 
fastfloat_really_inline void fast_float::add_native (bigint &big, limb power, limb value) noexcept
 
fastfloat_really_inline void fast_float::round_up_bigint (bigint &big, size_t &count) noexcept
 
void fast_float::parse_mantissa (bigint &result, parsed_number_string &num, size_t max_digits, size_t &digits) noexcept
 
template<typename T >
adjusted_mantissa fast_float::positive_digit_comp (bigint &bigmant, int32_t exponent) noexcept
 
template<typename T >
adjusted_mantissa fast_float::negative_digit_comp (bigint &bigmant, adjusted_mantissa am, int32_t exponent) noexcept
 
template<typename T >
adjusted_mantissa fast_float::digit_comp (parsed_number_string &num, adjusted_mantissa am) noexcept
 
template<typename T >
from_chars_result fast_float::detail::parse_infnan (const char *first, const char *last, T &value) noexcept
 

Variables

static constexpr int32_t fast_float::invalid_am_bias = -0x8000
 
static constexpr double fast_float::powers_of_ten_double []
 
static constexpr float fast_float::powers_of_ten_float []
 
constexpr size_t fast_float::limb_bits = 32
 
constexpr size_t fast_float::bigint_bits = 4000
 
constexpr size_t fast_float::bigint_limbs = bigint_bits / limb_bits
 
static constexpr uint64_t fast_float::powers_of_ten_uint64 []
 

Macro Definition Documentation

◆ FASTFLOAT_32BIT_LIMB

#define FASTFLOAT_32BIT_LIMB

Definition at line 1615 of file fast_float.h.

◆ FASTFLOAT_ASCII_NUMBER_H

#define FASTFLOAT_ASCII_NUMBER_H

Definition at line 467 of file fast_float.h.

◆ FASTFLOAT_ASSERT

#define FASTFLOAT_ASSERT (   x)    { if (!(x)) abort(); }

Definition at line 179 of file fast_float.h.

◆ FASTFLOAT_BIGINT_H

#define FASTFLOAT_BIGINT_H

Definition at line 1594 of file fast_float.h.

◆ FASTFLOAT_DEBUG_ASSERT

#define FASTFLOAT_DEBUG_ASSERT (   x)    assert(x)

Definition at line 184 of file fast_float.h.

◆ FASTFLOAT_DECIMAL_TO_BINARY_H

#define FASTFLOAT_DECIMAL_TO_BINARY_H

Definition at line 1400 of file fast_float.h.

◆ FASTFLOAT_DIGIT_COMPARISON_H

#define FASTFLOAT_DIGIT_COMPARISON_H

Definition at line 2417 of file fast_float.h.

◆ FASTFLOAT_FAST_TABLE_H

#define FASTFLOAT_FAST_TABLE_H

Definition at line 699 of file fast_float.h.

◆ FASTFLOAT_FLOAT_COMMON_H

#define FASTFLOAT_FLOAT_COMMON_H

Definition at line 103 of file fast_float.h.

◆ FASTFLOAT_IS_BIG_ENDIAN [1/3]

#define FASTFLOAT_IS_BIG_ENDIAN   0

Definition at line 166 of file fast_float.h.

◆ FASTFLOAT_IS_BIG_ENDIAN [2/3]

#define FASTFLOAT_IS_BIG_ENDIAN   0

Definition at line 166 of file fast_float.h.

◆ FASTFLOAT_IS_BIG_ENDIAN [3/3]

#define FASTFLOAT_IS_BIG_ENDIAN   0

Definition at line 166 of file fast_float.h.

◆ FASTFLOAT_PARSE_NUMBER_H

#define FASTFLOAT_PARSE_NUMBER_H

Definition at line 2839 of file fast_float.h.

◆ fastfloat_really_inline

#define fastfloat_really_inline   inline __attribute__((always_inline))

Definition at line 175 of file fast_float.h.

◆ FASTFLOAT_TRY

#define FASTFLOAT_TRY (   x)    { if (!(x)) return false; }

Definition at line 188 of file fast_float.h.