Skip to content

Commit 054214c

Browse files
committed
Merge remote-tracking branch 'upstream/concepts' into concepts
2 parents 1fb3a58 + 7fa561d commit 054214c

File tree

2 files changed

+17
-15
lines changed

2 files changed

+17
-15
lines changed

include/boost/math/special_functions/log1p.hpp

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include <boost/math/special_functions/math_fwd.hpp>
2424
#include <boost/math/tools/assert.hpp>
2525
#include <boost/math/special_functions/fpclassify.hpp>
26+
#include <boost/math/concepts/concepts.hpp>
2627

2728
#if defined(__GNUC__) && defined(BOOST_MATH_USE_FLOAT128)
2829
//
@@ -293,7 +294,7 @@ const typename log1p_initializer<T, Policy, tag>::init log1p_initializer<T, Poli
293294

294295
} // namespace detail
295296

296-
template <class T, class Policy>
297+
template <BOOST_MATH_ARBITRARY_REAL T, BOOST_MATH_POLICY Policy>
297298
inline typename tools::promote_args<T>::type log1p(T x, const Policy&)
298299
{
299300
typedef typename tools::promote_args<T>::type result_type;
@@ -327,7 +328,7 @@ inline typename tools::promote_args<T>::type log1p(T x, const Policy&)
327328

328329
#if defined(BOOST_HAS_LOG1P) && !(defined(__osf__) && defined(__DECCXX_VER))
329330
# ifdef BOOST_MATH_USE_C99
330-
template <class Policy>
331+
template <BOOST_MATH_POLICY Policy>
331332
inline float log1p(float x, const Policy& pol)
332333
{
333334
if(x < -1)
@@ -339,7 +340,7 @@ inline float log1p(float x, const Policy& pol)
339340
return ::log1pf(x);
340341
}
341342
#ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
342-
template <class Policy>
343+
template <BOOST_MATH_POLICY Policy>
343344
inline long double log1p(long double x, const Policy& pol)
344345
{
345346
if(x < -1)
@@ -352,7 +353,7 @@ inline long double log1p(long double x, const Policy& pol)
352353
}
353354
#endif
354355
#else
355-
template <class Policy>
356+
template <BOOST_MATH_POLICY Policy>
356357
inline float log1p(float x, const Policy& pol)
357358
{
358359
if(x < -1)
@@ -364,7 +365,7 @@ inline float log1p(float x, const Policy& pol)
364365
return ::log1p(x);
365366
}
366367
#endif
367-
template <class Policy>
368+
template <BOOST_MATH_POLICY Policy>
368369
inline double log1p(double x, const Policy& pol)
369370
{
370371
if(x < -1)
@@ -381,7 +382,7 @@ inline double log1p(double x, const Policy& pol)
381382
// that your compilers optimizer won't mess this code up!!
382383
// Currently tested with VC8 and Intel 9.1.
383384
//
384-
template <class Policy>
385+
template <BOOST_MATH_POLICY Policy>
385386
inline double log1p(double x, const Policy& pol)
386387
{
387388
if(x < -1)
@@ -396,7 +397,7 @@ inline double log1p(double x, const Policy& pol)
396397
else
397398
return ::log(u)*(x/(u-1.0));
398399
}
399-
template <class Policy>
400+
template <BOOST_MATH_POLICY Policy>
400401
inline float log1p(float x, const Policy& pol)
401402
{
402403
return static_cast<float>(boost::math::log1p(static_cast<double>(x), pol));
@@ -406,7 +407,7 @@ inline float log1p(float x, const Policy& pol)
406407
// For some reason this fails to compile under WinCE...
407408
// Needs more investigation.
408409
//
409-
template <class Policy>
410+
template <BOOST_MATH_POLICY Policy>
410411
inline long double log1p(long double x, const Policy& pol)
411412
{
412413
if(x < -1)
@@ -424,15 +425,15 @@ inline long double log1p(long double x, const Policy& pol)
424425
#endif
425426
#endif
426427

427-
template <class T>
428+
template <BOOST_MATH_ARBITRARY_REAL T>
428429
inline typename tools::promote_args<T>::type log1p(T x)
429430
{
430431
return boost::math::log1p(x, policies::policy<>());
431432
}
432433
//
433434
// Compute log(1+x)-x:
434435
//
435-
template <class T, class Policy>
436+
template <BOOST_MATH_ARBITRARY_REAL T, BOOST_MATH_POLICY Policy>
436437
inline typename tools::promote_args<T>::type
437438
log1pmx(T x, const Policy& pol)
438439
{
@@ -464,7 +465,7 @@ inline typename tools::promote_args<T>::type
464465
return result;
465466
}
466467

467-
template <class T>
468+
template <BOOST_MATH_ARBITRARY_REAL T>
468469
inline typename tools::promote_args<T>::type log1pmx(T x)
469470
{
470471
return log1pmx(x, policies::policy<>());

include/boost/math/special_functions/math_fwd.hpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#include <boost/math/special_functions/detail/round_fwd.hpp>
3030
#include <boost/math/tools/promotion.hpp> // for argument promotion.
3131
#include <boost/math/policies/policy.hpp>
32+
#include <boost/math/concepts/concepts.hpp>
3233

3334
#define BOOST_NO_MACRO_EXPAND /**/
3435

@@ -567,17 +568,17 @@ namespace boost
567568
typename tools::promote_args<RT>::type cbrt(RT z, const Policy&);
568569

569570
// log1p is log(x + 1)
570-
template <class T>
571+
template <BOOST_MATH_ARBITRARY_REAL T>
571572
typename tools::promote_args<T>::type log1p(T);
572573

573-
template <class T, class Policy>
574+
template <BOOST_MATH_ARBITRARY_REAL T, BOOST_MATH_POLICY Policy>
574575
typename tools::promote_args<T>::type log1p(T, const Policy&);
575576

576577
// log1pmx is log(x + 1) - x
577-
template <class T>
578+
template <BOOST_MATH_ARBITRARY_REAL T>
578579
typename tools::promote_args<T>::type log1pmx(T);
579580

580-
template <class T, class Policy>
581+
template <BOOST_MATH_ARBITRARY_REAL T, BOOST_MATH_POLICY Policy>
581582
typename tools::promote_args<T>::type log1pmx(T, const Policy&);
582583

583584
// Exp (x) minus 1 functions.

0 commit comments

Comments
 (0)