Analyzer.OverallMetricCalculator.CalculateGraphDensity C# (CSharp) Method

CalculateGraphDensity() protected method

protected CalculateGraphDensity ( IGraph oGraph, Int32 iVertices, Int32 iTotalEdgesAfterMergingDuplicatesNoSelfLoops ) : Nullable
oGraph IGraph
iVertices System.Int32
iTotalEdgesAfterMergingDuplicatesNoSelfLoops System.Int32
return Nullable
        CalculateGraphDensity
        (
            IGraph oGraph,
            Int32 iVertices,
            Int32 iTotalEdgesAfterMergingDuplicatesNoSelfLoops
        )
        {
            Debug.Assert(oGraph != null);
            Debug.Assert(iVertices >= 0);
            Debug.Assert(iTotalEdgesAfterMergingDuplicatesNoSelfLoops >= 0);


            

            Nullable<Double> dGraphDensity = null;

            if (iVertices > 1)
            {
                Double dVertices = (Double)iVertices;

                dGraphDensity =
                    (2 * (Double)iTotalEdgesAfterMergingDuplicatesNoSelfLoops) /
                    (dVertices * (dVertices - 1));

                if (oGraph.Directedness == GraphDirectedness.Directed)
                {
                    dGraphDensity /= 2.0;
                }

                // Don't allow rounding errors to create a very small negative
                // number.

                dGraphDensity = Math.Max(0, dGraphDensity.Value);
            }

            return (dGraphDensity);
        }