Changes from Version 0.70-1 to 0.70-2 [15-May-2026]

* Promoted `npqreg()` to a fully fledged MPI-aware quantile-regression front
  end. It now supports formula/data calls that compute `npcdistbw()`
  internally, scalar or vector `tau`, bandwidth reuse for additional
  quantiles in `plot()`, and the standard S3 workflow through `fitted()`,
  `predict()`, `predict(..., se.fit = TRUE)`, `se()`, `gradients()`,
  `summary()`, `print()`, `quantile()`, and `plot()`.

* Promoted `npconmode()` to a first-class MPI-aware conditional-mode
  estimator with formula/data and bandwidth-object workflows, propagation of
  bandwidth-selection controls through `npcdensbw()`, local-polynomial/NOMAD
  metadata in returned objects, class-probability output, level-specific
  probability gradients, and `fitted()`, `predict()`, `summary()`, `print()`,
  `gradients()`, and `plot()` methods.

* Extended `npconmode()` plotting to object-fed class-probability slices and
  two-dimensional probability surfaces, including optional `rgl` rendering and
  probability-level asymptotic intervals where defined. Surface bootstrap
  intervals for class probabilities remain intentionally deferred.

* Promoted `npcopula()` to a first-class MPI-aware copula estimator with
  formula/data and bandwidth-object workflows, automatic two-dimensional
  probability-grid construction, explicit `u` grid evaluation, ordinary
  extractable object components including `$bws`, `fitted()`, `predict()`,
  `predict(..., se.fit = TRUE)`, `se()`, `summary()`, `print()`,
  `as.data.frame()`, and enhanced `plot()` methods with asymptotic and
  MPI-fanned bootstrap intervals where defined.

* Hardened S3 prediction and evaluation contracts across the newly promoted
  and adjacent core/semiparametric methods. The repaired routes honor the
  standard `newdata` workflow, preserve native evaluation-argument precedence
  such as `exdat`/`eydat`, validate formula right-hand-side variables in new
  data, and report invalid `se.fit` or gradient controls before expensive
  computation or MPI fanout begins.

* Expanded pre-release validation for the promoted estimator families with
  hostile argument tests, S3 extractor and prediction contract tests,
  installed/tarball proof scripts, MPI route-aware probes, and parity checks
  against the serial `np` implementations.

* Added an explicit proper-discrete-probability contract for
  `npconmode()`. Local-constant conditional-mode fits remain unchanged by
  default because their categorical probabilities are proper by construction;
  non-local-constant routes now default to projecting the fitted probabilities
  over the discrete response support onto the probability simplex before
  selecting and reporting the conditional mode. Binary outcomes are handled
  through the complement identity, and the optional `probabilities = TRUE`
  return component exposes the fitted probability matrix for inspection. The
  MPI-aware path preserves the same contract across session dispatch.

* Split restart-from-minimum controls into `powell.remin` and
  `nomad.remin`. Ordinary fixed-degree Powell-style searches retain
  `powell.remin = TRUE` by default, following the established Numerical
  Recipes restart convention. Local-polynomial NOMAD degree searches now
  expose `nomad.remin`, which optionally performs a second NOMAD pass from the
  best full bandwidth/degree candidate; simulation evidence supports
  `nomad.remin = FALSE` for routine defaults. For
  `search.engine = "nomad+powell"`, the Powell polish now uses
  `powell.remin = FALSE` by default unless explicitly supplied, avoiding an
  unhelpful hot start of the hot-start polish across session/attach/profile
  routes.

* Preserved deprecated legacy `remin` compatibility for `npregbw()` and
  `npreg()` while steering users to the new `powell.remin` and
  `nomad.remin` controls. This protects downstream packages that still pass
  `remin` through formula/front-end wrappers.

* Exposed the same `powell.remin` and `nomad.remin` controls on single-index
  and smooth-coefficient bandwidth searches so `npindexbw(..., nomad = TRUE)` and
  `npscoefbw(..., nomad = TRUE)` have the same documented MPI-aware NOMAD
  restart contract as the other LP-capable bandwidth selectors.

* Hardened OpenMPI runtime initialization on Debian-compatible systems by
  probing the current `libmpi.so.40` runtime SONAME before the generic
  `libmpi.so` fallback, while preserving existing older OpenMPI probes and
  failure behavior.

* Added the redesigned public plot-control interface with direct scalar
  controls such as `errors`, `band`, `alpha`, `bootstrap`, `B`, `behavior`,
  `renderer`, and `perspective`, plus validated `np_boot_control()`,
  `np_grid_control()`, and `np_render_control()` helpers for detailed
  bootstrap, grid, and rendering options. Historical `plot.errors.*` inputs
  remain accepted as compatibility arguments.

* Hardened S3 plot argument handling so unsupported or misspelled named
  arguments in `...` fail fast on the master before expensive plot computation
  or MPI fanout begins, while preserving ordinary base-graphics pass-through
  arguments such as labels, limits, colors, and line widths.

* Preserved documented `plot.data.overlay` compatibility under the redesigned
  plot argument validator: `plot.data.overlay = FALSE` remains an accepted
  harmless no-op on routes without observed-response overlays, while
  `plot.data.overlay = TRUE` still fails fast on unsupported plot families.

* Added MPI-aware object-fed plot runtime support across the main S3 plot
  families, extending the redesigned plot-data payload paths to regression,
  unconditional density/distribution, conditional density/distribution,
  single-index, partially linear, smooth-coefficient, and quantile-regression
  plots while preserving standalone `npRmpi` runtime behavior.

* Added `npqreg()` gradient support using the conditional-quantile
  delta-method relationship between the conditional distribution derivative
  and conditional density, with plot-data support for quantile gradients.

* Exposed higher-order continuous-derivative extraction for local-polynomial
  conditional estimators where the selected polynomial degree supports the
  requested derivative order. `npreg()`, `npcdens()`, and `npcdist()` now honor
  `gradient.order` more consistently across fitted, evaluated, predicted, and
  plotted objects, including vector orders over continuous predictors and
  tensor/additive/Bernstein local-polynomial bases. The MPI implementation
  dispatches the corresponding conditional hat-apply helper work across the
  active worker pool where applicable.

* Added asymptotic standard errors for `npqreg()` conditional quantiles and
  quantile gradients, and documented the implemented delta-method formulas
  and Nelsen-style quasi-inverse construction used by the conditional
  quantile solver.

* Repaired `npqreg()` conditional-quantile inversion so quantile levels,
  standard errors, gradients, and gradient standard errors are all derived
  from the same selected `npcdistbw()` conditional distribution estimator,
  including selected local-polynomial degree and basis metadata. This removes
  an inconsistency where the newly degree-aware quantile-gradient path could
  use a higher-order conditional distribution fit while the quantile level was
  still extracted by the legacy degree-unaware inversion path; the repaired
  route is used by the MPI-aware session/attach/profile paths without
  cross-package fallback.

* Repaired adaptive nearest-neighbor conditional density/distribution
  evaluation for local-polynomial fits so `npcdens()`, `npcdist()`, and
  downstream `npqreg()` quantiles, standard errors, gradients, and gradient
  standard errors honor the selected LP degree/basis metadata. The regression
  guard verifies that `regtype = "ll"` remains identical to `regtype = "lp",
  degree = 1` while higher-degree adaptive-NN LP fits are degree-sensitive,
  with `npRmpi` matching `np` numerically on the installed parity sentinel.

* Restored/validated MPI fanout coverage for touched plot-bootstrap routes,
  including conditional adaptive exact helpers, conditional gradients,
  proper conditional projection, partially linear recomposition, and public
  single-index fixed-gradient bootstrap plots; paired baseline/candidate plot
  performance smokes showed no material slowdown in the exercised public
  routes.

* Restored MPI fanout for fixed local-constant and fixed local-polynomial
  conditional density/distribution plot bootstraps in `npcdens()` and
  `npcdist()` objects.
  The repaired `plot(..., plot.errors.method = "bootstrap")` path now
  partitions `inid`, `fixed`, and `geom` bootstrap chunks across the active
  worker pool while preserving the existing bootstrap kernels, output ordering,
  and non-MPI local helper behavior; installed candidate traces now show worker
  dispatch where the previous route reported `comm_calls = 0`.

* Extended that `npcdens()`/`npcdist()` plot-bootstrap fanout to the
  `proper = TRUE` projection pass, so the bounded-density and monotone-CDF
  repair matrices are partitioned across workers after the bootstrap
  generation step. Fixed-count projection sentinels are bit-identical to the
  local projection helpers, including the master-only/vector route.

* Restored MPI fanout for conditional-gradient plot bootstraps by partitioning
  bootstrap replications across workers while preserving the existing local
  gradient helper for each chunk. Fixed-count sentinels are numerically
  identical to the local helper for conditional-gradient routes, and the same
  fanout wrapper is in place for the quantile-gradient helper where that route
  is exercised.

* Restored MPI fanout for partially linear plot bootstraps in `npplreg()`
  objects. The per-replication residual recomposition and weighted coefficient
  solves are partitioned across the active worker pool, and the component
  bootstrap regressions now also use rank-0 master-assist chunks instead of
  leaving the master as a coordinator while workers perform the heavy
  regression bootstrap work; fixed-count parity sentinels match the local
  helper exactly.

* Extended plot-bootstrap master-assist dispatch across the common bootstrap
  fanout helper and repaired smooth-coefficient local-polynomial bootstrap
  loops to use the same worker partitioning. Installed traces with three
  slaves now show active dispatch to every slave plus a rank-0 master chunk
  for regression, unconditional density/distribution, conditional
  density/distribution, partially linear, single-index, smooth-coefficient,
  and quantile-regression plot bootstraps when there are enough bootstrap
  chunks to keep all ranks busy.

* Repaired additional nonfixed plot-bootstrap routes that could still execute
  master-side bootstrap loops: exact generalized-nearest-neighbor
  unconditional density/distribution, exact single-index bootstrap, and frozen
  nonfixed conditional density/distribution bootstrap helpers. Installed
  targeted traces with two slaves now show every repaired route dispatching to
  all workers plus a rank-0 master-assist chunk.

* Repaired active single-worker plot-bootstrap dispatch so fixed-bandwidth
  bootstrap routes no longer collapse to master-local execution when an
  `npRmpi.init(nslaves = 1)` worker pool is present. This restores worker
  participation for fixed `npplreg()` plot bootstraps and preserves
  master-only behavior only for genuinely pool-free local execution.

* Streamlined fixed local-constant `npplreg()` plot bootstraps by fusing the
  component-regression and partially linear recomposition stages inside each
  rank-owned bootstrap chunk. The repaired route generates only local
  resampling counts on each rank, constructs component hat matrices under
  local plot-helper semantics to avoid nested autodispatch in
  session/attach/profile modes, and now shows comparable timings across all
  three MPI launch modes while dispatching work to every initialized worker
  plus a rank-0 master chunk.

* Streamlined fixed local-constant `npscoef()` plot bootstraps by routing the
  smooth-coefficient bootstrap through the reusable hat-matrix count
  resampling helper instead of the heavier moment-feature reconstruction path.
  Large bootstrap result bundles are now streamed back from worker ranks in
  task-sized pieces when their estimated serialized size is large, avoiding
  long-vector transport failures while preserving the existing static
  master-assist scheduler and numerical bootstrap semantics.

* Restored pure-discrete/all-categorical `npregbw()` least-squares
  cross-validation for fixed bandwidths by allowing the optimized regression
  CV cache to represent legitimate zero-continuous bandwidth storage. This
  repairs a regression from legacy behavior where all-categorical regression
  bandwidth selection could fail with an invalid raw objective; installed
  session, attach, and profile sentinels now return the same bandwidths and
  objective as `np`, with adjacent mixed continuous/categorical routes checked
  for unchanged numerical output.

* Reworked `npplregbw(..., nomad = TRUE)` so local-polynomial automatic degree
  search follows the natural partially linear decomposition: separate nuisance
  regressions for `E[y | z]` and each `E[x_j | z]`, each with its own selected
  degree and bandwidths, followed by the final partially linear solve. Fixed
  `regtype = "lp"` now also accepts child-indexed degree matrices/lists in the
  same order as the `plbandwidth` rows (`yzbw`, then the `x` children), while a
  vector remains the common-degree shorthand. The `npRmpi` implementation runs
  those child searches through the active MPI-aware `npregbw()` route rather
  than the older product-space scheduler.

* Added `predict.plregression(..., se.fit = TRUE)` support using the
  partially linear fitted-value linear operator and training-fit residuals to
  return asymptotic prediction standard errors for training and evaluation
  data, with numerical parity to `np` on the shared fixed-bandwidth sentinel.

* Reduced attach/session auto-dispatch payload overhead for formula calls that
  omit `data=` by routing large internally constructed model data through the
  existing prepublish broadcast path instead of embedding it inside every
  command payload; the small-data inline path and estimator semantics are
  unchanged.

* Hardened attach/session auto-dispatch argument materialization so
  bandwidth-type and kernel-control arguments are evaluated on the master and
  carried explicitly to worker ranks. This repairs session routes where
  caller-local variables such as looped `bwtype` values could be left as
  unevaluated symbols in the worker payload.

* Reduced attach/session auto-dispatch payload overhead for follow-on
  `npindex(bws=...)` and `npscoef(bws=...)` calls by reusing worker-resident
  `sibandwidth` and `scbandwidth` remote references when their stored calls are
  self-contained, avoiding an unnecessary rebroadcast of the bandwidth object.

* Reworked `npplregbw()` local-polynomial degree-search orchestration so each
  component regression uses the full active MPI communicator in sequence,
  matching the serial `np` algorithmic decomposition while avoiding the earlier
  rank-team scheduler. Installed validation preserved objective values,
  selected degree, coefficients, fitted lengths, and evaluation counts across
  session, attach, and profile routes for LC, LL, explicit LP degree 1, and
  NOMAD+Powell sentinels; large, practically flat bandwidth directions may
  show harmless optimizer drift when the objective and fitted quantities agree.

* Suppressed the spurious nested auto-dispatch warning that could appear during
  expected `npplreg` broadcast payloads in session and attach runs by making
  manual broadcast contexts explicitly disable recursive auto-dispatch while
  preserving the existing local MPI-aware component computations.

* Hardened attach-mode teardown by registering a master-side process-exit
  finalizer that performs the normal worker close handshake when an attach
  script reaches process exit with an open worker pool; explicit
  `npRmpi.quit(mode = "attach")` remains the preferred close path, and the
  existing no-op and broadcast close protocols are unchanged.

* Restored spawned-session MPI participation for fixed-bandwidth `npcdens`
  and `npcdist` fitting/evaluation by detecting the active worker pool on the
  session communicator instead of treating singleton world communicator state
  as a reason to force local execution; profile/manual-broadcast and attach
  numerical behavior is unchanged, while session `lc`, `ll`, and explicit
  `lp` degree-1 fixed-fit routes now reach the existing owner-block MPI
  implementation.

* Began modernizing the demo timing harness for cross-version regression
  checks by adding exact/fractional demo sample-size helpers, machine-readable
  `DEMO_RESULT` transcript lines, a parser that reads both new and legacy demo
  layouts, explicit session/attach/profile result directories, and a
  four-route core pilot covering regression `npreglcls`/`npregllls` plus
  conditional density/distribution `npcdensls`, `npcdensml`, and `npcdistls`
  under serial, session, attach, and profile/manual-broadcast execution.

* Replaced the split `npreg` demo scripts for local-constant/local-linear
  least-squares and AIC examples with a matrix-driven `npreg` family demo that
  covers `lc`, `ll`, explicit `lp` degree 1, AIC bandwidth selection, and
  NOMAD local-polynomial degree search across serial, session, attach, and
  profile/manual-broadcast routes.

* Replaced the split `npcdensls`/`npcdensml` demo scripts with a
  matrix-driven `npcdens` family demo that preserves the least-squares and
  maximum-likelihood bandwidth routes while adding `ll`, explicit `lp` degree
  1, and NOMAD local-polynomial degree-search smoke/sentinel rows across
  serial, session, attach, and profile/manual-broadcast routes.

* Replaced the `npcdistls` demo scripts with a matrix-driven `npcdist` family
  demo that preserves the least-squares route while adding `ll`, explicit
  `lp` degree 1, and NOMAD local-polynomial degree-search smoke/sentinel rows
  across serial, session, attach, and profile/manual-broadcast routes.

* Replaced the split Ichimura/Klein-Spady `npindex` demo scripts with a
  matrix-driven `npindex` family demo that preserves both model examples while
  adding `ll`, explicit `lp` degree 1, and NOMAD local-polynomial degree-search
  rows plus beta/bandwidth result sentinels across serial, session, attach,
  and profile/manual-broadcast routes.

* Converted the `npscoef` smooth-coefficient demo to the matrix-driven harness,
  preserving the original data generator while adding `ll`, explicit `lp`
  degree 1, and NOMAD local-polynomial degree-search smoke/sentinel rows across
  serial, session, attach, and profile/manual-broadcast routes.

* Converted the `npplreg` partially linear demo to the matrix-driven harness,
  preserving the original data generator while adding `ll`, explicit `lp`
  degree 1, and NOMAD local-polynomial degree-search smoke/sentinel rows plus
  flattened bandwidth/coefficient sentinels across serial, session, attach,
  and profile/manual-broadcast routes.

* Replaced the split `npudensls`/`npudensml` demos with one matrix-driven
  `npudens` demo covering least-squares and likelihood cross-validation rows,
  now exercising both bandwidth selection and `npudens()` construction across
  serial, session, attach, and profile/manual-broadcast routes.

* Replaced the `npudistcdf` demos with one matrix-driven `npudist` demo
  covering CDF cross-validation, now exercising both bandwidth selection and
  `npudist()` construction across serial, session, attach, and
  profile/manual-broadcast routes.

* Converted the statistical test demos (`npdeneqtest`, `npdeptest`,
  `npsdeptest`, `npsigtest`, `npsymtest`, and `npunitest`) to a shared
  matrix-driven runner with smoke/sentinel sample sizes, bootstrap counts, and
  standardized result sentinels across serial, session, attach, and
  profile/manual-broadcast routes.

* Converted auxiliary demos (`npcmstest`, `npconmode`, `npcopula`, `npqreg`,
  and `npregiv`) to a shared matrix-driven runner with deterministic simulated
  data, smoke/sentinel sizes, standardized result sentinels, and
  serial/session/attach/profile coverage.

* Reorganized demo run/report tooling under `demo/tools`, retained top-level
  compatibility shims for familiar commands, and retired tracked LaTeX timing
  artifacts in favor of CSV/dat output plus optional Quarto `.qmd`/HTML
  summaries.

* Routed the post-NOMAD Powell hot-start refinement in `npcdensbw()` through
  the same MPI-aware collective fixed-degree pattern used by adjacent
  conditional distribution routes, preserving objectives, degrees, and
  evaluation counts while reducing avoidable session/attach-mode refinement
  overhead.

* Reused the lean MPI-aware regression objective for Ichimura
  `npindexbw()` local-linear/local-polynomial fixed-degree searches, including
  the post-NOMAD Powell cleanup, preserving selected objectives, bandwidths,
  coefficients, degrees, and evaluation counts while restoring scaling in
  session, attach, and profile/manual-broadcast launches.

* Restored session-mode MPI participation for automatic `npindex(...,
  nomad=TRUE)` / `npindexbw(..., nomad=TRUE)` degree-search routes when
  multiple workers are active, so the bandwidth-search stage no longer runs
  master-only while preserving selected objectives, bandwidths, coefficients,
  degrees, evaluation counts, and fitted output in installed validation.

* Improved profile/manual-broadcast `npplregbw(..., nomad=TRUE)` scaling for
  larger local-polynomial degree-search problems by routing child regression
  objectives through the MPI-aware fixed-regression evaluator when profile
  ranks otherwise outnumber child objectives, while leaving session/attach
  autodispatch on the existing child-split route.

* Restored MPI-aware NOMAD objective evaluation for semiparametric
  `npscoefbw()` and `npindexbw()` profile/manual-broadcast routes by allowing
  their internal fixed-objective regression work to use active MPI ranks while
  preserving selected objectives, bandwidths, degrees, coefficients, and
  evaluation counts in paired validation runs.

* Reblocked conditional density and conditional distribution local-polynomial
  `cv.ls` block products to use BLAS matrix multiplication in the fixed
  bandwidth block routes, reducing repeated long inner-product work while
  preserving MPI rank ownership, profile/manual-broadcast aggregation, and
  numerical agreement with `np` up to floating-point summation order.

* Repaired explicit-grid `npcopula()` evaluation so large probability grids
  use the direct estimator route rather than an expanded-grid path with poor
  scaling. This preserves numerical results while avoiding severe runtime
  growth as the user increases the grid resolution.

* Hardened bandwidth/front-end argument hygiene so estimator-only options such
  as `proper` are not forwarded into bandwidth selectors that do not accept
  them, preventing false-positive "unused argument" failures while preserving
  the intended estimator behavior.

* Restored MPI-aware fixed-bandwidth `npcdens` and `npcdist` fitting,
  evaluation, and prediction in profile/manual-broadcast mode for conditional
  LC and LP routes, including standard errors, gradients, and gradient
  standard errors where requested; fitted/evaluation fields remain numerically
  identical to the prior implementation, with only harmless density
  log-likelihood summation-order differences.

* Allowed `npscoef` internal moment sums to use the MPI-aware `npksum()` route
  instead of forcing local execution, preserving adaptive-nearest-neighbor
  localization while removing avoidable duplicate work in fit/eval/predict
  paths.

* Collapsed the `npreg` `regtype="ll"` execution engine onto the canonical
  `regtype="lp", degree=1` local-polynomial path while preserving public `ll`
  metadata and fitted/evaluation output parity, aligning `npreg` with the
  other conditional estimator families.

* Restored MPI-aware fixed-bandwidth `npreg` fitting and evaluation for the
  continuous `lc`, `ll`, and `lp` routes, including gradients and standard
  errors where defined, so the fit stage again distributes owner rows across
  active MPI ranks while preserving numerical agreement with `np`.

* Opened the next development cycle after the 0.70-1 CRAN submission, with
  release-hardening follow-up tracked separately.

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
