Skip to content

Commit e65f663

Browse files
committed
fix(random): break circular delegation with Shape.ToIntArray
After longindexing migration, Shape.dimensions is long[] instead of int[]. This caused circular delegation: params long[] → new Shape(size) → Shape overload → size.dimensions (long[]) → matches params long[] again → infinite recursion Fix: Shape overloads now use Shape.ToIntArray(size.dimensions) to delegate to the int[] implementation, breaking the circular dependency. Files fixed: beta, bernoulli, binomial, chisquare, exponential, f, gamma, geometric, logseries, lognormal, multinomial, noncentral_f, poisson, randn, standard_cauchy, standard_gamma, standard_t, triangular, uniform, wald, weibull
1 parent e0fa47b commit e65f663

7 files changed

Lines changed: 10 additions & 10 deletions

File tree

src/NumSharp.Core/RandomSampling/np.random.f.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public NDArray f(double dfnum, double dfden, Shape? size = null)
3636
return NDArray.Scalar(FSample(dfnum, dfden));
3737
}
3838

39-
return f(dfnum, dfden, size.Value.dimensions);
39+
return f(dfnum, dfden, Shape.ToIntArray(size.Value.dimensions));
4040
}
4141

4242
/// <summary>
@@ -47,7 +47,7 @@ public NDArray f(double dfnum, double dfden, Shape? size = null)
4747
/// <param name="size">Output shape.</param>
4848
/// <returns>Drawn samples from the F distribution.</returns>
4949
/// <exception cref="ArgumentException">If dfnum or dfden is <= 0.</exception>
50-
public NDArray f(double dfnum, double dfden, Shape size) => f(dfnum, dfden, size.dimensions);
50+
public NDArray f(double dfnum, double dfden, Shape size) => f(dfnum, dfden, Shape.ToIntArray(size.dimensions));
5151

5252
/// <summary>
5353
/// Draw samples from an F distribution.

src/NumSharp.Core/RandomSampling/np.random.logseries.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public NDArray logseries(double p, Shape? size = null)
3333
return NDArray.Scalar(SampleLogseries(p));
3434
}
3535

36-
return logseries(p, size.Value.dimensions);
36+
return logseries(p, Shape.ToIntArray(size.Value.dimensions));
3737
}
3838

3939
/// <summary>

src/NumSharp.Core/RandomSampling/np.random.standard_cauchy.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,15 @@ public NDArray standard_cauchy(Shape? size = null)
2929
return NDArray.Scalar(StandardCauchySample());
3030
}
3131

32-
return standard_cauchy(size.Value.dimensions);
32+
return standard_cauchy(Shape.ToIntArray(size.Value.dimensions));
3333
}
3434

3535
/// <summary>
3636
/// Draw samples from a standard Cauchy distribution with mode = 0.
3737
/// </summary>
3838
/// <param name="size">Output shape.</param>
3939
/// <returns>Drawn samples from the standard Cauchy distribution.</returns>
40-
public NDArray standard_cauchy(Shape size) => standard_cauchy(size.dimensions);
40+
public NDArray standard_cauchy(Shape size) => standard_cauchy(Shape.ToIntArray(size.dimensions));
4141

4242
/// <summary>
4343
/// Draw samples from a standard Cauchy distribution with mode = 0.

src/NumSharp.Core/RandomSampling/np.random.standard_gamma.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public partial class NumPyRandom
2222
/// p(x) = x^(shape-1) * e^(-x) / Gamma(shape)
2323
/// </remarks>
2424
public NDArray standard_gamma(double shape, Shape size)
25-
=> standard_gamma(shape, size.dimensions);
25+
=> standard_gamma(shape, Shape.ToIntArray(size.dimensions));
2626

2727
/// <summary>
2828
/// Draw samples from a standard Gamma distribution (scale=1).

src/NumSharp.Core/RandomSampling/np.random.standard_t.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public partial class NumPyRandom
2222
/// P(x, df) = Gamma((df+1)/2) / (sqrt(pi*df) * Gamma(df/2)) * (1 + x^2/df)^(-(df+1)/2)
2323
/// </remarks>
2424
public NDArray standard_t(double df, Shape size)
25-
=> standard_t(df, size.dimensions);
25+
=> standard_t(df, Shape.ToIntArray(size.dimensions));
2626

2727
/// <summary>
2828
/// Draw samples from a standard Student's t distribution with df degrees of freedom.

src/NumSharp.Core/RandomSampling/np.random.vonmises.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public NDArray vonmises(double mu, double kappa, Shape? size = null)
4141
return NDArray.Scalar(SampleVonMises(mu, kappa));
4242
}
4343

44-
return vonmises(mu, kappa, size.Value.dimensions);
44+
return vonmises(mu, kappa, Shape.ToIntArray(size.Value.dimensions));
4545
}
4646

4747
/// <summary>

src/NumSharp.Core/RandomSampling/np.random.weibull.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public NDArray weibull(double a, Shape? size = null)
3636
return NDArray.Scalar(WeibullSample(a));
3737
}
3838

39-
return weibull(a, size.Value.dimensions);
39+
return weibull(a, Shape.ToIntArray(size.Value.dimensions));
4040
}
4141

4242
/// <summary>
@@ -46,7 +46,7 @@ public NDArray weibull(double a, Shape? size = null)
4646
/// <param name="size">Output shape.</param>
4747
/// <returns>Drawn samples from the Weibull distribution.</returns>
4848
/// <exception cref="ArgumentException">If a is negative.</exception>
49-
public NDArray weibull(double a, Shape size) => weibull(a, size.dimensions);
49+
public NDArray weibull(double a, Shape size) => weibull(a, Shape.ToIntArray(size.dimensions));
5050

5151
/// <summary>
5252
/// Draw samples from a Weibull distribution.

0 commit comments

Comments
 (0)