Здравствуйте, gimalay, Вы писали:
G>Может кто нибуть подсказать как перевести сей код на С. Без использования ассемблера.
G>Необходимо получить туже последовательность псевдослучайных чисел.
G>G>function Rand_0_1 : extended;
G>const revMaxLong: double = ((1.0/$10000) / $10000); // 2^-32
G>asm
G> IMUL EDX,randShift,08088405H
G> INC EDX
G> MOV randShift,EDX
G> FLD revMaxLong
G> PUSH 0
G> PUSH EDX
G> FILD qword ptr [ESP]
G> ADD ESP,8
G> FMULP ST(1), ST(0)
G>end;
G>
G>Буду крайне признателен.
double Rand_0_1()
{ __int64 f=randShift*__int64(randShift);
f+=0x00010000LL;
f&=0xffff0000LL;
randShift=f>>32;
return float(f)*revMaxLong;
}