<?xml version="1.0"?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->

<!--
This file is used by the maven-changes-plugin to generate the release notes.
Useful ways of finding items to add to this file are:

1.  Add items when you fix a bug or add a feature (this makes the
release process easy :-).

2.  Do a JIRA search for tickets closed since the previous release.

3.  Use the report generated by the maven-changelog-plugin to see all
SVN commits.

To generate the file RELEASE-NOTES.txt from this file:

mvn changes:announcement-generate -Prelease-notes [-Dchanges.version]

The <action> type attribute can be add,update,fix,remove.
-->

<!-- NOTE:
The description attribute entries below are specially formatted
so as to improve the layout of the generated text release notes.

The parsing process removes all line feeds, replacing them with a single space.
The Velocity template in src/changes/release-notes.vm has been enhanced to replace pairs of adjacent spaces
with a new-line in the release notes. (These spaces are ignored when displaying HTML).
If the output is not quite correct, check for invisible trailing spaces!
-->

<document xmlns="http://maven.apache.org/changes/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/xsd/changes-1.0.0.xsd">
  <properties>
    <title>Apache Commons Numbers Release Notes</title>
  </properties>
  <body>

    <release version="1.2" date="TBD" description="
New features, updates and bug fixes.
">
      <action dev="sebb" type="update">
        Use Java 1.8 methods to simplify the ArithmeticUtils methods remainderUnsigned and divideUnsigned (both int and long)
      </action>
      <action dev="aherbert" type="add"  due-to="Harald Kirsch" issue="NUMBERS-205">
        "Addition/Multiplication": Introduces isZero to Addition and isOne to Multiplication
        interfaces. Override the default implementation in implementing classes to avoid
        expensive equals(Object) operations.
      </action>
      <action dev="aherbert" type="add" issue="NUMBERS-203">
        "DDField": Add a field for the DD number.
      </action>
      <action dev="aherbert" type="fix" issue="NUMBERS-204">
        "Sum": Correct sub-normal round-off computation in sum of products.
      </action>
      <action dev="aherbert" type="add" issue="NUMBERS-193">
        "DD": Add an extended precision floating-point number. A double-double (DD) number
        is an unevaluated sum of two IEEE double precision numbers capable of representing
        at least 106 bits of significand.
      </action>
      <action dev="aherbert" type="fix" issue="NUMBERS-201">
        "FP64": Make equals consistent with hashCode.
      </action>
      <action dev="aherbert" type="fix" due-to="Anirudh Joshi" issue="NUMBERS-200">
        "Sum": Avoid a NaN result when combining Sum instances with infinite sums
        of the same sign.
      </action>
      <action dev="aherbert" type="update" issue="NUMBERS-199">
        "Precision": Document inaccurate decimal value representation when converting
        to and from a double in the round method.
      </action>
      <action dev="aherbert" type="add" issue="NUMBERS-192">
        "Sum": Add subtract(Sum) method.
      </action>
      <action dev="aherbert" type="add" issue="NUMBERS-191">
        "Stirling": Compute Stirling numbers of the first kind.
      </action>
      <action dev="aherbert" type="add" issue="NUMBERS-29">
        Add "Stirling" class to compute Stirling numbers of the second kind.
      </action>
    </release>

    <release version="1.1" date="2022-11-01" description="
New features, updates and bug fixes. Adds a commons-numbers-bom module.
">
      <action dev="aherbert" type="add" issue="NUMBERS-70">
        Add a user guide.
      </action>
      <action dev="aherbert" type="add" issue="NUMBERS-190">
        Add a Bill of Materials (BOM) to aid in dependency management when referencing
        multiple Apache Commons Numbers artifacts. The BOM should be used to ensure all
        imported artifacts are compatible.
      </action>
      <action dev="aherbert" type="fix" issue="NUMBERS-185">
        "Precision": Allow Precision.compareTo using a maxUlps to be used for sorting.
        This corrects handling of NaN comparisons.
      </action>
      <action dev="aherbert" type="update" issue="NUMBERS-184">
        "Precision": Reduce number of operations in Precision.equals using a maxUlps.
      </action>
      <action dev="aherbert" type="add" issue="NUMBERS-181">
        Updated support for the beta functions. "RegularizedBeta": Added the
        complement and derivative of the regularized beta function.
        Added "IncompleteBeta" and "Beta" classes.
        Functionality is ported from the Boost C++ library.
      </action>
      <action dev="aherbert" type="update" issue="NUMBERS-183">
        Improve the binomial coefficient classes. Avoid recursive method calls.
        Avoid overflow for BinomialCoefficientDouble for large results close to infinity.
        Use precomputed factorials and the LogBeta function for efficiency.
      </action>
      <action dev="aherbert" type="fix" issue="NUMBERS-182">
        "LogBeta": Avoid overflow for tiny arguments.
      </action>
      <action dev="aherbert" type="add" issue="NUMBERS-180">
        "GammaRatio": Compute the ratio of two gamma functions.
      </action>
      <action dev="aherbert" type="fix">
        "BrentSolver": Avoid overflow creating the initial value between the lower and upper.
      </action>
      <action dev="aherbert" type="add" issue="NUMBERS-177">
        "Erfcx": Compute a scaled complementary error function:
        erfcx(z) = erfc(z) * exp(z*z).
      </action>
      <action dev="aherbert" type="update" issue="NUMBERS-178">
        "Factorial/FactorialDouble": Tabulate all factorials with exact 64-bit double
        representations of n! up to n=170. This change deprecates the FactorialDouble
        class and removes obsolete caching functionality.
      </action>
      <action dev="aherbert" type="update" issue="NUMBERS-176">
        "ContinuedFraction": Update to use a shared implementation with
        GeneralizedContinuedFraction.
      </action>
      <action dev="aherbert" type="update" issue="NUMBERS-174">
        "Gamma/LogGamma/RegularizedGamma": Update the gamma function implementations to
        increase accuracy and support for extreme values.
        Functionality is ported from the Boost C++ library.
      </action>
      <action dev="aherbert" type="add" issue="NUMBERS-175">
        "GeneralizedContinuedFraction": A continued fraction class to compute using a
        generator. Allows evaluation of continued fractions from a regular series where
        coefficients can be computed iteratively from the previous coefficients.
      </action>
      <action dev="aherbert" type="fix" issue="NUMBERS-173">
        "ContinuedFraction": Set a minimum bound on the relative error epsilon. Prevents
        an infinite loop when the epsilon is zero.
      </action>
      <action dev="aherbert" type="fix">
        "FactorialDouble": Prevent caching values that are infinite. The cache will support
        factorials up to 170.
      </action>
      <action dev="aherbert" type="update" issue="NUMBERS-172">
        "Erf/Erfc": Use a rational function approximation accurate to 53-bits of precision.
        This replaces the use of the regularized gamma functions P and Q and increases accuracy
        at extreme limits of the function. Execution speed is improved.
        Functionality is ported from the Boost C++ library.
      </action>
      <action dev="aherbert" type="update" issue="NUMBERS-171">
        "InverseErfc": Support full range of [0, 2]. This lowers the supported
        minimum value from 2^-53 to double min value. Execution speed is improved.
        Functionality is ported from the Boost C++ library.
      </action>
      <action dev="aherbert" type="fix" issue="NUMBERS-170">
        "RegularizedBeta": Detect edge cases for arguments that can be evaluated by
        exploiting properties of the regularized beta function.
      </action>
      <action dev="aherbert" type="fix" issue="NUMBERS-168">
        "BrentSolver": Identify brackets with small objective values.
      </action>
      <action dev="aherbert" type="fix" due-to="Arturo Bernal">
        Fix wrong javadoc.
      </action>
    </release>

    <release version="1.0" date="2021-07-17" description="
This is the first official release of Apache Commons Numbers (requires Java 8).
">
      <action dev="mattjuntunen" type="update" issue="NUMBERS-163" due-to="Matt Juntunen">
        Combined "LinearCombination" and "Summation" into single "Sum" class.
      </action>
      <action dev="erans" type="update" issue="NUMBERS-164" due-to="Gilles Sadowski">
        Added SortInPlace utility, original from Commons Math.
      </action>
      <action dev="mattjuntunen" type="update" issue="NUMBERS-159" due-to="Matt Juntunen">
        Moved "Norms", "LinearCombination", and "Summation" from commons-numbers-arrays module
        to commons-numbers-core module. Moved "CosAngle" from commons-numbers-arrays module to
        commons-numbers-angle module.
      </action>
      <action dev="mattjuntunen" type="update" issue="NUMBERS-156" due-to="Matt Juntunen">
        Replaced "SafeNorm" with "Norms". Added "Summation" class for extended
        precision summation.
      </action>
      <action dev="erans" type="update" issue="NUMBERS-161" due-to="Gilles Sadowski">
        "Angle" replaces "PlaneAngle" and "PlaneAngleRadians".
      </action>
      <action dev="erans" type="fix" issue="NUMBERS-153" due-to="Gilles Sadowski">
        Use iterative implementation of "trigamma" function. Thanks to Dmitriy Golovashkin
        for reporting.
      </action>
      <action dev="erans" type="update" issue="NUMBERS-158" due-to="Gilles Sadowski">
        Replace angle normalize method with normalizer method that returns operator instance.
      </action>
      <action dev="erans" type="update" issue="NUMBERS-157" due-to="Gilles Sadowski">
        Adding Reduce operation originally from Commons Math to commons-numbers-angle module.
      </action>
      <action dev="aherbert" type="update" issue="NUMBERS-142" due-to="Alex Herbert">
        "LinearCombination": Update to use the dot2s algorithm. Avoids construction of an
        intermediate array for array dot products. Update the hi-lo splitting algorithm
        to use Dekker's split to ensure the product round-off is computed to exact precision.
      </action>
      <action dev="erans" type="update" issue="NUMBERS-154" due-to="Gilles Sadowski">
        Precision compareTo method now handles NaN properly to ensure consistent sorting.
      </action>
      <action dev="aherbert" type="update" issue="NUMBERS-149" due-to="Jin Xu">
        "Fraction": Port tests from commons-lang Fraction to demonstrate functional compatibility
        between the lang and numbers implementation of Fraction.
      </action>
      <action dev="aherbert" type="update" issue="NUMBERS-151" due-to="Jin Xu">
        "ArithmeticUtils": Refine pow(int, int) and pow(long, int) for edge cases.
      </action>
      <action dev="aherbert" type="fix" issue="NUMBERS-150" due-to="Jin Xu">
        "Fraction/BigFraction": Fixed pow(int) to handle Integer.MIN_VALUE and throw
        ArithmeticException for negative exponents to a fraction of zero.
      </action>
      <action dev="aherbert" type="fix" issue="NUMBERS-147" due-to="Alex Herbert">
        Fixed Fraction/BigFraction from(double, int) to support Integer.MIN_VALUE as max denominator.
      </action>
    </release>

    <release version="1.0-beta1" date="2020-04-08" description="
This is a beta release of Apache Commons Numbers. No guarantees are
made regarding the stability of the API or compatibility with future
releases.

Contains the following library modules:
  commons-numbers-angle;
  commons-numbers-arrays;
  commons-numbers-combinatorics;
  commons-numbers-complex;
  commons-numbers-core;
  commons-numbers-field;
  commons-numbers-fraction;
  commons-numbers-gamma;
  commons-numbers-primes;
  commons-numbers-quaternion;
  commons-numbers-rootfinder.

Requires Java 8.
">
    </release>

  </body>
</document>
