I agrre with you. I should have keep at most 7 floats.

Nozomi



2013/4/15 Nozomi Kodama <nozomi.kodama@yahoo.com>:
> Hello
>
> thanks for the review.
> I don't think that calling defines is the way to go. Indeed, I tested my
> patch and yours. Yours is about 12% slower than mine in my computer.
> And now, we try to take care of efficiency of this dll. So, it is not the
> time  to increase latency.
>
>
> I used 10 digits since there are a lot of computation, I want to avoid as
> much as possible big rounding errors. If we want to uniformize, then we
> should uniformize d3dxshmultiply 2,3,4 with 10 digits.
> But that is for an another patch.
>

Just to chip in about float precision. As already discussed, 32-bit
float constants have about 7 decimals digits of precision, so
extending these constants from 8 to 10 digits should not change
anything. You would have to use doubles if you want more accurate
values (but I don't think we should use doubles in d3dx9 dlls anyway).
What you can do to ensure numeric accuracy is reviewing computations:
the order of the operations (e.g. how you resolve operators
associativity, etc) and storing/reusing intermediate results can make
a difference. I wouldn't care about this stuff unless we get
significantly different results compared to native.

> Nozomi.
>>
>>
>>
>>Looks pretty much ok, but isn't there a way to reduce the size a bit?
>>Just see the dirty hack which is attached. D3DXSHMultiply6 will add a
>>lot of lines too...
>>
>>Also is there a reason why we use constants with different accuracy
>>(e.g. 0.28209479f in D3DXSHMultiply4 and 0.2820948064f)?
>>
>>Cheers
>>Rico
>
>
>
>
>