public static BottomiumCascadeMatrix CalculateCumulativeMatrix() { BottomiumCascadeMatrix cMatrix = BottomiumCascadeMatrix.CreateUnitMatrix(); BottomiumCascadeMatrix bMatrix = CalculateBranchingRatioMatrix(); for (int j = 0; j < BottomiumStatesCount; j++) { for (int i = BottomiumStatesCount - 1; i >= 0; i--) { for (int k = BottomiumStatesCount - 1; k >= 0; k--) { var iState = (BottomiumState)i; var jState = (BottomiumState)j; var kState = (BottomiumState)k; cMatrix[iState, jState] += bMatrix[iState, kState] * cMatrix[kState, jState]; } } } return(cMatrix); }