Changes in version 2025.5.13

- correct first/last subtrain.borders (was defined using first/last validation data, now using all/train data).

Changes in version 2025.5.6

- add new container: STL priority_queue (heap), almost no difference with multiset.

Changes in version 2025.4.29

- update Rcpp code in interface.cpp to avoid access warnings: use .begin() instead of &vec[0] to get pointer to first element of vector.

Changes in version 2023.10.24

- laplace test 1:8 yields asymmetric split.

Changes in version 2023.8.31

- update un-exported function arg docs to avoid CRAN NOTE.

Changes in version 2022.7.21

- init max_zero_var=0 to avoid valgrind msg.

Changes in version 2022.7.19

- New log-linear cum_median function.
- New NEWS format to please CRAN.
- rm deprecated binary_function in PiecewiseFunction.h.

Changes in version 2022.7.13

- binseg: constant factor speed improvements, mostly by going back to
  storing params in class members rather than unordered_map.

Changes in version 2022.4.14

- Function re-naming.

- New QP solver for tree viz.

- Changes in version 2022.4.13

- New R function get_best_optimal implements dynamic programming for
  finding the tree with smallest number of splits for a given set of
  input sizes (N.data, min.segment.length,

- C++ depth_first method computes fast best case number of splits,
  optimal when computing full path, heuristic when segments < data.

Changes in version 2022.4.6

- complexity funs handle min segment length.

- operator< now correctly breaks ties: previously used segment size
  (end-start), now use max distance from start and end, to encourage
  equal splits and best case time complexity.

Changes in version 2022.4.4

- new l1 and laplace loss functions.

Changes in version 2022.3.30

- comparisons vignette.

- max_zero_var computed based on the max estimated variance of all
  single data points, which should be zero, but are sometimes small
  non-zero values (for example 1e-15 or 1e-13) due to numerical
  issues. mean_zero_var used in meanvar_norm loss function to
  determine if cost is finite. Segments with an infinite cost best
  split are not stored in the container for later splitting.

Changes in version 2022.3.29

- meanvar_norm distribution: generalize C++ code to more than one
  segment-specific parameter.

Changes in version 2022.3.24

- container.str can be list (slow) or multimap (fast).

Changes in version 2022.3.22

- warning and suggestion to use weights for runs of identical data.

- R code binseg(min.segment.length=3) etc uses min_segment_length
  parameter in C++ code.

Changes in version 2022.3.11

- new binseg function with distribution=poisson or mean_norm, weight.vec.

Changes in version 2022.1.24

- remove random_set_vec test.rev example which failed on M1.

Changes in version 2021.11.3

- binseg_normal_cv does model selection via most frequent number of
segments with minimum validation error (over several random splits).

Changes in version 2021.11.2

- break ties in Segment operator< by size (split larger segments first).

- binseg_normal gains args is.validation.vec, position.vec in order to
support efficient cross-validation. it now returns list with new
component subtrain.borders (predicted changepoint positions).

- get_splits* functions for comparing empirical to best/worst case.

Changes in version 2021.1.6

- More comments in binseg_normal.cpp to help potential GSOC students.

Changes in version 2020.10.7

- Comment binseg_normal.cpp to explain optimal_cost computation.

- Use C++ multiset with operator< instead of multimap/vector.

- Use cumsum C++ vector for constant time mean/cost computation for any
split.

- Store cost of segments before/after split, pass the cost values to
maybe_add to avoid having to recompute them.

- Computation works for only one data point.

Changes in version 2020.9.15

- remove unused C++ errors.

- test coef method.

Changes in version 2020.9.3

- Bugfix for negative means, docs.

- predict/plot methods, copy code from example.

Changes in version 2019.9.20

- Initial implementation.