[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Public WebGL] typed arrays + edge cases



On Feb 3, 2010, at 7:04 PM, Chris Marrin wrote:

>> - If the array type is non-float and a non-numeric value is stored, what happens?
>> 
>> Suggestion: 0 or exception
>> 
>> - If the array type is float and a non-numeric value is stored, what happens?
>> 
>> Suggestion: NaN or 0 or exception
> 
> What happens if you do this on an Array? We should match that behavior.

The value is stored -- normal arrays in JS aren't typed

>> - If the array type is float and someone bit-fiddles an unusual NaN in there, does that unusual NaN get passed to the engine to deal with (even if it might not normally use them, e.g. signalling NaN etc.)?
>> 
>> Suggestion: I don't have a good one.  The engine should maybe convert all NaNs into whatever NaN it understands on element access?
> 
> I think all invalid NaN variants should be converted to a quiet NaN, which is what JS supports, right? I think the values we should support are all valid, normalized floats, +/-Inf and a quiet NaN. Everything should be converted to a quiet NaN.

I think the specific question is what happens in a case like:

buffer = new ArrayBuffer(n);
bytes = new UnsignedByteArray(buffer);
doubles = new DoubleArray(buffer);
b = bytes[0]
d = doubles[0]
doubles[0] = d

if (b === bytes[0])
    log("b is unchanged");
else
    log("b has changed");

>From the PoV of JSC at least it is far safer to to allow the exact bits to change, and i don't believe it's possible to guarantee no bit changing for floats as conversion to or from double will necessarily result in different bits for non-normalised values at least.

--Oliver


-----------------------------------------------------------
You are currently subscribe to public_webgl@khronos.org.
To unsubscribe, send an email to majordomo@khronos.org with
the following command in the body of your email: