ГОСТ Р ИСО 28640 - 2012
LET z0 = z0 + SL32U< And32(zI . MASK) . NBIT)! zO += (zl & MASK) « NB1T;
//1st val:897833l 57
LET z2 = z2 + SR32U(zl , NBIT) + SR32U(zO. 2 ♦ ! z2 += (zl » NBIT) + (zO »<2*NBIT)):
NBIT)
LETzO=Or32( And32(z().MASK2)
SL32L4 And32(z2 , I) . 2 * NBIT))
. ! zO = (zO & MASK2) I ( (z2&I)
<«2*NBIT)):
LET z2 = SR32U(Z2 , I)
! z2 » = 1 ;
LET statc31 = zO + z2! statc3l = zO + z2;
REM /* Это число нс должно быть более 2*Ox7fffffffUL ♦/
IF statc31 >= 2147483647 THEN LET statc31 = ! IF (stale31>=Ox7fffffffL’L) state31-=
staic31 - 2147483647
0x7fffffffUL;
LET lcong31 = statc31
! return (long) state3l;
END FUNCTION
!}
REM
FUNCTION init_lcong3l(s)
REM ! /* начальное число нс должно быть 0 */
IF s = 0 THEN LET s = 19660809
LET s = REMAINDERS , 2147483647)
LET statc3l = s
END FUNCTION
!void init_lcong3 Kunsigned long s) (
! if ( s == OUL )
s
=I9660809UL:
! s = s % 0x7fffffffUL:
! statc31 = s;
H
П римечание 2 - Приведенный ниже текст программы на ятыкс BASIC необходим для прсобраювання
программных кодов языка Си в программные коды языка BASIC, преобразования случайных чисел в соответствии
с приложением А и выполнения побитовых операций на языке BASIC.
REM
REM Программные коды функций на языке BASIC.
REM •*** +• +•*****+**•+*•+ • +*++*+»+***■»+• +•+** +•+*/
OPTION BASE 0
REM/•♦*»*•*«»**♦•***«•*•**«*•*•«•»***•♦»*«*+•***••*•*•**/
DECLARE NUMERIC MskF.f
DECLARE NUMERIC MskF.c
DECLARE NUMERIC MskF_8
DECLARE NUMERIC MskF 0
LET MskF_f = BVALCfffffffP . 16)
LET MskF.e = ВVALC’fffffffc" . 16)
LET MskF_8 = BVAL("fffffff8* . 16)
LET MskFJ) = ВVAL("l’ffl’fffO" . 16)
41