~/bend-docscommunity

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

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