/* k and n - k gives the same value, optimize the calculation to do fewer
if(k>n)return0;
steps*/
if(k*2>n)
if(k*2>n)k=n-k;
k=n-k;
if(k==0)return1;
if(k==0)return1;
UnsignedLongresult=n;
UnsignedLongresult=n;
for(UnsignedInti=2;i<=k;++i){
for(UnsignedInti=2;i<=k;++i){
CORRADE_ASSERT(result<~UnsignedLong{}/(n-i+1),"Math::binomialCoefficient(): overflow for ("<<Corrade::Utility::Debug::nospace<<n<<"choose"<<k<<Corrade::Utility::Debug::nospace<<")",0ul);
CORRADE_ASSERT(result<~UnsignedLong{}/(n-i+1),"Math::binomialCoefficient(): overflow for ("<<Corrade::Utility::Debug::nospace<<n<<"choose"<<k<<Corrade::Utility::Debug::nospace<<")",{});