/// <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)); }
public static Gaussian CopyAverageConditional(TruncatedGaussian value) { if (!value.IsPointMass) { throw new ArgumentException("value is not a point mass"); } return(value.ToGaussian()); }
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); }
/// <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); }
/// <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); }
public static Gaussian CopyAverageLogarithm(TruncatedGaussian value) { return(value.ToGaussian()); }
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; }
/// <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())); }
/// <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())); }