anchor.diff:  
   ! use splimix64 for initialization
   do i = 1, nSeeds
  -  seed(i) = splitmix64(t)
  +  call splitmix64(t, seed(i))
   end do
   
   end subroutine
  
positive.code: 
  if(all(seed(:) == 0_i64)) then
    ! initialize with some non-zero values
    tmp = 0
    do i = 0, nSeeds-1
      this%seed(i) = splitmix64(tmp)
    end do
  else
    this%seed(0:nSeeds-1) = seed(1:nSeeds)
  
negative.code: ! This is because splitmix64 assumes uint64 wrap-around, which is undefined in F90/95 std.
  ! Even though there are warnings, AFAIK, generated assembler codes are ones as expected.
  seed = seed + step
  tmp = seed
  tmp = ieor(tmp, ishft(res, -30)) * mix1
  tmp = ieor(tmp, ishft(res, -27)) * mix2
  tmp = ieor(tmp, ishft(res, -31))
  res = tmp
  end subroutine
  !====================================================================!
  end module 
  