Show / Hide Table of Contents

Struct BFloat16

This value type represents A BFloat16 value. See https://cloud.google.com/blog/products/ai-machine-learning/bfloat16-the-secret-to-high-performance-on-cloud-tpus for details. it is blittable as defined in https://docs.microsoft.com/en-us/dotnet/framework/interop/blittable-and-non-blittable-types and as such, represented the same way in managed and native memories. This means that arrays of this type do not have to be copied to be passed to native memory but simply pinnned and read by native code. Thus, one can create a Tensor on top of an array of these structures and feed it directly to Onnxruntime library. Binary wise, it is the same as ushort[] (uint16_t in C++). However, we would like a separate type for type dispatching.

Implements
IComparable
IComparable<BFloat16>
IEquatable<BFloat16>
Inherited Members
Object.Equals(Object, Object)
Object.GetType()
Object.ReferenceEquals(Object, Object)
Namespace: Microsoft.ML.OnnxRuntime
Assembly: Microsoft.ML.OnnxRuntime.dll
Syntax
public readonly struct BFloat16 : IComparable, IComparable<BFloat16>, IEquatable<BFloat16>

Constructors

| Improve this Doc View Source

BFloat16(UInt16)

Constructor from ushort, no conversion takes place. The value is assumed to be converted

Declaration
public BFloat16(ushort v)
Parameters
Type Name Description
UInt16 v

bfloat16 representation bits

Fields

| Improve this Doc View Source

value

bfloat16 representation bits

Declaration
public readonly ushort value
Field Value
Type Description
UInt16

Properties

| Improve this Doc View Source

Epsilon

BFloat16 Epsilon value

Declaration
public static readonly BFloat16 Epsilon { get; }
Property Value
Type Description
BFloat16
| Improve this Doc View Source

MaxValue

BFloat16 Max value

Declaration
public static readonly BFloat16 MaxValue { get; }
Property Value
Type Description
BFloat16
| Improve this Doc View Source

MinValue

BFloat16 Min value

Declaration
public static readonly BFloat16 MinValue { get; }
Property Value
Type Description
BFloat16
| Improve this Doc View Source

NaN

BFloat16 NaN

Declaration
public static readonly BFloat16 NaN { get; }
Property Value
Type Description
BFloat16
| Improve this Doc View Source

NegativeInfinity

BFloat16 Negative infinity value

Declaration
public static readonly BFloat16 NegativeInfinity { get; }
Property Value
Type Description
BFloat16
| Improve this Doc View Source

NegativeZero

BFloat16 Negative Zero

Declaration
public static readonly BFloat16 NegativeZero { get; }
Property Value
Type Description
BFloat16
| Improve this Doc View Source

One

BFloat16 One

Declaration
public static readonly BFloat16 One { get; }
Property Value
Type Description
BFloat16
| Improve this Doc View Source

Pi

BFloat16 Pi value

Declaration
public static readonly BFloat16 Pi { get; }
Property Value
Type Description
BFloat16
| Improve this Doc View Source

PositiveInfinity

BFloat16 Positive infinity value

Declaration
public static readonly BFloat16 PositiveInfinity { get; }
Property Value
Type Description
BFloat16
| Improve this Doc View Source

Zero

BFloat16 Positive Zero

Declaration
public static readonly BFloat16 Zero { get; }
Property Value
Type Description
BFloat16

Methods

| Improve this Doc View Source

CompareTo(BFloat16)

Compares this object to another object, returning an integer that indicates the relationship.

Declaration
public readonly int CompareTo(BFloat16 other)
Parameters
Type Name Description
BFloat16 other

Object to compare to

Returns
Type Description
Int32

A value less than zero if this is less than other, zero if this is equal to other, or a value greater than zero if this is greater than other.

| Improve this Doc View Source

CompareTo(Object)

Compares this object to another object, returning an integer that indicates the relationship.

Declaration
public readonly int CompareTo(object obj)
Parameters
Type Name Description
Object obj

Object to compare to

Returns
Type Description
Int32

A value less than zero if this is less than obj, zero if this is equal to obj, or a value greater than zero if this is greater than obj.

Exceptions
Type Condition
System.ArgumentException

Thrown when obj is not of type BFloat16.

| Improve this Doc View Source

Equals(BFloat16)

Returns a value indicating whether this instance and other BFloat16 represent the same value.

Declaration
public readonly bool Equals(BFloat16 other)
Parameters
Type Name Description
BFloat16 other

A BFloat16 object to compare to this instance.

Returns
Type Description
Boolean

true if other.value is equal to this instance; otherwise, false.

| Improve this Doc View Source

Equals(Object)

Returns a value indicating whether this instance and a specified System.Object represent the same type and value.

Declaration
public override readonly bool Equals(object obj)
Parameters
Type Name Description
Object obj

An System.Object.

Returns
Type Description
Boolean

true if obj is BFloat16 its value is equal to this instance; otherwise, false.

Overrides
System.ValueType.Equals(System.Object)
| Improve this Doc View Source

GetHashCode()

Returns the hash code for this instance.

Declaration
public override readonly int GetHashCode()
Returns
Type Description
Int32

A 32-bit signed integer hash code.

Overrides
System.ValueType.GetHashCode()
| Improve this Doc View Source

IsFinite(BFloat16)

Determines whether the specified value is finite (zero, subnormal, or normal).

Declaration
public static bool IsFinite(BFloat16 value)
Parameters
Type Name Description
BFloat16 value

BFloat16 instance.

Returns
Type Description
Boolean

true if the value is finite

| Improve this Doc View Source

IsInfinity(BFloat16)

Determines whether the specified value is infinite.

Declaration
public static bool IsInfinity(BFloat16 value)
Parameters
Type Name Description
BFloat16 value

BFloat16 instance.

Returns
Type Description
Boolean

true if the value is infinite

| Improve this Doc View Source

IsNaN(BFloat16)

Determines whether the specified value is NaN.

Declaration
public static bool IsNaN(BFloat16 value)
Parameters
Type Name Description
BFloat16 value

BFloat16 instance

Returns
Type Description
Boolean

true if the value is not a number

| Improve this Doc View Source

IsNaNOrZero(BFloat16)

The function returns true if the value is either NaN or zero.

Declaration
public static bool IsNaNOrZero(BFloat16 value)
Parameters
Type Name Description
BFloat16 value

instance of BFloat16

Returns
Type Description
Boolean

true if NaN or zero.

| Improve this Doc View Source

IsNegative(BFloat16)

Determines whether the specified value is negative.

Declaration
public static bool IsNegative(BFloat16 value)
Parameters
Type Name Description
BFloat16 value

BFloat16 instance

Returns
Type Description
Boolean

true if the value is negative

| Improve this Doc View Source

IsNegativeInfinity(BFloat16)

Determines whether the specified value is negative infinity.

Declaration
public static bool IsNegativeInfinity(BFloat16 value)
Parameters
Type Name Description
BFloat16 value

BFloat16 instance

Returns
Type Description
Boolean

true if the value is negative infinity

| Improve this Doc View Source

IsNormal(BFloat16)

Determines whether the specified value is normal

Declaration
public static bool IsNormal(BFloat16 value)
Parameters
Type Name Description
BFloat16 value
Returns
Type Description
Boolean

true or false

| Improve this Doc View Source

IsPositiveInfinity(BFloat16)

Determines whether the specified value is positive infinity.

Declaration
public static bool IsPositiveInfinity(BFloat16 value)
Parameters
Type Name Description
BFloat16 value

BFloat16 instance

Returns
Type Description
Boolean
| Improve this Doc View Source

IsSubnormal(BFloat16)

Determines whether the specified value is subnormal.

Declaration
public static bool IsSubnormal(BFloat16 value)
Parameters
Type Name Description
BFloat16 value

BFloat16 instance

Returns
Type Description
Boolean

true if the value is subnormal

| Improve this Doc View Source

Negate(BFloat16)

Flips the sign. NaNs are not affected. IEEE 754 specifies NaNs to be propagated

Declaration
public static BFloat16 Negate(BFloat16 value)
Parameters
Type Name Description
BFloat16 value
Returns
Type Description
BFloat16
| Improve this Doc View Source

ToFloat()

Explicit conversion

Declaration
public readonly float ToFloat()
Returns
Type Description
Single

single precision value converted from Float16

| Improve this Doc View Source

ToString()

Returns a string representation of the current value.

Declaration
public override readonly string ToString()
Returns
Type Description
String

Text representation of BFloat16

Overrides
System.ValueType.ToString()

Operators

| Improve this Doc View Source

Equality(BFloat16, BFloat16)

Compares values of two BFloat16 for binary equality. If either of the values is NaN, this will return false.

Declaration
public static bool operator ==(BFloat16 left, BFloat16 right)
Parameters
Type Name Description
BFloat16 left

left hand side

BFloat16 right

right hand side

Returns
Type Description
Boolean

result of value comparisons

| Improve this Doc View Source

Explicit(BFloat16 to Single)

Explicitly converts a BFloat16 value to its nearest representable System.Single value.

Declaration
public static explicit operator float (BFloat16 value)
Parameters
Type Name Description
BFloat16 value

The value to convert.

Returns
Type Description
Single

value converted to its nearest representable System.Single value.

| Improve this Doc View Source

Explicit(Single to BFloat16)

Explicitly converts a System.Single value to its nearest representable bfloat16 value.

Declaration
public static explicit operator BFloat16(float value)
Parameters
Type Name Description
Single value

The value to convert.

Returns
Type Description
BFloat16

value converted to its nearest representable half-precision floating-point value.

| Improve this Doc View Source

GreaterThan(BFloat16, BFloat16)

Compares two BFloat16 instances.

Declaration
public static bool operator>(BFloat16 left, BFloat16 right)
Parameters
Type Name Description
BFloat16 left
BFloat16 right
Returns
Type Description
Boolean

true if the left is greater than right according to IEEE

| Improve this Doc View Source

GreaterThanOrEqual(BFloat16, BFloat16)

Compares two BFloat16 instances.

Declaration
public static bool operator >=(BFloat16 left, BFloat16 right)
Parameters
Type Name Description
BFloat16 left
BFloat16 right
Returns
Type Description
Boolean

true if the left is greater or equal than right according to IEEE

| Improve this Doc View Source

Inequality(BFloat16, BFloat16)

Compares values of two BFloat16 for binary inequality If either of the values is NaN it would return true.

Declaration
public static bool operator !=(BFloat16 left, BFloat16 right)
Parameters
Type Name Description
BFloat16 left
BFloat16 right
Returns
Type Description
Boolean

result of value comparisons

| Improve this Doc View Source

LessThan(BFloat16, BFloat16)

Compares two BFloat16 instances.

Declaration
public static bool operator <(BFloat16 left, BFloat16 right)
Parameters
Type Name Description
BFloat16 left
BFloat16 right
Returns
Type Description
Boolean

true if the left is less than right according to IEEE

| Improve this Doc View Source

LessThanOrEqual(BFloat16, BFloat16)

Compares two BFloat16 instances.

Declaration
public static bool operator <=(BFloat16 left, BFloat16 right)
Parameters
Type Name Description
BFloat16 left
BFloat16 right
Returns
Type Description
Boolean

true if the left is less or equal than right according to IEEE

Implements

System.IComparable
System.IComparable<T>
System.IEquatable<T>
  • Improve this Doc
  • View Source
In This Article
Back to top