######################################################################
#  News: to package distr 
######################################################################

(first two numbers of package versions do not necessarily reflect 
 package-individual development, but rather are chosen for the 
 distrXXX family as a whole in order to ease updating "depends" 
 information)
 
##############
v 2.9.3
##############
bug fixes
+ detected by Christoph Dalitz <christoph.dalitz@hs-niederrhein.de>
  when multiplying DiscreteDistributions, the positive and negative parts of 
  which are Dirac Distributions, .finSupport was not returned of length 2 
  (as needed), 
+ fixed a glitch in "+"("DiscreteDistribution","DiscreteDistribution") as 
  spotted by christoph.dalitz@hs-niederrhein.de
+ fixed some documentation glitches in internal .Rd files as noted in a mail
  by K. Hornik, Dec, 15, 2023, with some helpful hints by Michael Lawrence
  in a mail Dec, 19, 2023

under the hood:
+ in changes in R-Core in the methods package, internal calls to new()
  were prepended by a NAMESPACE qualifier methods:: in Dec 2023;
  we had to accomodate for this in our initialize methods; for details
  see ll.64-100 in code file initialize.R


##############
v 2.9.2
##############
under the hood:
+ included pkg RobAStBase into "Enhances" in the DESCRIPTION file
+ moved some code in the help to RtoDPQ.d relying on the RNG into IGNORE_RDIFF 
+ transformed CITATION file to new format, i.e., bibentry() instead of citEntry(),
        c(as.person( .... ), as.person( .... ), ...), instead of 
		as.personList(....) 

##############
v 2.9
##############

user-visible CHANGES:
+ replaced obsolete URLs to JSS papers by respective DOIs
  
bug fixes
+ fixed a glitch in catching argument names in bAcDcLcDistribution.R 
  detected by Elio Campitelli <elio.campitelli@cima.fcen.uba.ar>
+ fixed some error in distributional arithmetics brought up by Andrew Robinson <apro@unimelb.edu.au>
    to produce meaningful error messages we had code that tried to deparse operands in operations
	with restricted definition domains like "/", "^"; it turned our that our idea to catch errors
	in this deparsing within a try()-catch did not work any longer when called from within a function; 
	as way out, we now have code which no longer needs the try()-catch and instead climbs up the 
	parsing tree and searches for the first occurrence of "/" resp. "^" and deparses this
	... in the end this was more complicated than expected, as the parsing tree could give
	paste()-results of length > 1... (only popped up in a reverse dependency check through 
	package distrEllipse)

under the hood:
+ triggered by an email by Santhosh V <Santhosh.V@se.com>, we added a patch to be more careful when producing
  slot q for compound and mixing distributions
+ detected by Vlada Milchevskaya vmilchev@uni-koeln.de:
  CompoundDistribution(): special treatment of case that NumbOfSummandsDistr is a Dirac distribution
  (and detect that for prob in {0,1} Binom(size, prob) is in fact a Dirac distribution)
+ fixed some broken URLs and changed URLs from http to https where possible
  changed rstudio.com to posit.co
+ triggered by a mail by B. Ripley, for more significant Rdiff's, we delegated some blocks of
  examples to ## IGNORE_RDIFF_BEGIN <code..> ## IGNORE_RDIFF_END

##############
v 2.8.1
##############

under the hood:
+ triggered by new NOTES uncovered by R CMD check, we deleted duplicate entries for items f and supp
  in internals.Rd, and cross references for packages distrMod and RobAStBase, which need not be available. 
+ fixed URL references to nabble.com which are no longer available

##############
v 2.8
##############

user-visible CHANGES:
+ DESCRIPTION tag SVNRevision changed to VCS/SVNRevision
+ plot methods now return an S3 object of class \code{c("plotInfo","DiagnInfo")}, i.e., a list containing the 
  information needed to produce the respective plot, which at a later stage could be used by different graphic engines (like, e.g. 
  \code{ggplot}) to produce the plot in a different framework. A more detailed description will follow in a subsequent version.
+ accessor & replacer for prob, GeomParameter are finally Defunct
+ liesInSupport gains an argument checkFin; in case of DiscreteDistributions, it tries to use 
  additional information from internal slot .finSupport, and e.g. if there is a lattice.  
+ liesInSupport now also is available for UnivarLebDecDistribution, LatticeDistribution, and UnivarMixingDistribution
+ clarified that the Gumbel distribution has been moved to RobExtremes in vignette newDistributions-knitr.Rnw
+ modified devNew(): in interactive mode it now asks the user to shut some devices first when 
  length(dev.list())>20; and in non-interactive mode, when length(dev.list())>20, it shuts 
  the first 15 open devices first; this is documented now in ?devNew
+ included pkgs distrMod and ROptEst into suggested pkgs in DESCRIPTION 
under the hood:
+ DiscreteDistribution(s) gain a logical slot .finSupport to better control whether the 
  "true" support (not the possibly truncated one in slot support) is infinite (more precisely
  it is of length 2 -- first coordinate if the lower bound of the support is finite, second if 
  the upper bound is finite)
+ changed definition of q(DExp(..)) in initialize method in AllInitialize.R 
  from ifelse expressions to index operations  to avoid warnings 
+ in distr::solve only try base::solve if arg "a" has no dim or if it has then 
  if nrow(a)==nrow(b); otherwise directly use MASS::ginv
+ introduced particular liesInSupport methods for all specific abs.cont distributions in distr
+ in reaction to mail by B.Ripley Feb 20, 19/ explanation by T. Kalibera, that our code to 
  look into system.call() stack was buggy and failed in staged installation, we revised code to .modifyqgaps completely;
  we now compute p(obj)(gaps) and check if any argument p of q(obj) falls within the gap range and then shift it to either 
  the left or right endpoint of the gap acc. to args lower.tail and leftright. To avoid redoing this whenever slot gaps 
  is changed, we store the unmodified q(obj) function in an internal variable ..q0fun which can also be used 
  (if existant in the env() of q(obj)) to revert the gaps modification, and any gaps modification, instead of starting 
  from q(obj) starts with ..q0fun (if this exists); otherwise, i.e., if ..q0fun does not exist, it uses q(obj) and 
  afterwords stores the old q(obj) as ..q0fun ... 
+ .modifyqgaps can now digest args pfun and qfun with or without arguments log.p and lower.tail

  
bug fixes
+ fixed a (newly introduced) bug in exp() for DiscreteDistribution -- forgot to return obj ...
+ Bernhard discovered a bug in devNew() -- it opened new devices even if option("newDevice"==FALSE)  
+ detected that the initialize method of Weibull lacked a .withArith argument to capture the scale structure
+ unknown variable p in S4method to Minimum(absCont,absCont)


##############
v 2.7
##############

user-visible CHANGES:
+ new Methods p.r and q.l, synonyma for p and q (useful for use in RStudio and 
  in Jupyter IRKernel)
+ more precise formulation of how to use calls to q() for RStudio
  and Jupyter IRKernel (i.e., use q.l)
+ switch from SweaveListingUtils to knitr in vignettes
+ replaced http://CRAN... by https://CRAN... (also in CITATION and similar files) 
+ updated address (Oldenburg) in several vignettes 
+ minor fix in doc to Arcsine distribution

under the hood:
+ wherever possible also use q.l internally instead of q to 
  provide functionality in IRKernel
+ registered native code 

bug fixes
+ fixed a bug in plot (q) for LebDec-Distributions (verticals were not plotted correctly)
+ panel selection mechanism had a bug for LebDec-Distributions 
+ fixed axis annotation: if xlab="" or ylab="" the respective lab are "" for all panels
+ in a loop the names of slots acWeight, discreteWeight will grow; 
  fix this by setting the prior names to NULL
+ the gaps matrix could have zero rows 
+ fixed an issue with <distr>/<distr> or <number>/<distr> spotted by JJ (JJ APONTE VARON)
+ fixed usage issue with sqrt 
+ fixed http(s)-warning
+ fixed [[]] issue in flat.R 
+ bug fix in Compound distribution bug detected by Wolfgang Kreitmeier <wkreitmeier@gmx.de> 29.07.2016
  
##############
v 2.6.2
##############
+ fixed internals as triggered by mail "CRAN package distr" 
  by Kurt Hornik from Apr 07 2017; most importantly, we 
  registered native code and took out some usage example of sqrt(). 

##############
v 2.6
##############

user-visible CHANGES:
+ title changed to title style / capitalization
+ added reference to JSS paper in IllustCLT
+ updated references in vignette 'newDistributions'
+ added generating function "EmpiricalDistribution" which is a simple
  wrapper to function "DiscreteDistribution"
+ arguments panel.first, panel.last for plot-methods can now be lists
+ qqplot gains pattern substitution like plot in titles and x/y axis lables
+ pattern substitution can now be switched on and off in all plot 
  functions according to argument withSubst
+ new methods q.l and p.r as synonyma for slot accessors q and p --
  the former one is useful in particular when using RStudio, as they
  catch calls to q() [quitting an R session] and treat them separately
  which renders calls to our method q() (with respective signature,
  i.e., with a distribution as [first] argument) inaccessible from 
  the console... so far only a call to distr::q was helping...
  
  
under the hood:

-qqplot: 
 + (already there for a while) gains argument 'debug' to be able to
   trace where computation of confidence bounds fails; this 'debug'
   argument has now been enhanced in the sense that now more detailed
   information about which helper function was the culprit and where 
   (uniroot/optimize) this happens
 + now returns an object of S3-classes "qqplotInfo","DiagnInfo"
   to be able to recover all information used to produce the plot
   for later use in enhanced graphics (e.g. with ggplot)   
-qqbounds:
 + the respective helper functions .BinomCI.nosym, .BinomCI,
   .q2kolmogorov capsulate their calls to uniroot / optimize in 
   individual try-catches (instead of / on top of the one in 
   qqbounds itself) so that in case of several evaluations (e.g. in
   pointwise CIs) at least a subset of valid points is produced.
   In addition the search interval is now more flexible: it is bound
   away from 0 below and from the upper bound from above, and this
   bound moves to the respective lower/upper bounds in up to 20 trials.
   Also, the search interval for .q2kolmogorov if argument 'exact' is
   TRUE (i.e., if pKolmogorov2x is called) has been refined. This 
   should make the simultaneous intervals more stable.
 + re-included faster right-tail approximation in C-code K(int n, double d)  
   included from R-Core (was commented out there) [ks.c in folder src in
   tar-ball, ll 153-155]
-plot: 
 + fixed some issues with plotting of distributions: xlim, ylim were not 
   correctly passed on, same for col => now use dots.lowlevel ... 
-helper function .isReplicated gains an optional argument tol
   
- bug fixes:
  + fixed a bug in plot (q) for LebDec-Distributions (verticals were not plotted correctly)
  + panel selection mechanism had a bug for LebDec-Distributions 
  + fixed axis annotation: if xlab="" or ylab="" the respective lab are "" for all panels
  
##############
v 2.5.3
##############

user-visible CHANGES:
+ CITATION file updated after JSS publication

under the hood:
+ tests: long-running tests with large pre-calculated results successfully implemented
+ enhanced utility function .fillList by an automatic cast to list if the argument 
  not yet is of class list.
+ some minor changes in qqplot 

bug fixes:
+ bug in LatticeDistribution found by Mikhail.Spivakov@babraham.ac.uk 
+ found a missing drop=FALSE in .mergegaps2
+ fixed an issue with casting AffLinDiscreteDistributions to LatticeDistributions 
 (discovered by Kostas Oikonomou, ko@research.att.com )

 ##############
v 2.5
##############

user-visible CHANGES:

GENERAL ENHANCEMENTS:
+ cleaned DESCRIPTION and NAMESPACE file as to Imports/Depends

under the hood:
+ added .Rbuildignore
+ exported some routines which had been internal so far to
  avoid calls by :::
+ in order to avoid calls to non-exported C-Code from pkg stats
  (for Kolmogorov-distribution) we integrated R-Core's C-code from  
            /src/library/stats/src/ks.c rev60573
   (with small changes to make it self-contained) to src folder of this pkg;
    in addition, we now use the shakier .C - interface again...
	in v 2.5.1 reverted the changes in /src/library/stats/src/ks.c:
	including R.h etc is easier than thought...
	
BUGFIXES:
+ fixed .makedotsPt -issue discovered by Gerald --> thx
+ moved generics to "distribution" and "samplesize" to pkg distr to avoid 
   conflict between pkgs distrMod and distrSim
   v 2.5.1: same with "samplesize<-"  to avoid conflict between pkgs 
   distrSim and RobAStBase

##############
v 2.4
##############

user-visible CHANGES:


GENERAL ENHANCEMENTS:

LatticeDistribution:::
+ revised initialize and convolution methods, and generating function
-> new routine to determine the smallest common grid for convolution
+ Taking up proposal by Baoyue Li, b.li@erasmusmc.nl,  
   plot methods for distribution objects gain functionality to modify xlab and ylab


under the hood:
+ introduce .Rbuildignore files 
+ require no longer called in .onAttach
+ created folder vignettes and moved content of inst/doc/ to it
+ removed lazyload tag in DESCRIPTION
+ updated affiliation info in newDistributions.Rnw
+ deleted inst/doc folder
+ added DESCRIPTION tag "ByteCompile" to all our packages
+ updating maintainer email address and URL.
+ added argument no.readonly = TRUE to assignments of form opar <- par()
+ unified dots-manipulations
+ put some examples in "\dontrun" to reduce check time on CRAN
+ introduced new option warn.makeDNew to suppress annoying warnings when dealing with GEVD
+ deleted no longer needed chm folders


BUGFIXES:

+ fixed an error in show method for UnivarLebDecDistribution: 
  match.call() threw an error
+ fixed problems with .makeDNew - as .makeDNew is not exported
+ error in definition of Beta() --- d slot was wrong
+ corrected typo (inifinite...)
+ typo in Beta-class.Rd (only in TeX mode) discovered by Thomas Kirschenmann, thk3421@gmail.com
+ fixed some issue with X^a, X distribution, a a number ...
+ tried to fix gaps issue as mentioned by Dirk Surmann, surmann@statistik.uni-dortmund.de
+ corrected a bug noticed by frank1828@gmail.com
+ fixed a bug within internals-qqplot : withConf.sim, withConf.pw had not been removed from call with 
  .deleteItemsMCL; 
+ fixed request by B.Ripley as to installed.packages in branch 2.4
+ fixed gaps issue with .multm
+ fixed issue with gaps (in case length(gaps)==0)
  
  and: BDR has changed calls to .C in 2.16.0 to calls to .Call; we used this in qqbounds, 
  respectively in .q2kolmogorov; now have branching functions .pk2 and .pks2 between ante 2.16. and from 2.16 on


##############
v 2.3
##############

user-visible CHANGES:

- parameter size in NegbinomDistribution can now be real-valued
- introduced igamma, the inverse of digamma and corresponding transformations;
  distr: drastically reduced memory needed by smaller grid for igamma 
+ distr: implemented Nataliya's quantile trick to avoid simulated grid points

GENERAL ENHANCEMENTS:

+ [qqplot] 
    - had forgot to delete some legend arguments from call mcl ...
    - gains arguments legend.pref and legend.postf to pre/ap-pend text before/after legend text
    - CIs in qqplot may now comprise +-Inf values  
    - gains argument legend.alpha to be able to distinguish nominal and actual confidence level

under the hood:
+ DESCRIPTION files and package-help files gain a tag 
  SVNRevision to be filled by get[All]RevNr.R from utils in distr

BUGFIXES:

+ old version of AllClasses.R for package "distr" was fetched 
  from R-Forge - warning after merging branch 2.2 into trunk

+ got strange unreproducible error reports in the example to 
  simplifyD; set seed now to avoid this.

+ (hopefully) fixed http://n4.nabble.com/R-devel-f909078.html

+ fixed an error with qqplot in distr: mfColRow did not work as it should
  ... now can be used in multipanel plots
+ fixed minor error in internals-qqplot.R 

+ for restoring old par() values, not all attributes may be set; 
  hence deleted them from stored value in plot functions by something like
  opar$cin <- opar$cra <- opar$csi <- opar$cxy <-  opar$din <- NULL

+ Typos in plot functions... 

+ implemented Matthias' proposals, ie
  (1)
  [old]
            newd <- (abs(newd) >= .Machine$double.eps)*newd
  [new]
            newd <- (newd >= .Machine$double.eps)*newd

  (2)
  [old]
            rsum.u <- min( sum( rev(cumsum(rev(newd))) <= ep/2)+1, length(supp1))
  [new]
            rsum.u <- min( sum( !(cumsum(rev(newd)) <= ep/2))+1, length(supp1))


+ a renaming schedule : enforcing ending .R in convpow.R

+ fixed typo in corrected version of Convpow.R

+ tentative fix for Uwe Ligges' bug report obsevered in 
   http://cran.r-project.org/bin/windows/contrib/2.12/check/distr-check.log  15-06-2010


+ unnecessary Rplots.pdf deleted from inst folders of 
  distr and distrMod (are created anyway during vignette build)

+ changed mail address:
  triggered by mail by Sven Sewitz sas69@cam.ac.uk, replaced all dead links 
  to distr.pdf in www files by url to vignette of distrDoc on CRAN;
  also replaced uni-bayreuth.de mail address by itwm.fraunhofer.de one

----------------
Changes after changes in R , R-forge
----------------

+ cleanup issues:

   -Package: distr Version: 2.2 Flavor: r-devel-linux-ix86
    Check: package vignettes ... WARNING
    *** Weave Errors ***
    File /home/hornik/tmp/R.check/r-devel/Work/PKGS/distr.Rcheck/inst/doc/newDistributions.Rnw :
    chunk 20 (label=cleanup) 
    Error : package ?SweaveListingUtils? is required by ?distr? so will not be detached


  => removed tag in distr.Rnw in distrDoc
     <<cleanup, echo=FALSE>>=
       unloadNamespace("SweaveListingUtils")
     @
     similarly in newDistributions.Rnw 

  => small changes in SweaveListingUtils in order to pass R CMD check again...



  
##############
v 2.2
##############

user-visible CHANGES:

+ moved Distribution symmetry classes and corresponding methods/functions from distrMod to distr 
  * introduced new slot "Symmetry" (of Class "DistributionSymmetry") in class Distribution 
  * adapted all algorithms in distr (arithmetics; generators) to take care about this new slot


+ (sort of) version management
  * enhanced conv2NewVersion --- did not work before as intended in cases where
    there is a particular initialized method with less arguments...
  * correspondingly .lowerExact, .logExact Symmetry methods now are exported 
  * .lowerExact, .logExact methods now issue a warning before coercing to new version and 
    return corresponding slot of converted object
  * corrected some small bug in demo ConvolutionNormalDistr.R
  * method for UnivarMixingDistribution 

+ enhanced abs() 
  * for ContDistribution / DiscreteDistribution
  * for ContDistribution now forces argument x --- caused errors in mad() for instance

+ in distr generating functions [Univar]DistrList() gain Dlist argument

+ plotting:
  * new diagnostic function qqplot to check the compatibility of two distributions
    + special method for first argument "UnivariateDistribution" (to be checked
      for compatibility) and for second argument of class "UnivariateDistribution"
      (H_0 distribution)
    + comes with corresponding (pointwise/simultaneous) confidence intervals


GENERAL ENHANCEMENTS:

+ added tests/Examples folder with file distr-Ex.Rout.save to have
  some automatic testing
+ added field "Encoding: latin1" to all DESCRIPTION files in order to avoid problems 
  with e.g. Windows locale when svn replaces $LastChangedDate
+ added TOBEDONE (sic!) files for each package (by accident also in trunc; these are empty so far)
+ vignette: 
  * included svn-multi style files to /inst/doc folders for upload on CRAN

BUGFIXES:

+ fixed an inconsistency of Truncate for DiscreteDistributions; to better match Huberize and Min/Max
  Truncation should be done for m<=object<=M instead of m<object<=M --- also the reason why 
  demo censoredPois of distrMod threw errors.
+ changed initialize methods for AbscontDistribution and DiscreteDistribution in distr;
+ RtoDPQ.LC now correctly sets .withArith, .withSim slots in discretePart and .logExact, 
  .lowerExact in both discretePart and acPart
+ fixed a minor error in manual to plot-methods
+ fixed issue in .presubs after change of for() etc semantics
+ fixed buglet in .qmixfun
+ internal helper function .trunc.low wrongly used p.l and q.r ...

##############
v 2.1
##############

* DISTRIBUTIONS
->DISCRETE DISTRIBUTIONS
   --collapsing discrete distributions:
    +getdistrOption(".DistrCollapse.Unique.Warn")
    +implemented proposal by jacob van etten
     (collapsing support)
   --enhance accuracy
     + yet another improvement of .multm (now sets density for discrete distributions 
       for non-support arguments actively to 0)
     + We are a bit more careful about hitting support points in .multm for 
       DiscreteDistribution (i.e., for D * e2, e2 numeric, D DiscreteDistribution)
->CONTINUOUS DISTRIBUTIONS
  --gaps/support :
    +gaps matrix could falsely have 0 rows (instead of being set to NULL)
    +class UnivarMixingDistribution gains overall slots gaps support
    +added corresponding accessors
    +correspondingly, for UnivarLebDecDistribution as daughter class,
     accessors gaps(), support() refer to "overall" slots, not to slots of acPart, discretePart
    +deleted special support, gaps method for UnivarLebDecDistribution;
     now inherits from UnivarMixingDistribution
    +new utility function .consolidategaps to "merge" adjacent gaps
    +setgaps method for UnivarMixingDistribution
    +correspondingly,
     * method "*", c("AffLinUnivarLebDecDistribution","numeric"),
     * method "+", c("AffLinUnivarLebDecDistribution","numeric"),
     * method "*", c("UnivarLebDecDistribution","numeric"),
     * method "+", c("UnivarLebDecDistribution","numeric"),
     * generating function "UnivarLebDecDistribtion"
       had to be modified
    +utility 'mergegaps' catches situation where support has length 0
    +abs - and Truncate - methods for AbscontDistribution use '.consolidategaps'
->COMPOUND DISTRIBUTIONS
  + Compound Distributions are now implemented;
    see ?CompoundDistribution, class?CompoundDistribution
->UNIVARIATE MIXING DISTRIBUTIONS
  + fixed some errors / made some enhancements acc. to
    mail by Krunoslav Sever <sever@hsuhh.de>

* ENHANCED ACCURACY BY LOG SCALE
+ enhanced accuracy for Truncation with Peter Dalgaard's trick
+ passed over to log-scale for getUp, getLow (again to enhance accuracy
  for distributions with unbounded support)
+ introduced new slots .lowerExact and .logExact for objects of class
  "Distribution" (or inheriting) to control whether the argument parts
   log[.p], lower.tail are implemented carefully in order to preserve
   accuracy.

* ARITHMETICS
-- enhanced "+" method
 +for DiscreteDistribution,DiscreteDistribution ---
  catches addition with Dirac-Distribution
 +  we enforce to use FFT-based algorithm for LatticeDistributions
    if the supports of both summands may be arranged on a common lattice
    whenever the length of convolutional grid (= unique(sort(outer(support1, support2, "+"))) )
    is smaller than the length of the product grid ( = length(support1) * length(support2) )
     --- covers in particular m1*Binom(p,size) + m2*Binom(p',size) when m1, m2 are naturals > 1 ...
-- convpow:
  + some minor enhancements in convpow and "+", "LatticeDistribution","LatticeDistribution"
    and correction of a buglet there (e.g., lattice width oould get too small)
  +method for AcDcLcDistribution gains argument 'ep' to control
          when to ignore discrete parts (or a.c. parts)
          which summands in binomial expansion of (acPart+discretePart)^\ast n to ignore
  +minor fix in method for DiscreteDistribution
-- automatic image distribution generation
+ slot r is now /much/ faster / slimmer for results of *,/,^
  (no split in pos/neg part necessary for this!)
+ slot d for results of *,/, exp() now is correct at 0 by extrapolation
 (and deletion wir .del0dmixfun of half of the part to avoid double counting in *,/)
-- affine linear trafos return slot X0 of AffLin-Construction if resulting a=1 and b=0
-- sqrt now dispatches correctly for Abscont and DiscreteDistribution.

* PLOTTING
  + enhanced automatic plotting range selection
  + plot-methods in branches/distr-2.1 now accept to.draw.arg no matter whether mfColRow==TRUE or FALSE
  + fixed xlim and ylim args for plots; ylim can now be matrix-valued...
  + realized suggestions by A. Unwin, Augsburg;
    plot for L2paramFamilies may be restricted to selected subplots;
  + also named parameters are used in axis annotation if available.
  + changed devNew to only open a device if length(dev.list())>0
  + plot (for distribution objects) now is conformal
    to the (automatic) generic, i.e. it dispatches on signature (x,y)
    and has methods for signature(x=<distributionclass>,y="missing")


* NEW / ENHANCED METHODS
--getLow/getUp:
  +now available for UnivarLebDecDistribution, UnivarMixingDistribution
--q.r, p.l (methods for right continuous quantile function
  and left continuous cdf)
  + for class AbscontDistribution (q.r with 'modifyqgaps')
  + for class UnivarLebDecDistribution
  + for class UnivarMixingDistribution
--prob methods:
   +prob() for DiscreteDistribution-class
    returns vector of probabilities for the support points
     (named by values of support points)    )
   + method for UnivarLebDecDistribution: returns a
     two-row matrix with
     * column names values of support points
     * first row named "cond" the probabilities of discrete part
     * second row named "abd" the probabilities of discrete part
       multiplied with discreteWeight; hence the absolute probabilities
       of the support points
--methods p.ac, d.ac, p.discrete, d.discrete:
     * they all have an extra argument 'CondOrAbs' with default value
       "cond" which if it does not partially match "abs", returns exactly
        slot p (resp. d) the respective acPart/discretePart of the object
        else return value is weighted by acWeight/discreteWeight
--new function 'makeAbscontDistribution'
  +to convert arbitrary univariate distributions to AbscontDistribution:
   takes slot p and uses AbscontDistribution(); in order to smear out
   mass points on the border, makeAbscontDistribution() enlarges upper and
   lower bounds
--flat.LCD:
  +setgaps is called only if slot gaps is not yet filled
--general technique: more freguent use of .isEqual
--new / enhanced utilities (non-exported)
  +'modifyqgaps' in order to achieve correct values for slot q
  in case slot p hast constancy regions (gaps)
  +.qmixfun can cope with gaps and may return both left and right continuous versions
  +.pmixfun may return both left and right continuous versions
  in case slot p hast constancy regions (gaps)


* DOCUMENTATION
-new section "Extension packages" in package-help file 0distr-package.Rd
-mention of CompoundDistribution-class in package-help file 0distr-package.Rd of devel version
-new vignette "How to generate new distributions in packages distr, distrEx"
 in package distr ...

* Rd-style:
  + several buglets detected with the fuzzier checking mechanism
    cf [Rd] More intensive checking of R help files, Prof Brian Ripley, 09.01.2009 10:25) 
       [Rd] Warning: missing text for item ... in \describe? , Prof Brian Ripley,

* S4 ISSUES:
  + fixed setGenerics- error reported by Kurt Hornik...
    "log", "log10", "gamma", "lgamma" are no longer redefined as generics.
  +explicit method "+" for Dirac,DiscreteDistribution
  +some changes to the connections between LatticeDistribution and DiscreteDistribution
   resp. between AffLinLatticeDistribution and AffLinDiscreteDistribution.
  key issues:
  +JMC has changed the way non-simple inheritance [i.e. in the presence of setIs relations]
   is treated (see distr; in particular show, and operator methods for LatticeDistribution)
   works now and could be released as 2.0.1
  ->some explicit methods for LatticeDistribution, as due to setIs Relation
    it may no longer be inherited automatically from DiscreteDistribution
    since JMC's changes in S4 inheritance mechanism Sep/Oct 08

* BUGFIXES
  +fixed a buglet in initialize for Cauchy Distribution
  +fixed bug in "+",LatticeDistribution,LatticeDistribution
    +it may be that even if both lattices of e1, e2 have same width,
    the convoluted support has another width!
    example: c(-1.5,1.5), c(-3,0,3)
  +matrix-valued ylim argument has not yet been dealt with correctly
  +fixed bug in plot-methods for argument "inner" under use of to.draw.arg argument
  +fixed a bug in convpow-method for AbscontDistribution
  +small buglets in plot-methods.R and plot-methods_LebDec.R (moved setting of owarn/oldPar outside)
  +fixed a bug in UnivarMixingDistribution.R (with new argument Dlist)
  +fixed a bug discovered by Prof. Unwin  ---
    "+" trapped in a dead-lock coercing between DiscreteDistribution
    and LatticeDistribution
  +fixed a small buglet in convpow().
  +fixed buglet in devel version of distr: getLow.R (wrong place of ")" )
  +fixed some errors in plotting LCD and CompoundDistribution(and enhanced automatic axis labels by some tricky castings...)
  +UnivarMixingDistribution was too strict with sum mixCoeff == 1
  +deleted some erroneous prints left over from debugging in ExtraConvolutionMethods.R
  +fixed some buglets in plot for distr (only in branch)
  +fixed redundant code in bAcDcLcDistribution.R
  +Patch to bug with AffLinAbscontDistribution

##############
v 2.0.3
##############
  
  * under the hood: 
     + enhanced plotting (correct dispatch; opening of new device is controlled
       by option("newDevice") )
     + after JMC's changes: gone through setIs relations to ensure 
       "correct" inheritance
  * new plot function for 'UnivarLebDecDistribution' : now plots 3 lines
    +first line common cdf and quantile function 
    +second line abscont part
    +third line discrete part
  * new vignette "How to generate new distributions in packages distr, distrEx"
  * moved license to LGPL-3
  * enhancements for arithmetics:
     + fixed bug with AffLinAbscontDistribution for a*X+b, distribution X >=0
     + slot r is now /much/ faster and slimmer for results of *,/,^ 
       (hint: no split in pos/neg part necessary for this!)
     + slot d for results of *,/, exp() now is correct at 0 by extrapolation 
       (and deletion with .del0dmixfun of half of the part to avoid double 
        counting in *,/)
     + affine linear trafos return slot X0 of AffLin-Construction 
       if resulting a=1 and b=0
     + method sqrt() for distributions
  * correction of small buglet in validity to Norm-class
    

##############
v 2.0
##############

 * made calls to 'uniroot()', 'integrate()', 'optim(ize)()' compliant to 
   https://stat.ethz.ch/pipermail/r-devel/2007-May/045791.html

 * new generating function 'AbscontDistribution'
 
 * new class 'UnivarMixingDistribution' for mixing distributions with
   methods / functions:
    +'UnivarMixingDistribution' (generating function)
    +flat.mix to make out of it a distribution of class
     'UnivarLebDecDistribution'

 * new class 'UnivarLebDecDistribution' for a distribution with a 
   discrete and a.c. part; corresponding methods / functions:
    +'UnivarLebDecDistribution' (generating function)
    +'acPart', 'discretePart' return corresponding parts
    +'acWeight', 'discreteWeight' return corresponding weights
    +special 'plot' functions (only for cdf and quantile function)
     [plotting jumps in both cdf and quantile function]
    
 * new class 'AffLinUnivarLebDecDistribution' for affine linear transformations
   of 'UnivarLebDecDistribution' (in particular for use with E())

 * new class union 'AcDcLcDistribution' as common mother class
   for 'UnivarLebDecDistribution', 'AbscontDistribution',
  'DiscreteDistribution';  corresponding methods / functions:

 *  enhanced arithmetic: (for 'AcDcLcDistribution')

    *  convolution for 'UnivarLebDecDistribution'
    *  affine linear trafos for 'UnivarLebDecDistribution'
    * 'numeric' / 'AcDcLcDistribution'
    * 'AcDcLcDistribution'^'numeric'
    * 'numeric'^'AcDcLcDistribution'
    *  binary operations for independent distributions:
          o 'AcDcLcDistribution' * 'AcDcLcDistribution'
          o 'AcDcLcDistribution' / 'AcDcLcDistribution'
          o 'AcDcLcDistribution' ^ 'AcDcLcDistribution'
    * (better) exact transformations for exp() and log()
    *  Minimum Maximum Truncation Huberization
    *  convpow for 'UnivarLebDecDistribution'

 * 'decomposePM' decomposes distributions in positive / negative part
   (and in Dirac(0) if discrete) 

 * 'simplifyD' tries to cast to simpler classes (e.g. if a weight is 0)

##############
v 1.9
##############

 * made calls to 'uniroot()', 'integrate()', 'optim(ize)()' compliant to 
   https://stat.ethz.ch/pipermail/r-devel/2007-May/045791.html

 * new methods 'shape()' and 'scale()' for class Chisq with ncp=0

 * methods getLow, getUp for upper and lower endpoint of support of 
   DiscreteDistribution or AbscontDistribution
   (truncated to lower/upper TruncQuantile if infinite)

 * added S4-method 'convpow' for convolutional powers from the examples 
   of package 'distr' with methods for
    + 'LatticeDistribution' and 'AbscontDistribution'
    + and particular methods for
          o Norm, Cauchy, Pois, Nbinom, Binom, Dirac,
            and ExpOrGammaOrChisq (if summand 'is' of class Gammad)


 * moved some parts from package 'distrEx' to package 'distr' 
   + generating function 'DiscreteDistribution' 
   + univariate methods of 'liesInSupport()' 
   + classes 'DistrList' and 'UnivariateDistrList'
   + generating functions EuclideanSpace() ,Reals(), Naturals() 

 * 'LatticeDistribution'
   + new class 'Lattice' to formalize an affine linearly generated grid
     of (support) points  pivot + (0:(Length-1)) * width
   + usual accessor/replacement functions to handle slots
   + new class 'LatticeDistribution' as intermediate class between
     'DiscreteDistribution' and all specific discrete distributions from 'stats' 
      package with a particular convolution method using FFT (also for 'convpow')
   + usual accessor function 'lattice' for slot 'lattice'

 * cleaning up the sources
   + adapted the naming of the .R files to the use of the (later written)
     extension packages 
     (and according to http://tolstoy.newcastle.edu.au/R/help/06/03/22558.html)
   + checked all source file to adhere to the 80char's-per-line rule

 * revised generating functions/initialize methods according to
       http://tolstoy.newcastle.edu.au/R/e2/devel/07/01/1976.html
   + in particular all Parameter(-sub-)classes gain a valid prototype

 * new exact arithmetic formulae:
    +   'Cauchy' + 'Cauchy'
       : gives 'Cauchy'
    +   'Weibull' * 'numeric' 
       : gives 'Weibull' resp. 'Dirac' resp 'AbscontDistribution' 
       : acc. to 'numeric' >, =, < 0 
   +   'Logis' * 'numeric'   
       : gives 'Logis' resp. 'Dirac' resp 'AbscontDistribution'
       : acc. to 'numeric' >, =, < 0 
   +   'Logis' + 'numeric'   
       : gives 'Logis'
   +   'Lnorm' * 'numeric'   
       : gives 'Lnorm' resp. 'Dirac' resp 'AbscontDistribution' 
       : acc. to 'numeric' >, =, < 0 
   +   'numeric' / 'Dirac'   
       : gives 'Dirac' resp. error acc. to 'location(Dirac)' ==, != 0
   +   'DiscreteDistribution' * 1 returns the original distribution
   +   'AbscontDistribution' * 1 returns the original distribution
   +   'DiscreteDistribution' + 0 returns the original distribution
   +   'AbscontDistribution' + 0 returns the original distribution

 * enhanced Information:
  + command 'distrARITH()' gains an argument 'library'
  + new file MASKING and corresponding command 'distrMASK()' to describe the 
   intended maskings

 * mentioned in package-help: startup messages may now also be suppressed by
   suppressPackageStartupMessages() (from package 'base')
 
 * formals for slots p,q,d as in package stats to enhance accuracy

    + p(X)(q, lower.tail = TRUE, log.p = FALSE)
    + q(X)(p, lower.tail = TRUE, log.p = FALSE)
    + d(X)(x, log = FALSE)
    
    used wherever possible;
    but backwards compatibility: 
        always checked whether lowert.tail / log / log.p are formals

 * cleaning up of environment of r,d,p,q-slot  - removed no longer needed objects 
 
 * enhanced plot methods 
   + for both AbscontDistributions & DiscreteDistributions :
     o optional width and height argument for the display (default 16in : 9in)
       -opens a new window for each plot
       -does not work with /Sweave/;
        workaround: argument withSweave=TRUE
        in .Rnw-file: use width and height argument like in 
            <<plotex1,eval=TRUE,fig=TRUE, width=8,height=4.5>>=
             ....
            @   
     o optional main, inner titles and subtitles with main / sub / inner
        - preset strings substituted in both expression and character vectors 
             (x : argument with which plot() was called)
           ~ %A deparsed argument x
           ~ %C class of argument x
           ~ %P comma-separated list of parameter values of slot param of argument x 
           ~ %N comma-separated <name>=<value> - list of parameter values of slot param of argument x
           ~ %D time/date at which plot is/was generated
           ~ %Q comma-separated list of parameter values of slot param of argument x in parenthesis or "" if empty
        - title sizes with cex.main, cex.inner, cex.sub
        - bottom / top margin with bmar, tmar
        - setting of colors with col / col.main / col.inner / col.sub
     o can cope with log-arguments
     o setting of plot symbols with pch / pch.a / pch.u (see ?"plot-methods") 
     o different symbols for unattained / attained one-sided limits   
     o do.points argument as in plot.stepfun()
     o verticals argument as in plot.stepfun()
     o setting of colors with col / col.points / col.vert / col.hor 
     o setting of symbol size with with cex / cex.points 
       (see ?"plot-methods") 

   + for AbscontDistributions 
     o (panel "q"): takes care of finite left/right endpoints of support
     o (panel "q"): optionally takes care of constancy regions (with do.points/verticals)
     o ngrid argument to set the number of grid points 
   + for DiscreteDistributions :
     o using stepfun()

 * left-continuous c.d.f. method (p.l) and 
   right-continuous quantile function (q.r) for DiscreteDistributions

 * new slot 'gaps' (a n x 2 matrix or NULL) for AbscontDistribution
   to cope with intervals where d-slot is 0.
   + new class OptionalMatrix (matrix or NULL)
   + accessor/replacement function gaps()
   + setgaps() to automatically fill gaps-slot

 * Version-management for changed class definitions to AbscontDistribution
   and to (changed by inheriting from LatticeDistribution!) subclasses of
   LatticeDistribution (Geom, Binom, Nbinom, Dirac, Pois, Hyper):
   + moved generics to isOldVersion(), conv2NewVersion() from distrSim to distr
   + moved (slightly generalized version of) isOldVersion() (now for signature "ANY") 
     from distrSim to distr
   + new methods for conv2NewVersion for signature 
     o "ANY" (fills missing slots with corresponding entries from prototype)   
     o "LatticeDistribution": generates a new instance (with slot lattice(!))
        by new(class(object), <list of parameters>)
 * new (internally used) classes AffLinAbscontDistribution, AffLinLatticeDistribution
       and AffLinLatticeDistribution to capture the results of transformations 
                 Y <- a * X0 + b       for a, b numeric and X0 Abscont/Discrete/LatticeDistribution 
   and a class union AffLinDistribution of  AffLinAbscontDistribution and AffLinLatticeDistribution
   to use this for more exact evaluations of functionals in distrEx
 * analytically exact slots d,p (and higher accuracy for q) for distribution objects 
   generated by functions abs, exp, log for classes AbscontDistribution and DiscreteDistribution



DEPRECATED:
*  class GeomParameter --- no longer needed as this the parameter
   of a NBinom with size 1

##############
v 1.8
##############


* Class DExp() introduced (with documentation)
* show() for UnivariateDistribution now is the same as print()
* dim() method for UnivariateDistribution 
* distr (together with distrEx, distrSim, distrTEst) now includes a vignette --- try 
  vignette("distr")

##############
v 1.7
##############


* standardMethods() is again included (with documentation)
* distroptions() / getdistrOption() now behave exactly like options()  / getOption() options --- also compare mail
  "Re: [Rd] How to implement package-specific options?" by Brian Ripley on
  r-devel, Fri 09 Dec 2005 - 11:52:46, see http://tolstoy.newcastle.edu.au/R/devel/05/12/3408.html
* suggested by M. Maechler: on attaching the package there is a (sort of) 
  warning as to the interpretation of 
    +arithmetics for distributions
  as well as to the
    +accuracy of slots p,d,q filled by means of simulations; 
  these warnings are issued at two places:
      (1) on attaching the package 
      (2) at every show/print of a distribution
      o (2) can be cancelled by switching off a corresponding global option in distroptions() -- see ?distroptions . 
* all specific distributions (those realized as [r|d|p|q]<name> like rnorm in package stats)
  now have valid prototypes
* fixed arguments xlim and ylim for plot(signature("AbscontDistribution" or "DiscreteDistribution"))
  thus: plot(Cauchy(),xlim=c(-4,4)) gives reasonable result (and plot(Cauchy()) does not)
* Internationalization: use of gettext, gettextf for output
* explicitly implemented is() relations:  R "knows" that
      o an Exponential(lambda) distribution also is a Weibull(shape = 1, scale = 1/lambda) distribution, as well as a Gamma(shape = 1, scale = 1/lambda) distribution
      o a Uniform(0,1) distribution also is a Beta(1,1) distribution
      o a Cauchy(0,1) distribution also is a T(df=1, ncp=0)  distribution
      o a Chisq(df=n, ncp=0) distribution also is a Gamma(shape=n/2, scale=2) distribution
* noncentrality parameter included for Beta, T, F distribution 
* exact +,* for Cauchy and Dirac, for latter also -,/


* "simplifyr": changed default values (using option RtoDPQ.e) 
* masking of function sd from stats to have an additional ... argument 
* masking of function df from stats to have an additional ... argument 

* Internationalization: use of gettext, gettextf in output

* updated citation file

* noncentrality parameter included for Beta, Td, F (for new d,p,q,r, but compatible with 2.2.x)
  also in the documentation

* Geom is now subclass of Nbinom
* virtual superclass ExpOrGammaOrChisq for Chisq,Exp,Gammad
* NEWS file
* commented ARITHMETICS file
* revised help for operators
* new package documentation distr-package.Rd

##############
v 1.6 
##############

Our package is reorganized:
  * distr from now on only comprises distribution classes and methods
  * simulation classes and methods have been moved to the new package distrSim
  * evalation classes and methods have been moved to the new package distrTEst
  * a new class distrEx has been added by Matthias Kohl, providing additional features 
    like distances between distributions, expectation operators etc
  * a new class RandVar has been added by Matthias Kohl, providing conceptual treatment 
    of random variables as measurable mappings

##############
v 1.5 
##############

* package is now using lazy loading
* minor changes in the help pages
* minor enhancements in plot for distributions (Gamma, discrete distributions)
* package now includes a demo - folder; try demo("distr")
* class Gamma has been renamed Gammad to avoid name collisions
* we have a CITATION file now; consider citation("distr")
* enhanced demos:
      + convolution of uniform variables now includes exact expressions
      + min/ max of two variables now available for discrete distributions
* rd-Files have now a keyword entry for distribution and thus may be found by the search engine
* exact formula for "Unif" o "numeric" where o \in { +,-,*,/ }

##############
v 1.4 
##############

* to avoid name collisions with short forms for TRUE and FALSE: classes T and F (T- and F-distributions) renamed to Td and Fd
* package is now loaded as a binary => considerable speed gain
* using subsititute the bodies of the r,d,p,q-function-slots distributions show the parameter values with which they were generated
* convolutions and applications of the math group may now be traced in r-slot of a distribution object, compare
       r(sin(Norm()) + cos(Unif() * 3 + 2))
* parameters of a distribution (mean, sd, etc) are now tested on length 1
    + we see the objects as implementations of univaritate distributions, so vectors make no sense here; 
      rather one could gather several objects with possibly different parameters to a vector of distributions. 
      Of course, the original functions rnorm etc remain unchanged and still allow for vector-valued parameters.
* Classes "Parameter", "Distribution" , "UnivariateDistribution" are no longer VIRTUAL
* "AbscontParameter" and "DiscreteParameter" are replaced by "Parameter"
* type of slots d, p, q and param changed to "OptionalFunction" and "OptionalParameter", respectively
 
##############
v 1.3 
##############

* changes in the Help-File to pass Rcmd check

##############
v 1.1 
##############

* implementation of further exact convolution formulae for distributions Nbinom, Gamma, Exp, Chisq
* exact formulae for scale transformations for the distributions Gamma, Exp
* slot "seed" in simulation classes is now controlled and set via the setRNG package by Paul Gilbert
