mirror of
https://github.com/boostorg/math.git
synced 2026-01-19 04:22:09 +00:00
Handle issue 1255 and update docs
This commit is contained in:
24
README.md
24
README.md
@@ -3,10 +3,11 @@ Boost Math Library
|
|||||||
|
|
||||||
>ANNOUNCEMENT: This library requires a compliant C++14 compiler.
|
>ANNOUNCEMENT: This library requires a compliant C++14 compiler.
|
||||||
|
|
||||||
|
|
||||||
| | Master | Develop |
|
| | Master | Develop |
|
||||||
|------------------|----------|-------------|
|
|------------------|----------|-------------|
|
||||||
| Drone | [](https://drone.cpp.al/boostorg/math) | [](https://drone.cpp.al/boostorg/math) |
|
| Drone | [](https://drone.cpp.al/boostorg/math) | [](https://drone.cpp.al/boostorg/math) |
|
||||||
| Github Actions | [](https://github.com/boostorg/math/actions) | [](https://github.com/boostorg/math/actions) |
|
| Github Actions | [](https://github.com/boostorg/math/actions?query=branch%3Amaster) | [](https://github.com/boostorg/math/actions?query=branch%3Adevelop) |
|
||||||
| Codecov | [](https://codecov.io/gh/boostorg/math/branch/master) | [](https://codecov.io/gh/boostorg/math/branch/develop) |
|
| Codecov | [](https://codecov.io/gh/boostorg/math/branch/master) | [](https://codecov.io/gh/boostorg/math/branch/develop) |
|
||||||
|
|
||||||
|
|
||||||
@@ -26,11 +27,11 @@ Utility functions for dealing with floating point arithmetic, includes functions
|
|||||||
|
|
||||||
### Specific Width Floating Point Types
|
### Specific Width Floating Point Types
|
||||||
|
|
||||||
A set of typedefs similar to those provided by `<cstdint>` but for floating point types.
|
A set of `typedef`s similar to those provided by C++20's `<stdfloat>` but in `namespace boost`.
|
||||||
|
|
||||||
### Mathematical Constants
|
### Mathematical Constants
|
||||||
|
|
||||||
A wide range of constants ranging from various multiples of π, fractions, Euler's constant, etc.
|
A wide range of constants ranging from fractions to various multiples of $\pi$, Euler's constant, etc.
|
||||||
|
|
||||||
These are of course usable from template code, or as non-templates with a simplified interface if that is more appropriate.
|
These are of course usable from template code, or as non-templates with a simplified interface if that is more appropriate.
|
||||||
|
|
||||||
@@ -100,12 +101,12 @@ The full documentation is available on [boost.org](http://www.boost.org/doc/libs
|
|||||||
|
|
||||||
### Standalone Mode
|
### Standalone Mode
|
||||||
|
|
||||||
Defining BOOST_MATH_STANDALONE allows Boost.Math to be used without any Boost dependencies.
|
Defining `BOOST_MATH_STANDALONE` allows Boost.Math to be used without any Boost dependencies.
|
||||||
Some functionality is reduced in this mode. A static_assert message will alert you
|
Some functionality is reduced in this mode. A static_assert message will alert you
|
||||||
if a particular feature has been disabled by standalone mode. Standalone mode is not designed to
|
if a particular feature has been disabled by standalone mode. Standalone mode is not designed to
|
||||||
be used with the rest of boost, and may result in compiler errors.
|
be used with the rest of boost, and may result in compiler errors.
|
||||||
|
|
||||||
## Supported Compilers ##
|
## Supported Compilers
|
||||||
|
|
||||||
The following compilers are tested with the CI system, and are known to work.
|
The following compilers are tested with the CI system, and are known to work.
|
||||||
Currently a compiler that is fully compliant with C++14 is required to use Boost.Math.
|
Currently a compiler that is fully compliant with C++14 is required to use Boost.Math.
|
||||||
@@ -114,7 +115,7 @@ Currently a compiler that is fully compliant with C++14 is required to use Boost
|
|||||||
* clang++ 5 or later
|
* clang++ 5 or later
|
||||||
* Visual Studio 2015 (14.0) or later
|
* Visual Studio 2015 (14.0) or later
|
||||||
|
|
||||||
## Support, bugs and feature requests ##
|
## Support, bugs and feature requests
|
||||||
|
|
||||||
Bugs and feature requests can be reported through the [GitHub issue tracker](https://github.com/boostorg/math/issues)
|
Bugs and feature requests can be reported through the [GitHub issue tracker](https://github.com/boostorg/math/issues)
|
||||||
(see [open issues](https://github.com/boostorg/math/issues) and
|
(see [open issues](https://github.com/boostorg/math/issues) and
|
||||||
@@ -125,7 +126,7 @@ You can submit your changes through a [pull request](https://github.com/boostorg
|
|||||||
There is no mailing-list specific to Boost Math, although you can use the general-purpose Boost [mailing-list](http://lists.boost.org/mailman/listinfo.cgi/boost-users) using the tag [math].
|
There is no mailing-list specific to Boost Math, although you can use the general-purpose Boost [mailing-list](http://lists.boost.org/mailman/listinfo.cgi/boost-users) using the tag [math].
|
||||||
|
|
||||||
|
|
||||||
## Development ##
|
## Development
|
||||||
|
|
||||||
Clone the whole boost project, which includes the individual Boost projects as submodules ([see boost+git doc](https://github.com/boostorg/boost/wiki/Getting-Started)):
|
Clone the whole boost project, which includes the individual Boost projects as submodules ([see boost+git doc](https://github.com/boostorg/boost/wiki/Getting-Started)):
|
||||||
|
|
||||||
@@ -135,7 +136,8 @@ Clone the whole boost project, which includes the individual Boost projects as s
|
|||||||
|
|
||||||
The Boost Math Library is located in `libs/math/`.
|
The Boost Math Library is located in `libs/math/`.
|
||||||
|
|
||||||
### Running tests ###
|
### Running tests
|
||||||
|
|
||||||
First, make sure you are in `libs/math/test`.
|
First, make sure you are in `libs/math/test`.
|
||||||
You can either run all the tests listed in `Jamfile.v2` or run a single test:
|
You can either run all the tests listed in `Jamfile.v2` or run a single test:
|
||||||
|
|
||||||
@@ -144,7 +146,8 @@ You can either run all the tests listed in `Jamfile.v2` or run a single test:
|
|||||||
test$ # A more advanced syntax, demoing various options for building the tests:
|
test$ # A more advanced syntax, demoing various options for building the tests:
|
||||||
test$ ../../../b2 -a -j2 -q --reconfigure toolset=clang cxxflags="--std=c++14 -fsanitize=address -fsanitize=undefined" linkflags="-fsanitize=undefined -fsanitize=address"
|
test$ ../../../b2 -a -j2 -q --reconfigure toolset=clang cxxflags="--std=c++14 -fsanitize=address -fsanitize=undefined" linkflags="-fsanitize=undefined -fsanitize=address"
|
||||||
|
|
||||||
### Continuous Integration ###
|
### Continuous Integration
|
||||||
|
|
||||||
The default action for a PR or commit to a PR is for CI to run the full complement of tests. The following can be appended to the end of a commit message to modify behavior:
|
The default action for a PR or commit to a PR is for CI to run the full complement of tests. The following can be appended to the end of a commit message to modify behavior:
|
||||||
|
|
||||||
* [ci skip] to skip all tests
|
* [ci skip] to skip all tests
|
||||||
@@ -153,7 +156,8 @@ The default action for a PR or commit to a PR is for CI to run the full compleme
|
|||||||
* [windows] to test MSVC-14.0, MSVC-14.2, MSVC-14.3, CYGWIN, and mingw on the latest version of Windows.
|
* [windows] to test MSVC-14.0, MSVC-14.2, MSVC-14.3, CYGWIN, and mingw on the latest version of Windows.
|
||||||
* [standalone] to run standalone mode compile tests
|
* [standalone] to run standalone mode compile tests
|
||||||
|
|
||||||
### Building documentation ###
|
|
||||||
|
### Building documentation
|
||||||
|
|
||||||
Full instructions can be found [here](https://svn.boost.org/trac10/wiki/BoostDocs/GettingStarted), but to reiterate slightly:
|
Full instructions can be found [here](https://svn.boost.org/trac10/wiki/BoostDocs/GettingStarted), but to reiterate slightly:
|
||||||
|
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ BOOST_MATH_GPU_ENABLED T bessel_yn(int n, T x, const Policy& pol)
|
|||||||
value = bessel_yn_small_z(n, x, &scale, pol);
|
value = bessel_yn_small_z(n, x, &scale, pol);
|
||||||
if (tools::max_value<T>() * fabs(scale) < fabs(value))
|
if (tools::max_value<T>() * fabs(scale) < fabs(value))
|
||||||
return boost::math::sign(scale) * boost::math::sign(value) * policies::raise_overflow_error<T>(function, nullptr, pol);
|
return boost::math::sign(scale) * boost::math::sign(value) * policies::raise_overflow_error<T>(function, nullptr, pol);
|
||||||
value /= scale;
|
value = (factor * value) / scale;
|
||||||
}
|
}
|
||||||
else if(asymptotic_bessel_large_x_limit(n, x))
|
else if(asymptotic_bessel_large_x_limit(n, x))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -194,6 +194,7 @@ test-suite special_fun :
|
|||||||
[ run git_issue_1139.cpp ]
|
[ run git_issue_1139.cpp ]
|
||||||
[ run git_issue_1175.cpp ]
|
[ run git_issue_1175.cpp ]
|
||||||
[ run git_issue_1194.cpp ]
|
[ run git_issue_1194.cpp ]
|
||||||
|
[ run git_issue_1255.cpp ]
|
||||||
[ run special_functions_test.cpp /boost/test//boost_unit_test_framework ]
|
[ run special_functions_test.cpp /boost/test//boost_unit_test_framework ]
|
||||||
[ run test_airy.cpp test_instances//test_instances pch_light /boost/test//boost_unit_test_framework ]
|
[ run test_airy.cpp test_instances//test_instances pch_light /boost/test//boost_unit_test_framework ]
|
||||||
[ run test_bessel_j.cpp test_instances//test_instances pch_light /boost/test//boost_unit_test_framework ]
|
[ run test_bessel_j.cpp test_instances//test_instances pch_light /boost/test//boost_unit_test_framework ]
|
||||||
|
|||||||
30
test/git_issue_1255.cpp
Normal file
30
test/git_issue_1255.cpp
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
// (C) Copyright Christopher Kormanyos 2025.
|
||||||
|
// Use, modification and distribution are subject to the
|
||||||
|
// Boost Software License, Version 1.0. (See accompanying file
|
||||||
|
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
|
||||||
|
#include <boost/core/lightweight_test.hpp>
|
||||||
|
#include <boost/math/special_functions/bessel.hpp>
|
||||||
|
|
||||||
|
#include <cmath>
|
||||||
|
#include <limits>
|
||||||
|
|
||||||
|
auto main() -> int
|
||||||
|
{
|
||||||
|
using float_type = float;
|
||||||
|
|
||||||
|
const float_type x { 0x1.03ebbp-128F };
|
||||||
|
|
||||||
|
const float_type ctrl { 0x1.41085ep+127F };
|
||||||
|
|
||||||
|
const float_type result = ::boost::math::cyl_neumann(-1, x);
|
||||||
|
|
||||||
|
const float_type tol = std::numeric_limits<float_type>::epsilon() * 16;
|
||||||
|
|
||||||
|
using std::fabs;
|
||||||
|
|
||||||
|
BOOST_TEST(result > 0);
|
||||||
|
BOOST_TEST(fabs(1 - (result / ctrl)) < tol);
|
||||||
|
|
||||||
|
return boost::report_errors();
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user