@@ -199,19 +199,27 @@ public final double proposal() {
199199
200200 // exchange a random delta
201201 final double d = getNextDouble (0 );
202- scalar1 -= d ;
202+ // scalar1 -= d;
203203// if (parameterWeights[dim1] != parameterWeights[dim2]) {
204204// scalar2 += d * parameterWeights[dim1] / parameterWeights[dim2];
205205// } else {
206206// scalar2 += d;
207207// }
208-
209-
210- double w1 = parameterWeights [dim1 ];
211- double w2 = parameterWeights [dim2 ];
212- double wsum = w1 + w2 ;
213- scalar1 = scalar1 + d *w2 /wsum ;
214- scalar2 = scalar2 - d *w1 /wsum ;
208+
209+ if (parameterWeights [dim1 ] != parameterWeights [dim2 ]) {
210+ final double sumW = parameterWeights [dim1 ] + parameterWeights [dim2 ];
211+ scalar1 -= d * parameterWeights [dim2 ] / sumW ;
212+ scalar2 += d * parameterWeights [dim1 ] / sumW ;
213+ } else {
214+ scalar1 -= d / 2 ; // for equal weights
215+ scalar2 += d / 2 ;
216+ }
217+
218+ // double w1 = parameterWeights[dim1];
219+ // double w2 = parameterWeights[dim2];
220+ // double wsum = w1 + w2;
221+ // scalar1 = scalar1 + d*w2/wsum;
222+ // scalar2 = scalar2 - d*w1/wsum;
215223
216224
217225
@@ -269,12 +277,21 @@ public final double proposal() {
269277// } else {
270278// scalar2 += d;
271279// }
272-
273- double w1 = parameterWeights [dim1 ];
274- double w2 = parameterWeights [dim2 ];
275- double wsum = w1 + w2 ;
276- scalar1 = scalar1 + d *w2 /wsum ;
277- scalar2 = scalar2 - d *w1 /wsum ;
280+
281+ if (parameterWeights [dim1 ] != parameterWeights [dim2 ]) {
282+ final double sumW = parameterWeights [dim1 ] + parameterWeights [dim2 ];
283+ scalar1 -= d * parameterWeights [dim2 ] / sumW ;
284+ scalar2 += d * parameterWeights [dim1 ] / sumW ;
285+ } else {
286+ scalar1 -= d / 2 ; // for equal weights
287+ scalar2 += d / 2 ;
288+ }
289+
290+ // double w1 = parameterWeights[dim1];
291+ // double w2 = parameterWeights[dim2];
292+ // double wsum = w1 + w2;
293+ // scalar1 = scalar1 + d*w2/wsum;
294+ // scalar2 = scalar2 - d*w1/wsum;
278295
279296 }
280297
0 commit comments