$InvocationPath = Split-Path -Path $MyInvocation.MyCommand.Path -Parent


# Average values in an array
#
function Get-Average ( $array )
{
    $RunningTotal = 0;
    foreach($i in $array){
        $RunningTotal += $i
    }
    return ([decimal]($RunningTotal) / [decimal]($array.Length));
} # EOF

# Average values in an array
#
Function Get-Median($array)
{
    return ($array|sort)[[math]::Round($array.Length/2)-1]
} # EOF


Function Get-Percentile($array, $percentile)
{
    if ($percentile -gt 50) {
        return ($array|sort)[[math]::floor(($array.Length * $percentile) / 100)-1]
    }
    elseif ($percentile -lt 50) {
        return ($array|sort)[[math]::ceiling(($array.Length * $percentile) / 100)-1]
    }
    else {
        return Median($array)
    }
} #eof

# 
#
function isNumeric ($x)
{
    $x2 = 0
    $isNum = [System.Int32]::TryParse($x, [ref]$x2)
    return $isNum
} # EOF


function Get-StdDev ([double[]]$numbers)
{
    $avg = $numbers | Measure-Object -Average | select Count, Average
    $popdev = 0
    foreach ($number in $numbers){
      $popdev +=  [math]::pow(($number - $avg.Average), 2)
    }
    $sd = [math]::sqrt($popdev / ($avg.Count-1))
    write-host "StdDev: $("{0:N2}" -f $sd)"

    return $sd
}


Export-ModuleMember -Function Get-Average
Export-ModuleMember -Function Get-Median
Export-ModuleMember -Function Get-Percentile
Export-ModuleMember -Function Get-StdDev
Export-ModuleMember -Function isNumeric