======================
.. rubric:: Additions
* Add ``opda.approximation``, a module for approximation-theoretic
operations, with the following functions:
* ``opda.approximation.lagrange_interpolate``: Interpolate points with
a polynomial.
* ``opda.approximation.remez``: Identify the reference corresponding
to the minimax polynomial approximation of a function.
* ``opda.approximation.minimax_polynomial_approximation``: Evaluate
the minimax polynomial approximation of a function.
* ``opda.approximation.minimax_polynomial_coefficients``: Compute the
coefficients of the minimax polynomial approximation of a function.
* ``opda.approximation.piecewise_polynomial_knots``: Find the knots
for the minimax piecewise polynomial approximation of a function.
* Add ``opda.exceptions.NumericalError``, an exception for numerical
issues.
* Add more tests for ``opda.parametric.QuadraticDistribution``.
* Add ``mean`` and ``variance`` attributes to
``opda.nonparametric.EmpiricalDistribution``.
* Add ``mean`` and ``variance`` attributes to
``opda.parametric.QuadraticDistribution``.
* Add ``opda.utils.normal_pdf``, a fast function for computing the
standard normal's PDF.
* Add ``opda.utils.normal_cdf``, a fast function for computing the
standard normal's CDF.
* Add ``opda.exceptions.IntegrationError``, an exception for
integration issues.
* Add ``opda.parametric.NoisyQuadraticDistribution``, a probability
distribution representing a quadratic random variable plus normal
noise.
* Increase argument validation in ``opda.utils.dkw_epsilon``.
* Add more test cases for ``opda.utils.dkw_epsilon``.
* Validate that ``lightness`` is between 0 and 1 (inclusive) in
``experiments.visualization.color_with_lightness``.
* Validate that arguments are *finite* floats where appropriate.
.. rubric:: Changes
* Reparametrize ``parametric.QuadraticDistribution`` so ``c`` is the
effective number of hyperparameters instead of half the number.
* Completely disable the eradicate (``ERA``) lint rules.
* Enable ``"py"`` as the primary domain in the documentation.
* Always use numpy's numeric types for scalar class attributes,
instead of Python's native numeric types.
* Improve tests for ``parametric.QuadraticDistribution``, making them
more thorough, robust, and avoiding re-running redundant test cases.
* Update the tests for ``parametric.QuadraticDistribution`` to cover
the case when ``a == b``.
* Move the source repository from ``github.com/nalourie/opda`` to
``github.com/nicholaslourie/opda``, and move the docs from
``nalourie.github.io/opda`` to
``nicholaslourie.github.io/opda``. Update the project URLs in
``pyproject.toml`` and all the links throughout the repository to
reflect these changes.
* Require ``fraction`` is greater than 0 in
``opda.parametric.QuadraticDistribution.estimate_initial_parameters_and_bounds``.
* Throw an error if ``fraction`` is too small and thus causes
``opda.parametric.QuadraticDistribution.estimate_initial_parameters_and_bounds`` to
try and form an estimate from an empty list.
.. rubric:: Fixes
* Fix ``parametric.QuadraticDistribution`` (the ``.pdf``, ``.cdf``,
and ``.estimate_initial_parameters_and_bounds`` methods) for the
case when ``a == b``, in which case the distribution is an atom
(point mass).
* Fix
``opda.parametric.QuadraticDistribution.estimate_initial_parameters_and_bounds``
when ``convex`` is ``False`` and ``fraction`` is small enough so
that the estimate should be based on an empty list. In this case,
the method incorrectly uses all of ``ys``. Instead, throw an error
saying that fraction is too small (as it produces an empty list).
* Avoid throwing an unnecessary warning in ``opda.utils.dkw_epsilon``
when ``confidence`` is 1.
.. rubric:: Documentation
* Improve the docstring for
``experiments.analytic.get_approximation_parameters``.
* Use inline math markup in docstrings.
* Fix the equation in the docstring for
``opda.parametric.QuadraticDistribution.ppf``. The infimum that
defines the quantile function has as its domain the interval from
``a`` to ``b``, not the entire real line.
* Add "See Also" and "Notes" sections to the docstring for
``opda.parametric.QuadraticDistribution``, matching the newly added
docstring for ``opda.parametric.NoisyQuadraticDistribution``.
* Update all links to use ``github.com/nicholaslourie`` and
``nicholaslourie.github.io/opda`` in place of
``github.com/nalourie`` and ``nalourie.github.io/opda``.
* Document stricter dependent type constraints (e.g., non-negativity,
finiteness) for function and method inputs and outputs.
* Document range constraints for inputs and outputs more precisely and
consistently (e.g., ``q`` is a float from 0 to 1 inclusive).
* Improve the docstring for ``experiments.analytic.ellipse_volume``.
* Fix docstrings across the code base in order to consistently
document when a value can take on either scalar (e.g., float) or
array (e.g., array of floats) values.