Changes from Version 0.70-0 to 0.70-1 [29-Apr-2026]

* Updated the package startup message to point first to the online gallery
  of MPI examples and guides, while retaining the compact installed
  `npRmpi_getting_started` vignette as the offline/package-side entry point.

* Reorganized and expanded `.Rd` argument documentation across the package
  into user-oriented sections with clearer defaults and cross-references,
  mirroring the serial package where appropriate without changing the public
  API.

* Added `.Rbuildignore` coverage for local agent/skill guidance files so
  release tarballs remain clean.

* Mirrored the native bandwidth-selector alias-cleanup hardening from `np`,
  clearing stale estimator alias pointers after production C routes release
  borrowed state.

* Made the extended `NP_CHECK_FULL=1` test lane fail honestly when `testthat`
  reports failures, then reconciled stale installed-check, progress-output,
  and scale-factor expectation tests so the full lane is green again.

* Removed recently added extinct bounded-kernel convolution scaffolding for
  the bounded continuous kernel, preserving the live quadrature-based bounded
  `cv.ls` route and existing bounded-kernel functionality.

* Standardized continuous bandwidth-search control naming around
  `scale.factor.*` arguments and documented how initialization bounds,
  deterministic starts, and the hard search lower bound work together.

* Added local-polynomial instability guidance for conditional-density and
  conditional-distribution search failures, pointing users from canonical
  raw-basis `regtype="ll"` failures toward the numerically safer
  Bernstein-basis local-polynomial route.

* Mirrored the `npqreg` canonical quantile-extraction cleanup from `np` by
  removing the legacy Powell/environment-selected extraction path, retaining
  the single one-dimensional conditional-CDF residual refinement route, and
  updating the `npqreg` help page and fit interface to expose only the live
  quantile-extraction controls.

* Addressed the CRAN-reported MPI unload race by no longer explicitly
  calling `library.dynam.unload("npRmpi", ...)` from `.onUnload()` after
  MPI finalization. Validation covered repeated subprocess load/unload,
  tarball-first `R CMD check --no-manual --ignore-vignettes` with clean
  package and namespace unload checks, sliced attach-route validation,
  profile/manual-broadcast validation, and copied demo triplets for
  `npreglcls`, `npcdensml`, and `npcdensls`.

* Reduced the default multistart cap from `min(5, p)` to `min(2, p)`
  across the mirrored core bandwidth selectors, with the univariate
  boundary density helper now defaulting to `nmulti=1`.

* Aligned automatic LP degree-search NOMAD fallbacks with the same
  `min(2, p)` cap when `nmulti` is not supplied explicitly.

* Added benchmark-study documentation under `benchmarks/validation`
  noting the source-of-truth empirical `nmulti` default decision from
  `np-master`.

* Added a documented `nomad=TRUE` convenience preset across the
  LP-capable front ends, mirroring the serial package defaults and the
  estimator/bandwidth help-page guidance for the recommended LP/NOMAD
  route.

* Reactivated the public conditional LP/LL cross-validation routes mirrored
  from `np` for the remediated families:
  - `npcdensbw(cv.ml)` fixed and generalized nearest-neighbor
  - `npcdensbw(cv.ls)` fixed and generalized nearest-neighbor
  - `npcdistbw(cv.ls)` fixed and generalized nearest-neighbor
  - adaptive nearest-neighbor remains explicit fail-fast containment for the
    remediated LP/LL families.
  Route validation for the generalized-NN mirrors passed in session/spawn,
  attach, and profile/manual-broadcast mode, with LP generalized-NN wrapper
  orchestration kept on the master to avoid unsafe full-wrapper autodispatch.

* Mirrored the conditional density/distribution generalized nearest-neighbor
  LP CV `jksum.c` helper changes from `np`, keeping the canonical extracted
  LP X-side machinery aligned across repos and validating bounded
  generalized-NN wrapper behavior in both session and attach MPI modes.

* Mirrored smooth-coefficient LL/LP core remediation from `np`, removing
  accidental `n x n` weight-matrix construction/full-matrix dependence from
  ordinary `npscoef` estimation/CV paths while preserving explicit hat/plot
  helper behavior.

* Added `npscoefbw()` fast-summary accounting (`num.feval.fast`) without
  adding generic `npksum()` hot-path overhead.

* Fixed attach/session autodispatch scoping in `npscoef` error-path handling
  (`object 'yW' not found`), restoring the large-`n` attach demo route.

* Mirrored semiparametric LL/LP canonicalization from `np` for the recently
  generalized core families, including `npscoef*`, `npplreg*`, and
  `npindex*`.

* Mirrored the `npreg` local-polynomial `cv.ls` repair by landing the
  canonical GLP objective kernel for the fixed-bandwidth non-tree route
  across supported GLP degrees, eliminating the degree-1 LL/LP discrepancy.

* Expanded LL/LP degree-1 regression coverage for semiparametric families,
  including multivariate parity tests for `npscoef`, `npindex`, and
  `npplreg`.

* Fixed `npplregbw()` to propagate kernel-defining options (continuous kernel,
  bandwidth type, bounds, and related controls) into child regression
  bandwidth objects during computed-bandwidth calls, restoring
  kernel-sensitive plot/helper behavior and metadata fidelity.

* Completed canonical plot-remediation hardening for core S3 families with
  explicit fail-fast behavior:
  - no silent bootstrap-method remaps
  - no hidden fallback branches for unsupported plot/bootstrap configurations
  - explicit errors for unsupported argument/mode combinations.

* Added broad plot contract coverage for regression/index/smooth-coefficient/
  density/distribution families:
  - bootstrap argument contract gates
  - asymptotic-only contract gates
  - helper option-forwarding and semantics parity contracts
  - regression guards for `plot.errors.method` remap regressions.

* Leaned plot bootstrap/mean paths by standardizing canonical helper usage
  and removing legacy fallback toggles in touched routes.

* Enforced canonical helper-routing policy in MPI contexts:
  - no internal runtime `np::` or `np:::` bridges in package execution paths
  - no silent serial fallback when MPI execution is selected.

* Removed superseded legacy/debug toggles and stale compatibility branches in
  plotting and CV routing paths, including:
  - residual fastpath-disable scaffolding in plot helpers,
  - stale `np.groupcv.fast` option footprint,
  - obsolete conditional-density fast-switch slot.

* Enforced canonical LP behavior and removed silent behavior coercions:
  - removed transform-bounds auto-remap in regression bandwidth routing,
  - removed legacy CV aliasing and unsupported cv-iterate remaps,
  - removed Bernstein OOS alternate fallback routing while preserving
    canonical LP path behavior.

* Restored and hardened CV path-lock behavior:
  - centralized CVLS route predicates in one helper path,
  - added path-lock tests preventing inline predicate drift/regressions,
  - hardened large-h gate coverage with route-safety contracts.

* Standardized ridge ladders in helper-side optimization/solve paths to
  additive `1/n.train` sequences for touched helper families.

* Fixed helper/core ridge-base mismatch in ill-posed helper parity:
  - `npreghat`/`semihat` now default to zero-ridge-first solve semantics
    (matching core behavior that attempts un-ridged solve first),
  - retained `ridge=1e-12` defaults for inid/plreg bootstrap helper internals
    where explicit parity/stability checks favored nonzero base ridge.

* Added/updated reproducible issue-note harnesses for helper parity and
  closeout validation, including session/attach route checks and artifacts.

* Added Windows toolchain hardening for LAPACK/BLAS linkage and documented
  win-builder release-check ingestion workflow updates.

Changes from Version 0.60-20 to 0.70-0 [20-Feb-2026]

* Completed migration to modular S3 plot methods coordinated with
  autodispatch-aware wrappers, while preserving legacy `plot*` internals for
  numerical/visual parity.

* Added compatibility normalization for legacy S3 plot aliases prior to
  dispatch (`gradient` -> `gradients`, `persp` -> `perspective`) to avoid
  ambiguous argument matching during run-mode examples.

* Hardened autodispatch/manual-mode interactions and mixed-mode guardrails:
  - synchronized options/preflight checks before distributed calls
  - stabilized automatic object/data broadcasting for high-level `np*`
    entry points
  - improved diagnostics for nested/unsupported mixed dispatch contexts.

* Expanded run-mode documentation modernization:
  - converted core `np*` examples to the simplified `npRmpi.init()` +
    `options(npRmpi.autodispatch=TRUE)` style where supported
  - updated helper examples (`gradients`, `se`, etc.) to the same model
  - refreshed run/dontrun script workflow for check cycles.

* Ported bounded continuous-kernel support from np master across npRmpi
  interfaces and C pathways with unified bound controls:
  - bound modes `none`, `range`, and `fixed`
  - per-variable lower/upper bounds (`*kerlb`, `*kerub`)
  - fixed-bandwidth enforcement for finite-bound operation.

* Added the ordered kernel option `"racineliyan"` to ordered-kernel
  interfaces (`okertype`, `oxkertype`, `oykertype`) and synchronized
  conditional-density/distribution mappings.

* Synchronized bounded-kernel normalization/convolution support in shared
  kernel-sum code used by conditional-density/distribution LS-CV pathways.

* Fixed internal package registration targets for native setup calls in
  npRmpi R wrappers:
  - `.C("np_set_seed", ..., PACKAGE="npRmpi")`
  - `.C("np_set_tgauss2", ..., PACKAGE="npRmpi")`
  resolving R CMD check foreign-call NOTEs about cross-package targets.

* Removed stale legacy conditional-density bwmethod aliasing so only
  canonical least-squares selector semantics remain.

* Synchronized `plot()` bootstrap error-band enhancements/fixes from
  np master:
  - replaced fixed quantiles with scalar `plot.errors.alpha` and added
    bootstrap quantile band types `pointwise`, `bonferroni`,
    `simultaneous`, and `all` (alongside `standard`)
  - vendored/attributed rank-based simultaneous set computation (from
    `MCPAN::SCSrank`) for `plot.errors.type="simultaneous"`
  - added color-coded overlay + legend for `plot.errors.type="all"`
    (Pointwise/Simultaneous/Bonferroni)
  - fixed non-`all` bootstrap overlays not drawing in several paths due to
    default color handling
  - fixed mixed/factor plotting branches (including `npreg`) so all
    bootstrap error types (`standard`, `pointwise`, `bonferroni`,
    `simultaneous`, `all`) render consistently
  - fixed single-index (`npindex`) plotting edge cases in gradient mode:
    corrected sign-aware lower/upper bounds for negative index weights,
    fixed sorted alignment for `all` bands, fixed `plot.behavior="data"`
    return-shape errors, and fixed `ylim` handling for user limits and
    panel-specific error ranges.

* Ported recent core-performance updates from np master (kernel/jksum
  optimizations) and synchronized behavior across serial/MPI variants.

* Fixed MPI npksum copyback for padded evaluation partitions, eliminating
  a regression affecting repeated-session workflows (e.g. npcmstest).

* Added robust session-management wrappers (npRmpi.init()/npRmpi.quit()) and
  slave-reuse controls to improve stability on macOS+MPICH.

* Hardened .Rd example handling for CRAN checks (run/dontrun tooling and MPI
  example scoping), plus related documentation/check cleanups.

* Guarded fallback kernel-table indexing in jksum.c to avoid GCC/Winbuilder
  array-bounds warnings.

* Synchronized jksum.c with np master to inherit the latest kernel-evaluation
  shortcut enhancements:
  - option-driven continuous large-h K(0) shortcut logic
  - option-driven discrete near-upper-bound (lambda) shortcut logic
  applied across core continuous/unordered evaluator paths.

* Added package-level defaults for:
  - options(np.largeh.rel.tol=1e-3)
  - options(np.disc.upper.rel.tol=1e-2)
  in .onLoad, including the NP_RMPI_SKIP_INIT initialization path.

* Added new np.options.Rd man page and linked it from np-package and np.plot
  documentation to expose and document global option controls.

* Synchronized C-level generalized local polynomial regression support from
  np master into npRmpi:
  - `regtype="lp"` in shared regression core
  - per-continuous-variable degree vectors (`degree`)
  - GLP derivative extraction/plotting control support.

* Refactored/synchronized regression CV setup for `ll`/`glp` by hoisting
  invariant basis and workspace preparation out of hot objective loops,
  reducing redundant work in `cv.ls`/`cv.aic` evaluation.

* Synchronized solve-based local-linear matrix workflows (LAPACK/BLAS-oriented
  backend) from np master, replacing inverse-heavy hot-path operations.

* Expanded all-large (`h`/`lambda`) fast-path accounting/reporting across
  conditional estimators:
  - exposed `num.feval.fast` alongside `num.feval`
    in relevant summaries
  - synchronized all-large fast branches for conditional density/distribution
    CV pathways
  - reduced all-large branch overhead, including tree-list bypass where the
    all-large regime is already known.

* Updated `plot()` error-type semantics/documentation in sync with master:
  - renamed bootstrap error type `standard` to `pmzsd`
  - `pmzsd` now uses plus/minus the `1-alpha/2` normal quantile
    (`qnorm(alpha/2, lower.tail=FALSE)` semantics).

* Fixed remaining bootstrap `plot.errors.type="all"` rendering gaps across
  perspective/non-perspective branches for regression, conditional density,
  and conditional distribution plotting.

* Tightened discrete upper-bound gate handling to strict relative-tolerance
  semantics for near-upper-bound lambda shortcuts.

* Removed unused legacy sources and prototypes (RuniqueCombs, pgplot
  placeholder) and restored B-spline error handling in bspline.c.

Changes from Version 0.60-19 to 0.60-20 [06-Feb-2026]

* npRmpi-specific updates and improvements:

  - Wrapped examples in \dontrun{} and updated run/dontrun scripts for
    better MPI compatibility

  - Fixed 'break used in wrong context' byte-compilation error in
    Rparutilities.R

  - Corrected unnecessarily escaped LaTeX symbols (\_) and incorrectly
    formatted code tags ($count) in .Rd files

  - Synchronized np.plot categorical predictor evaluation fix from master
    branch (resolves npplreg plot with categorical predictor issue)

  - Updated DESCRIPTION and NAMESPACE to properly handle 'parallel' package
    imports and 'np' suggestion

  - Fixed CRLF line endings in configure.ac and incomplete final line in
    demo/00Index

  - Expanded .Rbuildignore to exclude .git and additional build/demo
    artifacts

  - Removed legacy makefile.openmpi

  - Modernized MPI detection in configure

  - Fixed Rmpi init registration conflict

  - Synchronized partial Rmpi 0.7-3.3 updates

  - Fixed npsigtest eval casting and added demo run/timing helpers

  - Added demo runall scripts for easier testing

  - Documented mpiexec port workaround

  - Added MPICH build/run notes for npRmpi

  - Allowed skipping MPI init via NP_RMPI_SKIP_INIT environment variable

  - Defined Realloc, Calloc, and Free macros for MPICH build

  - Included R memory macros in Rmpi.c

  - Fixed MPICH build flags for npRmpi

  - Updated man page package references to npRmpi

  - Resolved -Wfree-nonheap-object compiler warnings in nr.c by implementing 
    a safe 0-based allocation strategy for 1-based indexing compatibility

  - Modernized documentation and vignettes: replaced 'Open MPI' with 'MPICH' 
    references and updated benchmarks for Apple M2 Mac Studio

  - Synchronized man pages with np master

  - Restored npRmpi helpers and updated documentation

  - Aligned npRmpi docs and removed non-CRAN artifacts

  - Added legacy npRmpi docs and demo artifacts

  - Fixed np issues 4/6/7/13/18/26/51 and added np.pairs utilities

  - Removed superfluous library(Rmpi) calls

  - Fixed log cleanup warning and silenced mpi.close output

  - Switched donttest to dontrun in Rd examples for MPI awareness

  - Updated documentation examples to use MPI-aware code

  - Updated Rmpi base version (0.7-3.3) to reflect version in startup
    message

  - Updated np_faq vignettes with npRmpi-specific content

* Incorporated all updates from np master package through version 0.60-19:

  - Added bandwidth details to npregiv summaries

  - Added estimation timing and ensured alphabetical argument order in np
    IV functions

  - Reordered npregivderiv arguments alphabetically after fixed ones

  - Updated unit tests and fixed documentation mismatches for
    npregiv/npregivderiv

  - Implemented S3 methods (print, summary, plot) for npregiv and
    npregivderiv

  - Updated documentation for npregiv/npregivderiv warm-start strategy

  - Aligned npregiv/npregivderiv multistart strategy with crsiv/crsivderiv

  - Fixed initialization of bw.mu.w in npregivderiv for warm-start strategy

  - Implemented warm-start strategy in npregiv and npregivderiv

  - Expanded unit test coverage to include distribution, copula, quantile
    regression, tests of independence/specification, and
    boundary/shape-constrained methods

  - Added unit tests using testthat and cleaned up phihat to phi in
    npregiv*

  - Optimized npregiv and npregivderiv for performance: pre-allocated
    matrices and lists in iterative loops to avoid redundant memory
    allocation (cbind/rbind); optimized trapezoidal integration in
    npregivderiv by pre-calculating sort orders and differences; improved
    efficiency of Tikhonov and Ridge calculations; alphabetized arguments
    in function signatures and updated documentation (Rd files) to match

  - Updated URLs to resolve CRAN check warnings

  - Updated McMaster website URL to https://experts.mcmaster.ca/people/racinej

Changes from Version 0.60-18 to 0.60-19 [28-Jan-2026]

* Added crs to Suggests field in DESCRIPTION per CRAN requirements

* Utility functions integrate.trapezoidal(), NZD(), NZD_pos() (new, affect npregiv() and npregivderiv())

* Miscellaneous typos fixed

Changes from Version 0.60-17 to 0.60-18 [09-Dec-2024]

* Patched issue with as.double(data) when data is a NULL object
  reported by Brian Ripley

* Merged rng pull request https://github.com/JeffreyRacine/R-Package-np/pull/48

* Incorporated Kurt Hornik's suggestion "If indeed intended as a
  package overview help file, please add \alias{np-package} to file
  'np/man/np-package.Rd'."

Changes from Version 0.60-16 to 0.60-17 [12-Mar-2023]

* Fixed warning "Check: S3 generic/method consistency Result: WARN
  compute.bootstrap.errors: function(..., bws)
  compute.bootstrap.errors.*" triggered potentially by lack of
  "...,bw" in functions called (thanks to Kurt Hornik for
  assistance!)

* Updated inst/CITATIONS to get rid of old-style cit and bib entries

Changes from Version 0.60-15 to 0.60-16 [18-Oct-2022]

* Fixed warning: a function definition without a prototype is
  deprecated in all versions of C and is not supported in C2x
  [-Wdeprecated-non-prototype] (thanks Zhenghua!)

Changes from Version 0.60-14 to 0.60-15 [09-Oct-2022]

* Explicit acknowledgment in DESCRIPTION of code gsl_bspline.c/.h
  adapted from the GNU GSL library with further details appended to
  gsl_bspline.c/.h (thanks to Professor Brian Ripley for noting this
  oversight).

Changes from Version 0.60-13 to 0.60-14 [22-Aug-2022]

* Added logspline and ks to DESCRIPTION to address NOTE on some system
  builds stating "Undeclared packages ‘logspline’, ‘ks’ in Rd xrefs"

* Zhenghua Nie kindly addressed the clang-UBSAN issue in jksum.c
  causing `runtime error: applying non-zero offset 8 to null pointer`

Changes from Version 0.60-12 to 0.60-13 [15-Aug-2022]

* Minor changes to np.Rnw vignette viz Sweave options and class
  (redundancies commented out)

* Fixed issues relating to new NOTE "Found if() conditions
  comparing class() to string [..] Use inherits() (or maybe is())
  instead." Addressed by using by using isa()

Changes from Version 0.60-11 to 0.60-12 [12-Aug-2022]

* JSS issues corrected in vignette/*.bib and inst/CITATION (use of DOI,
  etc., thanks to Achim Zeileis)

* Issues with utf8x in entropy_np.Rnw and np.Rnw corrected (utf8x -> utf8, etc.)

Changes from Version 0.60-10 to 0.60-11 [04-Jun-2021]

* npuniden.boundary() uses empirical support for a and b (previously was
  [0,1], now [min(X),max(X)])

* Corrected potential issue with malloc failing on null vector
  in C function sort_unique() detected by development version of
  gcc11 (thanks to Professor Brian Ripley for pointing this out
  and for his assistance)

* Corrected outdated URLs

Changes from Version 0.60-9 to 0.60-10 [5-Feb-2020]

* Corrected issue `Documented arguments not in usage in documentation
  object se: ...'

* Removal of directed quotes in some Rd documents, replacement with sQuote

* Fixed issue causing rebuilding of vignettes to crash (uocquantile() was
  the culprit)

Changes from Version 0.60-8 to 0.60-9 [24-Oct-2018]

* Added support for character expansion to plot() (which is invoked
  by calling plot() on an np object) - will take defaults from the
  environment par() or can be set directly, e.g.,
  plot(foo,cex.main=0.8)

Changes from Version 0.60-7 to 0.60-8 [04-Jun-2018]

* Used patch suggested by Scott Thompson for issue
  https://github.com/JeffreyRacine/R-Package-np/issues/8 regarding
  npcdens/npcdist and formulas

Changes from Version 0.60-6 to 0.60-7 [01-May-2018]

* Fix for switch() and zero length character strings that affected
  summary output for certain tests

* Added function for shape constrained bounded univariate PDF and CDF
  estimation (npuniden.sc())

* Added option for renormalizing improper bounded density estimates
  than can arise from the use of asymmetric negative edge kernel
  functions (proper=TRUE, npuniden.boundary())

* Fixed issues with CDF estimation in the presence of large bandwidths
  for bounded density estimates (npuniden.boundary())

Changes from Version 0.60-5 to 0.60-6 [12-Jan-2018]

* Added more edge kernel functions for npuniden.boundary(), some
  glitches addressed

* Added asymptotic standard errors and integrated density (CDF) to
  npuniden.boundary() and npuniden.reflect() plus additional examples

* Added least squares cross-validation to npuniden.boundary() (default
  for boundary kernel functions)

Changes from Version 0.60-4 to 0.60-5 [04-Jan-2018]

* Added two basic functions for univariate bounded kernel density
  estimation, npuniden.boundary and npuniden.reflect

* More plotting routines accept more passable parameters

Changes from Version 0.60-3 to 0.60-4 [03-Dec-2017]

* Default plot.errors.style changed to "band"

* Using wrapLines(strwrap(...)) for summary output for model specification
  test to automatically wrap long formula lines

* plot() calls plot() and plot() behaves better when most passable
  parameters are fed (col =, lty =, xlab =, etc.) but there may still
  be room for improvement

* Added option plot.par.mfrow=TRUE/FALSE to plot() so that the
  automated setting of par(mfrow=c(,)) in plot is disabled and the
  user can do this manually if desired

* Option plot.par.mfrow=TRUE/FALSE can be overridden by setting
  options(plot.par.mfrow=TRUE/FALSE)

Changes from Version 0.60-2 to 0.60-3 [29-Apr-2017]

* Fixed the `cannot find function is()' glitch that just surfaced with R 3.4.0

* Fixed glitch in npconmode when randomizing if all probabilities are equal

* Migrated some code from crs (which I wrote) to avoid crs:::

* Fixed	outstanding glitch in npscoef() with tydat being converted

* Leave.one.out not properly implemented in npscoef, corrected

* Using pmin/pmax in NZD (parallel min/max more efficient with vectors)

* Improved screen i/o when smooth.residuals=TRUE/FALSE

* Corrected glitch in npregiv() where multivariate z would halt with error

* Npregiv with method="Landweber-Fridman" no longer passes back lists

* Fixed glitch in Kmat.lp with p=0 and derivatives

* Tikhonov regularization in npregiv now supports evaluation data

* Updated npregiv (was sorely lacking, did not support eval etc.)

* Use of .onLoad suggested (by Bernd Bischl)

* Fixed glitch in npconmode

* Added vignette("entropy_np",package="np") to startup message

* In np.distribution.bw.R default for do.full.integral changed to FALSE

* Fixed the CDF objective function when averaging over the training data

* Fixed crash error with npcdistbw and adaptive bandwidths

Changes from Version 0.60-1 to 0.60-2 [27-Jun-2014]

* added timeseries support for all relevant objects (i.e. for a
  ts() vector data object x, npreg(x~lag(x,-1)+lag(x,-2)) is now
  supported)

* added total time to summary for bandwidth objects

* npqreg no longer accepts gradients=TRUE when gradients are in fact not
  supported

* npqreg fails with an informative message when passed a conditional
  density bandwidth object

Changes from Version 0.60-0 to 0.60-1 [6-Jun-2014]

* Fixed glitch in adaptive_nn/generalized_nn bandwidths that affected all
  routines that rely on non-fixed bandwidths

* Tweaks to search for adaptive_nn/generalized_nn initial search values

* Fixed glitch in local linear estimation with adaptive_nn bandwidths

Changes from Version 0.50-1 to 0.60-0 [1-Jun-2014]

* Ordered kernel types now default to liracine/liracine (normalized) for
  conditional/unconditional objects, respectively (the previous default,
  i.e. the Wang van Ryzin kernel, is poorly behaved when smoothing out of
  ordered predictors is appropriate)

* Rmpi backend updated to 0.6-5

* Added analytical ordered CDF kernels, resulting in significant
  speedups for cross validation with ordered variables

* Added analytical ordered convolution kernels, resulting in significant
  speedups for least-squares cross validation with ordered variables

* The entire C backend has been rewritten and improved in almost every
  regard

* Glitch in adaptive convolution kernels corrected

* Added truncated gaussian kernel (see ntpgauss for modifying the
  truncation radius)

* Support for trees complete (use options(np.tree=TRUE)) which when used in
  conjunction with bounded kernels (i.e. "epanechnikov"/"truncated
  gaussian") can reduce the computational burden for certain problems

* Optimizers that make use of Powell's direction set method now accept
  additional arguments that can be used to potentially improve
  default settings

* Default search settings for optimizers that make use of Powell's
  direction set method should better scale to the range of variables

* Added mean absolute deviation/1.4826 to mix of robust scale elements

* Corrected error in order of conditional density/distribution manual
  bandwidths pointed out by Decet Romain

* Figure in vignette not displaying properly, needed png=TRUE reported by
  Christophe Bontemps

*  Using chol2inv/chol rather than solve throughout R routines that rely
   on inversion

* Fixed glitch in npindexbw() to stop maxit from blowing up every time
  convergence fails

* Fixed issue with summary reporting incorrect value of objective function
  in certain bandwidth objects

* When nmulti > 1,  the full multi- starting search history is now
  returned in a vector named fval.history

* Added na.action for consistency with other R functions such as lm()

* New function npquantile() that returns smooth univariate quantiles

* npksum explicitly only uses raw bandwidths now (and will emit an error

  if passed numeric scale factors, bandwidth objects are still OK)

* Fixed regression in npindex() with bootstrapped standard errors

* Code making use on one call to npksum() in npindex() and npscoef() where
  possible rather than two separate calls

* Updated npsigtest() for addition of power and added joint test to
  the mix

* Changed ceiling() to max(1,round()) in b.star per Dimitris Politis's
  suggestion

* Reworked the interface for npcopula() to avoid two bandwidths and
  density=TRUE but exploiting passing of either npudistbw (copula) or
  npudensbw (copula density)

* Changed default behaviour of generating log files to FALSE
  (mpi.spawn.Rslaves(...,needlog=FALSE))

* Increased sample sizes for demos to better assess how well algorithms
  scale with respect to the number of processors

Changes from Version 0.40-13 to 0.50-1 [13-Mar-2013]

* The functions npudist() and npudistbw() are now uncoupled from npudens()
  and npudensbw() (previously they relied on unconditional PDF bandwidths
  due to the lack of a multivariate mixed-data method for selecting bandwidths
  for CDFs - now with Li & Racine (2013) we have a robust method hence the
  split)

* The use of cdf=TRUE is deprecated for npudens and
  npudensbw objects due to the uncoupling described above

* Fixed glitch in gradient standard errors in npindex where identical
  standard errors were output in model$gerr

* Fixed glitch in covariance matrix in npindex (ichimura) where covariance
  matrix was not symmetric

* Fixed glitch in npksum() where use of bwtype="adaptive_nn" and
  operator="integral" produced the survivor function rather than
  the cumulative distribution function

* Cleaned up internals for npcmstest()

* Using .onLoad rather than .Last.lib in zzz.R

* Fixed glitch in npreg summary where `Residual standard error' was
  reporting residual variance

* Added reference to R2 measure (Doksum and Samarov (1995))

* Startup message points to the faq, faq is now a vignette

* npksum() functionality extended

- npksum() can now return the matrix of kernel weights (which can be
  useful for constrained estimation, by way of illustration, or
  constructing novel kernel-based procedures without the need to write
  extensive code)

- npksum() can now accept different operators on a product kernel, for
  example,

  npksum(txdat=data.frame(x1,x2),operator=c("derivative","normal"),bws=c(1,1))

  will use the derivative kernel for x1 (i.e. the derivative of the
  gaussian kernel) and the default kernel for x2 (i.e. a standard
  kernel such as the gaussian) thereby allowing the user to program a
  number of estimators such as conditional CDFs etc. that were
  previously not available via npksum()

* Fixed glitch with variable scope where certain objects could not be
  found in the environment

* Added function `npcopula()' for d-dimensional copula estimation via
  inversion

* Modified stopping rules in npregiv and npregivderiv

Changes from Version 0.40-12 to 0.40-13 [05-Mar-2012]

* Added new function npregivderiv() that implements the IV derivative
  method of Florens and Racine (2012)

* Added more passable parameters to npregiv() (multistarting,
  parameters passed to optim() for cross-validation)

* Changes to code to improve compliance with R `Writing portable
  packages' guidelines and correct partial argument matches

Changes from Version 0.40-11 to 0.40-12 [24-Nov-2011]

* Added option (user request) to hold the bandwidth fixed but optimize
  the parameters in the single index model

Changes from Version 0.40-10 to 0.40-11 [24-Oct-2011]

* Corrected regression in single index errors

Changes from Version 0.40-9 to 0.40-10 [24-Oct-2011]

* Modified Silverman's adaptive measure of spread to reflect changes
  in sd() (sd on matrix deprecated)

Changes from Version 0.40-8 to 0.40-9 [30-July-2011]

* Renamed COPYING file to COPYRIGHTS

Changes from Version 0.40-7 to 0.40-8 [29-July-2011]

* Fixed issue where calling plot resets system seed

* Updated examples in docs so that plot is recommended throughout (and
  not plot that is invoked by plot)

* Fixed regression in npindex when gradients=TRUE and errors=TRUE

* Function npindex/npindexbw now accepts additional arguments and
  implements this properly (i.e. proper implementation by Tristen of
  Version 0.30-8/0.30-9 change for npindex)

* Function npplreg now supports factors in the parametric part just
  like lm() does

* Minor modifications to Rmpi.c and Rmpi.h and Makevars.win (thanks to
  David Jacho-Chavez) for building under recent version of Windows
  (Windows 7).

Changes from Version 0.40-6 to 0.40-7 [8-Jun-2011]

* Function npregiv now supports exogenous X and multivariate Z and W.

Changes from Version 0.40-5 to 0.40-6 [1-Jun-2011]

* Added a new function npregiv that conducts nonparametric
  instrumental regression a la Darolles, Fan, Florens and Renault
  (2011, forthcoming, Econometrica) and Horowitz (2011,
  Econometrica). Note that this function currently returns the fitted
  phi(z) (i.e. lacks much functionality relative to other np
  functions) and is in `beta status' until further notice.

* Added a new dataset `Engel95' that allows one to estimate Engel
  curves using the new nonparametric instrumental regression function
  npregiv.

Changes from Version 0.40-4 to 0.40-5 [26-Apr-2011]

* Fixed issue with npindexbw where, for certain problems, starting
  values needed refinement otherwise convergence would fail (we now
  use an improved normalization for the starting values)

Changes from Version 0.40-3 to 0.40-4 [21-Jan-2011]

* Fixed issue with ckertype and ckerorder not being propagated in
  np.singleindex.bw.R

* Fixed issue with negative penalties being returned by cv.aic in
  npregbw (ought to have been +infinity)

Changes from Version 0.40-1 to 0.40-3 [23-Jul-2010]

* Added random seed (defaults to 42) to npscoefbw to ensure consistent
  values for optimization for successive invocations on the same data

* Fixed glitch in multistarting in npscoefbw whereby multistarting was
  not working (always returned last computed function value and not
  the minimum)

* Fixed issue for npRmpi where the C code underlying regression
  cross-validation (code in jksum.c) differs between np and npRmpi
  (both were correct with the latter being a tad slower, now both use
  unified code base)

* Fixed a scope issue whereby a user would write a function that calls
  an np/npRmpi command, however, objects passed to the user's function
  and called by the np/npRmpi command (i.e. such as newdata) cannot be
  found in the environment yet they exist outside of the function

* Fixed issue with bwscaling=TRUE and bwmethod="cv.aic" in npreg

Changes from Version 0.40-0 to 0.40-1 [4-Jun-2010]

* Added asymptotic standard errors to npindex for the Klein and Spady
  and Ichimura parameter estimates which, when gradients=TRUE, can be
  extracted via vcov(foo) where foo is a npsingleindex object (the
  Z-scores can be obtained via Z<-coef(foo)[-1]/sqrt(diag(vcov(foo)))[-1])

Changes from Version 0.30-9 to 0.40-0 [25-May-2010]

* Modified codebase to enable dynamic spawning for interactive
  sessions in npRmpi

* Interactive examples supported in npRmpi

Changes from Version 0.30-8 to 0.30-9 [17-May-2010]

* Fixed issue where ukertype and okertype were being ignored by npscoef

* Fixed regression (dating to version 0.30-4) where random.seed=42 was
  not initialized in functions npcmstest, npdeneqtest, npindexbw,
  npsdeptest, npqcmstest, npsigtest, npsymtest, npunitest, and plot

* Fixed issue with saving and restoring random seed in npdeptest

* Changes to codebase to modify method used to prevent division by
  zero

* New vignette for the npRmpi package (vignette("npRmpi",package="npRmpi"))

Changes from Version 0.30-7 to 0.30-8 [20-Apr-2010]

* Implemented moment version of metric entropy in npsymtest and
  npunitest with warnings about their use documented carefully and
  exceptions trapped and warnings issuing when detected
 
* Cleaned up print/summary output formatting of some functions

Changes from Version 0.30-6 to 0.30-7 [15-Feb-2010]

* Added function npunitest for entropy-based testing of equality of
  univariate densities as described in Maasoumi and Racine (2002,
  2009)

* Updated vignette to reflect new functions (Table 1: np functions)

Changes from Version 0.30-5 to 0.30-6 [3-Feb-2010]

* Added function npsdeptest for entropy-based testing of nonlinear
  serial dependence described in Granger, Maasoumi and Racine (2004)

* Added function npdeptest for entropy-based testing of nonlinear
  pairwise dependence described in Maasoumi and Racine (2002)

* Added more bootstrap options to npsymtest (now both iid and
  time-series bootstrapping are supported)

* Cleaned up summary formatting in the vignette by adding
  \usepackage[utf8x]{inputenc} to the Sweave file np.Rnw

* Fixed issue with saving and restoring random seed when there was
  none in the environment

Changes from Version 0.30-4 to 0.30-5 [29-Jan-2010]

* Added function npdeneqtest for integrated squared difference testing
  of equality of densities as described in Maasoumi, Li, and Racine
  (2009), Journal of Econometrics

* Save random seed prior to setting seed in certain functions, then
  restore seed after function completes

Changes from Version 0.30-3 to 0.30-4 [27-Jan-2010]

* Added function npsymtest for entropy-based testing of symmetry
  described in Maasoumi and Racine (2009), Econometric Reviews

* Added function b.star that automates block length selection for
  the stationary and circular bootstrap

* Cleaned up docs

Changes from Version 0.30-2 to 0.30-3 [29-May-2009]

* Corrected error in Epanechnikov convolution kernels for fixed and
  generalized bandwidth objects

* Changed default example in npscoef

Changes from Version 0.30-1 to 0.30-2 [19-Apr-2009]

* min(std,IQR/1.348) is the adaptive measure of spread. We now test
  for the pathological case where IQR is zero but std > 0 and return
  std in this instance

Changes from Version 0.30-0 to 0.30-1 [29-Jan-2009]

* predict now supports bandwidth, density, distribution, conbandwidth,
  condensity, and condistribution objects

* Consistently allow predictions for categorical values outside of
  support of training data

  Note that predictions based upon unconditional density objects
  defined over categorical variables that lie outside the support of
  the training data may no longer be true probabilities (i.e., as
  defined over the training data and the extended/augmented support --
  their sum may exceed one) and may therefore require renormalization
  by the user 

* Fixed a numerical issue which could hinder npregbw()'s cross
  validation with higher-order kernels

* Default nmulti in npplregbw() is now set correctly

* Fixed a bug with the ridging routine in npscoefbw(), added ridging to
  npscoef

* Fixed trivial i/o issue with "Multistart 1 of" using npscoefbw()

Changes from Version 0.20-4 to 0.30-0 [15-Jan-2009]

* Added basic user-interrupt checking for all underlying C code so
  that either <Ctrl-C> (Rterm) or the `STOP' icon (Rgui) will
  interrupt all running processes. This has a number of desirable side
  effects in addition to being able to interrupt C-based processes
  including i) R no longer showing up as `not responding' under the
  task manager (Windows) or the activity monitor (Mac OS X) and ii)
  buffered output now being correctly displayed when using Rgui under
  Windows and Mac OS X

  Note that repeated interruption of large jobs can reduce available
  memory under R - if this becomes an issue (i.e., you get a `cannot
  allocate...' error under R) simply restart R (i.e., exit then run a
  fresh R session)

* Added a function npseed() that allows the user to set/reset the
  random seed for all underlying C routines

* Fixed a bug that caused npplregbw() to ignore any kernel options
  for the regression of y on z

* Refined certain constants used in the normal-reference density
  bandwidth rule for increased accuracy

* Moved from using the maximum likelihood estimate of variance
  throughout to the degrees of freedom corrected estimate (all
  variance estimates now change by the factor (n-1)/n)

Changes from Version 0.20-3 to 0.20-4 [19-Nov-2008]

* Using an adaptive measure of spread throughout.  The scale factor
  reported for a bandwidth can appear to be small when the standard
  deviation is inflated due to the presence of outliers.  Furthermore,
  supplying a scale factor of, say, 1.06 for density estimation when
  there are outliers that inflate the standard deviation may
  oversmooth rather dramatically in the presence of outliers.  We now
  use the measure found in Silverman (1986, equation (3.30)) which is
  min(standard deviation, interquartile range/1.349). This robust
  choice produces expected results for scale factors in the presence
  of outliers

Changes from Version 0.20-2 to 0.20-3 [14-Nov-2008]

* Fixed a typo which caused predict() and plot() to abort when called
  on plregression objects, and which also prevented print() and
  summary() from printing information about the kernels used when
  called on plregression objects

* Fixed a typo which caused partially linear regressions to crash when
  out-of-sample responses were provided with evaluation data

Changes from Version 0.20-1 to 0.20-2 [02-Nov-2008]

* Allow for evaluation outside of discrete support of factors in
  npksum() and fixed a warning in jksum

* Fixed a bug which lead to unpredictable behavior when there were
  more categorical values for the training data than realisations

Changes from Version 0.20-0 to 0.20-1 [13-Aug-2008]

* Work-around for scale-factor issues during npregbw() cv when
  changing the training data

Changes from Version 0.14-3 to 0.20-0 [28-Jul-2008]

* npksum() now supports an expanded set of kernels (including
  convolution, derivative and integral), which can be selected via the
  'operator' argument

* Automatic bandwidth searches are now performed when attempting to
  evaluate on data without bandwidths. This allows users to combine
  bandwidth selection and estimation in one step

* The npsigtest() interface is brought in line with other functions
  (S3)

* Significance tests can now be performed on npreg() outputs, so
  npsigtest(modelname) is now supported

* Added a vignette and faq. To see the vignette try
    vignette("np",package="np")

* summary() on npconmode() now properly retrieves names from bandwidth
  objects

* Fixed the 6th and 8th order epanechnikov kernels

* Fixed some quietness issues

* plot() now returns data upon request for conditional densities

* npreg() and npcdens() now take the appropriate limits in some
  pathological cases

* User supplied bandwidths now operate seamlessly with the formula
  interface

Changes from Version 0.14-2 to 0.14-3 [02-May-2008]

* Fixed a glitch that only arose when using the `liracine' unordered
  kernel in the presence of irrelevant variables. The upper bound for
  numerical search was constrained to be (c-1)/c [that for the
  aitchisonaitken unordered kernel] but ought to have been 1. The
  summary output would therefore show a value of lambda hitting the
  (smaller) upper bound (c-1)/1 when it may have hit the (larger)
  upper bound 1

Changes from Version 0.14-1 to 0.14-2 [11-Jan-2008]

* Relaxed checking tolerances slightly to prevent spurious 'invalid
  bandwidth' errors

* Empty sections were removed from help files

* example(foobar) now works again. This was disabled in 0.14-1 at the
  request of the R maintainers in order to shorten the duration of R
  CMD check. All examples remained in the help files but due to the
  presence of `dontrun' they were not run when examples(foobar) is
  requested. Now a limited subset are run while the full set of
  examples remain in the documents

Changes from Version 0.13-1 to 0.14-1 [18-Dec-2007]

* Now use optim for minimisation in single index and smooth
  coefficient models

* Fixed bug in klein-spady objective function

* Standard errors are now available in the case of no continuous
  variables

* Summary should look prettier, print additional information

* Tidied up lingering issues with out-of-sample data and conditional
  modes

* Fixed error when plotting asymptotic errors with conditional
  densities

* Fixed a bug in plot() with partially linear regressions and
  plot.behavior='data' or 'plot-data'

* Maximum default number of multistarts is 5

* Least-squares cross-validation of conditional densities uses a new,
  much faster algorithm

* New, faster algorithm for least-squares cross-validation for both
  local-constant and local linear regressions

  Note that the estimator has changed somewhat: both cross-validation
  and the estimator itself use a method of shrinking towards the local
  constant estimator when singularity would otherwise lead to the
  breakdown of the estimator. This arises in sparse data settings in
  conjunction with small bandwidths for one or more regressor

* Optimised smooth coefficient code, added ridging

* Fixed bug in uniform CDF kernel

* Fixed bug where npindexbw() would ignore bandwidth.compute = FALSE
  and compute bandwidths when supplied with a preexisting bw object

* Now can handle estimation out of discrete support

* Summary would misreport the values of discrete scale factors which
  were computed with bwscaling = TRUE

Changes from Version 0.12-1 to 0.13-1 [03-May-2007]

* Bandwidths are now checked for validity based on their variable and
  kernel types

* np now does a better job of preserving names of some 'y' data

* Names of coefficients returned from coef() now match variable names

* Fixed some corner cases in npksum() involving the dimensionality of
  outputs

* Fixed deprecation warnings in R 2.5.0 caused by use of $ on atomic
  objects

* Various and sundry bug fixes in npscoef()

* npscoef() now handles discrete 'z' data

* Predict now accepts the argument 'se.fit', like predict.lm

* Fixed bug where incorrect asymptotic standard errors of gradients
  for regression objects were being displayed in plot()

* Fixed bug where errors of gradients of regression objects were not
  being returned in matrix form

* vcov() now works with partially linear regression objects

* Fixed detection of evaluation responses when using the formula
  interface

* Pre-computed bandwidth objects are now provided for some of the more
  computationally burdensome examples

* Added Jeffrey Wooldridge's WAGE1 dataset with qualitative variables
  (married, female, nonwhite)

* Predictions outside of discrete support for regressions and
  conditional densities are now allowed

* Fixed sign issue with scaling of standard errors in the single index
  model

* Fixed error when calculating some bandwidths/scale factors for
  display purposes

* Bug in passing certain arguments to npcdensbw() fixed

* Added predict method for qregression objects

* Proper normalisation for liracine kernel shown in summary

* Fixed output bug ($\hat ~$H) in summary method for sigtest objects

* Fixed regression with plotting of bootstrapped errors in perspective
  plots

* npcdist() no longer incorrectly calls npcdens()

* Fixed spacing between var name and p-value in significance test
  summaries

Version 0.12-1 [19-Nov-2006]

* Initial release of the np package on CRAN
