From 241156da6f35cb888253e6b8814e7b61a76b4fc7 Mon Sep 17 00:00:00 2001 From: tslil Date: Sun, 30 Aug 2026 19:46:07 +0100 Subject: TD(lambda), and a big rework NOTE: 6x6 weights are as-yet untrained On the performance side: * switch from linked-list chaining hash table to direct mapping * cache check_win by hash * persist transposition tables across plies (this was a big deal and difficult to puzzle out) * add align directives to the network floats * prepare_nn_input gained a small LUT to avoid branching (i suppose you might call this 1D embedding) * apply mtune=native for the native builds On the correctness side: * Zobrist has now includes the ply parity * the network now predicts something in [-1, 1] using tanh (approximated by polynomials) * the training object is now MSE because we're learning a value estimate * use .clangd instead of compile_commands.json On the training side: * completely forgo human-derived data set * implement td(lambda), self-play, tournaments --- include/xorshift64.h | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'include/xorshift64.h') diff --git a/include/xorshift64.h b/include/xorshift64.h index c3542c6..2b13f60 100644 --- a/include/xorshift64.h +++ b/include/xorshift64.h @@ -1,5 +1,5 @@ /* - This file is part of ct. + This file is part of ctak. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -12,7 +12,7 @@ General Public License for more details. You should have received a copy of the GNU General Public License - along with ct. If not, see . + along with ctak. If not, see . */ #ifndef XORSHIFT_H @@ -32,4 +32,14 @@ extern uint64_t xors; #define RANDOM64 (xors * 0x2545F4914F6CDD1D) #define RANDOM32 ((uint32_t)RANDOM64) +static inline uint64_t rand64(void) { + XORSHIFT64; + return RANDOM64; +} + +static inline uint32_t rand32(void) { + XORSHIFT64; + return RANDOM32; +} + #endif -- cgit v1.3.1