diff --git a/lslopt/lslbasefuncs.py b/lslopt/lslbasefuncs.py index fbb6b4c..20f7e18 100644 --- a/lslopt/lslbasefuncs.py +++ b/lslopt/lslbasefuncs.py @@ -399,7 +399,12 @@ def InternalTypecast(val, out, InList, f32): if match.group(1): ret = F32(float.fromhex(match.group(0)), f32) else: - ret = F32(float(match.group(0)), f32) + if match.group(0).lower() == '-nan': + # (float)"-nan" produces NaN instead of Indet, even though + # (vector)"<-nan,0,0>" produces . Go figure. + ret = NaN + else: + ret = F32(float(match.group(0)), f32) if not lslcommon.LSO and abs(ret) < 1.1754943508222875e-38: # Mono doesn't return denormals when using (float)"val" # (but it returns them when using (vector)"")