Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
97 lines (80 loc) · 2.48 KB

File metadata and controls

97 lines (80 loc) · 2.48 KB
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
// TestFactorial.cpp
//
// Factorials and Binomial Coefficients.
//
// Copyright Datasim Education BV 2009-2010
// Copyright John Maddock and Paul A. Bristow 2010
// Use, modification and distribution are subject to the
// Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt
// or copy at http://www.boost.org/LICENSE_1_0.txt)
#include <boost/math/special_functions/factorials.hpp>
#include <boost/math/special_functions.hpp>
#include <iostream>
using namespace std;
int main()
{
using namespace boost::math;
// Factorials
unsigned int n = 3;
try
{
cout << "Factorial: " << factorial<double>(n) << endl;
// Caution: You must provide a return type template value, so this will not compile
// unsigned int nfac = factorial(n); // could not deduce template argument for 'T'
// You must provide an explicit floating-point (not integer) return type.
// If you do provide an integer type, like this:
// unsigned int uintfac = factorial<unsigned int>(n);
// you will also get a compile error, for MSVC C2338.
// If you really want an integer type, you can convert from double:
unsigned int intfac = static_cast<unsigned int>(factorial<double>(n));
// this will be exact, until the result of the factorial overflows the integer type.
cout << "Unchecked factorial: " << boost::math::unchecked_factorial<float>(n) << endl;
// Note:
// unsigned int unfac = boost::math::unchecked_factorial<unsigned int>(n);
// also fails to compile for the same reasons.
}
catch(exception& e)
{
cout << e.what() << endl;
}
// Double factorial n!!
try
{
//cout << "Double factorial: " << boost::math::double_factorial<unsigned>(n);
}
catch(exception& e)
{
cout << e.what() << endl;
}
// Rising and falling factorials
try
{
int i = 2; double x = 8;
cout << "Rising factorial: " << rising_factorial(x,i) << endl;
cout << "Falling factorial: " << falling_factorial(x,i) << endl;
}
catch(exception& e)
{
cout << e.what() << endl;
}
// Binomial coefficients
try
{
unsigned n = 10; unsigned k = 2;
// cout << "Binomial coefficient: " << boost::math::binomial_coefficient<unsigned>(n,k) << endl;
}
catch(exception& e)
{
cout << e.what() << endl;
}
return 0;
}
/*
Output:
factorial_example.vcxproj -> J:\Cpp\MathToolkit\test\Math_test\Release\factorial_example.exe
Factorial: 6
Unchecked factorial: 6
Rising factorial: 72
Falling factorial: 56
*/
Morty Proxy This is a proxified and sanitized view of the page, visit original site.