/// <summary>Computations that depend on the observed value of vVector__49</summary> private void Changed_vVector__49() { if (this.Changed_vVector__49_iterationsDone == 1) { return; } this.vVector__49_marginal = new PointMass <Vector[]>(this.VVector__49); // The constant 'vVectorGaussian49' VectorGaussian vVectorGaussian49 = 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.vVector147_marginal_F = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian49); // Buffer for ReplicateOp_Divide.Marginal<VectorGaussian> VectorGaussian vVector147_rep_B_toDef = default(VectorGaussian); // Message to 'vVector147_rep' from Replicate factor vVector147_rep_B_toDef = ReplicateOp_Divide.ToDefInit <VectorGaussian>(vVectorGaussian49); // Message to 'vVector147_marginal' from Variable factor this.vVector147_marginal_F = VariableOp.MarginalAverageConditional <VectorGaussian>(vVector147_rep_B_toDef, vVectorGaussian49, this.vVector147_marginal_F); DistributionStructArray <Gaussian, double> vdouble__147_F = default(DistributionStructArray <Gaussian, double>); // Create array for 'vdouble__147' Forwards messages. vdouble__147_F = new DistributionStructArray <Gaussian, double>(1); for (int index49 = 0; index49 < 1; index49++) { vdouble__147_F[index49] = Gaussian.Uniform(); } DistributionStructArray <Gaussian, double> vdouble__148_F = default(DistributionStructArray <Gaussian, double>); // Create array for 'vdouble__148' Forwards messages. vdouble__148_F = new DistributionStructArray <Gaussian, double>(1); for (int index49 = 0; index49 < 1; index49++) { vdouble__148_F[index49] = Gaussian.Uniform(); } DistributionRefArray <VectorGaussian, Vector> vVector147_rep_F = default(DistributionRefArray <VectorGaussian, Vector>); DistributionRefArray <VectorGaussian, Vector> vVector147_rep_B = default(DistributionRefArray <VectorGaussian, Vector>); // Create array for 'vVector147_rep' Forwards messages. vVector147_rep_F = new DistributionRefArray <VectorGaussian, Vector>(1); // Create array for 'vVector147_rep' Backwards messages. vVector147_rep_B = new DistributionRefArray <VectorGaussian, Vector>(1); for (int index49 = 0; index49 < 1; index49++) { vVector147_rep_B[index49] = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian49); vVector147_rep_F[index49] = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian49); } // Buffer for ReplicateOp_Divide.UsesAverageConditional<VectorGaussian> VectorGaussian vVector147_rep_F_marginal = default(VectorGaussian); // Message to 'vVector147_rep' from Replicate factor vVector147_rep_F_marginal = ReplicateOp_Divide.MarginalInit <VectorGaussian>(vVectorGaussian49); // Message to 'vVector147_rep' from Replicate factor vVector147_rep_F_marginal = ReplicateOp_Divide.Marginal <VectorGaussian>(vVector147_rep_B_toDef, vVectorGaussian49, vVector147_rep_F_marginal); // Buffer for InnerProductOp.InnerProductAverageConditional // Create array for replicates of 'vVector147_rep_F_index49__AMean' Vector[] vVector147_rep_F_index49__AMean = new Vector[1]; for (int index49 = 0; index49 < 1; index49++) { // Message to 'vdouble__148' from InnerProduct factor vVector147_rep_F_index49__AMean[index49] = InnerProductOp.AMeanInit(vVector147_rep_F[index49]); } // Buffer for InnerProductOp.AMean // Create array for replicates of 'vVector147_rep_F_index49__AVariance' PositiveDefiniteMatrix[] vVector147_rep_F_index49__AVariance = new PositiveDefiniteMatrix[1]; for (int index49 = 0; index49 < 1; index49++) { // Message to 'vdouble__148' from InnerProduct factor vVector147_rep_F_index49__AVariance[index49] = InnerProductOp.AVarianceInit(vVector147_rep_F[index49]); // Message to 'vVector147_rep' from Replicate factor vVector147_rep_F[index49] = ReplicateOp_Divide.UsesAverageConditional <VectorGaussian>(vVector147_rep_B[index49], vVector147_rep_F_marginal, index49, vVector147_rep_F[index49]); } // Create array for 'vdouble__148_marginal' Forwards messages. this.vdouble__148_marginal_F = new DistributionStructArray <Gaussian, double>(1); for (int index49 = 0; index49 < 1; index49++) { this.vdouble__148_marginal_F[index49] = Gaussian.Uniform(); } // Message from use of 'vdouble__148' DistributionStructArray <Gaussian, double> vdouble__148_use_B = default(DistributionStructArray <Gaussian, double>); // Create array for 'vdouble__148_use' Backwards messages. vdouble__148_use_B = new DistributionStructArray <Gaussian, double>(1); for (int index49 = 0; index49 < 1; index49++) { vdouble__148_use_B[index49] = Gaussian.Uniform(); // Message to 'vdouble__148' from InnerProduct factor vVector147_rep_F_index49__AVariance[index49] = InnerProductOp.AVariance(vVector147_rep_F[index49], vVector147_rep_F_index49__AVariance[index49]); // Message to 'vdouble__148' from InnerProduct factor vVector147_rep_F_index49__AMean[index49] = InnerProductOp.AMean(vVector147_rep_F[index49], vVector147_rep_F_index49__AVariance[index49], vVector147_rep_F_index49__AMean[index49]); // Message to 'vdouble__148' from InnerProduct factor vdouble__148_F[index49] = InnerProductOp.InnerProductAverageConditional(vVector147_rep_F_index49__AMean[index49], vVector147_rep_F_index49__AVariance[index49], this.VVector__49[index49]); // Message to 'vdouble__148_marginal' from DerivedVariable factor this.vdouble__148_marginal_F[index49] = DerivedVariableOp.MarginalAverageConditional <Gaussian>(vdouble__148_use_B[index49], vdouble__148_F[index49], this.vdouble__148_marginal_F[index49]); } // Create array for 'vdouble__147_marginal' Forwards messages. this.vdouble__147_marginal_F = new DistributionStructArray <Gaussian, double>(1); for (int index49 = 0; index49 < 1; index49++) { this.vdouble__147_marginal_F[index49] = Gaussian.Uniform(); } // Message from use of 'vdouble__147' DistributionStructArray <Gaussian, double> vdouble__147_use_B = default(DistributionStructArray <Gaussian, double>); // Create array for 'vdouble__147_use' Backwards messages. vdouble__147_use_B = new DistributionStructArray <Gaussian, double>(1); for (int index49 = 0; index49 < 1; index49++) { vdouble__147_use_B[index49] = Gaussian.Uniform(); // Message to 'vdouble__147' from GaussianFromMeanAndVariance factor vdouble__147_F[index49] = GaussianFromMeanAndVarianceOp.SampleAverageConditional(vdouble__148_F[index49], 0.1); // Message to 'vdouble__147_marginal' from Variable factor this.vdouble__147_marginal_F[index49] = VariableOp.MarginalAverageConditional <Gaussian>(vdouble__147_use_B[index49], vdouble__147_F[index49], this.vdouble__147_marginal_F[index49]); } this.Changed_vVector__49_iterationsDone = 1; }
/// <summary>Computations that depend on the observed value of vVector__286 and vdouble__858</summary> private void Changed_vVector__286_vdouble__858() { if (this.Changed_vVector__286_vdouble__858_iterationsDone == 1) { return; } this.vVector__286_marginal = new PointMass <Vector[]>(this.VVector__286); this.vdouble__858_marginal = new DistributionStructArray <Gaussian, double>(5622, delegate(int index286) { return(Gaussian.Uniform()); }); this.vdouble__858_marginal = Distribution.SetPoint <DistributionStructArray <Gaussian, double>, double[]>(this.vdouble__858_marginal, this.Vdouble__858); // The constant 'vVectorGaussian286' VectorGaussian vVectorGaussian286 = 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.vVector859_marginal_F = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian286); // Message from use of 'vdouble__859' DistributionStructArray <Gaussian, double> vdouble__859_use_B = default(DistributionStructArray <Gaussian, double>); // Create array for 'vdouble__859_use' Backwards messages. vdouble__859_use_B = new DistributionStructArray <Gaussian, double>(5622); for (int index286 = 0; index286 < 5622; index286++) { vdouble__859_use_B[index286] = Gaussian.Uniform(); // Message to 'vdouble__859_use' from GaussianFromMeanAndVariance factor vdouble__859_use_B[index286] = GaussianFromMeanAndVarianceOp.MeanAverageConditional(this.Vdouble__858[index286], 0.1); } DistributionRefArray <VectorGaussian, Vector> vVector859_rep_B = default(DistributionRefArray <VectorGaussian, Vector>); // Create array for 'vVector859_rep' Backwards messages. vVector859_rep_B = new DistributionRefArray <VectorGaussian, Vector>(5622); for (int index286 = 0; index286 < 5622; index286++) { vVector859_rep_B[index286] = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian286); // Message to 'vVector859_rep' from InnerProduct factor vVector859_rep_B[index286] = InnerProductOp.AAverageConditional(vdouble__859_use_B[index286], this.VVector__286[index286], vVector859_rep_B[index286]); } // Buffer for ReplicateOp_Divide.Marginal<VectorGaussian> VectorGaussian vVector859_rep_B_toDef = default(VectorGaussian); // Message to 'vVector859_rep' from Replicate factor vVector859_rep_B_toDef = ReplicateOp_Divide.ToDefInit <VectorGaussian>(vVectorGaussian286); // Message to 'vVector859_rep' from Replicate factor vVector859_rep_B_toDef = ReplicateOp_Divide.ToDef <VectorGaussian>(vVector859_rep_B, vVector859_rep_B_toDef); // Message to 'vVector859_marginal' from Variable factor this.vVector859_marginal_F = VariableOp.MarginalAverageConditional <VectorGaussian>(vVector859_rep_B_toDef, vVectorGaussian286, this.vVector859_marginal_F); DistributionStructArray <Gaussian, double> vdouble__859_F = default(DistributionStructArray <Gaussian, double>); // Create array for 'vdouble__859' Forwards messages. vdouble__859_F = new DistributionStructArray <Gaussian, double>(5622); for (int index286 = 0; index286 < 5622; index286++) { vdouble__859_F[index286] = Gaussian.Uniform(); } DistributionRefArray <VectorGaussian, Vector> vVector859_rep_F = default(DistributionRefArray <VectorGaussian, Vector>); // Create array for 'vVector859_rep' Forwards messages. vVector859_rep_F = new DistributionRefArray <VectorGaussian, Vector>(5622); for (int index286 = 0; index286 < 5622; index286++) { vVector859_rep_F[index286] = ArrayHelper.MakeUniform <VectorGaussian>(vVectorGaussian286); } // Buffer for ReplicateOp_Divide.UsesAverageConditional<VectorGaussian> VectorGaussian vVector859_rep_F_marginal = default(VectorGaussian); // Message to 'vVector859_rep' from Replicate factor vVector859_rep_F_marginal = ReplicateOp_Divide.MarginalInit <VectorGaussian>(vVectorGaussian286); // Message to 'vVector859_rep' from Replicate factor vVector859_rep_F_marginal = ReplicateOp_Divide.Marginal <VectorGaussian>(vVector859_rep_B_toDef, vVectorGaussian286, vVector859_rep_F_marginal); // Buffer for InnerProductOp.InnerProductAverageConditional // Create array for replicates of 'vVector859_rep_F_index286__AMean' Vector[] vVector859_rep_F_index286__AMean = new Vector[5622]; for (int index286 = 0; index286 < 5622; index286++) { // Message to 'vdouble__859' from InnerProduct factor vVector859_rep_F_index286__AMean[index286] = InnerProductOp.AMeanInit(vVector859_rep_F[index286]); } // Buffer for InnerProductOp.AMean // Create array for replicates of 'vVector859_rep_F_index286__AVariance' PositiveDefiniteMatrix[] vVector859_rep_F_index286__AVariance = new PositiveDefiniteMatrix[5622]; for (int index286 = 0; index286 < 5622; index286++) { // Message to 'vdouble__859' from InnerProduct factor vVector859_rep_F_index286__AVariance[index286] = InnerProductOp.AVarianceInit(vVector859_rep_F[index286]); // Message to 'vVector859_rep' from Replicate factor vVector859_rep_F[index286] = ReplicateOp_Divide.UsesAverageConditional <VectorGaussian>(vVector859_rep_B[index286], vVector859_rep_F_marginal, index286, vVector859_rep_F[index286]); } // Create array for 'vdouble__859_marginal' Forwards messages. this.vdouble__859_marginal_F = new DistributionStructArray <Gaussian, double>(5622); for (int index286 = 0; index286 < 5622; index286++) { this.vdouble__859_marginal_F[index286] = Gaussian.Uniform(); // Message to 'vdouble__859' from InnerProduct factor vVector859_rep_F_index286__AVariance[index286] = InnerProductOp.AVariance(vVector859_rep_F[index286], vVector859_rep_F_index286__AVariance[index286]); // Message to 'vdouble__859' from InnerProduct factor vVector859_rep_F_index286__AMean[index286] = InnerProductOp.AMean(vVector859_rep_F[index286], vVector859_rep_F_index286__AVariance[index286], vVector859_rep_F_index286__AMean[index286]); // Message to 'vdouble__859' from InnerProduct factor vdouble__859_F[index286] = InnerProductOp.InnerProductAverageConditional(vVector859_rep_F_index286__AMean[index286], vVector859_rep_F_index286__AVariance[index286], this.VVector__286[index286]); // Message to 'vdouble__859_marginal' from DerivedVariable factor this.vdouble__859_marginal_F[index286] = DerivedVariableOp.MarginalAverageConditional <Gaussian>(vdouble__859_use_B[index286], vdouble__859_F[index286], this.vdouble__859_marginal_F[index286]); } this.Changed_vVector__286_vdouble__858_iterationsDone = 1; }