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