+# Fairy-Stockfish authors
+
+# Main author
+Fabian Fichter (ianfab)
+
+# Contributors in alphabetical order
+alwey
+Belzedar94
+Fulmene
+gbtami
+QueensGambit
+tttak
+yoav-rozin
+ydirson
+
+
+
- # List of authors for Stockfish, as of May 17, 2021
+ # List of authors for Stockfish, as of June 14, 2021
# Founders of the Stockfish project and fishtest infrastructure
Tord Romstad (romstad)
// Read network parameters
bool read_parameters(std::istream& stream) {
- for (std::size_t i = 0; i < HalfDimensions; ++i)
- biases[i] = read_little_endian<BiasType>(stream);
- for (std::size_t i = 0; i < HalfDimensions * FeatureSet::get_dimensions(); ++i)
- weights[i] = read_little_endian<WeightType>(stream);
- for (std::size_t i = 0; i < PSQTBuckets * FeatureSet::get_dimensions(); ++i)
- psqtWeights[i] = read_little_endian<PSQTWeightType>(stream);
+ read_little_endian<BiasType >(stream, biases , HalfDimensions );
- read_little_endian<WeightType >(stream, weights , HalfDimensions * InputDimensions);
- read_little_endian<PSQTWeightType>(stream, psqtWeights, PSQTBuckets * InputDimensions);
++ read_little_endian<WeightType >(stream, weights , HalfDimensions * FeatureSet::get_dimensions());
++ read_little_endian<PSQTWeightType>(stream, psqtWeights, PSQTBuckets * FeatureSet::get_dimensions());
+
return !stream.fail();
}
// Write network parameters
bool write_parameters(std::ostream& stream) const {
- for (std::size_t i = 0; i < HalfDimensions; ++i)
- write_little_endian<BiasType>(stream, biases[i]);
- for (std::size_t i = 0; i < HalfDimensions * FeatureSet::get_dimensions(); ++i)
- write_little_endian<WeightType>(stream, weights[i]);
- for (std::size_t i = 0; i < PSQTBuckets * FeatureSet::get_dimensions(); ++i)
- write_little_endian<PSQTWeightType>(stream, psqtWeights[i]);
+
+ write_little_endian<BiasType >(stream, biases , HalfDimensions );
- write_little_endian<WeightType >(stream, weights , HalfDimensions * InputDimensions);
- write_little_endian<PSQTWeightType>(stream, psqtWeights, PSQTBuckets * InputDimensions);
++ write_little_endian<WeightType >(stream, weights , HalfDimensions * FeatureSet::get_dimensions());
++ write_little_endian<PSQTWeightType>(stream, psqtWeights, PSQTBuckets * FeatureSet::get_dimensions());
+
return !stream.fail();
}
&& abs(ss->staticEval) > Value(100))
extension = 1;
+ // Losing chess capture extension
+ else if ( pos.must_capture()
+ && pos.capture(move)
+ && (ss->inCheck || MoveList<CAPTURES>(pos).size() == 1))
+ extension = 1;
+
// Add extension to new depth
newDepth += extension;
+ ss->doubleExtensions = (ss-1)->doubleExtensions + (extension == 2);
// Speculative prefetch as early as possible
- prefetch(TT.first_entry(pos.key_after(move)));
-
// Update the current move (this must be done after singular extension search)
ss->currentMove = move;
ss->continuationHistory = &thisThread->continuationHistory[ss->inCheck]