Show / Hide Table of Contents

Struct Float16

This value type represents A Float16 value 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 pinned 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.

The implementation is derived from https://source.dot.net/#System.Private.CoreLib/src/libraries/System.Private.CoreLib/src/System/Half.cs,7895d5942d33f974

Implements
IComparable
IComparable<Float16>
IEquatable<Float16>
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 Float16 : IComparable, IComparable<Float16>, IEquatable<Float16>

Constructors

| Improve this Doc View Source

Float16(UInt16)

Ctor from ushort bits, no conversion is done

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

Fields

| Improve this Doc View Source

value

float16 representation bits

Declaration
public readonly ushort value
Field Value
Type Description
UInt16

Properties

| Improve this Doc View Source

Epsilon

Float16 Epsilon value

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

MaxValue

Float16 Max value

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

MinValue

Float16 Lowest value

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

NaN

Float16 NaN

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

NegativeInfinity

Float16 Negative Infinity value

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

NegativeZero

Float16 Negative Zero value

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

One

Float16 One value

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

Pi

Float16 Pi value

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

PositiveInfinity

Float16 Positive Infinity value

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

Zero

Float16 Zero value

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

Methods

| Improve this Doc View Source

CompareTo(Float16)

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

Declaration
public readonly int CompareTo(Float16 other)
Parameters
Type Name Description
Float16 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 Float16.

| Improve this Doc View Source

Equals(Float16)

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

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

A Float16 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 Float16 and 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(Float16)

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

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

Float16 instance.

Returns
Type Description
Boolean

true if the value is finite

| Improve this Doc View Source

IsInfinity(Float16)

Determines whether the specified value is infinite.

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

Float16 instance.

Returns
Type Description
Boolean

true if the value is infinite

| Improve this Doc View Source

IsNaN(Float16)

Determines whether the specified value is NaN.

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

Float16 instance

Returns
Type Description
Boolean

true if the value is not a number

| Improve this Doc View Source

IsNaNOrZero(Float16)

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

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

instance of Float16

Returns
Type Description
Boolean

true if NaN or zero.

| Improve this Doc View Source

IsNegative(Float16)

Determines whether the specified value is negative.

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

Float16 instance

Returns
Type Description
Boolean

true if the value is negative

| Improve this Doc View Source

IsNegativeInfinity(Float16)

Determines whether the specified value is negative infinity.

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

Float16 instance

Returns
Type Description
Boolean

true if the value is negative infinity

| Improve this Doc View Source

IsNormal(Float16)

Determines whether the specified value is normal

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

true or false

| Improve this Doc View Source

IsPositiveInfinity(Float16)

Determines whether the specified value is positive infinity.

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

Float16 instance

Returns
Type Description
Boolean
| Improve this Doc View Source

IsSubnormal(Float16)

Determines whether the specified value is subnormal.

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

Float16 instance

Returns
Type Description
Boolean

true if the value is subnormal

| Improve this Doc View Source

Negate(Float16)

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

Declaration
public static Float16 Negate(Float16 value)
Parameters
Type Name Description
Float16 value
Returns
Type Description
Float16
| 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 Float16

Overrides
System.ValueType.ToString()

Operators

| Improve this Doc View Source

Equality(Float16, Float16)

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

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

left hand side

Float16 right

right hand side

Returns
Type Description
Boolean

true if values are equal according to IEEE

| Improve this Doc View Source

Explicit(Float16 to Single)

Explicitly converts a half-precision floating-point value to its nearest representable System.Single value.

Declaration
public static explicit operator float (Float16 value)
Parameters
Type Name Description
Float16 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 Float16)

Explicitly converts a System.Single value to its nearest representable half-precision floating-point value.

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

The value to convert.

Returns
Type Description
Float16

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

| Improve this Doc View Source

GreaterThan(Float16, Float16)

Compares values of two Float16

Declaration
public static bool operator>(Float16 left, Float16 right)
Parameters
Type Name Description
Float16 left

left hand side

Float16 right

right hand side

Returns
Type Description
Boolean

returns true if left is greater than right according to IEEE

| Improve this Doc View Source

GreaterThanOrEqual(Float16, Float16)

Compares values of two Float16

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

left hand side

Float16 right

right hand side

Returns
Type Description
Boolean

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

| Improve this Doc View Source

Inequality(Float16, Float16)

Compares values of two Float16 for binary inequality

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

true if values are not equal according to IEEE

| Improve this Doc View Source

LessThan(Float16, Float16)

Compares values of two Float16

Declaration
public static bool operator <(Float16 left, Float16 right)
Parameters
Type Name Description
Float16 left

left hand side

Float16 right

right hand side

Returns
Type Description
Boolean

returns true if left is less than right according to IEEE

| Improve this Doc View Source

LessThanOrEqual(Float16, Float16)

Compares values of two Float16

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

left hand side

Float16 right

right hand side

Returns
Type Description
Boolean

returns true if 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