math calculation on double precision on HLSL

I have a question about precision for float calculation.

I’m looking for good methods to generate uniform distribution in HLSL, on newest RTX 2080 Ti.

For example, there is a famous formula to generate random values such that:

float random (in vec2 seed) {
return fract(sin(dot(_st.xy, vec2(12.9898,78.233))) *43758.5453123);

However, as seed size becomes big(seed ~= 10^6 or more), this formula doesn’t work well, probably because of precision of “sin” function.

One of good solution is to calculate “sin value” by double precision. Are there methods to calculate sin function on double precision?

Otherwise, are there any methods to generate uniform distribution which adapts to wide-range float seed?