1e2283de43
The code was using (in the notation of Doornik 2005) `f(x_{i+1}) - f(x_{i+2})` rather than `f(x_i) - f(x_{i+1})`. This corrects that, and removes the F_DIFF tables which caused this problem in the first place. They `F_DIFF` tables are a micro-optimisation (in theory, they could easily be a micro-pessimisation): that `if` gets hit about 1% of the time for Exp/Normal, and the rest of the condition involves RNG calls and a floating point `exp`, so it is unlikely that saving a single FP subtraction will be very useful (especially as more tables means more memory reads and higher cache pressure, as well as taking up space in the binary (although only ~2k in this case)). Closes #10084. Notably, unlike that issue suggests, this wasn't a problem with the Exp tables. It affected Normal too, but since it is symmetric, there was no bias in the mean (as the bias was equal on the positive and negative sides and so cancelled out) but it was visible as a variance slightly lower than it should be. |
||
---|---|---|
.. | ||
emacs | ||
gedit | ||
kate | ||
mingw-fix-include | ||
pkg | ||
third-party | ||
vim | ||
zsh | ||
adb_run_wrapper.sh | ||
apple-darwin.supp | ||
check-binaries.py | ||
check-links.pl | ||
check-summary.py | ||
cmathconsts.c | ||
combine-tests.py | ||
copy-runtime-deps.py | ||
ctags.rust | ||
extract_grammar.py | ||
extract-tests.py | ||
generate-keyword-tests.py | ||
get-snapshot.py | ||
indenter | ||
latest-unix-snaps.py | ||
libc.c | ||
licenseck.py | ||
local_stage0.sh | ||
make-snapshot.py | ||
mirror-all-snapshots.py | ||
snapshot.py | ||
sugarise-doc-comments.py | ||
tidy.py | ||
unicode.py | ||
x86.supp | ||
ziggurat_tables.py |