pub unsafe fn generator_step(xsubi: &mut [c_ushort; 3]) -> u64 {
    let old_xsubi_value: u64 = u48_from_ushort_arr3(xsubi);

    /* The recurrence relation of the linear congruential generator,
     * X_(n+1) = (a * X_n + c) % m,
     * with m = 2**48. The multiplication and addition can overflow a
     * u64, but we just let it wrap since we take mod 2**48 anyway. */
    let new_xsubi_value: u64 =
        A.wrapping_mul(old_xsubi_value).wrapping_add(u64::from(C)) & 0xffff_ffff_ffff;

    *xsubi = ushort_arr3_from_u48(new_xsubi_value);
    new_xsubi_value
}
/// Advances the buffer from the input argument to the next element in
/// the linear congruential generator's sequence.
///
/// Modifies the passed argument in-place and returns the new value as a
/// u64.
Advances the buffer from the input argument to the next element in
the linear congruential generator's sequence.

Modifies the passed argument in-place and returns the new value as a
u64.
Advances the buffer from the input argument to the next element in the linear congruential generator ' s sequence . Modifies the passed argument in - place and returns the new value as a u64 .
pub unsafe fn generator_step(xsubi: &mut [c_ushort; 3]) -> u64 {
    let old_xsubi_value: u64 = u48_from_ushort_arr3(xsubi);
    /* The recurrence relation of the linear congruential generator,
     * X_(n+1) = (a * X_n + c) % m,
     * with m = 2**48. The multiplication and addition can overflow a
     * u64, but we just let it wrap since we take mod 2**48 anyway. */
    let new_xsubi_value: u64 =
        A.wrapping_mul(old_xsubi_value).wrapping_add(u64::from(C)) & 0xffff_ffff_ffff;
    *xsubi = ushort_arr3_from_u48(new_xsubi_value);
    new_xsubi_value
}
pub unsafe fn generator_step ( xsubi : & mut [ c_ushort ; 3 ] ) -> u64 { let old_xsubi_value : u64 = u48_from_ushort_arr3 ( xsubi ) ; /* The recurrence relation of the linear congruential generator,
     * X_(n+1) = (a * X_n + c) % m,
     * with m = 2**48. The multiplication and addition can overflow a
     * u64, but we just let it wrap since we take mod 2**48 anyway. */ let new_xsubi_value : u64 = A . wrapping_mul ( old_xsubi_value ) . wrapping_add ( u64 :: from ( C ) ) & 0xffff_ffff_ffff ; * xsubi = ushort_arr3_from_u48 ( new_xsubi_value ) ; new_xsubi_value }
Advances the buffer from the input argument to the next element in
the linear congruential generator's sequence.
Advances the buffer from the input argument to the next element in the linear congruential generator ' s sequence .
xsubi
&mut [c_ushort; 3]
xsubi
&mut [c_ushort; 3]