---
name: "PDL::VectorValued"
section: "3pm"
platform: "linux"
package: "libpdl-vectorvalued-perl"
version: "1.0.23-1+b1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/PDL::VectorValued"
---

# PDL::VectorValued(3pm)

Utilities for vector-valued PDLs

## NAME

PDL::VectorValued - Utilities for vector-valued PDLs

## SYNOPSIS

```
 use PDL;
 use PDL::VectorValued;
 ##---------------------------------------------------------------------
 ## ... stuff happens
```

## DESCRIPTION

PDL::VectorValued provides generalizations of some elementary PDL functions to higher-order PDLs which treat vectors as "data values".

## ALIASES

To facilitate incorporation of selected vector-valued functions into the PDL core, the PDL:PP-, XS-, C-, and perl-level functions defined by this module in the `"PDL::VectorValued::Utils"` package namespace all carry a `"vv_"` prefix as of PDL::VectorValued v1.0.19 Prior to v1.0.19, many of these functions (e.g. `cmpvec()`) were defined by this module without a `"vv_"` prefix.

For PDL::VectorValued \>= v1.0.19 and PDL \> v2.079, most vector-valued functions are expected to be defined in the PDL core.  For such "moving" functions `"FUNC"`, the PDL core implementations will be imported into the `"PDL::VectorValued"` namespace as both `"FUNC"` and `"vv_FUNC"`, clobbering any local implementation from the `"PDL::VectorValued::Utils"` namespace.  Local implementations `"vv_FUNC"` which were previously defined and exported as `"FUNC"` or for which no binding for `*PDL::FUNC` exists will be bound to both `*PDL::VectorValued::FUNC` and `*PDL::FUNC`, and exported by default, for backwards-compatibility.

Functions expected to move to the PDL core are:

- •

  New code should use `FUNC()` or `PDL::FUNC()`.

- •

  Backwards-compatible code can use `FUNC()` or `PDL::VectorValued::FUNC()`.

- •

  Direct use of `PDL::VectorValued::Utils::vv_FUNC()` is deprecated.

- •

  Direct use of `PDL::VectorValued::Utils::FUNC()` is likely broken as of PDL::VectorValued v1.0.19.

## FUNCTIONS

### vv\_uniqvec

```
  Signature: (v(N,M); [o]vu(N,MU))
```

Drop-in replacement for broken **uniqvec()** which uses **vv\_qsortvec()**. Otherwise copied from PDL::Primitive::primitive.pd.

See also: PDL::VectorValued::Utils::vv\_qsortvec, PDL::Primitive::uniqvec.

## Higher-Order Run-Length Encoding and Decoding

The following functions generalize the builtin PDL functions **rle()** and **rld()** for higher-order "values".

See also: **PDL::VectorValued::Utils::vv\_rlevec()**, **PDL::VectorValued::Utils::vv\_rldvec()**.

### vv\_rleND

```
  Signature: (data(@vdims,N); int [o]counts(N); [o]elts(@vdims,N))
```

Run-length encode a set of (sorted) n-dimensional values.

Generalization of **rle()** and **vv\_rlevec()**: given set of values `$data`, generate a vector `$counts` with the number of occurrences of each element (where an "element" is a matrix of dimensions `@vdims` ocurring as a sequential run over the final dimension in `$data`), and a set of vectors `$elts` containing the elements which begin a run. Really just a wrapper for **clump()** and **rlevec()**.

See also: PDL::Slices::rle, PDL::Ngrams::VectorValued::Utils::vv\_rlevec.

### vv\_rldND

```
  Signature: (int counts(N); elts(@vdims,N); [o]data(@vdims,N);)
```

Run-length decode a set of (sorted) n-dimensional values.

Generalization of **rld()** and **rldvec()**: given a vector $**counts()** of the number of occurrences of each `@vdims`-dimensioned element, and a set $**elts()** of `@vdims`-dimensioned elements, run-length decode to $**data()**.

Really just a wrapper for **clump()** and **rldvec()**.

See also: PDL::Slices::rld, PDL::VectorValued::Utils::rldvec

## Datatype Utilities

### vv\_indx

```
  Signature: vv_indx()
```

Returns PDL::Type subclass used for indices. If built with PDL \< v2.007, this should return `"PDL::long"`, otherwise `"PDL::indx"`.

### Low-Level Functions

Some additional low-level functions are provided in the PDL::VectorValued::Utils package. See PDL::VectorValued::Utils for details.

## ACKNOWLEDGEMENTS

perl by Larry Wall.

## AUTHOR

Bryan Jurish \<moocow@cpan.org\>

PDL by Karl Glazebrook, Tuomas J. Lukka, Christian Soeller, and others.

## COPYRIGHT

Copyright (c) 2007-2022, Bryan Jurish.  All rights reserved.

This package is free software.  You may redistribute it and/or modify it under the same terms as Perl itself.

## SEE ALSO

[**perl**(1)](/perl/1.md), **PDL**(3perl), **PDL::VectorValued::Utils**(3perl)
