00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _plJointDistribution_h
00019 #define _plJointDistribution_h
00020
00021 #include <plVariablesConjunction.h>
00022 #include <plKernel.h>
00023 #include <plTechniquesTypes.h>
00024
00025
00026 #define PL_USE_SUCC_RES_SIMPLIF
00027
00028
00029
00030
00031
00032
00033
00034
00035
00060 class plJointDistribution : public plKernel
00061 {
00062
00063 void check_variables(const plVariablesConjunction &search_params,
00064 const plVariablesConjunction &known_params)const;
00065
00066 void check_variables(const plVariablesConjunction &search_params)const;
00067
00068 public:
00069
00070 static plJointDistribution *_global_jd;
00071
00073 plJointDistribution (const plVariablesConjunction &all_params,
00074 const plKernel &f);
00075
00077 explicit plJointDistribution (const plKernel &f);
00078
00080 plJointDistribution (const plVariablesConjunction &all_params,
00081 const plComputableObjectList &decomposition);
00082
00084 explicit plJointDistribution (const plComputableObjectList &decomposition);
00085
00086
00088 virtual ~plJointDistribution ();
00089
00090
00091
00107 void ask(plCndKernel &CndExpr,
00108 const plVariablesConjunction &search_params,
00109 const plVariablesConjunction &known_params,
00110 plOptimizationCriterion optimization = PL_NO_OPTIMIZATION) const;
00111
00130 plCndKernel ask(const plVariablesConjunction &search_params,
00131 const plVariablesConjunction &known_params,
00132 plOptimizationCriterion optimization = PL_NO_OPTIMIZATION) const;
00133
00134
00136 void ask(plCndKernel &CndExpr,
00137 const plVariablesConjunction &search_params,
00138 const plVariablesConjunction &known_params, unsigned int n) const;
00139
00145 plCndKernel ask(const plVariablesConjunction &search_params,
00146 const plVariablesConjunction &known_params, unsigned int n) const;
00147
00149 void ask(plCndKernel &CndExpr,
00150 const plVariablesConjunction &search_params,
00151 const plVariablesConjunction &known_params, int n) const
00152 {
00153 ask(CndExpr, search_params, known_params, (unsigned int)n);
00154 }
00155
00156
00161 void ask(plCndKernel &CndExpr,
00162 const plVariablesConjunction &search_params,
00163 const plVariablesConjunction &known_params,
00164 plIntegrationModeType integration_mode,
00165 plFloat convergence_threshold) const;
00166
00167
00176 plCndKernel ask(const plVariablesConjunction &search_params,
00177 const plVariablesConjunction &known_params,
00178 plIntegrationModeType integration_mode,
00179 plFloat convergence_threshold) const;
00180
00181
00182
00198 void ask(plCndKernel &CndExpr,
00199 const plVariablesConjunction &search_params,
00200 const plVariablesConjunction &known_params,
00201 bool do_not_build_normalization_expression,
00202 plOptimizationCriterion optimization = PL_NO_OPTIMIZATION) const;
00203
00205 void ask(plCndKernel &CndExpr,
00206 const plVariablesConjunction &search_params,
00207 const plVariablesConjunction &known_params,
00208 bool do_not_build_normalization_expression,
00209 unsigned int n) const;
00210
00211 void ask(plCndKernel &CndExpr,
00212 const plVariablesConjunction &search_params,
00213 const plVariablesConjunction &known_params,
00214 bool do_not_build_normalization_expression,
00215 int n) const
00216 {
00217 ask(CndExpr, search_params, known_params, do_not_build_normalization_expression, (unsigned int)n);
00218 }
00219
00220
00225 void ask(plCndKernel &CndExpr,
00226 const plVariablesConjunction &search_params,
00227 const plVariablesConjunction &known_params,
00228 bool do_not_build_normalization_expression,
00229 plIntegrationModeType integration_mode,
00230 plFloat convergence_threshold) const;
00231
00232
00233
00234
00235
00236
00238 void ask(plKernel &Expr,
00239 const plVariablesConjunction &search_params) const;
00240
00246 plKernel ask(const plVariablesConjunction &search_params) const;
00247
00249 void ask(plKernel &Expr,
00250 const plVariablesConjunction &search_params, unsigned int n) const;
00251
00257 plKernel ask(const plVariablesConjunction &search_params, unsigned int n) const;
00258
00260 void ask(plKernel &Expr,
00261 const plVariablesConjunction &search_params, int n) const
00262 {
00263 ask(Expr, search_params, (unsigned int)n);
00264 }
00265
00270 void ask(plKernel &Expr,
00271 const plVariablesConjunction &search_paramss,
00272 plIntegrationModeType integration_mode,
00273 plFloat convergence_threshold) const;
00274
00275
00284 plKernel ask(const plVariablesConjunction &search_params,
00285 plIntegrationModeType integration_mode,
00286 plFloat convergence_threshold) const;
00287
00288
00289
00290 };
00291
00292 #endif