@@ -227,69 +227,46 @@ namespace Stockfish::Eval::NNUE {
227227
228228 static const std::string PieceToChar (" PNBRQK pnbrqk" );
229229
230- // Requires the buffer to have capacity for at least 5 values
230+
231+ // format_cp_compact() converts a Value into (centi)pawns and writes it in a buffer.
232+ // The buffer must have capacity for at least 5 chars.
231233 static void format_cp_compact (Value v, char * buffer) {
232234
233235 buffer[0 ] = (v < 0 ? ' -' : v > 0 ? ' +' : ' ' );
234236
235237 int cp = std::abs (100 * v / PawnValueEg);
236-
237238 if (cp >= 10000 )
238239 {
239- buffer[1 ] = ' 0' + cp / 10000 ; cp %= 10000 ;
240- buffer[2 ] = ' 0' + cp / 1000 ; cp %= 1000 ;
241- buffer[3 ] = ' 0' + cp / 100 ; cp %= 100 ;
242- buffer[4 ] = ' ' ;
240+ buffer[1 ] = ' 0' + cp / 10000 ; cp %= 10000 ;
241+ buffer[2 ] = ' 0' + cp / 1000 ; cp %= 1000 ;
242+ buffer[3 ] = ' 0' + cp / 100 ; cp %= 100 ;
243+ buffer[4 ] = ' ' ;
243244 }
244245 else if (cp >= 1000 )
245246 {
246- buffer[1 ] = ' 0' + cp / 1000 ; cp %= 1000 ;
247- buffer[2 ] = ' 0' + cp / 100 ; cp %= 100 ;
248- buffer[3 ] = ' .' ;
249- buffer[4 ] = ' 0' + cp / 10 ;
247+ buffer[1 ] = ' 0' + cp / 1000 ; cp %= 1000 ;
248+ buffer[2 ] = ' 0' + cp / 100 ; cp %= 100 ;
249+ buffer[3 ] = ' .' ;
250+ buffer[4 ] = ' 0' + cp / 10 ;
250251 }
251252 else
252253 {
253- buffer[1 ] = ' 0' + cp / 100 ; cp %= 100 ;
254- buffer[2 ] = ' .' ;
255- buffer[3 ] = ' 0' + cp / 10 ; cp %= 10 ;
256- buffer[4 ] = ' 0' + cp / 1 ;
254+ buffer[1 ] = ' 0' + cp / 100 ; cp %= 100 ;
255+ buffer[2 ] = ' .' ;
256+ buffer[3 ] = ' 0' + cp / 10 ; cp %= 10 ;
257+ buffer[4 ] = ' 0' + cp / 1 ;
257258 }
258259 }
259260
260- // Requires the buffer to have capacity for at least 7 values
261+
262+ // format_cp_aligned_dot() converts a Value into (centi)pawns and writes it in a buffer,
263+ // always keeping two decimals. The buffer must have capacity for at least 7 chars.
261264 static void format_cp_aligned_dot (Value v, char * buffer) {
262- buffer[0 ] = (v < 0 ? ' -' : v > 0 ? ' +' : ' ' );
263265
264- int cp = std::abs ( 100 * v / PawnValueEg );
266+ buffer[ 0 ] = (v < 0 ? ' - ' : v > 0 ? ' + ' : ' ' );
265267
266- if (cp >= 10000 )
267- {
268- buffer[1 ] = ' 0' + cp / 10000 ; cp %= 10000 ;
269- buffer[2 ] = ' 0' + cp / 1000 ; cp %= 1000 ;
270- buffer[3 ] = ' 0' + cp / 100 ; cp %= 100 ;
271- buffer[4 ] = ' .' ;
272- buffer[5 ] = ' 0' + cp / 10 ; cp %= 10 ;
273- buffer[6 ] = ' 0' + cp;
274- }
275- else if (cp >= 1000 )
276- {
277- buffer[1 ] = ' ' ;
278- buffer[2 ] = ' 0' + cp / 1000 ; cp %= 1000 ;
279- buffer[3 ] = ' 0' + cp / 100 ; cp %= 100 ;
280- buffer[4 ] = ' .' ;
281- buffer[5 ] = ' 0' + cp / 10 ; cp %= 10 ;
282- buffer[6 ] = ' 0' + cp;
283- }
284- else
285- {
286- buffer[1 ] = ' ' ;
287- buffer[2 ] = ' ' ;
288- buffer[3 ] = ' 0' + cp / 100 ; cp %= 100 ;
289- buffer[4 ] = ' .' ;
290- buffer[5 ] = ' 0' + cp / 10 ; cp %= 10 ;
291- buffer[6 ] = ' 0' + cp / 1 ;
292- }
268+ double cp = 1.0 * std::abs (int (v)) / PawnValueEg;
269+ sprintf (&buffer[1 ], " %6.2f" , cp);
293270 }
294271
295272
0 commit comments