<?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/2.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/changes/2.0.0 https://maven.apache.org/xsd/changes-2.0.0.xsd">
  <properties>
    <title>Apache Commons Numbers Release Notes</title>
  </properties>
  <body>

    <release version="1.3" date="2026-04-20" description="
New features, updates and bug fixes.
">
      <action dev="aherbert" type="add">
        "DD": Allow creation from an unsigned int or long value.
      </action>
      <action dev="aherbert" type="add" issue="NUMBERS-208">
        "Selection": Add support for selection from a long array.
      </action>
      <action dev="erans" type="fix" issue="NUMBERS-207" due-to="Richard Mullender">
        Bug in "compareTo" method of classes "Fraction" and "BigFraction" (when the two
        values are negative).
      </action>
    </release>

    <release version="1.2" date="2024-08-12" description="
New features, updates and bug fixes.
">
      <action dev="aherbert" type="add" issue="NUMBERS-206">
        "Selection": Add selection of the k-th ordered element from an array.
      </action>
      <action dev="aherbert" type="update" due-to="Matthias Langer">
        "ArithmeticUtils": Improve performance of GCD for longs.
      </action>
      <action dev="aherbert" type="update" due-to="Sebb, Alex Herbert">
        "ArithmeticUtils": Improve performance of remainderUnsigned and divideUnsigned.
      </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>
