/// <summary>Computations that depend on the observed value of vVector__153</summary> private void Changed_vVector__153() { if (this.Changed_vVector__153_iterationsDone == 1) { return; } this.vVector__153_marginal = new PointMass <Vector[]>(this.VVector__153); // The constant 'vVectorGaussian153' VectorGaussian vVectorGaussian153 = VectorGaussian.FromNatural(DenseVector.FromArray(new double[3] { 1547829870.0, 525077980.0, 200270.0 }), new PositiveDefiniteMatrix(new double[3, 3] { { 4254590363351.0, 1127383488860.0, 433199230.0 }, { 1127383488860.0, 482723521821.0, 146764360.0 }, { 433199230.0, 146764360.0, 56221.0 } })); this.vVector459_marginal_F = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian153); // Buffer for ReplicateOp_Divide.Marginal<VectorGaussian> VectorGaussian vVector459_rep_B_toDef = default(VectorGaussian); // Message to 'vVector459_rep' from Replicate factor vVector459_rep_B_toDef = ReplicateOp_Divide.ToDefInit <VectorGaussian>(vVectorGaussian153); // Message to 'vVector459_marginal' from Variable factor this.vVector459_marginal_F = VariableOp.MarginalAverageConditional <VectorGaussian>(vVector459_rep_B_toDef, vVectorGaussian153, this.vVector459_marginal_F); DistributionStructArray <Gaussian, double> vdouble__459_F = default(DistributionStructArray <Gaussian, double>); // Create array for 'vdouble__459' Forwards messages. vdouble__459_F = new DistributionStructArray <Gaussian, double>(1); for (int index153 = 0; index153 < 1; index153++) { vdouble__459_F[index153] = Gaussian.Uniform(); } DistributionStructArray <Gaussian, double> vdouble__460_F = default(DistributionStructArray <Gaussian, double>); // Create array for 'vdouble__460' Forwards messages. vdouble__460_F = new DistributionStructArray <Gaussian, double>(1); for (int index153 = 0; index153 < 1; index153++) { vdouble__460_F[index153] = Gaussian.Uniform(); } DistributionRefArray <VectorGaussian, Vector> vVector459_rep_F = default(DistributionRefArray <VectorGaussian, Vector>); DistributionRefArray <VectorGaussian, Vector> vVector459_rep_B = default(DistributionRefArray <VectorGaussian, Vector>); // Create array for 'vVector459_rep' Forwards messages. vVector459_rep_F = new DistributionRefArray <VectorGaussian, Vector>(1); // Create array for 'vVector459_rep' Backwards messages. vVector459_rep_B = new DistributionRefArray <VectorGaussian, Vector>(1); for (int index153 = 0; index153 < 1; index153++) { vVector459_rep_B[index153] = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian153); vVector459_rep_F[index153] = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian153); } // Buffer for ReplicateOp_Divide.UsesAverageConditional<VectorGaussian> VectorGaussian vVector459_rep_F_marginal = default(VectorGaussian); // Message to 'vVector459_rep' from Replicate factor vVector459_rep_F_marginal = ReplicateOp_Divide.MarginalInit <VectorGaussian>(vVectorGaussian153); // Message to 'vVector459_rep' from Replicate factor vVector459_rep_F_marginal = ReplicateOp_Divide.Marginal <VectorGaussian>(vVector459_rep_B_toDef, vVectorGaussian153, vVector459_rep_F_marginal); // Buffer for InnerProductOp.InnerProductAverageConditional // Create array for replicates of 'vVector459_rep_F_index153__AMean' Vector[] vVector459_rep_F_index153__AMean = new Vector[1]; for (int index153 = 0; index153 < 1; index153++) { // Message to 'vdouble__460' from InnerProduct factor vVector459_rep_F_index153__AMean[index153] = InnerProductOp.AMeanInit(vVector459_rep_F[index153]); } // Buffer for InnerProductOp.AMean // Create array for replicates of 'vVector459_rep_F_index153__AVariance' PositiveDefiniteMatrix[] vVector459_rep_F_index153__AVariance = new PositiveDefiniteMatrix[1]; for (int index153 = 0; index153 < 1; index153++) { // Message to 'vdouble__460' from InnerProduct factor vVector459_rep_F_index153__AVariance[index153] = InnerProductOp.AVarianceInit(vVector459_rep_F[index153]); // Message to 'vVector459_rep' from Replicate factor vVector459_rep_F[index153] = ReplicateOp_Divide.UsesAverageConditional <VectorGaussian>(vVector459_rep_B[index153], vVector459_rep_F_marginal, index153, vVector459_rep_F[index153]); } // Create array for 'vdouble__460_marginal' Forwards messages. this.vdouble__460_marginal_F = new DistributionStructArray <Gaussian, double>(1); for (int index153 = 0; index153 < 1; index153++) { this.vdouble__460_marginal_F[index153] = Gaussian.Uniform(); } // Message from use of 'vdouble__460' DistributionStructArray <Gaussian, double> vdouble__460_use_B = default(DistributionStructArray <Gaussian, double>); // Create array for 'vdouble__460_use' Backwards messages. vdouble__460_use_B = new DistributionStructArray <Gaussian, double>(1); for (int index153 = 0; index153 < 1; index153++) { vdouble__460_use_B[index153] = Gaussian.Uniform(); // Message to 'vdouble__460' from InnerProduct factor vVector459_rep_F_index153__AVariance[index153] = InnerProductOp.AVariance(vVector459_rep_F[index153], vVector459_rep_F_index153__AVariance[index153]); // Message to 'vdouble__460' from InnerProduct factor vVector459_rep_F_index153__AMean[index153] = InnerProductOp.AMean(vVector459_rep_F[index153], vVector459_rep_F_index153__AVariance[index153], vVector459_rep_F_index153__AMean[index153]); // Message to 'vdouble__460' from InnerProduct factor vdouble__460_F[index153] = InnerProductOp.InnerProductAverageConditional(vVector459_rep_F_index153__AMean[index153], vVector459_rep_F_index153__AVariance[index153], this.VVector__153[index153]); // Message to 'vdouble__460_marginal' from DerivedVariable factor this.vdouble__460_marginal_F[index153] = DerivedVariableOp.MarginalAverageConditional <Gaussian>(vdouble__460_use_B[index153], vdouble__460_F[index153], this.vdouble__460_marginal_F[index153]); } // Create array for 'vdouble__459_marginal' Forwards messages. this.vdouble__459_marginal_F = new DistributionStructArray <Gaussian, double>(1); for (int index153 = 0; index153 < 1; index153++) { this.vdouble__459_marginal_F[index153] = Gaussian.Uniform(); } // Message from use of 'vdouble__459' DistributionStructArray <Gaussian, double> vdouble__459_use_B = default(DistributionStructArray <Gaussian, double>); // Create array for 'vdouble__459_use' Backwards messages. vdouble__459_use_B = new DistributionStructArray <Gaussian, double>(1); for (int index153 = 0; index153 < 1; index153++) { vdouble__459_use_B[index153] = Gaussian.Uniform(); // Message to 'vdouble__459' from GaussianFromMeanAndVariance factor vdouble__459_F[index153] = GaussianFromMeanAndVarianceOp.SampleAverageConditional(vdouble__460_F[index153], 0.1); // Message to 'vdouble__459_marginal' from Variable factor this.vdouble__459_marginal_F[index153] = VariableOp.MarginalAverageConditional <Gaussian>(vdouble__459_use_B[index153], vdouble__459_F[index153], this.vdouble__459_marginal_F[index153]); } this.Changed_vVector__153_iterationsDone = 1; }
/// <summary>Computations that depend on the observed value of vVector__280 and vdouble__840</summary> private void Changed_vVector__280_vdouble__840() { if (this.Changed_vVector__280_vdouble__840_iterationsDone == 1) { return; } this.vVector__280_marginal = new PointMass <Vector[]>(this.VVector__280); this.vdouble__840_marginal = new DistributionStructArray <Gaussian, double>(5622, delegate(int index280) { return(Gaussian.Uniform()); }); this.vdouble__840_marginal = Distribution.SetPoint <DistributionStructArray <Gaussian, double>, double[]>(this.vdouble__840_marginal, this.Vdouble__840); // The constant 'vVectorGaussian280' VectorGaussian vVectorGaussian280 = VectorGaussian.FromNatural(DenseVector.FromArray(new double[3] { 0.0, 0.0, 0.0 }), new PositiveDefiniteMatrix(new double[3, 3] { { 1.0, 0.0, 0.0 }, { 0.0, 1.0, 0.0 }, { 0.0, 0.0, 1.0 } })); this.vVector841_marginal_F = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian280); // Message from use of 'vdouble__841' DistributionStructArray <Gaussian, double> vdouble__841_use_B = default(DistributionStructArray <Gaussian, double>); // Create array for 'vdouble__841_use' Backwards messages. vdouble__841_use_B = new DistributionStructArray <Gaussian, double>(5622); for (int index280 = 0; index280 < 5622; index280++) { vdouble__841_use_B[index280] = Gaussian.Uniform(); // Message to 'vdouble__841_use' from GaussianFromMeanAndVariance factor vdouble__841_use_B[index280] = GaussianFromMeanAndVarianceOp.MeanAverageConditional(this.Vdouble__840[index280], 0.1); } DistributionRefArray <VectorGaussian, Vector> vVector841_rep_B = default(DistributionRefArray <VectorGaussian, Vector>); // Create array for 'vVector841_rep' Backwards messages. vVector841_rep_B = new DistributionRefArray <VectorGaussian, Vector>(5622); for (int index280 = 0; index280 < 5622; index280++) { vVector841_rep_B[index280] = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian280); // Message to 'vVector841_rep' from InnerProduct factor vVector841_rep_B[index280] = InnerProductOp.AAverageConditional(vdouble__841_use_B[index280], this.VVector__280[index280], vVector841_rep_B[index280]); } // Buffer for ReplicateOp_Divide.Marginal<VectorGaussian> VectorGaussian vVector841_rep_B_toDef = default(VectorGaussian); // Message to 'vVector841_rep' from Replicate factor vVector841_rep_B_toDef = ReplicateOp_Divide.ToDefInit <VectorGaussian>(vVectorGaussian280); // Message to 'vVector841_rep' from Replicate factor vVector841_rep_B_toDef = ReplicateOp_Divide.ToDef <VectorGaussian>(vVector841_rep_B, vVector841_rep_B_toDef); // Message to 'vVector841_marginal' from Variable factor this.vVector841_marginal_F = VariableOp.MarginalAverageConditional <VectorGaussian>(vVector841_rep_B_toDef, vVectorGaussian280, this.vVector841_marginal_F); DistributionStructArray <Gaussian, double> vdouble__841_F = default(DistributionStructArray <Gaussian, double>); // Create array for 'vdouble__841' Forwards messages. vdouble__841_F = new DistributionStructArray <Gaussian, double>(5622); for (int index280 = 0; index280 < 5622; index280++) { vdouble__841_F[index280] = Gaussian.Uniform(); } DistributionRefArray <VectorGaussian, Vector> vVector841_rep_F = default(DistributionRefArray <VectorGaussian, Vector>); // Create array for 'vVector841_rep' Forwards messages. vVector841_rep_F = new DistributionRefArray <VectorGaussian, Vector>(5622); for (int index280 = 0; index280 < 5622; index280++) { vVector841_rep_F[index280] = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian280); } // Buffer for ReplicateOp_Divide.UsesAverageConditional<VectorGaussian> VectorGaussian vVector841_rep_F_marginal = default(VectorGaussian); // Message to 'vVector841_rep' from Replicate factor vVector841_rep_F_marginal = ReplicateOp_Divide.MarginalInit <VectorGaussian>(vVectorGaussian280); // Message to 'vVector841_rep' from Replicate factor vVector841_rep_F_marginal = ReplicateOp_Divide.Marginal <VectorGaussian>(vVector841_rep_B_toDef, vVectorGaussian280, vVector841_rep_F_marginal); // Buffer for InnerProductOp.InnerProductAverageConditional // Create array for replicates of 'vVector841_rep_F_index280__AMean' Vector[] vVector841_rep_F_index280__AMean = new Vector[5622]; for (int index280 = 0; index280 < 5622; index280++) { // Message to 'vdouble__841' from InnerProduct factor vVector841_rep_F_index280__AMean[index280] = InnerProductOp.AMeanInit(vVector841_rep_F[index280]); } // Buffer for InnerProductOp.AMean // Create array for replicates of 'vVector841_rep_F_index280__AVariance' PositiveDefiniteMatrix[] vVector841_rep_F_index280__AVariance = new PositiveDefiniteMatrix[5622]; for (int index280 = 0; index280 < 5622; index280++) { // Message to 'vdouble__841' from InnerProduct factor vVector841_rep_F_index280__AVariance[index280] = InnerProductOp.AVarianceInit(vVector841_rep_F[index280]); // Message to 'vVector841_rep' from Replicate factor vVector841_rep_F[index280] = ReplicateOp_Divide.UsesAverageConditional <VectorGaussian>(vVector841_rep_B[index280], vVector841_rep_F_marginal, index280, vVector841_rep_F[index280]); } // Create array for 'vdouble__841_marginal' Forwards messages. this.vdouble__841_marginal_F = new DistributionStructArray <Gaussian, double>(5622); for (int index280 = 0; index280 < 5622; index280++) { this.vdouble__841_marginal_F[index280] = Gaussian.Uniform(); // Message to 'vdouble__841' from InnerProduct factor vVector841_rep_F_index280__AVariance[index280] = InnerProductOp.AVariance(vVector841_rep_F[index280], vVector841_rep_F_index280__AVariance[index280]); // Message to 'vdouble__841' from InnerProduct factor vVector841_rep_F_index280__AMean[index280] = InnerProductOp.AMean(vVector841_rep_F[index280], vVector841_rep_F_index280__AVariance[index280], vVector841_rep_F_index280__AMean[index280]); // Message to 'vdouble__841' from InnerProduct factor vdouble__841_F[index280] = InnerProductOp.InnerProductAverageConditional(vVector841_rep_F_index280__AMean[index280], vVector841_rep_F_index280__AVariance[index280], this.VVector__280[index280]); // Message to 'vdouble__841_marginal' from DerivedVariable factor this.vdouble__841_marginal_F[index280] = DerivedVariableOp.MarginalAverageConditional <Gaussian>(vdouble__841_use_B[index280], vdouble__841_F[index280], this.vdouble__841_marginal_F[index280]); } this.Changed_vVector__280_vdouble__840_iterationsDone = 1; }