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