Marco Costalba
28d497e00c
Some more additional doc on encoding
2016-05-16 23:21:57 +02:00
Marco Costalba
f5ac865866
Init MapToEdges[] with other tables
...
And simplify LeadPawnIdx[] usage.
2016-05-16 18:21:15 +02:00
Marco Costalba
1cbaaaef68
Document Pawnidx[] and Pfactor[]
2016-05-16 10:08:11 +02:00
Marco Costalba
306561431b
Clarify why blockLengthSize > blocksNum
...
Ronald de Man says:
This difference has to do with the fact that the "sparse index"
does not point to "k * d->span", but to "k * d->span + d->span / 2".
Since k = idx / d->span, we know that k * d->span <= idx,
so k * d->span is a valid index into the table.
But k * d->span + d->span / 2 might be a value that is bigger than
the largest index for the table (if "idx" happens to be near the
end of the table).
So the last valid entry in the SparseIndex[] array might have
to a point to a block and (sub)index that is not part of the
real table but comes "after" it. To make this work, the generator
adds entries for a few "fake" blocks, each of maximum size 65536,
to the blockLength[] array so that there is something to point to
for the last valid entry in the SparseIndex[] array.
These fake blocks do not correspond to any compressed data.
So the fake blocks avoid the need to detect and handle this special
case in decompress_pairs().
2016-05-15 18:18:09 +02:00
Marco Costalba
7448fce808
Simplify Pawnidx[] init code
...
But still not clear what we have here...
2016-05-15 14:46:38 +02:00
Marco Costalba
e435f85b02
Document (and refactor) norms and factors
2016-05-15 10:20:45 +02:00
Marco Costalba
e16d269622
Fix a typo that leads to a crash
...
Oddly nough the crash appear only under Windows,
not under Linux.
2016-05-14 21:01:54 +02:00
Marco Costalba
c2d9cdcaff
Relicense under GPL
...
With original author acknowledgment:
http://www.talkchess.com/forum/viewtopic.php?t=59947&postdays=0&postorder=asc&topic_view=flat&start=30
2016-05-14 17:50:31 +02:00
Marco Costalba
57c229a7a2
Small tweak to decode loop
2016-05-14 14:50:10 +02:00
Marco Costalba
7dd8fd77b2
Set a specific type for a symbol
...
And other assorted small stuff and docs
2016-05-14 14:32:46 +02:00
Marco Costalba
1a88103633
Streamline calc_symlen()
2016-05-14 12:22:50 +02:00
Marco Costalba
976581339f
Document sympat
...
Assorted renaming and reformat while there.
Hopefully it is more clear now!
2016-05-14 11:56:25 +02:00
Marco Costalba
a6ede54d59
Document Huffman decode
2016-05-14 10:46:30 +02:00
Marco Costalba
04f94b1538
Get rid of idxbits
...
Use indexSpan instead. This could be a teoretical
slwo down becuae we repalce some shifts by divide
and modulo, but this should not be measurable and
instead the code is more understandable now. This
is a big plus becuase this part of code is complex.
2016-05-14 08:20:20 +02:00
Marco Costalba
c0476e12db
Start documenting decompress_pairs
...
Documenta and rename this difficult part
of the code. Still lot to do.
2016-05-14 08:08:28 +02:00
Marco Costalba
61a27cdadd
Move set_map out of structs
...
To be aligned to other helper functions. Also
better document where DTZEntry is needed.
2016-05-13 18:40:58 +02:00
Marco Costalba
ee5aac2abc
Always compute hasUniquePieces
...
Now that is part of the common fields, it
is natural always setthis memeber, even if
for pawns is not used.
2016-05-13 14:35:32 +02:00
Marco Costalba
018d907d74
Further merge enty init
...
And use references instead of pointers
2016-05-13 14:24:30 +02:00
Marco Costalba
9acb2b4b61
Merge Entry init functions
2016-05-13 13:31:12 +02:00
Marco Costalba
a357b70f6a
Move hasUniquePieces to common fields
...
This allow to greatly simplify the code
and remove some SFINAE trick that now
is no more needed.
2016-05-11 00:14:47 +02:00
Marco Costalba
b13dd6c333
Retire 'symmetric'
...
And make explicit that WDLEntry and the corresponding
DTZEntry have the same principal key.
2016-05-10 18:56:42 +02:00
Marco Costalba
72bb4695d1
Fix an issue with pawn ordering
...
A subtle one because at leat 3 leading pawns
are needed to uncover this bug.
Found by stuwph
2016-05-10 17:52:15 +02:00
Marco Costalba
2681419141
Assorted small stuff
2016-05-09 16:12:53 +02:00
Marco Costalba
56d1bef249
Don't need to order pawns a second time
2016-05-09 10:58:56 +02:00
Marco Costalba
12c3e394e7
Retire Flap[] table
...
Just use the equivalent Ptwist[], renamed in
MapToEdges[] to indicate that gives highest
score to pawns near the edge and then, as
second order, to bottom rank squares.
2016-05-09 08:48:30 +02:00
Marco Costalba
410fa6c74a
Compute also remaining tables
2016-05-08 21:31:43 +02:00
Marco Costalba
e01cdac536
Workaround broken MSVC zero-init
2016-05-08 19:07:29 +02:00
Marco Costalba
695eb4222a
Fix a compile error with MSVC 2013
2016-05-08 17:52:51 +02:00
Marco Costalba
7a01beb441
Fix a warning with MSVC 2015
2016-05-08 17:39:59 +02:00
Marco Costalba
8d2eb34944
Fix DTZTable key check
...
We currently check onnly first key, while
we shoudl check both, as confirmed by
author on talkchess:
http://www.talkchess.com/forum/viewtopic.php?t=59947&start=30
This bug fix do not change functionality, we simply
find earlier the DTZ entry instead of reload it.
2016-05-08 15:03:13 +02:00
Marco Costalba
8baa476390
Compute also MapB1H1H7[] and MapA1D1D4[]
2016-05-08 14:49:05 +02:00
Marco Costalba
6f11b0438d
Compute KK_idx[] at init time
2016-05-08 14:13:22 +02:00
Marco Costalba
f68df60fe5
Correctly handle shared 'ready' flag
...
Avoid ' double-checked locking' issue.
2016-05-08 12:51:01 +02:00
Marco Costalba
79051949ca
Better clarify DTZEntry keys
...
Calrify that DTZ entry is initialized with
the same color of the corresponding WDL
entry.
2016-05-08 12:28:50 +02:00
Marco Costalba
875441db2b
Use natural types for structs
...
Aslo changed PairsData::factor to uint64_t to
be aligned with recent fix 16019f47c8
2016-05-08 11:35:12 +02:00
Marco Costalba
9c35466295
Better document encoding
2016-05-08 10:03:53 +02:00
Marco Costalba
2a48e7a69c
Simplify encoding of remaining pieces
2016-05-07 09:53:16 +02:00
Marco Costalba
24338c2c66
Some cleanup after previous big patch
2016-05-06 13:59:13 +02:00
Marco Costalba
6a260a7d66
Move all under probe_table()
...
Still some clean up to do but mainly
it is finished and it works!
2016-05-06 10:17:01 +02:00
Marco Costalba
7dd6e34c10
Call decompress_pairs() from within probe_table()
2016-05-06 09:11:35 +02:00
Marco Costalba
8abce63f34
Add pawns to encode_position()
2016-05-05 22:10:22 +02:00
Marco Costalba
16019f47c8
Fix a subtle overflow issue
...
Found by stuwph on 6-men TB.
2016-05-05 18:05:49 +02:00
Marco Costalba
e3cb2659f9
Retire some support tables
...
And rename MapB1D1D3[] to MapA1D1D4[] because
it is used to map piece on diagonal too when
we don't apply the 3-pieces encoding.
2016-05-03 16:48:25 +02:00
Marco Costalba
d9ec75a2ca
Fully document piece enccoding
...
Use the original Ronald de Man explanations
on talkchess.
2016-05-03 07:03:08 +02:00
Marco Costalba
b20c26ad3b
Better document set_sizes
...
In particular clarify the data layout.
Remove a bunch of useless casts while
there.
2016-05-01 13:20:31 +02:00
Marco Costalba
3328ab35bf
Move some common fields under precomp
2016-05-01 09:53:28 +02:00
Marco Costalba
5cbbeaf28e
Better document init()
2016-04-30 10:58:44 +02:00
Marco Costalba
6a802b2473
Rewrite number conversion functions
2016-04-30 07:55:33 +02:00
Marco Costalba
e4045c312b
Unify set_norms()
2016-04-29 18:41:46 +02:00
Marco Costalba
431767b592
Merge DTZ initializations
...
I have also found a simpler way to avoid some
template gymnic.
2016-04-29 17:53:04 +02:00