I'm quite amazed that when a, b, c are floats this program still manages to compile and run, producing some incorrect results. It just doesn't make any sense because warp currently does not have implicit type conversion and if a < b produces a bool, it shall get type error in the later comparison anyway. This is not specified in the warp documents and may cause confusion to others.
Warp kernel seems to treat it as (a < b) < c instead of (a < b) and (b < c). I ran a simple test case to reproduce it
and then I get
I'm quite amazed that when a, b, c are floats this program still manages to compile and run, producing some incorrect results. It just doesn't make any sense because warp currently does not have implicit type conversion and if a < b produces a bool, it shall get type error in the later comparison anyway. This is not specified in the warp documents and may cause confusion to others.