---
name: "Math::VecStat"
section: "3pm"
platform: "linux"
package: "libmath-vecstat-perl"
version: "0.08-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Math::VecStat"
---

# Math::VecStat(3pm)

## NAME

```
    Math::VecStat - Some basic numeric stats on vectors
```

## SYNOPSIS

```
    use Math::VecStat qw(max min maxabs minabs sum average);
    $max=max(@vector);
    $max=max(\@vector);
    ($max,$imax)=max(@vector);
    ($max,$imax)=max(\@vector);
    $min=min(@vector);
    $min=min(\@vector);
    ($max,$imin)=min(@vector);
    ($max,$imin)=min(\@vector);
    $max=maxabs(@vector);
    $max=maxabs(\@vector);
    ($max,$imax)=maxabs(@vector);
    ($max,$imax)=maxabs(\@vector);
    $min=minabs(@vector);
    $min=minabs(\@vector);
    ($max,$imin)=minabs(@vector);
    ($max,$imin)=minabs(\@vector);
    $sum=sum($v1,$v2,...);
    $sum=sum(@vector);
    $sum=sum(\@vector);
    $average=average($v1,$v2,...);
    $av=average(@vector);
    $av=average(\@vector);
    $ref=vecprod($scalar,\@vector);
    $ok=ordered(@vector);
    $ok=ordered(\@vector);
    $ref=sumbyelement(\@vector1,\@vector2);
    $ref=diffbyelement(\@vector1,\@vector2);
    $ok=allequal(\@vector1,\@vector2);
    $ref=convolute(\@vector1,\@vector2);
```

## DESCRIPTION

This package provides some basic statistics on numerical vectors. All the subroutines can take a reference to the vector to be operated on. In some cases a copy of the vector is acceptable, but is not recommended for efficiency.

- max(@vector), max(\\@vector)

  return the maximum value of given values or vector. In an array context returns the value and the index in the array where it occurs.

- min(@vector), min(\\@vector)

  return the minimum value of given values or vector, In an array context returns the value and the index in the array where it occurs.

- maxabs(@vector), maxabs(\\@vector)

  return the maximum value of absolute of the given values or vector. In an array context returns the value and the index in the array where it occurs.

- minabs(@vector), minabs(\\@vector)

  return the minimum value of the absolute of the given values or vector. In an array context returns the value and the index in the array where it occurs.

- sum($v1,$v2,...), sum(@vector), sum(\\@vector)

  return the sum of the given values or vector

- average($v1,$v2,..), average(@vector), average(\\@vector)

  return the average of the given values or vector

- vecprod($a,$v1,$v2,..), vecprod($a,@vector), vecprod( $a, \\@vector )

  return a vector built by multiplying the scalar `$a` by each element of the `@vector`.

- ordered($v1,$v2,..), ordered(@vector), ordered(\\@vector)

  return nonzero iff the vector is nondecreasing with respect to its index. To be used like

  ```
    if( ordered( $lowBound, $value, $highBound ) ){
  ```

  instead of the (slightly) more clumsy

  ```
    if( ($lowBound <= $value) && ($value <= $highBound) ) {
  ```

- sumbyelement( \\@array1, \\@array2 ), diffbyelement(\\@array1,\\@array2)

  return the element-by-element sum or difference of two identically-sized vectors. Given

  ```
    $s = sumbyelement( [10,20,30], [1,2,3] );
    $d = diffbyelement( [10,20,30], [1,2,3] );
  ```

  `$s` will be `"[11,22,33]"`, `$d` will be `"[9,18,27]"`.

- allequal( \\@array1, \\@array2 )

  returns true if and only if the two arrays are numerically identical.

- convolute( \\@array1, \\@array2 )

  return a reference to an array containing the element-by-element product of the two input arrays. I.e.,

  ```
    $r = convolute( [1,2,3], [-1,2,1] );
  ```

  returns a reference to

  ```
    [-1,4,3]
  ```

- median

  evaluates the median, i.e. an element which separates the population in two halves.  It returns a reference to a list whose first element is the median value and the second element is the index of the median element in the original vector.

  ```
    $a = Math::VecStat::median( [9,8,7,6,5,4,3,2,1] );
  ```

  returns the list reference

  ```
    [ 5, 4 ]
  ```

  i.e. the median value is 5 and it is found at position 4 of the original array.

  If there are several elements of the array having the median value, e.g. \[1,3,3,3,5\].  In this case we choose always the first element in the original vector which is a median. In the example, we return \[3,1\]. =back =head1 HISTORY

  ```
   $Log: VecStat.pm,v $
   Revision 1.9  2003/04/20 00:49:00 spinellia@acm.org
   Perl 5.8 broke test 36, exposing inconsistency in C<median>.  Fixed, thanks to david@jamesgang.com.
   Revision 1.8  2001/01/26 11:10:00 spinellia@acm.org
   Added function median.
   Fixed test, thanks to Andreas Marcel Riechert <riechert@pobox.com>
   Revision 1.7  2000/10/24 15:28:00  spinellia@acm.org
   Added functions allequal diffbyelement
   Created a reasonable test suite.
   Revision 1.6  2000/06/29 16:06:37  spinellia@acm.org
   Added functions vecprod, convolute, sumbyelement
   Revision 1.5  1997/02/26 17:20:37  willijar
   Added line before pod header so pod2man installs man page correctly
   Revision 1.4  1996/02/20 07:53:10  willijar
   Added ability to return index in array contex to max and min
   functions. Added minabs and maxabs functions.
   Thanks to Mark Borges <mdb@cdc.noaa.gov> for these suggestions.
   Revision 1.3  1996/01/06 11:03:30  willijar
   Fixed stupid bug that crept into looping in min and max functions
   Revision 1.2  1995/12/26 09:56:38  willijar
   Oops - removed xy data functions.
   Revision 1.1  1995/12/26 09:39:07  willijar
   Initial revision
  ```

## BUGS

Let me know. I welcome any appropriate additions for this package.

## AUTHORS

John A.R. Williams \<J.A.R.Williams@aston.ac.uk\> Andrea Spinelli \<spinellia@acm.org\>
