fn

fmax

Tensor
fmax(a: Tensor, b: Tensor)
source

Element-wise NaN-quiet maximum.

Like lucid.maximum, but treats NaN as missing data: if exactly one operand is NaN at a given position, the non-NaN value is returned. Only when both are NaN does the result remain NaN.

Parameters

aTensor
First operand.
bTensor
Second operand. Must broadcast with a.

Returns

Tensor

Element-wise NaN-quiet maximum.

Notes

Mathematical definition:

fmax(ai,bi)={bi,ai=NaN,ai,bi=NaN,max(ai,bi),otherwise.\text{fmax}(a_i, b_i) = \begin{cases} b_i, & a_i = \text{NaN}, \\ a_i, & b_i = \text{NaN}, \\ \max(a_i, b_i),& \text{otherwise.} \end{cases}

Contrast with lucid.maximum, which propagates NaN per IEEE 754.

Examples

>>> import lucid
>>> import math
>>> a = lucid.tensor([1.0, math.nan, 3.0])
>>> b = lucid.tensor([2.0, 2.0, math.nan])
>>> lucid.fmax(a, b)
Tensor([2., 2., 3.])