To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

The primary repository for this project is hosted at https://github.com/sonic-visualiser/sv-dependency-builds .
This repository is a read-only copy which is updated automatically every hour.

Statistics Download as Zip
| Branch: | Tag: | Revision:

root / any / include / boost / math / distributions / complement.hpp @ 160:cff480c41f97

History | View | Annotate | Download (6.03 KB)

1
//  (C) Copyright John Maddock 2006.
2
//  (C) Copyright Paul A. Bristow 2006.
3
//  Use, modification and distribution are subject to the
4
//  Boost Software License, Version 1.0. (See accompanying file
5
//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6

    
7
#ifndef BOOST_STATS_COMPLEMENT_HPP
8
#define BOOST_STATS_COMPLEMENT_HPP
9

    
10
//
11
// This code really defines our own tuple type.
12
// It would be nice to reuse boost::math::tuple
13
// while retaining our own type safety, but it's
14
// not clear if that's possible.  In any case this
15
// code is *very* lightweight.
16
//
17
namespace boost{ namespace math{
18

    
19
template <class Dist, class RealType>
20
struct complemented2_type
21
{
22
   complemented2_type(
23
      const Dist& d, 
24
      const RealType& p1)
25
      : dist(d), 
26
        param(p1) {}
27

    
28
   const Dist& dist;
29
   const RealType& param;
30

    
31
private:
32
   complemented2_type& operator=(const complemented2_type&);
33
};
34

    
35
template <class Dist, class RealType1, class RealType2>
36
struct complemented3_type
37
{
38
   complemented3_type(
39
      const Dist& d, 
40
      const RealType1& p1,
41
      const RealType2& p2)
42
      : dist(d), 
43
        param1(p1), 
44
        param2(p2) {}
45

    
46
   const Dist& dist;
47
   const RealType1& param1;
48
   const RealType2& param2;
49
private:
50
   complemented3_type& operator=(const complemented3_type&);
51
};
52

    
53
template <class Dist, class RealType1, class RealType2, class RealType3>
54
struct complemented4_type
55
{
56
   complemented4_type(
57
      const Dist& d, 
58
      const RealType1& p1,
59
      const RealType2& p2,
60
      const RealType3& p3)
61
      : dist(d), 
62
        param1(p1), 
63
        param2(p2), 
64
        param3(p3) {}
65

    
66
   const Dist& dist;
67
   const RealType1& param1;
68
   const RealType2& param2;
69
   const RealType3& param3;
70
private:
71
   complemented4_type& operator=(const complemented4_type&);
72
};
73

    
74
template <class Dist, class RealType1, class RealType2, class RealType3, class RealType4>
75
struct complemented5_type
76
{
77
   complemented5_type(
78
      const Dist& d, 
79
      const RealType1& p1,
80
      const RealType2& p2,
81
      const RealType3& p3,
82
      const RealType4& p4)
83
      : dist(d), 
84
        param1(p1), 
85
        param2(p2), 
86
        param3(p3), 
87
        param4(p4) {}
88

    
89
   const Dist& dist;
90
   const RealType1& param1;
91
   const RealType2& param2;
92
   const RealType3& param3;
93
   const RealType4& param4;
94
private:
95
   complemented5_type& operator=(const complemented5_type&);
96
};
97

    
98
template <class Dist, class RealType1, class RealType2, class RealType3, class RealType4, class RealType5>
99
struct complemented6_type
100
{
101
   complemented6_type(
102
      const Dist& d, 
103
      const RealType1& p1,
104
      const RealType2& p2,
105
      const RealType3& p3,
106
      const RealType4& p4,
107
      const RealType5& p5)
108
      : dist(d), 
109
        param1(p1), 
110
        param2(p2), 
111
        param3(p3), 
112
        param4(p4), 
113
        param5(p5) {}
114

    
115
   const Dist& dist;
116
   const RealType1& param1;
117
   const RealType2& param2;
118
   const RealType3& param3;
119
   const RealType4& param4;
120
   const RealType5& param5;
121
private:
122
   complemented6_type& operator=(const complemented6_type&);
123
};
124

    
125
template <class Dist, class RealType1, class RealType2, class RealType3, class RealType4, class RealType5, class RealType6>
126
struct complemented7_type
127
{
128
   complemented7_type(
129
      const Dist& d, 
130
      const RealType1& p1,
131
      const RealType2& p2,
132
      const RealType3& p3,
133
      const RealType4& p4,
134
      const RealType5& p5,
135
      const RealType6& p6)
136
      : dist(d), 
137
        param1(p1), 
138
        param2(p2), 
139
        param3(p3), 
140
        param4(p4), 
141
        param5(p5), 
142
        param6(p6) {}
143

    
144
   const Dist& dist;
145
   const RealType1& param1;
146
   const RealType2& param2;
147
   const RealType3& param3;
148
   const RealType4& param4;
149
   const RealType5& param5;
150
   const RealType6& param6;
151
private:
152
   complemented7_type& operator=(const complemented7_type&);
153
};
154

    
155
template <class Dist, class RealType>
156
inline complemented2_type<Dist, RealType> complement(const Dist& d, const RealType& r)
157
{
158
   return complemented2_type<Dist, RealType>(d, r);
159
}
160

    
161
template <class Dist, class RealType1, class RealType2>
162
inline complemented3_type<Dist, RealType1, RealType2> complement(const Dist& d, const RealType1& r1, const RealType2& r2)
163
{
164
   return complemented3_type<Dist, RealType1, RealType2>(d, r1, r2);
165
}
166

    
167
template <class Dist, class RealType1, class RealType2, class RealType3>
168
inline complemented4_type<Dist, RealType1, RealType2, RealType3> complement(const Dist& d, const RealType1& r1, const RealType2& r2, const RealType3& r3)
169
{
170
   return complemented4_type<Dist, RealType1, RealType2, RealType3>(d, r1, r2, r3);
171
}
172

    
173
template <class Dist, class RealType1, class RealType2, class RealType3, class RealType4>
174
inline complemented5_type<Dist, RealType1, RealType2, RealType3, RealType4> complement(const Dist& d, const RealType1& r1, const RealType2& r2, const RealType3& r3, const RealType4& r4)
175
{
176
   return complemented5_type<Dist, RealType1, RealType2, RealType3, RealType4>(d, r1, r2, r3, r4);
177
}
178

    
179
template <class Dist, class RealType1, class RealType2, class RealType3, class RealType4, class RealType5>
180
inline complemented6_type<Dist, RealType1, RealType2, RealType3, RealType4, RealType5> complement(const Dist& d, const RealType1& r1, const RealType2& r2, const RealType3& r3, const RealType4& r4, const RealType5& r5)
181
{
182
   return complemented6_type<Dist, RealType1, RealType2, RealType3, RealType4, RealType5>(d, r1, r2, r3, r4, r5);
183
}
184

    
185
template <class Dist, class RealType1, class RealType2, class RealType3, class RealType4, class RealType5, class RealType6>
186
inline complemented7_type<Dist, RealType1, RealType2, RealType3, RealType4, RealType5, RealType6> complement(const Dist& d, const RealType1& r1, const RealType2& r2, const RealType3& r3, const RealType4& r4, const RealType5& r5, const RealType6& r6)
187
{
188
   return complemented7_type<Dist, RealType1, RealType2, RealType3, RealType4, RealType5, RealType6>(d, r1, r2, r3, r4, r5, r6);
189
}
190

    
191
} // namespace math
192
} // namespace boost
193

    
194
#endif // BOOST_STATS_COMPLEMENT_HPP
195