Testing for NaN
within Fortran now more efficient.
Other changes to C and Fortran code for efficiency and readability.
Added package metadata tests.
Set up new version of rhub checking.
Use native CRAN DOI.
qdelap
now automatically calls the exact = TRUE
version when passed inappropriate parameters instead of just stopping with
an error.
Refactor ‘README.md’ into component MD files for Github purposes.
Capture and restore original thread count after running tests.
Efficiency tweaks to underlying Fortran code.
Converted log1p
implementation to one based on its Taylor
sequence, instead of catastrophic substitution elimination, as some
compilers may optimize out that subtraction. Since any difference in
result should be at machine precision or lower, this is considered a
minor update.
Removed back
keyword from minloc
call in the Fortran
implementation of qdelap
. Technically uneeded since its value is
the default FALSE
. This allows for systems with an only partial
implementation of Fortran 2008 to compile (see
Issue 3 and thanks to
David Pascall).
Correct error message of setDelapThreads
to reflect that
setting threadcount to 0 is also an error. Functionality has not changed.
Removed unnecessary explicit check for NaN
in qdelap
as it will be covered by check using anyNA
.
Tweaked documentation for clarity.
Added unit test for new log1p
function.
Added LTO_OPT
and LTO_FC_OPT
flags to ‘Makevars’.
Added getDelapThreads
and setDelapThreads
to
explicitly control OpenMP thread usage based on
WRE 1.2.1.1.
Added parallel as an import for detectCores
.
Added SPDX header to more files.
Added more unit tests.
Changed Fortran suffix to .f90
for better compatibility with
the Intel Fortran compiler, per CRAN.
Tweaked minor linting and documentation issues.
Explicitly enumerated exports instead of using wide-ranging regex.
Removed -std=f2008
on the advice of Professor Ripley.
Fortran source code now reliant on Fortran 2008.
Fortran module ieee_arithmetic
used.
Updated help documentation.
Updated Github actions.
Updated internal code to be more compliant with personal style guide.
Updated CITATION to use bibentry
per CRAN request.
gamln
replaced with Fortran 2008 log_gamma
.
position
replaced with Fortran minloc
.
The set_nan
and set_inf
procedures were replaced with
ieee_arithmetic
calls.
Checks for NaN
now use ieee_arithmetic
calls.
Updated package with information necessary to acheive OpenSSF silver status.
Converted unit testing framework to tinytest to reduce dependencies.
Augmented citation with DOI and CFF file.
Corrected help file.
Removed SIMD calls added in 8.0.0 due to Solaris.
Removed LTO mentions from Makevars added in 8.0.0 per Brian Ripley.
Pass more R-consistent error messages.
Made more robust to improper inputs such as negative, NA
, or
NaN
parameters or passed values.
R versions of qdelap
and rdelap
behave more like the
Fortran versions.
Exact code more in line with R defaults for d/p/q/r functions in
that NaN
inputs return NaN
outputs.
Handling of Inf
and -Inf
now more in line with R
defaults for d/p/q/r functions.
Parameter errors now check for < 0
instead of < EPS
.
ddelap
and pdelap
now use 8-byte integers
(INT64) for their counters which allows calculation for values
up to 2^{63}
.
ddelap
will return 0 for all values > 2^{63}
under the assumption that the PMF is spread too thinly.
pdelap
will not run for values > 2^{63}
.
ddelap
of Inf
returns 0 and pdelap
of
Inf
returns 1.
pdelap
gives a warning for finite values
> 2^{15}
as, depending on the parameters, this may take
hours to finish (it's a double summation!). The user has to respond with
y to continue.
Updated help and tests.
Allow compiler to use OpenMP SIMD constructs.
Allow using LTO.
Switched continuous integration from Travis/Appveyor to Github actions (thanks to Jim Hester for his help in fixing the coverage check issue).
Corrected CRAN requests.
Cleaned up NEWS.
Converted tests to be compliant with testthat: 3rd edition.
Cleaned up prose.
Added a citation to DESCRIPTION.
Added a test to increase code coverage.
CITATION file.
Explicit citation information to README.
Travis, AppVeyor, and CodeCov integration.
Added R_forceSymbols(dll, TRUE)
to source per WRE
5.4.
Tests for package versioning.
Moved canonical repository to Github.
Use FFLAGS
instead of FCFLAGS
in Makevars.
Removed depsy badge from README as site is now defunct.
Updated NEWS to reflect recent changes.
Updated various file versions to reflect recent changes.
Makevars adjusted by CRAN to prevent issues with parallel make.
Changed Makevars flags and targets and forced dependance on R 3.6+ to comply with new CRAN policies on Fortran and OpenMP.
Preventing spurious floating point errors by implementing hard floor of 0 and hard ceiling of 1.
Updated comments in ‘delaporte.f95’ source code.
Changed rdelap
testing to always use a fixed seed.
Documentation cleaned up.
Removed the cleanzeros
function.
Removed unneeded Makevars target cleanup
.
Removed GNU-specific Makevars target .NOTPARALLEL
.
Added cleanzeros
function that zaps to 0 any value less than
or equal to EPS (thanks Kipper Fletez-Brant).
Test for zeros (thanks Kipper Fletez-Brant).
Added items to README to comply with CII best practices and added badge.
Added various badges to README.
Added copyright and license information inside R source code file.
MoMdelap
now allows a skew type
selection, similar to
that of the skewness function in the e1071 package
(thanks to William Cipolli for the suggestion). Skew defaults to former
selection so there should be no change to any values.
Tests added for all three skewness variants.
ORCID added to author description.
Copyright date corrected to reflect actual copyright and not date of licensure change.
There was an error in the calculation of beta
, and thus all
three parameters, in MoMdelap
(thanks to William Cipolli).
The approximate version of qdelap
was not correct. It pooled
together ALL generated random variables. As it is impractical to generate
millions of random variates for each unique parameter triplet, the
functionality was changed so that only the “exact” version of
qdelap
may be used if any of the parameters are a vector.
In the continued struggle to have the package pass all its tests on Solaris SPARC, all logicals needing to be passed to Fortran are now passed as integers and not booleans. While all other platforms had no problem using Fortran 2003's ISO_C_bindings, Solaris SPARC did.
Added note to README about Solaris SPARC.
More tests including for singleton approximate qdelap
.
Older implementation of qdelap
and rdelap
approximations are now completely removed from code and documentation.
Solaris, being big-endian, appears unable to use the same bit-mask
transfer for NaN
and Inf
as any other R platform.
Therefore, the package has to revert to calling C to call the R magic
words which should recognize the platform.
Changed handling of non-integers to be in line with R convention
that they have 0 probability instead of being considered the next integer.
ddelap
will return 0 for each non-integral value and will pass one
warning, unlike base R which passes one warning per non-integral value.
qdelap
will just return the value for the last integer and no
warnings, similar to base R.
Use bit-representation of NaN
and Inf
to remove need
to call C for setting these values. This allows the log-gamma and
singleton d/p/qdelap functions to be elemental.
Changed registration of the C SEXP functions seen by the
package to use R_CallMethodDef
as now preferred by CRAN.
Explicitly listed the five C SEXP functions seen by the
package as R_RegisterCCallable
for potential downstream package
use.
Corrected some prose in documentation page.
Older NEWS entries refactored for accuracy.
Explicitly cast n
as an integer in loggamma routine. This
should suppress warning on OSX mavericks.
Older implementation of qdelap
and rdelap
approximations is now defunct. Only the new faster approximation based on
section 3.9 of Karlis & Xekalaki (2005) remains. The next minor version
may remove the .Defunct
calls and the references to the old version
in the documentation.
Removed colClasses = 'double'
from tests. This should solve
Sun SPARC issues (It didn't).
Specified, clarified, and added many more unit tests.
Back end code ported from C++ & Rcpp to Fortran and C. In most cases this alone showed an increase in speed. There should be no noticeable difference in results. Random numbers generated with the same seeds should be the same as in previous packages.
OpenMP calls activated for systems which have it which allows parallel processing of certain loops resulting in further speed increases over and above those supplied by Fortran. OpenMP compatibility is approximately version 3.1; no SIMD instructions are used.
License changed from GPL2+/LGPL3+ to BSD-2 clause.
Includes various emergency fixes to address parallel make and other compilation issues in versions 4.0.0–4.0.2.
Did not build properly on some systems using a parallel make.
Did not build properly on Fedora using Clang.
Did not build properly on various platforms such as Fedora and Solaris.
The distributional functions now return NaN
where the passed
alpha
, beta
, or lambda
is close to 0 (less than
machine epsilon). Within vectors, valid triplets should still return
proper values. The approximate versions of qdelap
and rdelap
do not handle 0 properly, and an error is thrown directing the user to the
exact version (thanks are due to Jonathan Cairns and Jin-Rui Xu for their
help in testing).
Faster versions of the approximate qdelap
and rdelap
have been implemented.
Tests for near 0 handling on exact version.
The old approximation versions of qdelap
and rdelap
can still be used by passing old = TRUE
. This will be removed
eventually.
Reverted back to 2.2-3 as change to trapping zeros caused serious downstream issues. Will work on more elegant correction shortly (thanks to Mikhail Spivakov, Jonathan Cairns, and Jin-Rui Xu).
In the next release (3.0.0), passing FALSE
to
exact
in rdelap
and qdelap
will use the method
described in section 3.9 of Karlis & Xekalaki (2005) to generate
approximately Delaporte random variates much more quickly for large
n
and large values of the parameters. However, when implemented,
this will break reproducible even for specifically set seeds. The new code
is commented out in the function.
Change non-exact qdelap
mode to numeric instead of
integer to handle returned Inf
.
Refactor NEWS to more closely comply with keep a changelog suggestions.
Check for any parameters not strictly greater than 0 (thanks to Mikhail Spivakov and Jonathan Cairns).
Explicitly import code from package stats
.
Updated code in unit tests to reflect change in
testthat package (move to expect_equal
).
Minor tweaks to prose and grammar and expanded description.
Updated DESCRIPTION file to comply with recent changes.
Trapped machine precision issues when calling right-tailed version of cumulative distribution function (thanks to Mikhail Spivakov and Jonathan Cairns).
Update documentation to reflect rounding procedure when non-integer passed as value.
Vectorized d/p/q/rdelap
; alpha
, beta
, and
lambda
can now be vectors.
Added more robust tests.
Minor optimizations for speed.
Corrected lower.tail
and log.p
which were not
implemented properly.
Adjusted unit test so it can be run more easily on 32 bit machine with limited memory.
Fixed spelling and other prose.
Added function to calculate method of moments estimates for the parameters. These estimates should also serve as good starting points for maximum likelihood estimation.
Added unit testing.
Minor cleanup after Rcpp update (remove ‘Makevar’ files and tweak documentation).
Updating for changes made to Rcpp 0.11.0. Previous versions may no longer compile properly and the current version may no longer work with older versions of Rcpp.
Change “Depends” to “LinkingTo” in line with CRAN philosophy on package dependencies.
Update documentation to give rough estimate as to when
exact = FALSE
should be used (rarely).
Have R code be written in a consistent style.
Update README now that CRAN uses it as well.
Minor grammar and typography tweaks to documentation.
Poisson-negative binomial approximation to quantile and random
variate functions. This greatly speeds up calculation for large
\alpha, \beta
, or \lambda
.
Converted NEWS to NEWS.Rd.
Added repository and bug report URL to DESCRIPTION.
Help documentation corrections, comments, and tweaks.
Initial version.