class APFloat

Declaration

class APFloat : public APFloatBase { /* full declaration omitted */ };

Declared at: llvm/include/llvm/ADT/APFloat.h:691

Inherits from: APFloatBase

Member Variables

Inherited from APFloatBase:

public static integerPartWidth = APInt::APINT_BITS_PER_WORD

Method Overview

  • public APFloat(const llvm::fltSemantics & Semantics, llvm::StringRef S)
  • public template <typename T, typename > APFloat(const llvm::fltSemantics & Semantics, T V)
  • public APFloat(llvm::APFloat && RHS)
  • public APFloat(const llvm::APFloat & RHS)
  • public APFloat(float f)
  • public APFloat(const llvm::fltSemantics & Semantics, const llvm::APInt & I)
  • public APFloat(const llvm::fltSemantics & Semantics)
  • public APFloat(const llvm::fltSemantics & Semantics, llvm::APFloatBase::integerPart I)
  • public APFloat(double d)
  • public APFloat(const llvm::fltSemantics & Semantics, llvm::APFloatBase::uninitializedTag)
  • public void Profile(llvm::FoldingSetNodeID & NID) const
  • public llvm::APFloatBase::opStatus add(const llvm::APFloat & RHS, llvm::APFloatBase::roundingMode RM)
  • public llvm::APInt bitcastToAPInt() const
  • public bool bitwiseIsEqual(const llvm::APFloat & RHS) const
  • public void changeSign()
  • public void clearSign()
  • public llvm::APFloatBase::cmpResult compare(const llvm::APFloat & RHS) const
  • public llvm::APFloatBase::opStatus convert(const llvm::fltSemantics & ToSemantics, llvm::APFloatBase::roundingMode RM, bool * losesInfo)
  • public llvm::APFloatBase::opStatus convertFromAPInt(const llvm::APInt & Input, bool IsSigned, llvm::APFloatBase::roundingMode RM)
  • public llvm::APFloatBase::opStatus convertFromSignExtendedInteger(const llvm::APFloatBase::integerPart * Input, unsigned int InputSize, bool IsSigned, llvm::APFloatBase::roundingMode RM)
  • public Expected<llvm::APFloatBase::opStatus> convertFromString(llvm::StringRef, llvm::APFloatBase::roundingMode)
  • public llvm::APFloatBase::opStatus convertFromZeroExtendedInteger(const llvm::APFloatBase::integerPart * Input, unsigned int InputSize, bool IsSigned, llvm::APFloatBase::roundingMode RM)
  • public double convertToDouble() const
  • public float convertToFloat() const
  • public unsigned int convertToHexString(char * DST, unsigned int HexDigits, bool UpperCase, llvm::APFloatBase::roundingMode RM) const
  • public llvm::APFloatBase::opStatus convertToInteger(llvm::APSInt & Result, llvm::APFloatBase::roundingMode RM, bool * IsExact) const
  • public llvm::APFloatBase::opStatus convertToInteger(MutableArrayRef<llvm::APFloatBase::integerPart> Input, unsigned int Width, bool IsSigned, llvm::APFloatBase::roundingMode RM, bool * IsExact) const
  • public void copySign(const llvm::APFloat & RHS)
  • public static llvm::APFloat copySign(llvm::APFloat Value, const llvm::APFloat & Sign)
  • public llvm::APFloatBase::opStatus divide(const llvm::APFloat & RHS, llvm::APFloatBase::roundingMode RM)
  • public void dump() const
  • public llvm::APFloatBase::opStatus fusedMultiplyAdd(const llvm::APFloat & Multiplicand, const llvm::APFloat & Addend, llvm::APFloatBase::roundingMode RM)
  • public static llvm::APFloat getAllOnesValue(unsigned int BitWidth, bool isIEEE = false)
  • public llvm::APFloatBase::fltCategory getCategory() const
  • public bool getExactInverse(llvm::APFloat * inv) const
  • public static llvm::APFloat getInf(const llvm::fltSemantics & Sem, bool Negative = false)
  • public static llvm::APFloat getLargest(const llvm::fltSemantics & Sem, bool Negative = false)
  • public static llvm::APFloat getNaN(const llvm::fltSemantics & Sem, bool Negative = false, uint64_t payload = 0)
  • public static llvm::APFloat getQNaN(const llvm::fltSemantics & Sem, bool Negative = false, const llvm::APInt * payload = nullptr)
  • public static llvm::APFloat getSNaN(const llvm::fltSemantics & Sem, bool Negative = false, const llvm::APInt * payload = nullptr)
  • public const llvm::fltSemantics & getSemantics() const
  • public static llvm::APFloat getSmallest(const llvm::fltSemantics & Sem, bool Negative = false)
  • public static llvm::APFloat getSmallestNormalized(const llvm::fltSemantics & Sem, bool Negative = false)
  • public static llvm::APFloat getZero(const llvm::fltSemantics & Sem, bool Negative = false)
  • public bool isDenormal() const
  • public bool isExactlyValue(double V) const
  • public bool isFinite() const
  • public bool isFiniteNonZero() const
  • public bool isInfinity() const
  • public bool isInteger() const
  • public bool isLargest() const
  • public bool isNaN() const
  • public bool isNegZero() const
  • public bool isNegative() const
  • public bool isNonZero() const
  • public bool isNormal() const
  • public bool isPosZero() const
  • public bool isSignaling() const
  • public bool isSmallest() const
  • public bool isZero() const
  • public llvm::APFloatBase::opStatus mod(const llvm::APFloat & RHS)
  • public llvm::APFloatBase::opStatus multiply(const llvm::APFloat & RHS, llvm::APFloatBase::roundingMode RM)
  • public bool needsCleanup() const
  • public llvm::APFloatBase::opStatus next(bool nextDown)
  • public void print(llvm::raw_ostream &) const
  • public llvm::APFloatBase::opStatus remainder(const llvm::APFloat & RHS)
  • public llvm::APFloatBase::opStatus roundToIntegral(llvm::APFloatBase::roundingMode RM)
  • public llvm::APFloatBase::opStatus subtract(const llvm::APFloat & RHS, llvm::APFloatBase::roundingMode RM)
  • public void toString(SmallVectorImpl<char> & Str, unsigned int FormatPrecision = 0, unsigned int FormatMaxPadding = 3, bool TruncateZero = true) const
  • public ~APFloat()

Inherited from APFloatBase:

Methods

APFloat(const llvm::fltSemantics& Semantics,
        llvm::StringRef S)

Declared at: llvm/include/llvm/ADT/APFloat.h:854

Parameters

const llvm::fltSemantics& Semantics
llvm::StringRef S

template <typename T, typename>
APFloat(const llvm::fltSemantics& Semantics, T V)

Declared at: llvm/include/llvm/ADT/APFloat.h:858

Templates

T

Parameters

const llvm::fltSemantics& Semantics
T V

APFloat(llvm::APFloat&& RHS)

Declared at: llvm/include/llvm/ADT/APFloat.h:866

Parameters

llvm::APFloat&& RHS

APFloat(const llvm::APFloat& RHS)

Declared at: llvm/include/llvm/ADT/APFloat.h:865

Parameters

const llvm::APFloat& RHS

APFloat(float f)

Declared at: llvm/include/llvm/ADT/APFloat.h:864

Parameters

float f

APFloat(const llvm::fltSemantics& Semantics,
        const llvm::APInt& I)

Declared at: llvm/include/llvm/ADT/APFloat.h:862

Parameters

const llvm::fltSemantics& Semantics
const llvm::APInt& I

APFloat(const llvm::fltSemantics& Semantics)

Declared at: llvm/include/llvm/ADT/APFloat.h:853

Parameters

const llvm::fltSemantics& Semantics

APFloat(const llvm::fltSemantics& Semantics,
        llvm::APFloatBase::integerPart I)

Declared at: llvm/include/llvm/ADT/APFloat.h:855

Parameters

const llvm::fltSemantics& Semantics
llvm::APFloatBase::integerPart I

APFloat(double d)

Declared at: llvm/include/llvm/ADT/APFloat.h:863

Parameters

double d

APFloat(const llvm::fltSemantics& Semantics,
        llvm::APFloatBase::uninitializedTag)

Declared at: llvm/include/llvm/ADT/APFloat.h:860

Parameters

const llvm::fltSemantics& Semantics
llvm::APFloatBase::uninitializedTag

void Profile(llvm::FoldingSetNodeID& NID) const

Description

Used to insert APFloat objects, or objects that contain APFloat objects, into FoldingSets.

Declared at: llvm/include/llvm/ADT/APFloat.h:959

Parameters

llvm::FoldingSetNodeID& NID

llvm::APFloatBase::opStatus add(
    const llvm::APFloat& RHS,
    llvm::APFloatBase::roundingMode RM)

Declared at: llvm/include/llvm/ADT/APFloat.h:961

Parameters

const llvm::APFloat& RHS
llvm::APFloatBase::roundingMode RM

llvm::APInt bitcastToAPInt() const

Declared at: llvm/include/llvm/ADT/APFloat.h:1114

bool bitwiseIsEqual(
    const llvm::APFloat& RHS) const

Declared at: llvm/include/llvm/ADT/APFloat.h:1132

Parameters

const llvm::APFloat& RHS

void changeSign()

Declared at: llvm/include/llvm/ADT/APFloat.h:1070

void clearSign()

Declared at: llvm/include/llvm/ADT/APFloat.h:1071

llvm::APFloatBase::cmpResult compare(
    const llvm::APFloat& RHS) const

Declared at: llvm/include/llvm/ADT/APFloat.h:1122

Parameters

const llvm::APFloat& RHS

llvm::APFloatBase::opStatus convert(
    const llvm::fltSemantics& ToSemantics,
    llvm::APFloatBase::roundingMode RM,
    bool* losesInfo)

Declared at: llvm/include/llvm/ADT/APFloat.h:1087

Parameters

const llvm::fltSemantics& ToSemantics
llvm::APFloatBase::roundingMode RM
bool* losesInfo

llvm::APFloatBase::opStatus convertFromAPInt(
    const llvm::APInt& Input,
    bool IsSigned,
    llvm::APFloatBase::roundingMode RM)

Declared at: llvm/include/llvm/ADT/APFloat.h:1097

Parameters

const llvm::APInt& Input
bool IsSigned
llvm::APFloatBase::roundingMode RM

llvm::APFloatBase::opStatus
convertFromSignExtendedInteger(
    const llvm::APFloatBase::integerPart* Input,
    unsigned int InputSize,
    bool IsSigned,
    llvm::APFloatBase::roundingMode RM)

Declared at: llvm/include/llvm/ADT/APFloat.h:1101

Parameters

const llvm::APFloatBase::integerPart* Input
unsigned int InputSize
bool IsSigned
llvm::APFloatBase::roundingMode RM

Expected<llvm::APFloatBase::opStatus>
convertFromString(llvm::StringRef,
                  llvm::APFloatBase::roundingMode)

Declared at: llvm/include/llvm/ADT/APFloat.h:1113

Parameters

llvm::StringRef
llvm::APFloatBase::roundingMode

llvm::APFloatBase::opStatus
convertFromZeroExtendedInteger(
    const llvm::APFloatBase::integerPart* Input,
    unsigned int InputSize,
    bool IsSigned,
    llvm::APFloatBase::roundingMode RM)

Declared at: llvm/include/llvm/ADT/APFloat.h:1107

Parameters

const llvm::APFloatBase::integerPart* Input
unsigned int InputSize
bool IsSigned
llvm::APFloatBase::roundingMode RM

double convertToDouble() const

Declared at: llvm/include/llvm/ADT/APFloat.h:1117

float convertToFloat() const

Declared at: llvm/include/llvm/ADT/APFloat.h:1118

unsigned int convertToHexString(
    char* DST,
    unsigned int HexDigits,
    bool UpperCase,
    llvm::APFloatBase::roundingMode RM) const

Declared at: llvm/include/llvm/ADT/APFloat.h:1157

Parameters

char* DST
unsigned int HexDigits
bool UpperCase
llvm::APFloatBase::roundingMode RM

llvm::APFloatBase::opStatus convertToInteger(
    llvm::APSInt& Result,
    llvm::APFloatBase::roundingMode RM,
    bool* IsExact) const

Declared at: llvm/include/llvm/ADT/APFloat.h:1095

Parameters

llvm::APSInt& Result
llvm::APFloatBase::roundingMode RM
bool* IsExact

llvm::APFloatBase::opStatus convertToInteger(
    MutableArrayRef<
        llvm::APFloatBase::integerPart> Input,
    unsigned int Width,
    bool IsSigned,
    llvm::APFloatBase::roundingMode RM,
    bool* IsExact) const

Declared at: llvm/include/llvm/ADT/APFloat.h:1089

Parameters

MutableArrayRef<llvm::APFloatBase::integerPart> Input
unsigned int Width
bool IsSigned
llvm::APFloatBase::roundingMode RM
bool* IsExact

void copySign(const llvm::APFloat& RHS)

Declared at: llvm/include/llvm/ADT/APFloat.h:1075

Parameters

const llvm::APFloat& RHS

static llvm::APFloat copySign(
    llvm::APFloat Value,
    const llvm::APFloat& Sign)

Description

A static helper to produce a copy of an APFloat value with its sign copied from some other APFloat.

Declared at: llvm/include/llvm/ADT/APFloat.h:1082

Parameters

llvm::APFloat Value
const llvm::APFloat& Sign

llvm::APFloatBase::opStatus divide(
    const llvm::APFloat& RHS,
    llvm::APFloatBase::roundingMode RM)

Declared at: llvm/include/llvm/ADT/APFloat.h:988

Parameters

const llvm::APFloat& RHS
llvm::APFloatBase::roundingMode RM

void dump() const

Declared at: llvm/include/llvm/ADT/APFloat.h:1194

llvm::APFloatBase::opStatus fusedMultiplyAdd(
    const llvm::APFloat& Multiplicand,
    const llvm::APFloat& Addend,
    llvm::APFloatBase::roundingMode RM)

Declared at: llvm/include/llvm/ADT/APFloat.h:1015

Parameters

const llvm::APFloat& Multiplicand
const llvm::APFloat& Addend
llvm::APFloatBase::roundingMode RM

static llvm::APFloat getAllOnesValue(
    unsigned int BitWidth,
    bool isIEEE = false)

Description

Returns a float which is bitcasted from an all one value int.

Declared at: llvm/include/llvm/ADT/APFloat.h:955

Parameters

unsigned int BitWidth
- Select float type
bool isIEEE = false
- If 128 bit number, select between PPC and IEEE

llvm::APFloatBase::fltCategory getCategory() const

Declared at: llvm/include/llvm/ADT/APFloat.h:1174

bool getExactInverse(llvm::APFloat* inv) const

Declared at: llvm/include/llvm/ADT/APFloat.h:1196

Parameters

llvm::APFloat* inv

static llvm::APFloat getInf(
    const llvm::fltSemantics& Sem,
    bool Negative = false)

Description

Factory for Positive and Negative Infinity.

Declared at: llvm/include/llvm/ADT/APFloat.h:884

Parameters

const llvm::fltSemantics& Sem
bool Negative = false
True iff the number should be negative.

static llvm::APFloat getLargest(
    const llvm::fltSemantics& Sem,
    bool Negative = false)

Description

Returns the largest finite number in the given semantics.

Declared at: llvm/include/llvm/ADT/APFloat.h:924

Parameters

const llvm::fltSemantics& Sem
bool Negative = false
- True iff the number should be negative

static llvm::APFloat getNaN(
    const llvm::fltSemantics& Sem,
    bool Negative = false,
    uint64_t payload = 0)

Description

Factory for NaN values.

Declared at: llvm/include/llvm/ADT/APFloat.h:895

Parameters

const llvm::fltSemantics& Sem
bool Negative = false
- True iff the NaN generated should be negative.
uint64_t payload = 0
- The unspecified fill bits for creating the NaN, 0 by default. The value is truncated as necessary.

static llvm::APFloat getQNaN(
    const llvm::fltSemantics& Sem,
    bool Negative = false,
    const llvm::APInt* payload = nullptr)

Description

Factory for QNaN values.

Declared at: llvm/include/llvm/ADT/APFloat.h:906

Parameters

const llvm::fltSemantics& Sem
bool Negative = false
const llvm::APInt* payload = nullptr

static llvm::APFloat getSNaN(
    const llvm::fltSemantics& Sem,
    bool Negative = false,
    const llvm::APInt* payload = nullptr)

Description

Factory for SNaN values.

Declared at: llvm/include/llvm/ADT/APFloat.h:914

Parameters

const llvm::fltSemantics& Sem
bool Negative = false
const llvm::APInt* payload = nullptr

const llvm::fltSemantics& getSemantics() const

Declared at: llvm/include/llvm/ADT/APFloat.h:1175

static llvm::APFloat getSmallest(
    const llvm::fltSemantics& Sem,
    bool Negative = false)

Description

Returns the smallest (by magnitude) finite number in the given semantics. Might be denormalized, which implies a relative loss of precision.

Declared at: llvm/include/llvm/ADT/APFloat.h:934

Parameters

const llvm::fltSemantics& Sem
bool Negative = false
- True iff the number should be negative

static llvm::APFloat getSmallestNormalized(
    const llvm::fltSemantics& Sem,
    bool Negative = false)

Description

Returns the smallest (by magnitude) normalized finite number in the given semantics.

Declared at: llvm/include/llvm/ADT/APFloat.h:944

Parameters

const llvm::fltSemantics& Sem
bool Negative = false
- True iff the number should be negative

static llvm::APFloat getZero(
    const llvm::fltSemantics& Sem,
    bool Negative = false)

Description

Factory for Positive and Negative Zero.

Declared at: llvm/include/llvm/ADT/APFloat.h:875

Parameters

const llvm::fltSemantics& Sem
bool Negative = false
True iff the number should be negative.

bool isDenormal() const

Declared at: llvm/include/llvm/ADT/APFloat.h:1168

bool isExactlyValue(double V) const

Description

We don't rely on operator== working on double values, as it returns true for things that are clearly not equal, like -0.0 and 0.0. As such, this method can be used to do an exact bit-for-bit comparison of two floating point values. We leave the version with the double argument here because it's just so convenient to write "2.0" and the like. Without this function we'd have to duplicate its logic everywhere it's called.

Declared at: llvm/include/llvm/ADT/APFloat.h:1150

Parameters

double V

bool isFinite() const

Declared at: llvm/include/llvm/ADT/APFloat.h:1172

bool isFiniteNonZero() const

Declared at: llvm/include/llvm/ADT/APFloat.h:1177

bool isInfinity() const

Declared at: llvm/include/llvm/ADT/APFloat.h:1164

bool isInteger() const

Declared at: llvm/include/llvm/ADT/APFloat.h:1182

bool isLargest() const

Declared at: llvm/include/llvm/ADT/APFloat.h:1181

bool isNaN() const

Declared at: llvm/include/llvm/ADT/APFloat.h:1165

bool isNegZero() const

Declared at: llvm/include/llvm/ADT/APFloat.h:1179

bool isNegative() const

Declared at: llvm/include/llvm/ADT/APFloat.h:1167

bool isNonZero() const

Declared at: llvm/include/llvm/ADT/APFloat.h:1176

bool isNormal() const

Declared at: llvm/include/llvm/ADT/APFloat.h:1171

bool isPosZero() const

Declared at: llvm/include/llvm/ADT/APFloat.h:1178

bool isSignaling() const

Declared at: llvm/include/llvm/ADT/APFloat.h:1169

bool isSmallest() const

Declared at: llvm/include/llvm/ADT/APFloat.h:1180

bool isZero() const

Declared at: llvm/include/llvm/ADT/APFloat.h:1163

llvm::APFloatBase::opStatus mod(
    const llvm::APFloat& RHS)

Declared at: llvm/include/llvm/ADT/APFloat.h:1006

Parameters

const llvm::APFloat& RHS

llvm::APFloatBase::opStatus multiply(
    const llvm::APFloat& RHS,
    llvm::APFloatBase::roundingMode RM)

Declared at: llvm/include/llvm/ADT/APFloat.h:979

Parameters

const llvm::APFloat& RHS
llvm::APFloatBase::roundingMode RM

bool needsCleanup() const

Declared at: llvm/include/llvm/ADT/APFloat.h:870

llvm::APFloatBase::opStatus next(bool nextDown)

Declared at: llvm/include/llvm/ADT/APFloat.h:1034

Parameters

bool nextDown

void print(llvm::raw_ostream&) const

Declared at: llvm/include/llvm/ADT/APFloat.h:1193

Parameters

llvm::raw_ostream&

llvm::APFloatBase::opStatus remainder(
    const llvm::APFloat& RHS)

Declared at: llvm/include/llvm/ADT/APFloat.h:997

Parameters

const llvm::APFloat& RHS

llvm::APFloatBase::opStatus roundToIntegral(
    llvm::APFloatBase::roundingMode RM)

Declared at: llvm/include/llvm/ADT/APFloat.h:1028

Parameters

llvm::APFloatBase::roundingMode RM

llvm::APFloatBase::opStatus subtract(
    const llvm::APFloat& RHS,
    llvm::APFloatBase::roundingMode RM)

Declared at: llvm/include/llvm/ADT/APFloat.h:970

Parameters

const llvm::APFloat& RHS
llvm::APFloatBase::roundingMode RM

void toString(SmallVectorImpl<char>& Str,
              unsigned int FormatPrecision = 0,
              unsigned int FormatMaxPadding = 3,
              bool TruncateZero = true) const

Declared at: llvm/include/llvm/ADT/APFloat.h:1187

Parameters

SmallVectorImpl<char>& Str
unsigned int FormatPrecision = 0
unsigned int FormatMaxPadding = 3
bool TruncateZero = true

~APFloat()

Declared at: llvm/include/llvm/ADT/APFloat.h:868