Kaydet (Commit) ccbb0dd8 authored tarafından Winfried Donkers's avatar Winfried Donkers Kaydeden (comit) Eike Rathke

tdf104532 handle constraints for NEGBINOM.DIST correctly.

Also changed variable names for easier understanding of their meaning.

Change-Id: Iab558d7d1d9533f2a0c42e3d5f4acecead2e818e
Reviewed-on: https://gerrit.libreoffice.org/31807Reviewed-by: 's avatarEike Rathke <erack@redhat.com>
Tested-by: 's avatarEike Rathke <erack@redhat.com>
üst ae9b5144
......@@ -1514,21 +1514,21 @@ void ScInterpreter::ScNegBinomDist_MS()
if ( MustHaveParamCount( GetByte(), 4 ) )
{
bool bCumulative = GetBool();
double p = GetDouble(); // p
double r = GetDouble(); // r
double x = GetDouble(); // x
if ( r < 0.0 || x < 0.0 || p < 0.0 || p > 1.0 )
double p = GetDouble(); // probability
double s = ::rtl::math::approxFloor(GetDouble()); // No of successes
double f = ::rtl::math::approxFloor(GetDouble()); // No of failures
if ( s < 1.0 || f < 0.0 || p < 0.0 || p > 1.0 )
PushIllegalArgument();
else
{
double q = 1.0 - p;
if ( bCumulative )
PushDouble( 1.0 - GetBetaDist( q, x + 1, r ) );
PushDouble( 1.0 - GetBetaDist( q, f + 1, s ) );
else
{
double fFactor = pow( p, r );
for ( double i = 0.0; i < x; i++ )
fFactor *= ( i + r ) / ( i + 1.0 ) * q;
double fFactor = pow( p, s );
for ( double i = 0.0; i < f; i++ )
fFactor *= ( i + s ) / ( i + 1.0 ) * q;
PushDouble( fFactor );
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment