math_compare.bend checks
raw source on the hub · import stelliferous@0.0.2.0/math_compare.bend as Math_compare
IEEE comparisons expressed as 32-bit masks, including unordered inputs.
2 imports
import Base import ./math_fp32.bend as FP32
Types
type Bounds source · line 64 · raw
Data
Bounds@low:F32 -> @high:F32 -> Bounds
Definitions
def nonzero source · line 6 · raw
@+word:U32 -> U32
One for a nonzero word, zero otherwise, without a Bool match.
def number source · line 9 · raw
@word:U32 -> U32
def ordered source · line 12 · raw
@+left:U32 -> @+right:U32 -> U32
def less_bit source · line 17 · raw
@+left:U32 -> @+right:U32 -> U32
Magnitudes fit in 31 bits, so the top bit of their difference is the unsigned comparison. Reverse it for negatives and handle opposite signs.
def equal_bit source · line 27 · raw
@+left:U32 -> @+right:U32 -> U32
def mask_value source · line 30 · raw
@bit:U32 -> F32
def less_words source · line 33 · raw
@+left:U32 -> @+right:U32 -> F32
def less_equal_words source · line 36 · raw
@+left:U32 -> @+right:U32 -> F32
def equal_words source · line 39 · raw
@+left:U32 -> @+right:U32 -> F32
def not_equal_words source · line 42 · raw
@+left:U32 -> @+right:U32 -> F32
def less source · line 46 · raw
@value:F32 -> @element:F32 -> F32
Context comes first in Operations.lanes; the tensor element comes second.
def less_equal source · line 49 · raw
@value:F32 -> @element:F32 -> F32
def greater source · line 52 · raw
@value:F32 -> @element:F32 -> F32
def greater_equal source · line 55 · raw
@value:F32 -> @element:F32 -> F32
def equal source · line 58 · raw
@value:F32 -> @element:F32 -> F32
def not_equal source · line 61 · raw
@value:F32 -> @element:F32 -> F32
def clamp source · line 67 · raw
@bounds:Bounds -> @element:F32 -> F32
def less_elements source · line 72 · raw
@left:F32 -> @right:F32 -> F32
Binary element order is left then right.
def less_equal_elements source · line 75 · raw
@left:F32 -> @right:F32 -> F32
def greater_elements source · line 78 · raw
@left:F32 -> @right:F32 -> F32
def greater_equal_elements source · line 81 · raw
@left:F32 -> @right:F32 -> F32
def equal_elements source · line 84 · raw
@left:F32 -> @right:F32 -> F32
def not_equal_elements source · line 87 · raw
@left:F32 -> @right:F32 -> F32
def select source · line 93 · raw
@mask:F32 -> @yes:F32 -> @no:F32 -> F32
Selection only changes words; the chosen payload is never FP arithmetic. selected is 0 or all ones, so selected + 1 is 1 or 0 modulo 2^32. This masked integer product keeps the native selection in value lanes.
def selected source · line 99 · raw
@value:F32 -> @mask:F32 -> F32
def rejected source · line 102 · raw
@value:F32 -> @mask:F32 -> F32
def union source · line 105 · raw
@left:F32 -> @right:F32 -> F32