1122 lines · plain
1// Copyright John Maddock 2008.2// Use, modification and distribution are subject to the3// Boost Software License, Version 1.0.4// (See accompanying file LICENSE_1_0.txt5// or copy at http://www.boost.org/LICENSE_1_0.txt)6 7#ifndef BOOST_MATH_TR1_HPP8#define BOOST_MATH_TR1_HPP9 10#ifdef _MSC_VER11#pragma once12#endif13 14#include <math.h> // So we can check which std C lib we're using15 16#ifdef __cplusplus17 18#include <boost/math/tools/is_standalone.hpp>19#include <boost/math/tools/assert.hpp>20 21namespace boost{ namespace math{ namespace tr1{ extern "C"{22 23#endif // __cplusplus24 25#ifndef BOOST_MATH_PREVENT_MACRO_SUBSTITUTION26#define BOOST_MATH_PREVENT_MACRO_SUBSTITUTION /**/27#endif28 29// we need to import/export our code only if the user has specifically30// asked for it by defining either BOOST_ALL_DYN_LINK if they want all boost31// libraries to be dynamically linked, or BOOST_MATH_TR1_DYN_LINK32// if they want just this one to be dynamically liked:33#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_MATH_TR1_DYN_LINK)34// export if this is our own source, otherwise import:35#ifdef BOOST_MATH_TR1_SOURCE36# define BOOST_MATH_TR1_DECL BOOST_SYMBOL_EXPORT37#else38# define BOOST_MATH_TR1_DECL BOOST_SYMBOL_IMPORT39#endif // BOOST_MATH_TR1_SOURCE40#else41# define BOOST_MATH_TR1_DECL42#endif // DYN_LINK43//44// Set any throw specifications on the C99 extern "C" functions - these have to be45// the same as used in the std lib if any.46//47#if defined(__GLIBC__) && defined(__THROW)48# define BOOST_MATH_C99_THROW_SPEC __THROW49#else50# define BOOST_MATH_C99_THROW_SPEC51#endif52 53//54// Now set up the libraries to link against:55// Not compatible with standalone mode56//57#ifndef BOOST_MATH_STANDALONE58#include <boost/config.hpp>59#if !defined(BOOST_MATH_TR1_NO_LIB) && !defined(BOOST_MATH_TR1_SOURCE) \60 && !defined(BOOST_ALL_NO_LIB) && defined(__cplusplus)61# define BOOST_LIB_NAME boost_math_c9962# if defined(BOOST_MATH_TR1_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)63# define BOOST_DYN_LINK64# endif65# include <boost/config/auto_link.hpp>66#endif67#if !defined(BOOST_MATH_TR1_NO_LIB) && !defined(BOOST_MATH_TR1_SOURCE) \68 && !defined(BOOST_ALL_NO_LIB) && defined(__cplusplus)69# define BOOST_LIB_NAME boost_math_c99f70# if defined(BOOST_MATH_TR1_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)71# define BOOST_DYN_LINK72# endif73# include <boost/config/auto_link.hpp>74#endif75#if !defined(BOOST_MATH_TR1_NO_LIB) && !defined(BOOST_MATH_TR1_SOURCE) \76 && !defined(BOOST_ALL_NO_LIB) && defined(__cplusplus) \77 && !defined(BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS)78# define BOOST_LIB_NAME boost_math_c99l79# if defined(BOOST_MATH_TR1_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)80# define BOOST_DYN_LINK81# endif82# include <boost/config/auto_link.hpp>83#endif84#if !defined(BOOST_MATH_TR1_NO_LIB) && !defined(BOOST_MATH_TR1_SOURCE) \85 && !defined(BOOST_ALL_NO_LIB) && defined(__cplusplus)86# define BOOST_LIB_NAME boost_math_tr187# if defined(BOOST_MATH_TR1_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)88# define BOOST_DYN_LINK89# endif90# include <boost/config/auto_link.hpp>91#endif92#if !defined(BOOST_MATH_TR1_NO_LIB) && !defined(BOOST_MATH_TR1_SOURCE) \93 && !defined(BOOST_ALL_NO_LIB) && defined(__cplusplus)94# define BOOST_LIB_NAME boost_math_tr1f95# if defined(BOOST_MATH_TR1_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)96# define BOOST_DYN_LINK97# endif98# include <boost/config/auto_link.hpp>99#endif100#if !defined(BOOST_MATH_TR1_NO_LIB) && !defined(BOOST_MATH_TR1_SOURCE) \101 && !defined(BOOST_ALL_NO_LIB) && defined(__cplusplus) \102 && !defined(BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS)103# define BOOST_LIB_NAME boost_math_tr1l104# if defined(BOOST_MATH_TR1_DYN_LINK) || defined(BOOST_ALL_DYN_LINK)105# define BOOST_DYN_LINK106# endif107# include <boost/config/auto_link.hpp>108#endif109#else // Standalone mode110# if defined(_MSC_VER) && !defined(BOOST_ALL_NO_LIB)111# pragma message("Auto linking of TR1 is not supported in standalone mode")112# endif113#endif // BOOST_MATH_STANDALONE114 115#if !(defined(__INTEL_COMPILER) && defined(__APPLE__)) && !(defined(__FLT_EVAL_METHOD__) && !defined(__cplusplus))116#if !defined(FLT_EVAL_METHOD)117typedef float float_t;118typedef double double_t;119#elif FLT_EVAL_METHOD == -1120typedef float float_t;121typedef double double_t;122#elif FLT_EVAL_METHOD == 0123typedef float float_t;124typedef double double_t;125#elif FLT_EVAL_METHOD == 1126typedef double float_t;127typedef double double_t;128#else129typedef long double float_t;130typedef long double double_t;131#endif132#endif133 134// C99 Functions:135double BOOST_MATH_TR1_DECL boost_acosh BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x) BOOST_MATH_C99_THROW_SPEC;136float BOOST_MATH_TR1_DECL boost_acoshf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x) BOOST_MATH_C99_THROW_SPEC;137long double BOOST_MATH_TR1_DECL boost_acoshl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x) BOOST_MATH_C99_THROW_SPEC;138 139double BOOST_MATH_TR1_DECL boost_asinh BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x) BOOST_MATH_C99_THROW_SPEC;140float BOOST_MATH_TR1_DECL boost_asinhf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x) BOOST_MATH_C99_THROW_SPEC;141long double BOOST_MATH_TR1_DECL boost_asinhl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x) BOOST_MATH_C99_THROW_SPEC;142 143double BOOST_MATH_TR1_DECL boost_atanh BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x) BOOST_MATH_C99_THROW_SPEC;144float BOOST_MATH_TR1_DECL boost_atanhf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x) BOOST_MATH_C99_THROW_SPEC;145long double BOOST_MATH_TR1_DECL boost_atanhl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x) BOOST_MATH_C99_THROW_SPEC;146 147double BOOST_MATH_TR1_DECL boost_cbrt BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x) BOOST_MATH_C99_THROW_SPEC;148float BOOST_MATH_TR1_DECL boost_cbrtf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x) BOOST_MATH_C99_THROW_SPEC;149long double BOOST_MATH_TR1_DECL boost_cbrtl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x) BOOST_MATH_C99_THROW_SPEC;150 151double BOOST_MATH_TR1_DECL boost_copysign BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x, double y) BOOST_MATH_C99_THROW_SPEC;152float BOOST_MATH_TR1_DECL boost_copysignf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y) BOOST_MATH_C99_THROW_SPEC;153long double BOOST_MATH_TR1_DECL boost_copysignl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y) BOOST_MATH_C99_THROW_SPEC;154 155double BOOST_MATH_TR1_DECL boost_erf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x) BOOST_MATH_C99_THROW_SPEC;156float BOOST_MATH_TR1_DECL boost_erff BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x) BOOST_MATH_C99_THROW_SPEC;157long double BOOST_MATH_TR1_DECL boost_erfl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x) BOOST_MATH_C99_THROW_SPEC;158 159double BOOST_MATH_TR1_DECL boost_erfc BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x) BOOST_MATH_C99_THROW_SPEC;160float BOOST_MATH_TR1_DECL boost_erfcf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x) BOOST_MATH_C99_THROW_SPEC;161long double BOOST_MATH_TR1_DECL boost_erfcl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x) BOOST_MATH_C99_THROW_SPEC;162#if 0163double BOOST_MATH_TR1_DECL boost_exp2 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x) BOOST_MATH_C99_THROW_SPEC;164float BOOST_MATH_TR1_DECL boost_exp2f BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x) BOOST_MATH_C99_THROW_SPEC;165long double BOOST_MATH_TR1_DECL boost_exp2l BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x) BOOST_MATH_C99_THROW_SPEC;166#endif167double BOOST_MATH_TR1_DECL boost_expm1 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x) BOOST_MATH_C99_THROW_SPEC;168float BOOST_MATH_TR1_DECL boost_expm1f BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x) BOOST_MATH_C99_THROW_SPEC;169long double BOOST_MATH_TR1_DECL boost_expm1l BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x) BOOST_MATH_C99_THROW_SPEC;170#if 0171double BOOST_MATH_TR1_DECL boost_fdim BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x, double y) BOOST_MATH_C99_THROW_SPEC;172float BOOST_MATH_TR1_DECL boost_fdimf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y) BOOST_MATH_C99_THROW_SPEC;173long double BOOST_MATH_TR1_DECL boost_fdiml BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y) BOOST_MATH_C99_THROW_SPEC;174double BOOST_MATH_TR1_DECL boost_fma BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x, double y, double z) BOOST_MATH_C99_THROW_SPEC;175float BOOST_MATH_TR1_DECL boost_fmaf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y, float z) BOOST_MATH_C99_THROW_SPEC;176long double BOOST_MATH_TR1_DECL boost_fmal BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y, long double z) BOOST_MATH_C99_THROW_SPEC;177#endif178double BOOST_MATH_TR1_DECL boost_fmax BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x, double y) BOOST_MATH_C99_THROW_SPEC;179float BOOST_MATH_TR1_DECL boost_fmaxf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y) BOOST_MATH_C99_THROW_SPEC;180long double BOOST_MATH_TR1_DECL boost_fmaxl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y) BOOST_MATH_C99_THROW_SPEC;181 182double BOOST_MATH_TR1_DECL boost_fmin BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x, double y) BOOST_MATH_C99_THROW_SPEC;183float BOOST_MATH_TR1_DECL boost_fminf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y) BOOST_MATH_C99_THROW_SPEC;184long double BOOST_MATH_TR1_DECL boost_fminl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y) BOOST_MATH_C99_THROW_SPEC;185 186double BOOST_MATH_TR1_DECL boost_hypot BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x, double y) BOOST_MATH_C99_THROW_SPEC;187float BOOST_MATH_TR1_DECL boost_hypotf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y) BOOST_MATH_C99_THROW_SPEC;188long double BOOST_MATH_TR1_DECL boost_hypotl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y) BOOST_MATH_C99_THROW_SPEC;189#if 0190int BOOST_MATH_TR1_DECL boost_ilogb BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x) BOOST_MATH_C99_THROW_SPEC;191int BOOST_MATH_TR1_DECL boost_ilogbf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x) BOOST_MATH_C99_THROW_SPEC;192int BOOST_MATH_TR1_DECL boost_ilogbl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x) BOOST_MATH_C99_THROW_SPEC;193#endif194double BOOST_MATH_TR1_DECL boost_lgamma BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x) BOOST_MATH_C99_THROW_SPEC;195float BOOST_MATH_TR1_DECL boost_lgammaf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x) BOOST_MATH_C99_THROW_SPEC;196long double BOOST_MATH_TR1_DECL boost_lgammal BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x) BOOST_MATH_C99_THROW_SPEC;197 198long long BOOST_MATH_TR1_DECL boost_llround BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x) BOOST_MATH_C99_THROW_SPEC;199long long BOOST_MATH_TR1_DECL boost_llroundf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x) BOOST_MATH_C99_THROW_SPEC;200long long BOOST_MATH_TR1_DECL boost_llroundl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x) BOOST_MATH_C99_THROW_SPEC;201 202double BOOST_MATH_TR1_DECL boost_log1p BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x) BOOST_MATH_C99_THROW_SPEC;203float BOOST_MATH_TR1_DECL boost_log1pf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x) BOOST_MATH_C99_THROW_SPEC;204long double BOOST_MATH_TR1_DECL boost_log1pl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x) BOOST_MATH_C99_THROW_SPEC;205#if 0206double BOOST_MATH_TR1_DECL log2 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x) BOOST_MATH_C99_THROW_SPEC;207float BOOST_MATH_TR1_DECL log2f BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x) BOOST_MATH_C99_THROW_SPEC;208long double BOOST_MATH_TR1_DECL log2l BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x) BOOST_MATH_C99_THROW_SPEC;209 210double BOOST_MATH_TR1_DECL logb BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x) BOOST_MATH_C99_THROW_SPEC;211float BOOST_MATH_TR1_DECL logbf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x) BOOST_MATH_C99_THROW_SPEC;212long double BOOST_MATH_TR1_DECL logbl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x) BOOST_MATH_C99_THROW_SPEC;213long BOOST_MATH_TR1_DECL lrint BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x) BOOST_MATH_C99_THROW_SPEC;214long BOOST_MATH_TR1_DECL lrintf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x) BOOST_MATH_C99_THROW_SPEC;215long BOOST_MATH_TR1_DECL lrintl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x) BOOST_MATH_C99_THROW_SPEC;216#endif217long BOOST_MATH_TR1_DECL boost_lround BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x) BOOST_MATH_C99_THROW_SPEC;218long BOOST_MATH_TR1_DECL boost_lroundf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x) BOOST_MATH_C99_THROW_SPEC;219long BOOST_MATH_TR1_DECL boost_lroundl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x) BOOST_MATH_C99_THROW_SPEC;220#if 0221double BOOST_MATH_TR1_DECL nan BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(const char *str) BOOST_MATH_C99_THROW_SPEC;222float BOOST_MATH_TR1_DECL nanf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(const char *str) BOOST_MATH_C99_THROW_SPEC;223long double BOOST_MATH_TR1_DECL nanl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(const char *str) BOOST_MATH_C99_THROW_SPEC;224double BOOST_MATH_TR1_DECL nearbyint BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x) BOOST_MATH_C99_THROW_SPEC;225float BOOST_MATH_TR1_DECL nearbyintf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x) BOOST_MATH_C99_THROW_SPEC;226long double BOOST_MATH_TR1_DECL nearbyintl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x) BOOST_MATH_C99_THROW_SPEC;227#endif228double BOOST_MATH_TR1_DECL boost_nextafter BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x, double y) BOOST_MATH_C99_THROW_SPEC;229float BOOST_MATH_TR1_DECL boost_nextafterf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y) BOOST_MATH_C99_THROW_SPEC;230long double BOOST_MATH_TR1_DECL boost_nextafterl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y) BOOST_MATH_C99_THROW_SPEC;231 232double BOOST_MATH_TR1_DECL boost_nexttoward BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x, long double y) BOOST_MATH_C99_THROW_SPEC;233float BOOST_MATH_TR1_DECL boost_nexttowardf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, long double y) BOOST_MATH_C99_THROW_SPEC;234long double BOOST_MATH_TR1_DECL boost_nexttowardl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y) BOOST_MATH_C99_THROW_SPEC;235#if 0236double BOOST_MATH_TR1_DECL boost_remainder BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x, double y) BOOST_MATH_C99_THROW_SPEC;237float BOOST_MATH_TR1_DECL boost_remainderf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y) BOOST_MATH_C99_THROW_SPEC;238long double BOOST_MATH_TR1_DECL boost_remainderl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y) BOOST_MATH_C99_THROW_SPEC;239double BOOST_MATH_TR1_DECL boost_remquo BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x, double y, int *pquo) BOOST_MATH_C99_THROW_SPEC;240float BOOST_MATH_TR1_DECL boost_remquof BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y, int *pquo) BOOST_MATH_C99_THROW_SPEC;241long double BOOST_MATH_TR1_DECL boost_remquol BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y, int *pquo) BOOST_MATH_C99_THROW_SPEC;242double BOOST_MATH_TR1_DECL boost_rint BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x) BOOST_MATH_C99_THROW_SPEC;243float BOOST_MATH_TR1_DECL boost_rintf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x) BOOST_MATH_C99_THROW_SPEC;244long double BOOST_MATH_TR1_DECL boost_rintl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x) BOOST_MATH_C99_THROW_SPEC;245#endif246double BOOST_MATH_TR1_DECL boost_round BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x) BOOST_MATH_C99_THROW_SPEC;247float BOOST_MATH_TR1_DECL boost_roundf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x) BOOST_MATH_C99_THROW_SPEC;248long double BOOST_MATH_TR1_DECL boost_roundl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x) BOOST_MATH_C99_THROW_SPEC;249#if 0250double BOOST_MATH_TR1_DECL boost_scalbln BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x, long ex) BOOST_MATH_C99_THROW_SPEC;251float BOOST_MATH_TR1_DECL boost_scalblnf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, long ex) BOOST_MATH_C99_THROW_SPEC;252long double BOOST_MATH_TR1_DECL boost_scalblnl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long ex) BOOST_MATH_C99_THROW_SPEC;253double BOOST_MATH_TR1_DECL boost_scalbn BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x, int ex) BOOST_MATH_C99_THROW_SPEC;254float BOOST_MATH_TR1_DECL boost_scalbnf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, int ex) BOOST_MATH_C99_THROW_SPEC;255long double BOOST_MATH_TR1_DECL boost_scalbnl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, int ex) BOOST_MATH_C99_THROW_SPEC;256#endif257double BOOST_MATH_TR1_DECL boost_tgamma BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x) BOOST_MATH_C99_THROW_SPEC;258float BOOST_MATH_TR1_DECL boost_tgammaf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x) BOOST_MATH_C99_THROW_SPEC;259long double BOOST_MATH_TR1_DECL boost_tgammal BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x) BOOST_MATH_C99_THROW_SPEC;260 261double BOOST_MATH_TR1_DECL boost_trunc BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x) BOOST_MATH_C99_THROW_SPEC;262float BOOST_MATH_TR1_DECL boost_truncf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x) BOOST_MATH_C99_THROW_SPEC;263long double BOOST_MATH_TR1_DECL boost_truncl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x) BOOST_MATH_C99_THROW_SPEC;264 265// [5.2.1.1] associated Laguerre polynomials:266double BOOST_MATH_TR1_DECL boost_assoc_laguerre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, unsigned m, double x) BOOST_MATH_C99_THROW_SPEC;267float BOOST_MATH_TR1_DECL boost_assoc_laguerref BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, unsigned m, float x) BOOST_MATH_C99_THROW_SPEC;268long double BOOST_MATH_TR1_DECL boost_assoc_laguerrel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, unsigned m, long double x) BOOST_MATH_C99_THROW_SPEC;269 270// [5.2.1.2] associated Legendre functions:271double BOOST_MATH_TR1_DECL boost_assoc_legendre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, double x) BOOST_MATH_C99_THROW_SPEC;272float BOOST_MATH_TR1_DECL boost_assoc_legendref BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, float x) BOOST_MATH_C99_THROW_SPEC;273long double BOOST_MATH_TR1_DECL boost_assoc_legendrel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, long double x) BOOST_MATH_C99_THROW_SPEC;274 275// [5.2.1.3] beta function:276double BOOST_MATH_TR1_DECL boost_beta BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x, double y) BOOST_MATH_C99_THROW_SPEC;277float BOOST_MATH_TR1_DECL boost_betaf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y) BOOST_MATH_C99_THROW_SPEC;278long double BOOST_MATH_TR1_DECL boost_betal BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y) BOOST_MATH_C99_THROW_SPEC;279 280// [5.2.1.4] (complete) elliptic integral of the first kind:281double BOOST_MATH_TR1_DECL boost_comp_ellint_1 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double k) BOOST_MATH_C99_THROW_SPEC;282float BOOST_MATH_TR1_DECL boost_comp_ellint_1f BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float k) BOOST_MATH_C99_THROW_SPEC;283long double BOOST_MATH_TR1_DECL boost_comp_ellint_1l BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double k) BOOST_MATH_C99_THROW_SPEC;284 285// [5.2.1.5] (complete) elliptic integral of the second kind:286double BOOST_MATH_TR1_DECL boost_comp_ellint_2 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double k) BOOST_MATH_C99_THROW_SPEC;287float BOOST_MATH_TR1_DECL boost_comp_ellint_2f BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float k) BOOST_MATH_C99_THROW_SPEC;288long double BOOST_MATH_TR1_DECL boost_comp_ellint_2l BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double k) BOOST_MATH_C99_THROW_SPEC;289 290// [5.2.1.6] (complete) elliptic integral of the third kind:291double BOOST_MATH_TR1_DECL boost_comp_ellint_3 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double k, double nu) BOOST_MATH_C99_THROW_SPEC;292float BOOST_MATH_TR1_DECL boost_comp_ellint_3f BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float k, float nu) BOOST_MATH_C99_THROW_SPEC;293long double BOOST_MATH_TR1_DECL boost_comp_ellint_3l BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double k, long double nu) BOOST_MATH_C99_THROW_SPEC;294#if 0295// [5.2.1.7] confluent hypergeometric functions:296double BOOST_MATH_TR1_DECL conf_hyperg BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double a, double c, double x) BOOST_MATH_C99_THROW_SPEC;297float BOOST_MATH_TR1_DECL conf_hypergf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float a, float c, float x) BOOST_MATH_C99_THROW_SPEC;298long double BOOST_MATH_TR1_DECL conf_hypergl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double a, long double c, long double x) BOOST_MATH_C99_THROW_SPEC;299#endif300// [5.2.1.8] regular modified cylindrical Bessel functions:301double BOOST_MATH_TR1_DECL boost_cyl_bessel_i BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double nu, double x) BOOST_MATH_C99_THROW_SPEC;302float BOOST_MATH_TR1_DECL boost_cyl_bessel_if BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float nu, float x) BOOST_MATH_C99_THROW_SPEC;303long double BOOST_MATH_TR1_DECL boost_cyl_bessel_il BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double nu, long double x) BOOST_MATH_C99_THROW_SPEC;304 305// [5.2.1.9] cylindrical Bessel functions (of the first kind):306double BOOST_MATH_TR1_DECL boost_cyl_bessel_j BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double nu, double x) BOOST_MATH_C99_THROW_SPEC;307float BOOST_MATH_TR1_DECL boost_cyl_bessel_jf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float nu, float x) BOOST_MATH_C99_THROW_SPEC;308long double BOOST_MATH_TR1_DECL boost_cyl_bessel_jl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double nu, long double x) BOOST_MATH_C99_THROW_SPEC;309 310// [5.2.1.10] irregular modified cylindrical Bessel functions:311double BOOST_MATH_TR1_DECL boost_cyl_bessel_k BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double nu, double x) BOOST_MATH_C99_THROW_SPEC;312float BOOST_MATH_TR1_DECL boost_cyl_bessel_kf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float nu, float x) BOOST_MATH_C99_THROW_SPEC;313long double BOOST_MATH_TR1_DECL boost_cyl_bessel_kl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double nu, long double x) BOOST_MATH_C99_THROW_SPEC;314 315// [5.2.1.11] cylindrical Neumann functions BOOST_MATH_C99_THROW_SPEC;316// cylindrical Bessel functions (of the second kind):317double BOOST_MATH_TR1_DECL boost_cyl_neumann BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double nu, double x) BOOST_MATH_C99_THROW_SPEC;318float BOOST_MATH_TR1_DECL boost_cyl_neumannf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float nu, float x) BOOST_MATH_C99_THROW_SPEC;319long double BOOST_MATH_TR1_DECL boost_cyl_neumannl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double nu, long double x) BOOST_MATH_C99_THROW_SPEC;320 321// [5.2.1.12] (incomplete) elliptic integral of the first kind:322double BOOST_MATH_TR1_DECL boost_ellint_1 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double k, double phi) BOOST_MATH_C99_THROW_SPEC;323float BOOST_MATH_TR1_DECL boost_ellint_1f BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float k, float phi) BOOST_MATH_C99_THROW_SPEC;324long double BOOST_MATH_TR1_DECL boost_ellint_1l BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double k, long double phi) BOOST_MATH_C99_THROW_SPEC;325 326// [5.2.1.13] (incomplete) elliptic integral of the second kind:327double BOOST_MATH_TR1_DECL boost_ellint_2 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double k, double phi) BOOST_MATH_C99_THROW_SPEC;328float BOOST_MATH_TR1_DECL boost_ellint_2f BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float k, float phi) BOOST_MATH_C99_THROW_SPEC;329long double BOOST_MATH_TR1_DECL boost_ellint_2l BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double k, long double phi) BOOST_MATH_C99_THROW_SPEC;330 331// [5.2.1.14] (incomplete) elliptic integral of the third kind:332double BOOST_MATH_TR1_DECL boost_ellint_3 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double k, double nu, double phi) BOOST_MATH_C99_THROW_SPEC;333float BOOST_MATH_TR1_DECL boost_ellint_3f BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float k, float nu, float phi) BOOST_MATH_C99_THROW_SPEC;334long double BOOST_MATH_TR1_DECL boost_ellint_3l BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double k, long double nu, long double phi) BOOST_MATH_C99_THROW_SPEC;335 336// [5.2.1.15] exponential integral:337double BOOST_MATH_TR1_DECL boost_expint BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x) BOOST_MATH_C99_THROW_SPEC;338float BOOST_MATH_TR1_DECL boost_expintf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x) BOOST_MATH_C99_THROW_SPEC;339long double BOOST_MATH_TR1_DECL boost_expintl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x) BOOST_MATH_C99_THROW_SPEC;340 341// [5.2.1.16] Hermite polynomials:342double BOOST_MATH_TR1_DECL boost_hermite BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, double x) BOOST_MATH_C99_THROW_SPEC;343float BOOST_MATH_TR1_DECL boost_hermitef BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, float x) BOOST_MATH_C99_THROW_SPEC;344long double BOOST_MATH_TR1_DECL boost_hermitel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, long double x) BOOST_MATH_C99_THROW_SPEC;345 346#if 0347// [5.2.1.17] hypergeometric functions:348double BOOST_MATH_TR1_DECL hyperg BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double a, double b, double c, double x) BOOST_MATH_C99_THROW_SPEC;349float BOOST_MATH_TR1_DECL hypergf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float a, float b, float c, float x) BOOST_MATH_C99_THROW_SPEC;350long double BOOST_MATH_TR1_DECL hypergl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double a, long double b, long double c,351long double x) BOOST_MATH_C99_THROW_SPEC;352#endif353 354// [5.2.1.18] Laguerre polynomials:355double BOOST_MATH_TR1_DECL boost_laguerre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, double x) BOOST_MATH_C99_THROW_SPEC;356float BOOST_MATH_TR1_DECL boost_laguerref BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, float x) BOOST_MATH_C99_THROW_SPEC;357long double BOOST_MATH_TR1_DECL boost_laguerrel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, long double x) BOOST_MATH_C99_THROW_SPEC;358 359// [5.2.1.19] Legendre polynomials:360double BOOST_MATH_TR1_DECL boost_legendre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, double x) BOOST_MATH_C99_THROW_SPEC;361float BOOST_MATH_TR1_DECL boost_legendref BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, float x) BOOST_MATH_C99_THROW_SPEC;362long double BOOST_MATH_TR1_DECL boost_legendrel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, long double x) BOOST_MATH_C99_THROW_SPEC;363 364// [5.2.1.20] Riemann zeta function:365double BOOST_MATH_TR1_DECL boost_riemann_zeta BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double) BOOST_MATH_C99_THROW_SPEC;366float BOOST_MATH_TR1_DECL boost_riemann_zetaf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float) BOOST_MATH_C99_THROW_SPEC;367long double BOOST_MATH_TR1_DECL boost_riemann_zetal BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double) BOOST_MATH_C99_THROW_SPEC;368 369// [5.2.1.21] spherical Bessel functions (of the first kind):370double BOOST_MATH_TR1_DECL boost_sph_bessel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, double x) BOOST_MATH_C99_THROW_SPEC;371float BOOST_MATH_TR1_DECL boost_sph_besself BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, float x) BOOST_MATH_C99_THROW_SPEC;372long double BOOST_MATH_TR1_DECL boost_sph_bessell BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, long double x) BOOST_MATH_C99_THROW_SPEC;373 374// [5.2.1.22] spherical associated Legendre functions:375double BOOST_MATH_TR1_DECL boost_sph_legendre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, double theta) BOOST_MATH_C99_THROW_SPEC;376float BOOST_MATH_TR1_DECL boost_sph_legendref BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, float theta) BOOST_MATH_C99_THROW_SPEC;377long double BOOST_MATH_TR1_DECL boost_sph_legendrel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, long double theta) BOOST_MATH_C99_THROW_SPEC;378 379// [5.2.1.23] spherical Neumann functions BOOST_MATH_C99_THROW_SPEC;380// spherical Bessel functions (of the second kind):381double BOOST_MATH_TR1_DECL boost_sph_neumann BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, double x) BOOST_MATH_C99_THROW_SPEC;382float BOOST_MATH_TR1_DECL boost_sph_neumannf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, float x) BOOST_MATH_C99_THROW_SPEC;383long double BOOST_MATH_TR1_DECL boost_sph_neumannl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, long double x) BOOST_MATH_C99_THROW_SPEC;384 385#ifdef __cplusplus386 387}}}} // namespaces388 389#include <boost/math/tools/promotion.hpp>390 391namespace boost{ namespace math{ namespace tr1{392//393// Declare overload of the functions which forward to the394// C interfaces:395//396// C99 Functions:397inline double acosh BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x)398{ return boost::math::tr1::boost_acosh BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }399inline float acoshf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)400{ return boost::math::tr1::boost_acoshf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }401inline long double acoshl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)402{ return boost::math::tr1::boost_acoshl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }403inline float acosh BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)404{ return boost::math::tr1::acoshf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }405inline long double acosh BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)406{ return boost::math::tr1::acoshl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }407template <class T>408inline typename tools::promote_args<T>::type acosh BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T x)409{ return boost::math::tr1::acosh BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(x)); }410 411inline double asinh BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x)412{ return boost::math::tr1::boost_asinh BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }413inline float asinhf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)414{ return boost::math::tr1::boost_asinhf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }415inline long double asinhl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)416{ return boost::math::tr1::boost_asinhl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }417inline float asinh BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)418{ return boost::math::tr1::asinhf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }419inline long double asinh BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)420{ return boost::math::tr1::asinhl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }421template <class T>422inline typename tools::promote_args<T>::type asinh BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T x)423{ return boost::math::tr1::asinh BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(x)); }424 425inline double atanh BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x)426{ return boost::math::tr1::boost_atanh BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }427inline float atanhf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)428{ return boost::math::tr1::boost_atanhf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }429inline long double atanhl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)430{ return boost::math::tr1::boost_atanhl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }431inline float atanh BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)432{ return boost::math::tr1::atanhf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }433inline long double atanh BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)434{ return boost::math::tr1::atanhl(x); }435template <class T>436inline typename tools::promote_args<T>::type atanh BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T x)437{ return boost::math::tr1::atanh BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(x)); }438 439inline double cbrt BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x)440{ return boost::math::tr1::boost_cbrt BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }441inline float cbrtf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)442{ return boost::math::tr1::boost_cbrtf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }443inline long double cbrtl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)444{ return boost::math::tr1::boost_cbrtl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }445inline float cbrt BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)446{ return boost::math::tr1::cbrtf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }447inline long double cbrt BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)448{ return boost::math::tr1::cbrtl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }449template <class T>450inline typename tools::promote_args<T>::type cbrt BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T x)451{ return boost::math::tr1::cbrt BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(x)); }452 453inline double copysign BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x, double y)454{ return boost::math::tr1::boost_copysign BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }455inline float copysignf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y)456{ return boost::math::tr1::boost_copysignf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }457inline long double copysignl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)458{ return boost::math::tr1::boost_copysignl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }459inline float copysign BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y)460{ return boost::math::tr1::copysignf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }461inline long double copysign BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)462{ return boost::math::tr1::copysignl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }463template <class T1, class T2>464inline typename tools::promote_args<T1, T2>::type copysign BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T1 x, T2 y)465{ return boost::math::tr1::copysign BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2>::type>(x), static_cast<typename tools::promote_args<T1, T2>::type>(y)); }466 467inline double erf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x)468{ return boost::math::tr1::boost_erf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }469inline float erff BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)470{ return boost::math::tr1::boost_erff BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }471inline long double erfl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)472{ return boost::math::tr1::boost_erfl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }473inline float erf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)474{ return boost::math::tr1::erff BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }475inline long double erf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)476{ return boost::math::tr1::erfl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }477template <class T>478inline typename tools::promote_args<T>::type erf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T x)479{ return boost::math::tr1::erf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(x)); }480 481inline double erfc BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x)482{ return boost::math::tr1::boost_erfc BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }483inline float erfcf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)484{ return boost::math::tr1::boost_erfcf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }485inline long double erfcl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)486{ return boost::math::tr1::boost_erfcl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }487inline float erfc BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)488{ return boost::math::tr1::erfcf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }489inline long double erfc BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)490{ return boost::math::tr1::erfcl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }491template <class T>492inline typename tools::promote_args<T>::type erfc BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T x)493{ return boost::math::tr1::erfc BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(x)); }494 495#if 0496double exp2 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x);497float exp2f BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x);498long double exp2l BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x);499#endif500 501inline float expm1f BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)502{ return boost::math::tr1::boost_expm1f BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }503inline double expm1 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x)504{ return boost::math::tr1::boost_expm1 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }505inline long double expm1l BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)506{ return boost::math::tr1::boost_expm1l BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }507inline float expm1 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)508{ return boost::math::tr1::expm1f BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }509inline long double expm1 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)510{ return boost::math::tr1::expm1l BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }511template <class T>512inline typename tools::promote_args<T>::type expm1 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T x)513{ return boost::math::tr1::expm1 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(x)); }514 515#if 0516double fdim BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x, double y);517float fdimf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y);518long double fdiml BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y);519double fma BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x, double y, double z);520float fmaf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y, float z);521long double fmal BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y, long double z);522#endif523inline double fmax BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x, double y)524{ return boost::math::tr1::boost_fmax BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }525inline float fmaxf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y)526{ return boost::math::tr1::boost_fmaxf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }527inline long double fmaxl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)528{ return boost::math::tr1::boost_fmaxl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }529inline float fmax BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y)530{ return boost::math::tr1::fmaxf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }531inline long double fmax BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)532{ return boost::math::tr1::fmaxl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }533template <class T1, class T2>534inline typename tools::promote_args<T1, T2>::type fmax BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T1 x, T2 y)535{ return boost::math::tr1::fmax BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2>::type>(x), static_cast<typename tools::promote_args<T1, T2>::type>(y)); }536 537inline double fmin BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x, double y)538{ return boost::math::tr1::boost_fmin BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }539inline float fminf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y)540{ return boost::math::tr1::boost_fminf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }541inline long double fminl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)542{ return boost::math::tr1::boost_fminl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }543inline float fmin BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y)544{ return boost::math::tr1::fminf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }545inline long double fmin BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)546{ return boost::math::tr1::fminl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }547template <class T1, class T2>548inline typename tools::promote_args<T1, T2>::type fmin BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T1 x, T2 y)549{ return boost::math::tr1::fmin BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2>::type>(x), static_cast<typename tools::promote_args<T1, T2>::type>(y)); }550 551inline float hypotf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y)552{ return boost::math::tr1::boost_hypotf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }553inline double hypot BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x, double y)554{ return boost::math::tr1::boost_hypot BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }555inline long double hypotl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)556{ return boost::math::tr1::boost_hypotl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }557inline float hypot BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y)558{ return boost::math::tr1::hypotf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }559inline long double hypot BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)560{ return boost::math::tr1::hypotl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }561template <class T1, class T2>562inline typename tools::promote_args<T1, T2>::type hypot BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T1 x, T2 y)563{ return boost::math::tr1::hypot BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2>::type>(x), static_cast<typename tools::promote_args<T1, T2>::type>(y)); }564 565#if 0566int ilogb BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x);567int ilogbf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x);568int ilogbl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x);569#endif570 571inline float lgammaf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)572{ return boost::math::tr1::boost_lgammaf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }573inline double lgamma BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x)574{ return boost::math::tr1::boost_lgamma BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }575inline long double lgammal BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)576{ return boost::math::tr1::boost_lgammal BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }577inline float lgamma BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)578{ return boost::math::tr1::lgammaf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }579inline long double lgamma BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)580{ return boost::math::tr1::lgammal BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }581template <class T>582inline typename tools::promote_args<T>::type lgamma BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T x)583{ return boost::math::tr1::lgamma BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(x)); }584 585#ifdef BOOST_HAS_LONG_LONG586#if 0587long long llrint BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x);588long long llrintf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x);589long long llrintl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x);590#endif591 592inline long long llroundf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)593{ return boost::math::tr1::boost_llroundf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }594inline long long llround BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x)595{ return boost::math::tr1::boost_llround BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }596inline long long llroundl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)597{ return boost::math::tr1::boost_llroundl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }598inline long long llround BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)599{ return boost::math::tr1::llroundf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }600inline long long llround BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)601{ return boost::math::tr1::llroundl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }602template <class T>603inline long long llround BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T x)604{ return llround BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<double>(x)); }605#endif606 607inline float log1pf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)608{ return boost::math::tr1::boost_log1pf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }609inline double log1p BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x)610{ return boost::math::tr1::boost_log1p BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }611inline long double log1pl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)612{ return boost::math::tr1::boost_log1pl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }613inline float log1p BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)614{ return boost::math::tr1::log1pf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }615inline long double log1p BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)616{ return boost::math::tr1::log1pl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }617template <class T>618inline typename tools::promote_args<T>::type log1p BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T x)619{ return boost::math::tr1::log1p BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(x)); }620#if 0621double log2 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x);622float log2f BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x);623long double log2l BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x);624 625double logb BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x);626float logbf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x);627long double logbl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x);628long lrint BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x);629long lrintf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x);630long lrintl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x);631#endif632inline long lroundf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)633{ return boost::math::tr1::boost_lroundf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }634inline long lround BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x)635{ return boost::math::tr1::boost_lround BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }636inline long lroundl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)637{ return boost::math::tr1::boost_lroundl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }638inline long lround BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)639{ return boost::math::tr1::lroundf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }640inline long lround BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)641{ return boost::math::tr1::lroundl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }642template <class T>643long lround BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T x)644{ return boost::math::tr1::lround BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<double>(x)); }645#if 0646double nan BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(const char *str);647float nanf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(const char *str);648long double nanl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(const char *str);649double nearbyint BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x);650float nearbyintf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x);651long double nearbyintl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x);652#endif653inline float nextafterf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y)654{ return boost::math::tr1::boost_nextafterf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }655inline double nextafter BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x, double y)656{ return boost::math::tr1::boost_nextafter BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }657inline long double nextafterl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)658{ return boost::math::tr1::boost_nextafterl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }659inline float nextafter BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y)660{ return boost::math::tr1::nextafterf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }661inline long double nextafter BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)662{ return boost::math::tr1::nextafterl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }663template <class T1, class T2>664inline typename tools::promote_args<T1, T2>::type nextafter BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T1 x, T2 y)665{ return boost::math::tr1::nextafter BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2>::type>(x), static_cast<typename tools::promote_args<T1, T2>::type>(y)); }666 667inline float nexttowardf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y)668{ return boost::math::tr1::boost_nexttowardf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }669inline double nexttoward BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x, double y)670{ return boost::math::tr1::boost_nexttoward BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }671inline long double nexttowardl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)672{ return boost::math::tr1::boost_nexttowardl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }673inline float nexttoward BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y)674{ return boost::math::tr1::nexttowardf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }675inline long double nexttoward BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)676{ return boost::math::tr1::nexttowardl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }677template <class T1, class T2>678inline typename tools::promote_args<T1, T2>::type nexttoward BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T1 x, T2 y)679{ return static_cast<typename tools::promote_args<T1, T2>::type>(boost::math::tr1::nexttoward BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2>::type>(x), static_cast<long double>(y))); }680#if 0681double remainder BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x, double y);682float remainderf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y);683long double remainderl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y);684double remquo BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x, double y, int *pquo);685float remquof BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y, int *pquo);686long double remquol BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y, int *pquo);687double rint BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x);688float rintf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x);689long double rintl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x);690#endif691inline float roundf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)692{ return boost::math::tr1::boost_roundf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }693inline double round BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x)694{ return boost::math::tr1::boost_round BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }695inline long double roundl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)696{ return boost::math::tr1::boost_roundl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }697inline float round BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)698{ return boost::math::tr1::roundf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }699inline long double round BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)700{ return boost::math::tr1::roundl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }701template <class T>702inline typename tools::promote_args<T>::type round BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T x)703{ return boost::math::tr1::round BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(x)); }704#if 0705double scalbln BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x, long ex);706float scalblnf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, long ex);707long double scalblnl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long ex);708double scalbn BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x, int ex);709float scalbnf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, int ex);710long double scalbnl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, int ex);711#endif712inline float tgammaf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)713{ return boost::math::tr1::boost_tgammaf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }714inline double tgamma BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x)715{ return boost::math::tr1::boost_tgamma BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }716inline long double tgammal BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)717{ return boost::math::tr1::boost_tgammal BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }718inline float tgamma BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)719{ return boost::math::tr1::tgammaf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }720inline long double tgamma BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)721{ return boost::math::tr1::tgammal BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }722template <class T>723inline typename tools::promote_args<T>::type tgamma BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T x)724{ return boost::math::tr1::tgamma BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(x)); }725 726inline float truncf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)727{ return boost::math::tr1::boost_truncf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }728inline double trunc BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x)729{ return boost::math::tr1::boost_trunc BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }730inline long double truncl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)731{ return boost::math::tr1::boost_truncl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }732inline float trunc BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)733{ return boost::math::tr1::truncf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }734inline long double trunc BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)735{ return boost::math::tr1::truncl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }736template <class T>737inline typename tools::promote_args<T>::type trunc BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T x)738{ return boost::math::tr1::trunc BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(x)); }739 740# define NO_MACRO_EXPAND /**/741// C99 macros defined as C++ templates742template<class T> bool signbit NO_MACRO_EXPAND(T)743{ static_assert(sizeof(T) == 0, "Undefined behavior; this template should never be instantiated"); return false; } // must not be instantiated744template<> bool BOOST_MATH_TR1_DECL signbit<float> NO_MACRO_EXPAND(float x);745template<> bool BOOST_MATH_TR1_DECL signbit<double> NO_MACRO_EXPAND(double x);746template<> bool BOOST_MATH_TR1_DECL signbit<long double> NO_MACRO_EXPAND(long double x);747 748template<class T> int fpclassify NO_MACRO_EXPAND(T)749{ static_assert(sizeof(T) == 0, "Undefined behavior; this template should never be instantiated"); return false; } // must not be instantiated750template<> int BOOST_MATH_TR1_DECL fpclassify<float> NO_MACRO_EXPAND(float x);751template<> int BOOST_MATH_TR1_DECL fpclassify<double> NO_MACRO_EXPAND(double x);752template<> int BOOST_MATH_TR1_DECL fpclassify<long double> NO_MACRO_EXPAND(long double x);753 754template<class T> bool isfinite NO_MACRO_EXPAND(T)755{ static_assert(sizeof(T) == 0, "Undefined behavior; this template should never be instantiated"); return false; } // must not be instantiated756template<> bool BOOST_MATH_TR1_DECL isfinite<float> NO_MACRO_EXPAND(float x);757template<> bool BOOST_MATH_TR1_DECL isfinite<double> NO_MACRO_EXPAND(double x);758template<> bool BOOST_MATH_TR1_DECL isfinite<long double> NO_MACRO_EXPAND(long double x);759 760template<class T> bool isinf NO_MACRO_EXPAND(T)761{ static_assert(sizeof(T) == 0, "Undefined behavior; this template should never be instantiated"); return false; } // must not be instantiated762template<> bool BOOST_MATH_TR1_DECL isinf<float> NO_MACRO_EXPAND(float x);763template<> bool BOOST_MATH_TR1_DECL isinf<double> NO_MACRO_EXPAND(double x);764template<> bool BOOST_MATH_TR1_DECL isinf<long double> NO_MACRO_EXPAND(long double x);765 766template<class T> bool isnan NO_MACRO_EXPAND(T)767{ static_assert(sizeof(T) == 0, "Undefined behavior; this template should never be instantiated"); return false; } // must not be instantiated768template<> bool BOOST_MATH_TR1_DECL isnan<float> NO_MACRO_EXPAND(float x);769template<> bool BOOST_MATH_TR1_DECL isnan<double> NO_MACRO_EXPAND(double x);770template<> bool BOOST_MATH_TR1_DECL isnan<long double> NO_MACRO_EXPAND(long double x);771 772template<class T> bool isnormal NO_MACRO_EXPAND(T)773{ static_assert(sizeof(T) == 0, "Undefined behavior; this template should never be instantiated"); return false; } // must not be instantiated774template<> bool BOOST_MATH_TR1_DECL isnormal<float> NO_MACRO_EXPAND(float x);775template<> bool BOOST_MATH_TR1_DECL isnormal<double> NO_MACRO_EXPAND(double x);776template<> bool BOOST_MATH_TR1_DECL isnormal<long double> NO_MACRO_EXPAND(long double x);777 778#undef NO_MACRO_EXPAND779 780// [5.2.1.1] associated Laguerre polynomials:781inline float assoc_laguerref BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, unsigned m, float x)782{ return boost::math::tr1::boost_assoc_laguerref BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, m, x); }783inline double assoc_laguerre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, unsigned m, double x)784{ return boost::math::tr1::boost_assoc_laguerre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, m, x); }785inline long double assoc_laguerrel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, unsigned m, long double x)786{ return boost::math::tr1::boost_assoc_laguerrel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, m, x); }787inline float assoc_laguerre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, unsigned m, float x)788{ return boost::math::tr1::assoc_laguerref BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, m, x); }789inline long double assoc_laguerre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, unsigned m, long double x)790{ return boost::math::tr1::assoc_laguerrel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, m, x); }791template <class T>792inline typename tools::promote_args<T>::type assoc_laguerre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, unsigned m, T x)793{ return boost::math::tr1::assoc_laguerre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, m, static_cast<typename tools::promote_args<T>::type>(x)); }794 795// [5.2.1.2] associated Legendre functions:796inline float assoc_legendref BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, float x)797{ return boost::math::tr1::boost_assoc_legendref BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(l, m, x); }798inline double assoc_legendre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, double x)799{ return boost::math::tr1::boost_assoc_legendre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(l, m, x); }800inline long double assoc_legendrel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, long double x)801{ return boost::math::tr1::boost_assoc_legendrel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(l, m, x); }802inline float assoc_legendre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, float x)803{ return boost::math::tr1::assoc_legendref BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(l, m, x); }804inline long double assoc_legendre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, long double x)805{ return boost::math::tr1::assoc_legendrel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(l, m, x); }806template <class T>807inline typename tools::promote_args<T>::type assoc_legendre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, T x)808{ return boost::math::tr1::assoc_legendre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(l, m, static_cast<typename tools::promote_args<T>::type>(x)); }809 810// [5.2.1.3] beta function:811inline float betaf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y)812{ return boost::math::tr1::boost_betaf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }813inline double beta BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x, double y)814{ return boost::math::tr1::boost_beta BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }815inline long double betal BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)816{ return boost::math::tr1::boost_betal BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }817inline float beta BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x, float y)818{ return boost::math::tr1::betaf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }819inline long double beta BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x, long double y)820{ return boost::math::tr1::betal BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x, y); }821template <class T1, class T2>822inline typename tools::promote_args<T1, T2>::type beta BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T2 x, T1 y)823{ return boost::math::tr1::beta BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2>::type>(x), static_cast<typename tools::promote_args<T1, T2>::type>(y)); }824 825// [5.2.1.4] (complete) elliptic integral of the first kind:826inline float comp_ellint_1f BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float k)827{ return boost::math::tr1::boost_comp_ellint_1f BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(k); }828inline double comp_ellint_1 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double k)829{ return boost::math::tr1::boost_comp_ellint_1 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(k); }830inline long double comp_ellint_1l BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double k)831{ return boost::math::tr1::boost_comp_ellint_1l BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(k); }832inline float comp_ellint_1 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float k)833{ return boost::math::tr1::comp_ellint_1f BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(k); }834inline long double comp_ellint_1 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double k)835{ return boost::math::tr1::comp_ellint_1l BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(k); }836template <class T>837inline typename tools::promote_args<T>::type comp_ellint_1 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T k)838{ return boost::math::tr1::comp_ellint_1 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(k)); }839 840// [5.2.1.5] (complete) elliptic integral of the second kind:841inline float comp_ellint_2f(float k)842{ return boost::math::tr1::boost_comp_ellint_2f(k); }843inline double comp_ellint_2(double k)844{ return boost::math::tr1::boost_comp_ellint_2(k); }845inline long double comp_ellint_2l(long double k)846{ return boost::math::tr1::boost_comp_ellint_2l(k); }847inline float comp_ellint_2(float k)848{ return boost::math::tr1::comp_ellint_2f(k); }849inline long double comp_ellint_2(long double k)850{ return boost::math::tr1::comp_ellint_2l(k); }851template <class T>852inline typename tools::promote_args<T>::type comp_ellint_2(T k)853{ return boost::math::tr1::comp_ellint_2(static_cast<typename tools::promote_args<T>::type> BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(k)); }854 855// [5.2.1.6] (complete) elliptic integral of the third kind:856inline float comp_ellint_3f(float k, float nu)857{ return boost::math::tr1::boost_comp_ellint_3f(k, nu); }858inline double comp_ellint_3(double k, double nu)859{ return boost::math::tr1::boost_comp_ellint_3(k, nu); }860inline long double comp_ellint_3l(long double k, long double nu)861{ return boost::math::tr1::boost_comp_ellint_3l(k, nu); }862inline float comp_ellint_3(float k, float nu)863{ return boost::math::tr1::comp_ellint_3f(k, nu); }864inline long double comp_ellint_3(long double k, long double nu)865{ return boost::math::tr1::comp_ellint_3l(k, nu); }866template <class T1, class T2>867inline typename tools::promote_args<T1, T2>::type comp_ellint_3(T1 k, T2 nu)868{ return boost::math::tr1::comp_ellint_3(static_cast<typename tools::promote_args<T1, T2>::type> BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(k), static_cast<typename tools::promote_args<T1, T2>::type> BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(nu)); }869 870#if 0871// [5.2.1.7] confluent hypergeometric functions:872double conf_hyperg BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double a, double c, double x);873float conf_hypergf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float a, float c, float x);874long double conf_hypergl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double a, long double c, long double x);875#endif876 877// [5.2.1.8] regular modified cylindrical Bessel functions:878inline float cyl_bessel_if BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float nu, float x)879{ return boost::math::tr1::boost_cyl_bessel_if BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(nu, x); }880inline double cyl_bessel_i BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double nu, double x)881{ return boost::math::tr1::boost_cyl_bessel_i BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(nu, x); }882inline long double cyl_bessel_il BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double nu, long double x)883{ return boost::math::tr1::boost_cyl_bessel_il BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(nu, x); }884inline float cyl_bessel_i BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float nu, float x)885{ return boost::math::tr1::cyl_bessel_if BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(nu, x); }886inline long double cyl_bessel_i BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double nu, long double x)887{ return boost::math::tr1::cyl_bessel_il BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(nu, x); }888template <class T1, class T2>889inline typename tools::promote_args<T1, T2>::type cyl_bessel_i BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T1 nu, T2 x)890{ return boost::math::tr1::cyl_bessel_i BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2>::type>(nu), static_cast<typename tools::promote_args<T1, T2>::type>(x)); }891 892// [5.2.1.9] cylindrical Bessel functions (of the first kind):893inline float cyl_bessel_jf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float nu, float x)894{ return boost::math::tr1::boost_cyl_bessel_jf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(nu, x); }895inline double cyl_bessel_j BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double nu, double x)896{ return boost::math::tr1::boost_cyl_bessel_j BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(nu, x); }897inline long double cyl_bessel_jl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double nu, long double x)898{ return boost::math::tr1::boost_cyl_bessel_jl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(nu, x); }899inline float cyl_bessel_j BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float nu, float x)900{ return boost::math::tr1::cyl_bessel_jf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(nu, x); }901inline long double cyl_bessel_j BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double nu, long double x)902{ return boost::math::tr1::cyl_bessel_jl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(nu, x); }903template <class T1, class T2>904inline typename tools::promote_args<T1, T2>::type cyl_bessel_j BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T1 nu, T2 x)905{ return boost::math::tr1::cyl_bessel_j BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2>::type>(nu), static_cast<typename tools::promote_args<T1, T2>::type>(x)); }906 907// [5.2.1.10] irregular modified cylindrical Bessel functions:908inline float cyl_bessel_kf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float nu, float x)909{ return boost::math::tr1::boost_cyl_bessel_kf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(nu, x); }910inline double cyl_bessel_k BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double nu, double x)911{ return boost::math::tr1::boost_cyl_bessel_k BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(nu, x); }912inline long double cyl_bessel_kl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double nu, long double x)913{ return boost::math::tr1::boost_cyl_bessel_kl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(nu, x); }914inline float cyl_bessel_k BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float nu, float x)915{ return boost::math::tr1::cyl_bessel_kf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(nu, x); }916inline long double cyl_bessel_k BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double nu, long double x)917{ return boost::math::tr1::cyl_bessel_kl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(nu, x); }918template <class T1, class T2>919inline typename tools::promote_args<T1, T2>::type cyl_bessel_k BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T1 nu, T2 x)920{ return boost::math::tr1::cyl_bessel_k BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2>::type> BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(nu), static_cast<typename tools::promote_args<T1, T2>::type>(x)); }921 922// [5.2.1.11] cylindrical Neumann functions;923// cylindrical Bessel functions (of the second kind):924inline float cyl_neumannf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float nu, float x)925{ return boost::math::tr1::boost_cyl_neumannf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(nu, x); }926inline double cyl_neumann BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double nu, double x)927{ return boost::math::tr1::boost_cyl_neumann BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(nu, x); }928inline long double cyl_neumannl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double nu, long double x)929{ return boost::math::tr1::boost_cyl_neumannl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(nu, x); }930inline float cyl_neumann BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float nu, float x)931{ return boost::math::tr1::cyl_neumannf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(nu, x); }932inline long double cyl_neumann BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double nu, long double x)933{ return boost::math::tr1::cyl_neumannl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(nu, x); }934template <class T1, class T2>935inline typename tools::promote_args<T1, T2>::type cyl_neumann BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T1 nu, T2 x)936{ return boost::math::tr1::cyl_neumann BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2>::type>(nu), static_cast<typename tools::promote_args<T1, T2>::type>(x)); }937 938// [5.2.1.12] (incomplete) elliptic integral of the first kind:939inline float ellint_1f BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float k, float phi)940{ return boost::math::tr1::boost_ellint_1f BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(k, phi); }941inline double ellint_1 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double k, double phi)942{ return boost::math::tr1::boost_ellint_1 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(k, phi); }943inline long double ellint_1l BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double k, long double phi)944{ return boost::math::tr1::boost_ellint_1l BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(k, phi); }945inline float ellint_1 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float k, float phi)946{ return boost::math::tr1::ellint_1f BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(k, phi); }947inline long double ellint_1 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double k, long double phi)948{ return boost::math::tr1::ellint_1l BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(k, phi); }949template <class T1, class T2>950inline typename tools::promote_args<T1, T2>::type ellint_1 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T1 k, T2 phi)951{ return boost::math::tr1::ellint_1 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2>::type>(k), static_cast<typename tools::promote_args<T1, T2>::type>(phi)); }952 953// [5.2.1.13] (incomplete) elliptic integral of the second kind:954inline float ellint_2f BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float k, float phi)955{ return boost::math::tr1::boost_ellint_2f BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(k, phi); }956inline double ellint_2 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double k, double phi)957{ return boost::math::tr1::boost_ellint_2 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(k, phi); }958inline long double ellint_2l BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double k, long double phi)959{ return boost::math::tr1::boost_ellint_2l BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(k, phi); }960inline float ellint_2 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float k, float phi)961{ return boost::math::tr1::ellint_2f BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(k, phi); }962inline long double ellint_2 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double k, long double phi)963{ return boost::math::tr1::ellint_2l BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(k, phi); }964template <class T1, class T2>965inline typename tools::promote_args<T1, T2>::type ellint_2 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T1 k, T2 phi)966{ return boost::math::tr1::ellint_2 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2>::type>(k), static_cast<typename tools::promote_args<T1, T2>::type>(phi)); }967 968// [5.2.1.14] (incomplete) elliptic integral of the third kind:969inline float ellint_3f BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float k, float nu, float phi)970{ return boost::math::tr1::boost_ellint_3f BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(k, nu, phi); }971inline double ellint_3 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double k, double nu, double phi)972{ return boost::math::tr1::boost_ellint_3 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(k, nu, phi); }973inline long double ellint_3l BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double k, long double nu, long double phi)974{ return boost::math::tr1::boost_ellint_3l BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(k, nu, phi); }975inline float ellint_3 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float k, float nu, float phi)976{ return boost::math::tr1::ellint_3f BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(k, nu, phi); }977inline long double ellint_3 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double k, long double nu, long double phi)978{ return boost::math::tr1::ellint_3l BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(k, nu, phi); }979template <class T1, class T2, class T3>980inline typename tools::promote_args<T1, T2, T3>::type ellint_3 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T1 k, T2 nu, T3 phi)981{ return boost::math::tr1::ellint_3 BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T1, T2, T3>::type>(k), static_cast<typename tools::promote_args<T1, T2, T3>::type>(nu), static_cast<typename tools::promote_args<T1, T2, T3>::type>(phi)); }982 983// [5.2.1.15] exponential integral:984inline float expintf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)985{ return boost::math::tr1::boost_expintf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }986inline double expint BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double x)987{ return boost::math::tr1::boost_expint BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }988inline long double expintl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)989{ return boost::math::tr1::boost_expintl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }990inline float expint BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float x)991{ return boost::math::tr1::expintf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }992inline long double expint BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double x)993{ return boost::math::tr1::expintl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(x); }994template <class T>995inline typename tools::promote_args<T>::type expint BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T x)996{ return boost::math::tr1::expint BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(x)); }997 998// [5.2.1.16] Hermite polynomials:999inline float hermitef BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, float x)1000{ return boost::math::tr1::boost_hermitef BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, x); }1001inline double hermite BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, double x)1002{ return boost::math::tr1::boost_hermite BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, x); }1003inline long double hermitel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, long double x)1004{ return boost::math::tr1::boost_hermitel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, x); }1005inline float hermite BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, float x)1006{ return boost::math::tr1::hermitef BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, x); }1007inline long double hermite BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, long double x)1008{ return boost::math::tr1::hermitel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, x); }1009template <class T>1010inline typename tools::promote_args<T>::type hermite BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, T x)1011{ return boost::math::tr1::hermite BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, static_cast<typename tools::promote_args<T>::type>(x)); }1012 1013#if 01014// [5.2.1.17] hypergeometric functions:1015double hyperg BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double a, double b, double c, double x);1016float hypergf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float a, float b, float c, float x);1017long double hypergl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double a, long double b, long double c,1018long double x);1019#endif1020 1021// [5.2.1.18] Laguerre polynomials:1022inline float laguerref BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, float x)1023{ return boost::math::tr1::boost_laguerref BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, x); }1024inline double laguerre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, double x)1025{ return boost::math::tr1::boost_laguerre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, x); }1026inline long double laguerrel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, long double x)1027{ return boost::math::tr1::boost_laguerrel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, x); }1028inline float laguerre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, float x)1029{ return boost::math::tr1::laguerref BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, x); }1030inline long double laguerre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, long double x)1031{ return boost::math::tr1::laguerrel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, x); }1032template <class T>1033inline typename tools::promote_args<T>::type laguerre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, T x)1034{ return boost::math::tr1::laguerre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, static_cast<typename tools::promote_args<T>::type>(x)); }1035 1036// [5.2.1.19] Legendre polynomials:1037inline float legendref BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, float x)1038{ return boost::math::tr1::boost_legendref BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(l, x); }1039inline double legendre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, double x)1040{ return boost::math::tr1::boost_legendre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(l, x); }1041inline long double legendrel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, long double x)1042{ return boost::math::tr1::boost_legendrel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(l, x); }1043inline float legendre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, float x)1044{ return boost::math::tr1::legendref BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(l, x); }1045inline long double legendre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, long double x)1046{ return boost::math::tr1::legendrel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(l, x); }1047template <class T>1048inline typename tools::promote_args<T>::type legendre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, T x)1049{ return boost::math::tr1::legendre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(l, static_cast<typename tools::promote_args<T>::type>(x)); }1050 1051// [5.2.1.20] Riemann zeta function:1052inline float riemann_zetaf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float z)1053{ return boost::math::tr1::boost_riemann_zetaf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(z); }1054inline double riemann_zeta BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(double z)1055{ return boost::math::tr1::boost_riemann_zeta BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(z); }1056inline long double riemann_zetal BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double z)1057{ return boost::math::tr1::boost_riemann_zetal BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(z); }1058inline float riemann_zeta BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(float z)1059{ return boost::math::tr1::riemann_zetaf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(z); }1060inline long double riemann_zeta BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(long double z)1061{ return boost::math::tr1::riemann_zetal BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(z); }1062template <class T>1063inline typename tools::promote_args<T>::type riemann_zeta BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(T z)1064{ return boost::math::tr1::riemann_zeta BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(static_cast<typename tools::promote_args<T>::type>(z)); }1065 1066// [5.2.1.21] spherical Bessel functions (of the first kind):1067inline float sph_besself BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, float x)1068{ return boost::math::tr1::boost_sph_besself BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, x); }1069inline double sph_bessel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, double x)1070{ return boost::math::tr1::boost_sph_bessel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, x); }1071inline long double sph_bessell BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, long double x)1072{ return boost::math::tr1::boost_sph_bessell BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, x); }1073inline float sph_bessel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, float x)1074{ return boost::math::tr1::sph_besself BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, x); }1075inline long double sph_bessel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, long double x)1076{ return boost::math::tr1::sph_bessell BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, x); }1077template <class T>1078inline typename tools::promote_args<T>::type sph_bessel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, T x)1079{ return boost::math::tr1::sph_bessel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, static_cast<typename tools::promote_args<T>::type>(x)); }1080 1081// [5.2.1.22] spherical associated Legendre functions:1082inline float sph_legendref BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, float theta)1083{ return boost::math::tr1::boost_sph_legendref BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(l, m, theta); }1084inline double sph_legendre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, double theta)1085{ return boost::math::tr1::boost_sph_legendre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(l, m, theta); }1086inline long double sph_legendrel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, long double theta)1087{ return boost::math::tr1::boost_sph_legendrel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(l, m, theta); }1088inline float sph_legendre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, float theta)1089{ return boost::math::tr1::sph_legendref BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(l, m, theta); }1090inline long double sph_legendre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, long double theta)1091{ return boost::math::tr1::sph_legendrel BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(l, m, theta); }1092template <class T>1093inline typename tools::promote_args<T>::type sph_legendre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned l, unsigned m, T theta)1094{ return boost::math::tr1::sph_legendre BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(l, m, static_cast<typename tools::promote_args<T>::type>(theta)); }1095 1096// [5.2.1.23] spherical Neumann functions;1097// spherical Bessel functions (of the second kind):1098inline float sph_neumannf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, float x)1099{ return boost::math::tr1::boost_sph_neumannf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, x); }1100inline double sph_neumann BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, double x)1101{ return boost::math::tr1::boost_sph_neumann BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, x); }1102inline long double sph_neumannl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, long double x)1103{ return boost::math::tr1::boost_sph_neumannl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, x); }1104inline float sph_neumann BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, float x)1105{ return boost::math::tr1::sph_neumannf BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, x); }1106inline long double sph_neumann BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, long double x)1107{ return boost::math::tr1::sph_neumannl BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, x); }1108template <class T>1109inline typename tools::promote_args<T>::type sph_neumann BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(unsigned n, T x)1110{ return boost::math::tr1::sph_neumann BOOST_MATH_PREVENT_MACRO_SUBSTITUTION(n, static_cast<typename tools::promote_args<T>::type>(x)); }1111 1112}}} // namespaces1113 1114#else // __cplusplus1115 1116#include <boost/math/tr1_c_macros.ipp>1117 1118#endif // __cplusplus1119 1120#endif // BOOST_MATH_TR1_HPP1121 1122