예제 #1
0
        /// <include file='FactorDocs.xml' path='factor_docs/message_op_class[@name="PlusTruncatedGaussianOp"]/message_doc[@name="AAverageConditional(double, TruncatedGaussian)"]/*'/>
        public static TruncatedGaussian AAverageConditional(double sum, [SkipIfUniform] TruncatedGaussian b)
        {
            Gaussian prior = b.ToGaussian();
            Gaussian post  = DoublePlusOp.AAverageConditional(sum, prior);

            return(new TruncatedGaussian(post, sum - b.UpperBound, sum - b.LowerBound));
        }
예제 #2
0
 public static Gaussian CopyAverageConditional(TruncatedGaussian value)
 {
     if (!value.IsPointMass)
     {
         throw new ArgumentException("value is not a point mass");
     }
     return(value.ToGaussian());
 }
예제 #3
0
파일: Copy.cs 프로젝트: mesgarpour/ERMER
        public static Gaussian ValueAverageLogarithm(TruncatedGaussian copy, [Proper] Gaussian value, Gaussian to_value)
        {
            var a = value / to_value;

            copy *= new TruncatedGaussian(a); // is this ok?
            var result = copy.ToGaussian() / a;

            return(result);
        }
예제 #4
0
        /// <include file='FactorDocs.xml' path='factor_docs/message_op_class[@name="PlusTruncatedGaussianOp"]/message_doc[@name="AAverageConditional(TruncatedGaussian, double)"]/*'/>
        public static TruncatedGaussian AAverageConditional([SkipIfUniform] TruncatedGaussian sum, double b)
        {
            Gaussian          prior  = sum.ToGaussian();
            Gaussian          post   = DoublePlusOp.AAverageConditional(prior, b);
            TruncatedGaussian result = sum;

            result.Gaussian    = post;
            result.LowerBound -= b;
            result.UpperBound -= b;
            return(result);
        }
예제 #5
0
        /// <include file='FactorDocs.xml' path='factor_docs/message_op_class[@name="PlusTruncatedGaussianOp"]/message_doc[@name="SumAverageConditional(double, TruncatedGaussian)"]/*'/>
        public static TruncatedGaussian SumAverageConditional(double a, [SkipIfUniform] TruncatedGaussian b)
        {
            Gaussian          prior  = b.ToGaussian();
            Gaussian          post   = DoublePlusOp.SumAverageConditional(a, prior);
            TruncatedGaussian result = b;

            result.Gaussian    = post;
            result.LowerBound += a;
            result.UpperBound += a;
            return(result);
        }
예제 #6
0
파일: Copy.cs 프로젝트: mesgarpour/ERMER
 public static Gaussian CopyAverageLogarithm(TruncatedGaussian value)
 {
     return(value.ToGaussian());
 }
예제 #7
0
		public static Gaussian XAverageLogarithm(bool isBetween, [Stochastic] Gaussian X, double lowerBound, double upperBound, Gaussian to_X)
		{
			if (!isBetween) throw new ArgumentException("TruncatedGaussian requires isBetween=true", "isBetween");
			var prior = X / to_X;
			var tg = new TruncatedGaussian(prior);
			tg.LowerBound = lowerBound;
			tg.UpperBound = upperBound;
			return tg.ToGaussian() / prior;
		}
예제 #8
0
 /// <include file='FactorDocs.xml' path='factor_docs/message_op_class[@name="PlusTruncatedGaussianOp"]/message_doc[@name="AAverageConditional(Gaussian, Gaussian)"]/*'/>
 public static Gaussian AAverageConditional([SkipIfUniform] Gaussian sum, [SkipIfUniform] TruncatedGaussian b)
 {
     return(DoublePlusOp.AAverageConditional(sum, b.ToGaussian()));
 }
예제 #9
0
 /// <include file='FactorDocs.xml' path='factor_docs/message_op_class[@name="PlusTruncatedGaussianOp"]/message_doc[@name="SumAverageConditional(Gaussian, TruncatedGaussian)"]/*'/>
 public static Gaussian SumAverageConditional([SkipIfUniform] Gaussian a, [SkipIfUniform] TruncatedGaussian b)
 {
     return(DoublePlusOp.SumAverageConditional(a, b.ToGaussian()));
 }