function testNonCanonicalNan() { const bytes = 128; var buf = new ArrayBuffer(bytes); /* create an array of non-canonical double nans */ var ui8arr = new Uint8Array(buf); for (var i = 0; i < ui8arr.length; ++i) ui8arr[i] = 0xff; var dblarr = new Float64Array(buf); assertEq(dblarr.length, bytes / 8); /* ensure they are canonicalized */ for (var i = 0; i < dblarr.length; ++i) { var asstr = dblarr[i] + ""; var asnum = dblarr[i] + 0.0; assertEq(asstr, "NaN"); assertEq(asnum, NaN); } /* create an array of non-canonical float nans */ for (var i = 0; i < ui8arr.length; i += 4) { ui8arr[i+0] = 0xffff; ui8arr[i+1] = 0xffff; ui8arr[i+2] = 0xffff; ui8arr[i+3] = 0xffff; } var fltarr = new Float32Array(buf); assertEq(fltarr.length, bytes / 4); /* ensure they are canonicalized */ for (var i = 0; i < fltarr.length; ++i) { var asstr = fltarr[i] + ""; var asnum = fltarr[i] + 0.0; assertEq(asstr, "NaN"); assertEq(asnum, NaN); } } testNonCanonicalNan();