File indexing completed on 2025-01-18 09:39:39
0001
0002
0003
0004
0005
0006
0007 #ifndef BOOST_STATS_COMPLEMENT_HPP
0008 #define BOOST_STATS_COMPLEMENT_HPP
0009
0010
0011
0012
0013
0014
0015
0016
0017 namespace boost{ namespace math{
0018
0019 template <class Dist, class RealType>
0020 struct complemented2_type
0021 {
0022 complemented2_type(
0023 const Dist& d,
0024 const RealType& p1)
0025 : dist(d),
0026 param(p1) {}
0027
0028 const Dist& dist;
0029 const RealType& param;
0030
0031 private:
0032 complemented2_type& operator=(const complemented2_type&) = delete;
0033 };
0034
0035 template <class Dist, class RealType1, class RealType2>
0036 struct complemented3_type
0037 {
0038 complemented3_type(
0039 const Dist& d,
0040 const RealType1& p1,
0041 const RealType2& p2)
0042 : dist(d),
0043 param1(p1),
0044 param2(p2) {}
0045
0046 const Dist& dist;
0047 const RealType1& param1;
0048 const RealType2& param2;
0049 private:
0050 complemented3_type& operator=(const complemented3_type&) = delete;
0051 };
0052
0053 template <class Dist, class RealType1, class RealType2, class RealType3>
0054 struct complemented4_type
0055 {
0056 complemented4_type(
0057 const Dist& d,
0058 const RealType1& p1,
0059 const RealType2& p2,
0060 const RealType3& p3)
0061 : dist(d),
0062 param1(p1),
0063 param2(p2),
0064 param3(p3) {}
0065
0066 const Dist& dist;
0067 const RealType1& param1;
0068 const RealType2& param2;
0069 const RealType3& param3;
0070 private:
0071 complemented4_type& operator=(const complemented4_type&) = delete;
0072 };
0073
0074 template <class Dist, class RealType1, class RealType2, class RealType3, class RealType4>
0075 struct complemented5_type
0076 {
0077 complemented5_type(
0078 const Dist& d,
0079 const RealType1& p1,
0080 const RealType2& p2,
0081 const RealType3& p3,
0082 const RealType4& p4)
0083 : dist(d),
0084 param1(p1),
0085 param2(p2),
0086 param3(p3),
0087 param4(p4) {}
0088
0089 const Dist& dist;
0090 const RealType1& param1;
0091 const RealType2& param2;
0092 const RealType3& param3;
0093 const RealType4& param4;
0094 private:
0095 complemented5_type& operator=(const complemented5_type&) = delete;
0096 };
0097
0098 template <class Dist, class RealType1, class RealType2, class RealType3, class RealType4, class RealType5>
0099 struct complemented6_type
0100 {
0101 complemented6_type(
0102 const Dist& d,
0103 const RealType1& p1,
0104 const RealType2& p2,
0105 const RealType3& p3,
0106 const RealType4& p4,
0107 const RealType5& p5)
0108 : dist(d),
0109 param1(p1),
0110 param2(p2),
0111 param3(p3),
0112 param4(p4),
0113 param5(p5) {}
0114
0115 const Dist& dist;
0116 const RealType1& param1;
0117 const RealType2& param2;
0118 const RealType3& param3;
0119 const RealType4& param4;
0120 const RealType5& param5;
0121 private:
0122 complemented6_type& operator=(const complemented6_type&) = delete;
0123 };
0124
0125 template <class Dist, class RealType1, class RealType2, class RealType3, class RealType4, class RealType5, class RealType6>
0126 struct complemented7_type
0127 {
0128 complemented7_type(
0129 const Dist& d,
0130 const RealType1& p1,
0131 const RealType2& p2,
0132 const RealType3& p3,
0133 const RealType4& p4,
0134 const RealType5& p5,
0135 const RealType6& p6)
0136 : dist(d),
0137 param1(p1),
0138 param2(p2),
0139 param3(p3),
0140 param4(p4),
0141 param5(p5),
0142 param6(p6) {}
0143
0144 const Dist& dist;
0145 const RealType1& param1;
0146 const RealType2& param2;
0147 const RealType3& param3;
0148 const RealType4& param4;
0149 const RealType5& param5;
0150 const RealType6& param6;
0151 private:
0152 complemented7_type& operator=(const complemented7_type&) = delete;
0153 };
0154
0155 template <class Dist, class RealType>
0156 inline complemented2_type<Dist, RealType> complement(const Dist& d, const RealType& r)
0157 {
0158 return complemented2_type<Dist, RealType>(d, r);
0159 }
0160
0161 template <class Dist, class RealType1, class RealType2>
0162 inline complemented3_type<Dist, RealType1, RealType2> complement(const Dist& d, const RealType1& r1, const RealType2& r2)
0163 {
0164 return complemented3_type<Dist, RealType1, RealType2>(d, r1, r2);
0165 }
0166
0167 template <class Dist, class RealType1, class RealType2, class RealType3>
0168 inline complemented4_type<Dist, RealType1, RealType2, RealType3> complement(const Dist& d, const RealType1& r1, const RealType2& r2, const RealType3& r3)
0169 {
0170 return complemented4_type<Dist, RealType1, RealType2, RealType3>(d, r1, r2, r3);
0171 }
0172
0173 template <class Dist, class RealType1, class RealType2, class RealType3, class RealType4>
0174 inline complemented5_type<Dist, RealType1, RealType2, RealType3, RealType4> complement(const Dist& d, const RealType1& r1, const RealType2& r2, const RealType3& r3, const RealType4& r4)
0175 {
0176 return complemented5_type<Dist, RealType1, RealType2, RealType3, RealType4>(d, r1, r2, r3, r4);
0177 }
0178
0179 template <class Dist, class RealType1, class RealType2, class RealType3, class RealType4, class RealType5>
0180 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)
0181 {
0182 return complemented6_type<Dist, RealType1, RealType2, RealType3, RealType4, RealType5>(d, r1, r2, r3, r4, r5);
0183 }
0184
0185 template <class Dist, class RealType1, class RealType2, class RealType3, class RealType4, class RealType5, class RealType6>
0186 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)
0187 {
0188 return complemented7_type<Dist, RealType1, RealType2, RealType3, RealType4, RealType5, RealType6>(d, r1, r2, r3, r4, r5, r6);
0189 }
0190
0191 }
0192 }
0193
0194 #endif
0195