NEWS.md
Fixed reconstruction with exact endpoint restrictions, singleton response sets, and fully fixed samples. Restriction names now map to unique lattice responses, including decimal names and multi-item scales. Saved parameter objects remain supported.
Reconstruction consistently accepts rounding ties, checks the final candidate and all success invariants, and returns the closest observed SD with matching values on failure. Iterations count SD adjustments, so an initial match reports zero. Restricted downward moves now receive the same gap repair as upward moves.
Search stopping rules count every attempt and consecutive duplicate correctly, including the final success. Explicit search seeds preserve the caller’s RNG state. dont_test = TRUE now skips all statistical prechecks while retaining input validation.
Clarified the singular result’s values field and the limits of stochastic reconstruction.
Fixed distribution plots to retain complete endpoint bars and show exact response frequencies, including multi-item scales, gaps, and constant distributions. Empty search results now produce a clear plotting diagnostic.
Corrected precision inference for negative numbers and scientific notation, including inference from the SD itself in boundary checks. Rounded zero SDs and multi-item constant samples now pass GRIMMER when compatible. Floating-point tolerance also prevents false rejection at sum-of-squares boundaries on ordinary multi-item scales.
GRIMMER now consistently honours its return modes and returns compatible SD candidates for the tested interval. Empty candidate vectors always indicate failure. Each compatible mean is also checked against the minimum variance on the response lattice. Added quiet controls and clarified that passing this screening test does not prove that a sample exists.
Corrected GRIM’s nearest reported means, including ties, and avoided enumerating candidates for logical-only GRIM checks.
.equalish() respect its tolerance, and removed an unused constant.GRIM_test() to more direct calculation rather than iterative check to increase transparency and efficiency. If requested to return the nearest possible means, the function now also correctly returns two values if there are two equidistant values. (For users wishing to use the original algorithm, it is presently retained as an unexported function that can be called with rsprite2:::GRIM_test_old().)GRIMMER_test() to account for the fact that multiple exact means may be compatible with the reported means, if the mean is reported to a lower precision than the standard deviation. The previous version missed some valid SDs in this rare case. Also optimised the implementation of the algorithm to catch special cases explicitly and run a lot faster.boundary_test() function that tests whether a standard deviation is within the possible range. This tests was already part of GRIMMER, but is now exported and separately documented for transparency. The underlying function to calculate SD limits now also accounts for various rounding choices for values ending in .5, i.e. up, down or to even, to reduce the risk of false positives, and is vectorised to increase speed.GRIMMER_test() function, which could lead to false positives in some cases.GRIMMER_test() now supports multi-item scales, as Aurélien Allard kindly extended his algorithmGRIMMER_test()) to catch impossible standard deviations, using the algorithm developed by Aurélien Allard