#include <iostream>
#include <fstream>
+#include <cstdlib>
#include <ctime>
#include <climits>
# define W 32
#endif
+#ifndef WW
#define WW (W*2)
+#endif
+
+#ifndef Wminusone
#define Wminusone (W-1)
+#endif
#ifndef uchar
#define uchar unsigned char
{
ulong i = index * len / W,
j = index * len - i * W;
- ulong mask = (j+len < W ? ~0lu << j+len : 0)
+ ulong mask = (j+len < W ? ~0lu << (j+len) : 0)
| (W-j < W ? ~0lu >> (W-j) : 0);
A[i] = (A[i] & mask) | x << j;
if (j + len > W)
static inline void SetVariableField(ulong *A, register unsigned len, register ulong index, register ulong x) {
ulong i=index/W,
j=index-i*W;
- ulong mask = (j+len < W ? ~0lu << j+len : 0)
+ ulong mask = (j+len < W ? ~0lu << (j+len) : 0)
| (W-j < W ? ~0lu >> (W-j) : 0);
A[i] = (A[i] & mask) | x << j;
if (j+len>W) {