with Base_Ten;
package body Halstead_Potential_Program_Volume is

    procedure Of_Task (V_Entry_Total : in Result;
                       Number_Of_Entries : in Natural;
                       V_Star : out Result) is

    begin
        -- Of_Task

        V_Star := V_Entry_Total / Result (Number_Of_Entries);

    exception
        -- to be changed after the demo
        when others =>
            V_Star := 0.0;

    end Of_Task;


    procedure Of_Other_Program_Unit (N1_Star : in Potential_Operator_Count;
                                     N2_Star : in Potential_Operand_Count;
                                     V_Star : out Result) is

        package Log_Base_Ten is new Base_Ten (Argument => Result,
                                              Return_Value => Result);

        function Log (Of_Value : in Result) return Result
            renames Log_Base_Ten.Log;

        N_Star : Result := Result (N1_Star) + Result (N2_Star);

    begin
        -- Of_Other_Program_Unit

        V_Star := N_Star * (Log (Result (N_Star)) / Log (Result (2)));

    exception
        -- to be changed after the demo
        when others =>
            V_Star := 0.0;

    end Of_Other_Program_Unit;

end Halstead_Potential_Program_Volume;