stdlib: Fix double range check on 32bit

We were shifting an unsigned long (typically 32bit on 32bit platforms)
by 53 which could overflow the type. The double range check is currently
unused where sizeof(long double) >= 10 so this typically won't have a
functional impact.