Skip to content

Commit 0f0a139

Browse files
gekogeko
geko
authored and
geko
committed
.
1 parent 1cbc942 commit 0f0a139

31 files changed

+2354
-2367
lines changed

src/Bits.cpp

+26-25
Original file line numberDiff line numberDiff line change
@@ -18,93 +18,94 @@
1818

1919
#include "Bits.h"
2020
#include <iostream>
21+
2122
Bits::Bits() {
2223
//LINK_ROOKS
23-
LINK_ROOKS = (u64**) malloc(64 * sizeof(u64*));
24-
for(int i = 0; i < 64; i++) {
25-
LINK_ROOKS[i] = (u64*) malloc(64 * sizeof(u64));
24+
LINK_ROOKS = (u64 **) malloc(64 * sizeof(u64 *));
25+
for (int i = 0; i < 64; i++) {
26+
LINK_ROOKS[i] = (u64 *) malloc(64 * sizeof(u64));
2627
}
2728
int from, to;
28-
for(int i = 0; i < 64; i++) {
29-
for(int j = 0; j < 64; j++) {
29+
for (int i = 0; i < 64; i++) {
30+
for (int j = 0; j < 64; j++) {
3031
u64 t = 0;
31-
if(RANK[i] & RANK[j]) { //rank
32+
if (RANK[i] & RANK[j]) { //rank
3233
from = min(i, j);
3334
to = max(i, j);
34-
for(int k = from + 1; k <= to - 1; k++) {
35+
for (int k = from + 1; k <= to - 1; k++) {
3536
t |= POW2[k];
3637
}
37-
} else if(FILE_[i] & FILE_[j]) { //file
38+
} else if (FILE_[i] & FILE_[j]) { //file
3839
from = min(i, j);
3940
to = max(i, j);
40-
for(int k = from + 8; k <= to - 8; k += 8) {
41+
for (int k = from + 8; k <= to - 8; k += 8) {
4142
t |= POW2[k];
4243
}
4344
}
44-
if(!t) {
45+
if (!t) {
4546
t = 0xffffffffffffffffULL;
4647
}
4748
LINK_ROOKS[i][j] = t;
4849
}
4950
}
5051
//DISTANCE
51-
for(int i = 0; i < 64; i++) {
52-
for(int j = 0; j < 64; j++) {
52+
for (int i = 0; i < 64; i++) {
53+
for (int j = 0; j < 64; j++) {
5354
DISTANCE[i][j] = max(abs(RANK_AT[i] - FILE_AT[j]), abs(RANK_AT[j] - FILE_AT[i]));
5455
}
5556
}
5657
///
5758
u64 MASK_BIT_SET[64][64];
5859
memset(MASK_BIT_SET, 0, sizeof(MASK_BIT_SET));
59-
for(int i = 0; i < 64; i++) {
60-
for(int j = 0; j < 64; j++) {
60+
for (int i = 0; i < 64; i++) {
61+
for (int j = 0; j < 64; j++) {
6162
int a = min(i, j);
6263
int b = max(i, j);
6364
MASK_BIT_SET[i][i] = 0;
64-
for(int e = a; e <= b; e++) {
65+
for (int e = a; e <= b; e++) {
6566
u64 r = (RANK[i] | POW2[i]) & (RANK[j] | POW2[j]);
66-
if(r) {
67+
if (r) {
6768
MASK_BIT_SET[i][j] |= POW2[e] & r;
6869
} else {
6970
r = (FILE_[i] | POW2[i]) & (FILE_[j] | POW2[j]);
70-
if(r) {
71+
if (r) {
7172
MASK_BIT_SET[i][j] |= POW2[e] & r;
7273
} else {
7374
r = (LEFT_DIAG[i] | POW2[i]) & (LEFT_DIAG[j] | POW2[j]);
74-
if(r) {
75+
if (r) {
7576
MASK_BIT_SET[i][j] |= POW2[e] & r;
7677
} else {
7778
r = (RIGHT_DIAG[i] | POW2[i]) & (RIGHT_DIAG[j] | POW2[j]);
78-
if(r) {
79+
if (r) {
7980
MASK_BIT_SET[i][j] |= POW2[e] & r;
8081
}
8182
}
8283
}
8384
}
8485
}
85-
if(i == j) {
86+
if (i == j) {
8687
MASK_BIT_SET[i][i] &= NOTPOW2[i];
8788
}
8889
}
8990
}
90-
for(int i = 0; i < 64; i++) {
91-
for(int j = 0; j < 64; j++) {
91+
for (int i = 0; i < 64; i++) {
92+
for (int j = 0; j < 64; j++) {
9293
MASK_BIT_SET_NOBOUND[i][j] = MASK_BIT_SET[i][j];
9394
MASK_BIT_SET_NOBOUND[i][j] &= NOTPOW2[i];
9495
MASK_BIT_SET_NOBOUND[i][j] &= NOTPOW2[j];
9596
MASK_BIT_SET[i][j] &= NOTPOW2[i];
9697
}
9798
}
98-
for(int i = 0; i < 64; i++) {
99-
for(int j = 0; j < 64; j++) {
99+
for (int i = 0; i < 64; i++) {
100+
for (int j = 0; j < 64; j++) {
100101
MASK_BIT_SET_COUNT[i][j] = bitCount(MASK_BIT_SET[i][j]);
101102
MASK_BIT_SET_NOBOUND_COUNT[i][j] = bitCount(MASK_BIT_SET_NOBOUND[i][j]);
102103
}
103104
}
104105
}
105106

106107
Bits::~Bits() {
107-
for(int i = 0; i < 64; i++) {
108+
for (int i = 0; i < 64; i++) {
108109
free(LINK_ROOKS[i]);
109110
}
110111
free(LINK_ROOKS);

src/Bits.h

+12-26
Original file line numberDiff line numberDiff line change
@@ -18,26 +18,31 @@
1818

1919
#ifndef _BITS_H_
2020
#define _BITS_H_
21+
2122
#include "namespaces.h"
2223

2324
class Bits {
2425
public:
2526

2627
Bits();
28+
2729
virtual ~Bits();
30+
2831
#ifdef HAS_POPCNT
2932
static int bitCount(u64 bits) {
3033
return __builtin_popcountll(bits);
3134
}
3235
#else
36+
3337
static int bitCount(u64 bits) {
3438
int count = 0;
35-
while(bits) {
39+
while (bits) {
3640
count++;
3741
bits &= bits - 1;
3842
}
3943
return count;
4044
}
45+
4146
#endif
4247
protected:
4348

@@ -46,15 +51,14 @@ class Bits {
4651
char MASK_BIT_SET_COUNT[64][64];
4752
char MASK_BIT_SET_NOBOUND_COUNT[64][64];
4853

49-
u64** LINK_ROOKS;
54+
u64 **LINK_ROOKS;
5055

51-
template <int side, int shift>
56+
template<int side, int shift>
5257
static u64 shiftForward(const u64 bits) {
53-
return side == WHITE ? bits <<shift : bits>> shift;
58+
return side == WHITE ? bits << shift : bits >> shift;
5459
}
5560

5661

57-
5862
#ifdef HAS_BSF
5963
#if UINTPTR_MAX == 0xffffffffffffffff
6064
static int BITScanForward(u64 bits) {
@@ -76,19 +80,9 @@ class Bits {
7680
#else
7781

7882

79-
8083
static int BITScanForward(u64 bb) {
8184
// @author Matt Taylor (2003)
82-
static const int lsb_64_table[64] = {
83-
63, 30, 3, 32, 59, 14, 11, 33,
84-
60, 24, 50, 9, 55, 19, 21, 34,
85-
61, 29, 2, 53, 51, 23, 41, 18,
86-
56, 28, 1, 43, 46, 27, 0, 35,
87-
62, 31, 58, 4, 5, 49, 54, 6,
88-
15, 52, 12, 40, 7, 42, 45, 16,
89-
25, 57, 48, 13, 10, 39, 8, 44,
90-
20, 47, 38, 22, 17, 37, 36, 26
91-
};
85+
static const int lsb_64_table[64] = {63, 30, 3, 32, 59, 14, 11, 33, 60, 24, 50, 9, 55, 19, 21, 34, 61, 29, 2, 53, 51, 23, 41, 18, 56, 28, 1, 43, 46, 27, 0, 35, 62, 31, 58, 4, 5, 49, 54, 6, 15, 52, 12, 40, 7, 42, 45, 16, 25, 57, 48, 13, 10, 39, 8, 44, 20, 47, 38, 22, 17, 37, 36, 26};
9286
unsigned int folded;
9387
bb ^= bb - 1;
9488
folded = (int) bb ^ (bb >> 32);
@@ -98,16 +92,7 @@ class Bits {
9892

9993
static int BITScanReverse(u64 bb) {
10094
// authors Kim Walisch, Mark Dickinson
101-
static const int index64[64] = {
102-
0, 47, 1, 56, 48, 27, 2, 60,
103-
57, 49, 41, 37, 28, 16, 3, 61,
104-
54, 58, 35, 52, 50, 42, 21, 44,
105-
38, 32, 29, 23, 17, 11, 4, 62,
106-
46, 55, 26, 59, 40, 36, 15, 53,
107-
34, 51, 20, 43, 31, 22, 10, 45,
108-
25, 39, 14, 33, 19, 30, 9, 24,
109-
13, 18, 8, 12, 7, 6, 5, 63
110-
};
95+
static const int index64[64] = {0, 47, 1, 56, 48, 27, 2, 60, 57, 49, 41, 37, 28, 16, 3, 61, 54, 58, 35, 52, 50, 42, 21, 44, 38, 32, 29, 23, 17, 11, 4, 62, 46, 55, 26, 59, 40, 36, 15, 53, 34, 51, 20, 43, 31, 22, 10, 45, 25, 39, 14, 33, 19, 30, 9, 24, 13, 18, 8, 12, 7, 6, 5, 63};
11196
static const u64 debruijn64 = 0x03f79d71b4cb0a89ULL;
11297
bb |= bb >> 1;
11398
bb |= bb >> 2;
@@ -120,4 +105,5 @@ class Bits {
120105

121106
#endif
122107
};
108+
123109
#endif

0 commit comments

Comments
 (0)