plot.sshist_2d(): the default plot title was built with a Unicode
multiplication sign (U+00D7). On devices using PDF-family encodings (e.g.
pdf(), which R CMD check uses for its examples and tests) this aborted with
conversion failure on '...' in 'mbcsToSbcs'. The title now uses an ASCII x,
so plot() works on all graphics devices. This removes the only ERROR
reported by R CMD check.inst/WORDLIST: added the package's technical vocabulary (MVFFT, logexp,
optimisation, parallelization, frontmatter, pts) and dropped stale
entries (getOption, typographic-apostrophe variants of Abramson,
Diaconis, Sturges, Colour). spelling::spell_check_package() now
reports no typos.ssvkernel(): replaced max(256, min(raw_points, 1000)) grid formula with min(ceil(T/dt_samp), 1000) to match the original Python/MATLAB reference. This fixes an overly fine evaluation grid (e.g. 256 → 53 points for Old Faithful waiting data) that produced a different cost landscape and altered bandwidth estimates.sskernel() / sskernel2d() — bandwidth optimizationcompute_sskernel2d_cost_cpp, get_tau_bounds_cpp, compute_kde2d_cpp), handling isotropic Gaussian kernels with internal data standardization.ssvkernel() — gamma optimizationncores parameter.Boxcar/Gauss/Laplace/Cauchy) ported from R to C++ inline functions, verified against Python/MATLAB reference with max_err ≤ 5.55e-17.sskernel() / sskernel2d() / ssvkernel() — infrastructurelogexp() / ilogexp() helpers extracted to common.R for the log-exp transformation required by golden section search.boxcar/laplace/cauchy/gauss) unified as C++ inline functions in sshist_algo.cpp, replacing separate R implementations.R/ssvkernel.R: removed CostFunction() (dead code after C++ port of gamma optimization).R/common.R: removed kernel_boxcar(), kernel_laplace(), kernel_cauchy(), kernel_gauss() (replaced by C++ inline functions).R/sskernel.R: removed Rcpp export of test_kernels_cpp (was used only for kernel verification during development).README.Rmd / README.md: High Performance bullet updated to reflect C++/OpenMP multi-start gamma optimisation and 2D kernel cost evaluation.vignettes/introduction.Rmd: ncores description now covers gamma optimisation (ssvkernel) and 2D kernel cost evaluation (sskernel2d); sskernel/sskernel2d descriptions mention two-stage grid + golden section search.man/sskernel2d.Rd / sskernel.Rd: description and parameters updated for the two-stage bandwidth search.test-ssvkernel.R for the corrected grid formula (53 instead of 256 points for waiting data) and new gamma optimisation algorithm.test-sskernel_2d.R and test-ssvkernel_2d.R following golden section refinement in sskernel2d (changed pilot bandwidths and lambda factors).plot.sshist(): added freq = FALSE to histogram call so the plot correctly displays density instead of frequency.ssvkernel(): replaced iterative FFT smoothing with frequency-domain windowing using mvfft, reducing O(M²) FFT calls to O(M) matrix operations.ssvkernel(): vectorized which.min lookups and precomputed distance matrices for cost evaluation.ssvkernel() CostFunction: fully vectorized local bandwidth selection, replacing the for (k in 1:L) loop with max.col and matrix operations.ssvkernel(): removed unnecessary t() transpose in MVFFT slicing and unused weight_fun() helper.common.R: fixed edge case in fftkernel_1d where Lmax could be zero, ensured max(1, ...) guard.plot.sshist(): redesigned data display — jittered points and rug now sit in a reserved negative-y strip below the histogram bars (to avoid overlap).plot.sskernel() and plot.ssvkernel(): same reserved-strip approach for consistent look across all plot methods.\cr from \describe{} in package documentation, fixing "LaTeX Error: There's no line here to end."OpenMP and backends in DESCRIPTION to avoid spelling NOTE on CRAN.output: github_document) from README.Rmd and README.md.sskernel() for optimal 1D fixed-bandwidth kernel density estimation.sskernel2d() for optimal 2D fixed-bandwidth kernel density estimation.ssvkernel() for locally adaptive 1D kernel density estimation (Shimazaki & Shinomoto 2010).ssvkernel2d() for locally adaptive 2D kernel density estimation (Abramson's method).ncores parameter to sshist() for multithreaded computation.sshist() with cleaner exhaustive search logic, exactly matching the original Python/MATLAB reference algorithms.N_max = Range / (2 * Min_Resolution).sshist.R, sskernel.R, ssvkernel.R, common.R.Config/roxygen2/version format.cost and n_tested fields from sshist return value (simplified output).get_tau_bounds_cpp, compute_sskernel2d_cost_cpp, compute_pilot_density_cpp, compute_kde2d_cpp.N_max = Range / (2 * Min_Resolution) to prevent the "comb effect" (sampling artifacts). This change aligns the R implementation with the author's reference code.n_max parameter in sshist() is now strictly bounded by the resolution limit to prevent overfitting.DESCRIPTION file.faithful dataset examples in README.md to reflect the corrected optimal bin calculations (N changed from 37 to 21).README.md.README.md to include the original toolboxes and GitHub repositories from the algorithm's authors.Fixed DESCRIPTION file reference formatting:
Improved documentation:
\value tags to all exported S3 method documentation filesFixed vignette:
par() settingsinvisible(x) return statements to print.sshist() and print.sshist_2d() methodssshist() for 1D optimization (C++ optimized).sshist_2d() for 2D optimization.ggplot2 integration in examples.