| Index: source/test/perf/perldriver/Format.pm
|
| diff --git a/source/test/perf/perldriver/Format.pm b/source/test/perf/perldriver/Format.pm
|
| deleted file mode 100644
|
| index d12fd18ad255282f1c7be5e7e27761ebe1c43e69..0000000000000000000000000000000000000000
|
| --- a/source/test/perf/perldriver/Format.pm
|
| +++ /dev/null
|
| @@ -1,166 +0,0 @@
|
| -#!/usr/local/bin/perl
|
| -# ********************************************************************
|
| -# * COPYRIGHT:
|
| -# * Copyright (c) 2002, International Business Machines Corporation and
|
| -# * others. All Rights Reserved.
|
| -# ********************************************************************
|
| -
|
| -my $PLUS_MINUS = "±";
|
| -
|
| -#|#---------------------------------------------------------------------
|
| -#|# Format a confidence interval, as given by a Dataset. Output is as
|
| -#|# as follows:
|
| -#|# 241.23 - 241.98 => 241.5 +/- 0.3
|
| -#|# 241.2 - 243.8 => 242 +/- 1
|
| -#|# 211.0 - 241.0 => 226 +/- 15 or? 230 +/- 20
|
| -#|# 220.3 - 234.3 => 227 +/- 7
|
| -#|# 220.3 - 300.3 => 260 +/- 40
|
| -#|# 220.3 - 1000 => 610 +/- 390 or? 600 +/- 400
|
| -#|# 0.022 - 0.024 => 0.023 +/- 0.001
|
| -#|# 0.022 - 0.032 => 0.027 +/- 0.005
|
| -#|# 0.022 - 1.000 => 0.5 +/- 0.5
|
| -#|# In other words, take one significant digit of the error value and
|
| -#|# display the mean to the same precision.
|
| -#|sub formatDataset {
|
| -#| my $ds = shift;
|
| -#| my $lower = $ds->getMean() - $ds->getError();
|
| -#| my $upper = $ds->getMean() + $ds->getError();
|
| -#| my $scale = 0;
|
| -#| # Find how many initial digits are the same
|
| -#| while ($lower < 1 ||
|
| -#| int($lower) == int($upper)) {
|
| -#| $lower *= 10;
|
| -#| $upper *= 10;
|
| -#| $scale++;
|
| -#| }
|
| -#| while ($lower >= 10 &&
|
| -#| int($lower) == int($upper)) {
|
| -#| $lower /= 10;
|
| -#| $upper /= 10;
|
| -#| $scale--;
|
| -#| }
|
| -#|}
|
| -
|
| -#---------------------------------------------------------------------
|
| -# Format a number, optionally with a +/- delta, to n significant
|
| -# digits.
|
| -#
|
| -# @param significant digit, a value >= 1
|
| -# @param multiplier
|
| -# @param time in seconds to be formatted
|
| -# @optional delta in seconds
|
| -#
|
| -# @return string of the form "23" or "23 +/- 10".
|
| -#
|
| -sub formatNumber {
|
| - my $sigdig = shift;
|
| - my $mult = shift;
|
| - my $a = shift;
|
| - my $delta = shift; # may be undef
|
| -
|
| - my $result = formatSigDig($sigdig, $a*$mult);
|
| - if (defined($delta)) {
|
| - my $d = formatSigDig($sigdig, $delta*$mult);
|
| - # restrict PRECISION of delta to that of main number
|
| - if ($result =~ /\.(\d+)/) {
|
| - # TODO make this work for values with all significant
|
| - # digits to the left of the decimal, e.g., 1234000.
|
| -
|
| - # TODO the other thing wrong with this is that it
|
| - # isn't rounding the $delta properly. Have to put
|
| - # this logic into formatSigDig().
|
| - my $x = length($1);
|
| - $d =~ s/\.(\d{$x})\d+/.$1/;
|
| - }
|
| - $result .= " $PLUS_MINUS " . $d;
|
| - }
|
| - $result;
|
| -}
|
| -
|
| -#---------------------------------------------------------------------
|
| -# Format a time, optionally with a +/- delta, to n significant
|
| -# digits.
|
| -#
|
| -# @param significant digit, a value >= 1
|
| -# @param time in seconds to be formatted
|
| -# @optional delta in seconds
|
| -#
|
| -# @return string of the form "23 ms" or "23 +/- 10 ms".
|
| -#
|
| -sub formatSeconds {
|
| - my $sigdig = shift;
|
| - my $a = shift;
|
| - my $delta = shift; # may be undef
|
| -
|
| - my @MULT = (1 , 1e3, 1e6, 1e9);
|
| - my @SUFF = ('s' , 'ms', 'us', 'ns');
|
| -
|
| - # Determine our scale
|
| - my $i = 0;
|
| - #always do seconds if the following line is commented out
|
| - ++$i while ($a*$MULT[$i] < 1 && $i < @MULT);
|
| -
|
| - formatNumber($sigdig, $MULT[$i], $a, $delta) . ' ' . $SUFF[$i];
|
| -}
|
| -
|
| -#---------------------------------------------------------------------
|
| -# Format a percentage, optionally with a +/- delta, to n significant
|
| -# digits.
|
| -#
|
| -# @param significant digit, a value >= 1
|
| -# @param value to be formatted, as a fraction, e.g. 0.5 for 50%
|
| -# @optional delta, as a fraction
|
| -#
|
| -# @return string of the form "23 %" or "23 +/- 10 %".
|
| -#
|
| -sub formatPercent {
|
| - my $sigdig = shift;
|
| - my $a = shift;
|
| - my $delta = shift; # may be undef
|
| -
|
| - formatNumber($sigdig, 100, $a, $delta) . '%';
|
| -}
|
| -
|
| -#---------------------------------------------------------------------
|
| -# Format a number to n significant digits without using exponential
|
| -# notation.
|
| -#
|
| -# @param significant digit, a value >= 1
|
| -# @param number to be formatted
|
| -#
|
| -# @return string of the form "1234" "12.34" or "0.001234". If
|
| -# number was negative, prefixed by '-'.
|
| -#
|
| -sub formatSigDig {
|
| - my $n = shift() - 1;
|
| - my $a = shift;
|
| -
|
| - local $_ = sprintf("%.${n}e", $a);
|
| - my $sign = (s/^-//) ? '-' : '';
|
| -
|
| - my $a_e;
|
| - my $result;
|
| - if (/^(\d)\.(\d+)e([-+]\d+)$/) {
|
| - my ($d, $dn, $e) = ($1, $2, $3);
|
| - $a_e = $e;
|
| - $d .= $dn;
|
| - $e++;
|
| - $d .= '0' while ($e > length($d));
|
| - while ($e < 1) {
|
| - $e++;
|
| - $d = '0' . $d;
|
| - }
|
| - if ($e == length($d)) {
|
| - $result = $sign . $d;
|
| - } else {
|
| - $result = $sign . substr($d, 0, $e) . '.' . substr($d, $e);
|
| - }
|
| - } else {
|
| - die "Can't parse $_";
|
| - }
|
| - $result;
|
| -}
|
| -
|
| -1;
|
| -
|
| -#eof
|
|
|