# Insert comma in long numbers.
- my ( $num, # number reference to commify
+ my ( $num, # number to commify
) = @_;
- ${ $num } =~ s/(^[-+]?\d+?(?=(?>(?:\d{3})+)(?!\d))|\G\d{3}(?=\d))/$1,/g;
+ # Returns a string.
+
+ my ( $copy );
+
+ $copy = $num;
+
+ $copy =~ s/(^[-+]?\d+?(?=(?>(?:\d{3})+)(?!\d))|\G\d{3}(?=\d))/$1,/g;
+
+ return $copy;
}
# Returns a float.
- my ( $mean_num, $num, $div, $div_sum, $mean_div, $std_div );
+ my ( $mean_num, $num, $dev, $dev_sum, $mean_dev, $std_dev );
$mean_num = mean( $numbers );
- $div_sum = 0;
+ $dev_sum = 0;
foreach $num ( @{ $numbers } )
{
- $div = ( $num - $mean_num ) ** 2;
+ $dev = ( $num - $mean_num ) ** 2;
- $div_sum += $div;
+ $dev_sum += $dev;
}
- $mean_div = $div_sum / scalar @{ $numbers };
+ $mean_dev = $dev_sum / scalar @{ $numbers };
- $std_div = sqrt( abs( $mean_div ) );
+ $std_dev = sqrt( $mean_dev );
- return $std_div;
+ return $std_dev;
}
}
+sub interpolate_linear
+{
+ # Martin A. Hansen, February 2010.
+
+ # Given two data points and an x value returns the
+ # interpolant (y).
+ #
+ # Formula for linear interpolation:
+ # http://en.wikipedia.org/wiki/Interpolation#Example
+
+ my ( $x1,
+ $y1,
+ $x2,
+ $y2,
+ $x
+ ) = @_;
+
+ # Returns a float
+
+ my ( $y );
+
+ $y = $y1 + ( $x - $x1 ) * ( ( $y2 - $y1 ) / ( $x2 - $x1 ) );
+
+ return $y;
+}
+
+
sub overlap
{
# Martin A. Hansen, November 2003.