2013-05-25  
    * create package

2013-08-14  
    * add set.seed(1) to chngpt.score.test so that the results are
    reproducible
    * rename chngpt.score.test to chngpt.test
    * MASS is used for generating reference distribution samples while mvrnorm
    is used in sim.sigmoid. In principle, should be able to use a single
    package, but since the simulation studies for the paper has already been
    run, just leave it as it is
    * let search.all.thresholds be true if n < 500

2015-09-01  
    * when glm warns, set the log likelihood to NA

2015-09-29  
    * implement more vcov
    * add e.effective.maxit to deal with non-convergence
    
2015-10-18  
    * when est.method==smoothapprox, effective chgnpt needs to be determined
    to stop infinite loops. It used to be defined in between two observed data
    values, but is not set to one observed data value

2015-11-19  
    * make.chngpt.var now takes b. as an argument, the results of smoothapprox
    estimation will change!

2016-01-24  
    * add testing for linear model

2017-05-13  
    * modify make.chngpt.var to fit smooth transition model
    * add sandwich variance estimator
    * add segmented2
    * change b to -b

2017-09-16  
    * this version contains some commented out code related to indices, which
    was used to compare with R implemention

2017-10-27  
    * a major cleanup of sim.chngpt
    * weighted estimation now works

2018-03-30  
    * change how chngpts are defined in chngpt.test
    * weighted estimation now works
    * chngptm used to use chngpt.test to initialize when doing smooth
    approximation. now chngptm uses chngptm to initialize in that situation.
    This way chngptm does not depend on chngpt.test anymore

2018-05-02  
    * Add support for cbind() on the lhs for the binomial family. Both grid
    and smoothapprox are supported.
    * Add support for Poisson family
    * Many thanks to Helen R. Sofaer for the questions resulting in the update

2018-06-02
    * Implement fastgrid for thinned thresholds. 
    * Deprecate useC for grid search
    * Revamp vignette
    * Add approximate p value when var.method is bootstrap
    * Change summary chngptm output to remove empirical percentile of the
    estimated threshold

2018-07-02
    * Add chngptm.xy (x,y,...) to provide an alternative way of fitting
    chngptm without data frame and formula

2018-07-16
    * Replace %+% by %.% throughout to work with the udpated kyotil package

2018-07-25
    * Change robust testing implementation
    * RDR is changed to R.h %*% D.h when not robust. This requires a change of
    values in the unit testing function

2018-08-07
    * Add upper hinge model implementation
    * Remove smooth as a var.type, comment out var.est.smooth and remove
    smooth from unit testing
    * Implement superfastgrid
    * Merge fastgrid_search and boot_fastgrid_search into one C function
    * Implement grid search in C for upperhinge2

2018-10-08
    * A naive implementation of the test inversion CI is added when search method is grid

2019-01-02  
    * Michal Jurask reported a bug when the glm has a NA coef. Fix at line
    897.

2019-03-08
    * Bug fix, delete to delete[]

2019-03-12
    * Bug fix, add   X.col(p-2) = (x-e)%(x>e); in fastgrid_binomial.cpp

2019-04
    * Fix vcov implementation when var.type is bootstrap
    * Add multicore parallel support for bootstrap. ncpus controls the number of cores. Thanks to JDS for the question resulting in the update

2019-04-21
    * Discovered that adding support for thinned thresholds back in 2018-10-2
    (compared to 2018-10-1) slows things down by two fold. Fixed it.

2019-06-17
    * This version has an unsuccesful attempt to add upper hinge quadratic
    model   

2019-06-17
    * Revert back to before 6.17

2019-06-30
    * Revert back to 6.17 and work from there
    * Change the implementation of upperhingequad in chngptm from based on formula.2 to type

2019-07-23
    * Bug fix in SEXP fastgrid2quad_gaussian so that bootstrap for upperhingequad works too

2019-08-16
    * Allow subsampling bootstrap m-out-of-n for discontinuous threshold effects in chngptm(). Thanks to Jeremy Nguyen for the question resulting in the update

2019-08-17
    * Allow more than one variables to be interacting with the threshold variable. chngptm updated, unit testing code added. A quick test for consistency performed (test_multi_itxn.R). Thanks to Jeremy Nguyen for the question resulting in the update

2019-08-26
    * chngpt.test throws an exception. Modify chngpt.test() to check if the min and max are part of the candidate change points and if yes, remove them. Thanks to Eric Scott for the question resulting in the update
    * Add CXX_STD = CXX11 to Makevars and Makevars.win. Replace ptr_fun by cref in smath.h. Thanks Prof Brian Ripley
    * Change ncpus default to 1 to avoid an error on debian

2019-08-28
    * Remove fastgrid_binomial_wrapper.cpp and fastgrid_binomial.cpp for now. They lead to check errors on CRAN. Namespace and description file also changed accordingly
    * Vignette updated

2019-09-02
    * Replace bind1st and bind2nd by bind in matrix.h and smath.h in the scythe library. Thanks Prof Brian Ripley

2019-09-05
    * Add estimation and CI for hingequad model
    * Vignette updated
    * Add LIDAR data (lidar)

2019-09-15
    * add argument checking for weights
    * add support for offset to chngptm and plot.chngptm
    * Thanks to Ryan Terrill for the questions resulting in the updates

2019-09-19
    * add support for offset in fastgrid2 
    * implement double.hinge

2019-10-04
    * implement segmented quadratic models: M1, M2, M3a, and M3b in chngptm
    
2019-10-15
    * change how the step effect is implemented in make.chngpt.var(), from I(x>=e) to I(x>e) to be consistent with Fong et al. (2017)
    * implement fastgrid2 for step

2019-10-17
    * fix a bug in chngptm relate to hingequad.to.upperhingequad, which causes the lower and upper CI bounds for some models to be reversed

2019-10-29
    * implement upper hinge and hinge cubic model

2019-11-09
    * implement segmented cubic models

2019-11-13
    * implement x4hinge and x4upperhinge models to fit LIDAR example, but grid search only

2019-11-16
    * rename the higher order models

2019-11-18
    * remove isupperhinge parameter and related implementations from all C functions. all c functions only implement upperhinge and related models. All hinge and related models are implemented through transformation

2019-11-21
    * add support for subsampling, aka m out of n bootstrap, in fastgrid2step_gaussian

2019-11-22
    * change grid.search.max default in chgnptm from 5e3 to Inf
    * remove fastgrid and gridC from est.method options
    * add support for weight in fastgrid2
    * replace invpd with chol_solve in the C functions, the former gives weird results sometimes. See M20.cc for an example. 
    * refactor C code

2019-11-26
    * fix a memory issue from inverting a 0-column matrix when the design matrix has 0 columns

2019-11-30
    * Add a check in get.chngpts() so that we do not have the min to be the first change point
    * Change direct assignment to indirect copy in _preprocess (fastgrid_helper.cc)

2019-12-4
    * Add a new argument, min.max.not.allowed, in get.chngpts(), default to FALSE, but in chngpt.test, set it to TRUE
    * revamp double.hinge so that there is no need to supply mid.x

2019-12-6
    * Add summary function for double.hinge to faciliate hypothesis testing

2019-12-7
    * Add predictx for confidence bands

2019-12-13
    * Change paramterization of M22c and M33c. Remove x.mi.e
    * Change M10 back to upperhinge

2019-12-31
    * Add x.gt.e[is.nan(x.gt.e)]=0 in sim.chngpt

2020-01-02
    * Fix name.conversion for M22c and M33c
    * Add nutrition dataset

2020-01-09
    * Implement M21c and M12c
    * Implement plot.double.hinge

2020-01-20
    * Add intercept to predictions in threshold.func()
    * Add boot.type argument to summary.chngptm
    * Make changes to chngptm so that it will work when bootstrap logistic regression with factor predictors of many levels. 
      The problem was that bootstrap datasets may not have all the levels

2020-02-11
    * Modify name.conversion.2() to change intercept to (Intercept) in coef.0
    * Modify convert.coef to add M21c
    * Fix a bug that lead to errors in basic bootstrap intervals when hinge.to.upperhinge is TRUE

2020-02-17
    * Add heteroscedastic argument to sim.chngpt

2020-02-20
    * Add unif argument to sim.chngpt

2020-02-22
    * Modify convert.coef() to include adjustment of intercept
    * Modify plot.chngptm() so that it works properly for step model
    * Add * next to p value in summary.chngptm print out to indicate that it is not a true p value

2020-04-27
    * Modify chngptm() and fastgrid2.cc to include adjustment of intercept

2020-05-13
    * Update vignette

2020-05-21
    * Remove std:terminate at request of BDR

2020-05-24
    * Allow random intercepts

2020-06-05
    * For threshold lmer models, select threshold based on logLik
    * Allow individual lines to be plotted based on threshold lmer model fit

2020-06-11
    * Add logistic.slope to sim.chngpt

2020-06-13
    * Change to if(b.transition==Inf) transition[is.nan(transition)]=1 to see if it makes any difference for convergence rate

2020-06-14
    * Change back to if(b.transition==Inf) transition[is.nan(transition)]=0

2020-06-24
    * Fix implementation for stratified model
    * Implement M111, three phase segmented model
    * Add sim.twophase.ran.inte; add unit testing code for random intercept threshold models

2020-06-25
    * Add plot functionality for M111
    * Fix ub.quantile and lb.quantile issue for M12c
    * Add M111 to vignette

2020-06-26
    * Fix plot.chngpt for three-phase models 
    * Change default bootstrap CI type from symm to perc in summary.chngpt
    
2020-07-01
    * Add logLik.chngptm
    * Add examples of lrtest and lincomb to chngptm man and to vignette
    * Add random intercept model to vignette
    * Improve vignette

2020-08-06
    * M111_search: Add a hack to get around openblas problem for collinear matrix inversion 

2020-08-10
    * M111_search: Use a different implementation of matrix inversion that does not depend on blas

2020-08-10
    * M111_search: Use an alternative way to compute crit that is more numerically stable when highly collinear
    * M111_search: bootstrap may have duplicate threshold candidates, which could cause problems. this is now taken care of
    * M111_search: Removing the hack of skipping if crit 20 percent larger than the previous since it does not work for small datasets
    * fixed a bug related to REML

2020-08-28
    * Add extractAIC, AIC

2020-08-29
    * Make examples run faster by reducing ci.bootstrap.size

2020-09-16
    * M111_search: add fabs to the condition for duplicate thresholds, modify the check for duplicated thresholds

2020-09-17
    * add sieve bootstrap 

2020-09-28
    * add awb bootstrap 

2020-10-6
    * fix getFixedEf.chngptm
    * improve summary.chngptm

2020-10-12
    * fix a bug related to sieveBoot in fastgrid2.cc

2020-10-19
    * fix summary.chngptm to get show.slope.post.threshold to work again

2020-10-25
    * fix chngptm to replace logLik with deviance for quasipoisson fits

2020-12-17
    * fix documentation

2020-2-4
    * add y.adj=NULL, auto.adj.y=FALSE to plot.chngptm so that the fitted lines can be adjusted to go through the data points

2020-2-7
    * add transform to plot.chngpt

2020-2-9
    * add boot.ci.type to double.hinge
    * update kyotil dependency with version number

2020-3-3
    * update chngptm to exit more gracefully when fastgrid fails due to singularity

2020-3-16
    * fix chngptm so that coef for M12 is not messed by due to hinge.to.upperhinge (line 666)

2020-3-17
    * change ub.quantile/lb.quantile from 90/10 to 95/5 percentile in chngptm

2020-3-30
    * fix a typo in threshold.func related to step model

2020-4-7
    * Add M111 to threshold.func()
    * Support parallel processing in fastgrid

2020-4-11
    * Switch to QR decomposition for solving least squares to have more numerial stability
    * In particular, B is no longer computed as  X (X**TX)^-1/2 , but as Q_1

2022-3-15
    * Address warnings from debian-gcc

2022-4-6
    * Takes care of blas issues related to FCONE

