## Uses of Interface
com.io7m.jtensors.parameterized.PVectorReadable4LType

- Packages that use PVectorReadable4LType
  Package | Description
  --- | ---
  com.io7m.jtensors.bytebuffered.parameterized | `ByteBuffer` backed parameterized tensors.
  com.io7m.jtensors.parameterized | Parameterized vector and matrix types.

- - ### Uses of PVectorReadable4LType in com.io7m.jtensors.bytebuffered.parameterized

    Subinterfaces of PVectorReadable4LType in com.io7m.jtensors.bytebuffered.parameterized
    Modifier and Type | Interface and Description
    --- | ---
    `interface` | `PVectorByteBuffered4LType<T>` The type of `PVector4LType` values that are also byte buffered.

    Classes in com.io7m.jtensors.bytebuffered.parameterized that implement PVectorReadable4LType
    Modifier and Type | Class and Description
    --- | ---
    `class` | `PVectorByteBufferedM4L<T>` A four-element vector type with `long` elements, packed into a `ByteBuffer`.

    Methods in com.io7m.jtensors.bytebuffered.parameterized with parameters of type PVectorReadable4LType
    Modifier and Type | Method and Description
    --- | ---
    `void` | PVectorByteBufferedM4L.`copyFromTyped4L(PVectorReadable4LType<T> in_v)`

  - ### Uses of PVectorReadable4LType in com.io7m.jtensors.parameterized

    Subinterfaces of PVectorReadable4LType in com.io7m.jtensors.parameterized
    Modifier and Type | Interface and Description
    --- | ---
    `interface` | `PVector4LType<T>` The type of four-element vectors that are both readable and writable, and have `long` elements

    Classes in com.io7m.jtensors.parameterized that implement PVectorReadable4LType
    Modifier and Type | Class and Description
    --- | ---
    `class` | `PVectorI4L<T>` A four-dimensional immutable vector type with integer elements.
    `class` | `PVectorM4L<T>` A four-dimensional mutable vector type with integer elements.

    Methods in com.io7m.jtensors.parameterized with type parameters of type PVectorReadable4LType
    Modifier and Type | Method and Description
    --- | ---
    `static <T,V extends PVectorWritable4LType<T> & PVectorReadable4LType<T>> V` | PVectorM4L.`absoluteInPlace(V v)` Calculate the absolute values of the elements in vector `v`, saving the result to `v`.
    `static <T,V extends PVectorWritable4LType<T> & PVectorReadable4LType<T>> V` | PVectorM4L.`addInPlace(V v0, PVectorReadable4LType<T> v1)` Calculate the element-wise sum of the vectors `v0` and `v1`, saving the result to `v0`.
    `static <T,V extends PVectorWritable4LType<T> & PVectorReadable4LType<T>> V` | PVectorM4L.`addScaledInPlace(V v0, PVectorReadable4LType<T> v1, double r)` Calculate the element-wise sum of the vectors `v0` and the element-wise product of `v1` and `r`, saving the result to `v0`.
    `static <T,V extends PVectorWritable4LType<T> & PVectorReadable4LType<T>> V` | PVectorM4L.`clampByPVectorInPlace(V v, PVectorReadable4LType<T> minimum, PVectorReadable4LType<T> maximum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum` and `maximum`, saving the result to `v`.
    `static <T,V extends PVectorWritable4LType<T> & PVectorReadable4LType<T>> V` | PVectorM4L.`clampInPlace(V v, long minimum, long maximum)` Clamp the elements of the vector `v` to the range {@code [minimum ..
    `static <T,V extends PVectorWritable4LType<T> & PVectorReadable4LType<T>> V` | PVectorM4L.`clampMaximumByPVectorInPlace(V v, PVectorReadable4LType<T> maximum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `maximum`, saving the result to `v`.
    `static <T,V extends PVectorWritable4LType<T> & PVectorReadable4LType<T>> V` | PVectorM4L.`clampMaximumInPlace(V v, long maximum)` Clamp the elements of the vector `v` to the range {@code [-Infinity ..
    `static <T,V extends PVectorWritable4LType<T> & PVectorReadable4LType<T>> V` | PVectorM4L.`clampMinimumByPVectorInPlace(V v, PVectorReadable4LType<T> minimum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum`, saving the result to `v`.
    `static <T,V extends PVectorWritable4LType<T> & PVectorReadable4LType<T>> V` | PVectorM4L.`clampMinimumInPlace(V v, long minimum)` Clamp the elements of the vector `v` to the range {@code [minimum ..
    `static <T,V extends PVectorWritable4LType<T> & PVectorReadable4LType<T>> V` | PVectorM4L.`scaleInPlace(V v, long r)` Scale the vector `v` by the scalar `r`, saving the result to `v`.
    `static <T,V extends PVectorWritable4LType<T> & PVectorReadable4LType<T>> V` | PVectorM4L.`subtractInPlace(V v0, PVectorReadable4LType<T> v1)` Subtract the vector `v1` from the vector `v0`, saving the result to `v0`.

    Methods in com.io7m.jtensors.parameterized with parameters of type PVectorReadable4LType
    Modifier and Type | Method and Description
    --- | ---
    `static <T> PVectorI4L<T>` | PVectorI4L.`absolute(PVectorReadable4LType<T> v)` Calculate the absolute values of the elements in vector `v`.
    `static <T,V extends PVectorWritable4LType<T>> V` | PVectorM4L.`absolute(PVectorReadable4LType<T> v, V out)` Calculate the absolute values of the elements in vector `v`, saving the result to `out`.
    `static <T> PVectorI4L<T>` | PVectorI4L.`add(PVectorReadable4LType<T> v0, PVectorReadable4LType<T> v1)` Calculate the element-wise sum of the vectors `v0` and `v1`.
    `static <T> PVectorI4L<T>` | PVectorI4L.`add(PVectorReadable4LType<T> v0, PVectorReadable4LType<T> v1)` Calculate the element-wise sum of the vectors `v0` and `v1`.
    `static <T,V extends PVectorWritable4LType<T>> V` | PVectorM4L.`add(PVectorReadable4LType<T> v0, PVectorReadable4LType<T> v1, V out)` Calculate the element-wise sum of the vectors `v0` and `v1`, saving the result to `out`.
    `static <T,V extends PVectorWritable4LType<T>> V` | PVectorM4L.`add(PVectorReadable4LType<T> v0, PVectorReadable4LType<T> v1, V out)` Calculate the element-wise sum of the vectors `v0` and `v1`, saving the result to `out`.
    `static <T,V extends PVectorWritable4LType<T> & PVectorReadable4LType<T>> V` | PVectorM4L.`addInPlace(V v0, PVectorReadable4LType<T> v1)` Calculate the element-wise sum of the vectors `v0` and `v1`, saving the result to `v0`.
    `static <T> PVectorI4L<T>` | PVectorI4L.`addScaled(PVectorReadable4LType<T> v0, PVectorReadable4LType<T> v1, double r)` Calculate the element-wise sum of the vectors `v0` and the element-wise product of `v1` and `r`.
    `static <T> PVectorI4L<T>` | PVectorI4L.`addScaled(PVectorReadable4LType<T> v0, PVectorReadable4LType<T> v1, double r)` Calculate the element-wise sum of the vectors `v0` and the element-wise product of `v1` and `r`.
    `static <T,V extends PVectorWritable4LType<T>> V` | PVectorM4L.`addScaled(PVectorReadable4LType<T> v0, PVectorReadable4LType<T> v1, double r, V out)` Calculate the element-wise sum of the vectors `v0` and the element-wise product of `v1` and `r`, saving the result to `out`.
    `static <T,V extends PVectorWritable4LType<T>> V` | PVectorM4L.`addScaled(PVectorReadable4LType<T> v0, PVectorReadable4LType<T> v1, double r, V out)` Calculate the element-wise sum of the vectors `v0` and the element-wise product of `v1` and `r`, saving the result to `out`.
    `static <T,V extends PVectorWritable4LType<T> & PVectorReadable4LType<T>> V` | PVectorM4L.`addScaledInPlace(V v0, PVectorReadable4LType<T> v1, double r)` Calculate the element-wise sum of the vectors `v0` and the element-wise product of `v1` and `r`, saving the result to `v0`.
    `static <T> PVectorI4L<T>` | PVectorI4L.`clamp(PVectorReadable4LType<T> v, long minimum, long maximum)` Clamp the elements of the vector `v` to the range {@code [minimum ..
    `static <T,V extends PVectorWritable4LType<T>> V` | PVectorM4L.`clamp(PVectorReadable4LType<T> v, long minimum, long maximum, V out)` Clamp the elements of the vector `v` to the range {@code [minimum ..
    `static <T> PVectorI4L<T>` | PVectorI4L.`clampByPVector(PVectorReadable4LType<T> v, PVectorReadable4LType<T> minimum, PVectorReadable4LType<T> maximum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum` and `maximum`.
    `static <T> PVectorI4L<T>` | PVectorI4L.`clampByPVector(PVectorReadable4LType<T> v, PVectorReadable4LType<T> minimum, PVectorReadable4LType<T> maximum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum` and `maximum`.
    `static <T> PVectorI4L<T>` | PVectorI4L.`clampByPVector(PVectorReadable4LType<T> v, PVectorReadable4LType<T> minimum, PVectorReadable4LType<T> maximum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum` and `maximum`.
    `static <T,V extends PVectorWritable4LType<T>> V` | PVectorM4L.`clampByPVector(PVectorReadable4LType<T> v, PVectorReadable4LType<T> minimum, PVectorReadable4LType<T> maximum, V out)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum` and `maximum`, saving the result to `out`.
    `static <T,V extends PVectorWritable4LType<T>> V` | PVectorM4L.`clampByPVector(PVectorReadable4LType<T> v, PVectorReadable4LType<T> minimum, PVectorReadable4LType<T> maximum, V out)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum` and `maximum`, saving the result to `out`.
    `static <T,V extends PVectorWritable4LType<T>> V` | PVectorM4L.`clampByPVector(PVectorReadable4LType<T> v, PVectorReadable4LType<T> minimum, PVectorReadable4LType<T> maximum, V out)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum` and `maximum`, saving the result to `out`.
    `static <T,V extends PVectorWritable4LType<T> & PVectorReadable4LType<T>> V` | PVectorM4L.`clampByPVectorInPlace(V v, PVectorReadable4LType<T> minimum, PVectorReadable4LType<T> maximum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum` and `maximum`, saving the result to `v`.
    `static <T,V extends PVectorWritable4LType<T> & PVectorReadable4LType<T>> V` | PVectorM4L.`clampByPVectorInPlace(V v, PVectorReadable4LType<T> minimum, PVectorReadable4LType<T> maximum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum` and `maximum`, saving the result to `v`.
    `static <T> PVectorI4L<T>` | PVectorI4L.`clampMaximum(PVectorReadable4LType<T> v, long maximum)` Clamp the elements of the vector `v` to the range {@code [-Infinity ..
    `static <T,V extends PVectorWritable4LType<T>> V` | PVectorM4L.`clampMaximum(PVectorReadable4LType<T> v, long maximum, V out)` Clamp the elements of the vector `v` to the range {@code [-Infinity ..
    `static <T> PVectorI4L<T>` | PVectorI4L.`clampMaximumByPVector(PVectorReadable4LType<T> v, PVectorReadable4LType<T> maximum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `maximum`.
    `static <T> PVectorI4L<T>` | PVectorI4L.`clampMaximumByPVector(PVectorReadable4LType<T> v, PVectorReadable4LType<T> maximum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `maximum`.
    `static <T,V extends PVectorWritable4LType<T>> V` | PVectorM4L.`clampMaximumByPVector(PVectorReadable4LType<T> v, PVectorReadable4LType<T> maximum, V out)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `maximum`, saving the result to `out`.
    `static <T,V extends PVectorWritable4LType<T>> V` | PVectorM4L.`clampMaximumByPVector(PVectorReadable4LType<T> v, PVectorReadable4LType<T> maximum, V out)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `maximum`, saving the result to `out`.
    `static <T,V extends PVectorWritable4LType<T> & PVectorReadable4LType<T>> V` | PVectorM4L.`clampMaximumByPVectorInPlace(V v, PVectorReadable4LType<T> maximum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `maximum`, saving the result to `v`.
    `static <T> PVectorI4L<T>` | PVectorI4L.`clampMinimum(PVectorReadable4LType<T> v, long minimum)` Clamp the elements of the vector `v` to the range {@code [minimum ..
    `static <T,V extends PVectorWritable4LType<T>> V` | PVectorM4L.`clampMinimum(PVectorReadable4LType<T> v, long minimum, V out)` Clamp the elements of the vector `v` to the range {@code [minimum ..
    `static <T> PVectorI4L<T>` | PVectorI4L.`clampMinimumByPVector(PVectorReadable4LType<T> v, PVectorReadable4LType<T> minimum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum`.
    `static <T> PVectorI4L<T>` | PVectorI4L.`clampMinimumByPVector(PVectorReadable4LType<T> v, PVectorReadable4LType<T> minimum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum`.
    `static <T,V extends PVectorWritable4LType<T>> V` | PVectorM4L.`clampMinimumByPVector(PVectorReadable4LType<T> v, PVectorReadable4LType<T> minimum, V out)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum`, saving the result to `out`.
    `static <T,V extends PVectorWritable4LType<T>> V` | PVectorM4L.`clampMinimumByPVector(PVectorReadable4LType<T> v, PVectorReadable4LType<T> minimum, V out)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum`, saving the result to `out`.
    `static <T,V extends PVectorWritable4LType<T> & PVectorReadable4LType<T>> V` | PVectorM4L.`clampMinimumByPVectorInPlace(V v, PVectorReadable4LType<T> minimum)` Clamp the elements of the vector `v` to the inclusive range given by the corresponding elements in `minimum`, saving the result to `v`.
    `static <T,U extends PVectorWritable4LType<T>> U` | PVectorM4L.`copy(PVectorReadable4LType<T> input, U output)` Copy all elements of the vector `input` to the vector `output`.
    `void` | PVectorWritable4LType.`copyFromTyped4L(PVectorReadable4LType<T> in_v)` Set the current vector to the contents of the input vector.
    `void` | PVectorM4L.`copyFromTyped4L(PVectorReadable4LType<T> in_v)`
    `static <T> long` | PVectorM4L.`distance(PVectorM4L.ContextPVM4L c, PVectorReadable4LType<T> v0, PVectorReadable4LType<T> v1)` Calculate the distance between the two vectors `v0` and `v1`.
    `static <T> long` | PVectorM4L.`distance(PVectorM4L.ContextPVM4L c, PVectorReadable4LType<T> v0, PVectorReadable4LType<T> v1)` Calculate the distance between the two vectors `v0` and `v1`.
    `static <T> long` | PVectorI4L.`distance(PVectorReadable4LType<T> v0, PVectorReadable4LType<T> v1)` Calculate the distance between the two vectors `v0` and `v1`.
    `static <T> long` | PVectorI4L.`distance(PVectorReadable4LType<T> v0, PVectorReadable4LType<T> v1)` Calculate the distance between the two vectors `v0` and `v1`.
    `static <T> long` | PVectorM4L.`dotProduct(PVectorReadable4LType<T> v0, PVectorReadable4LType<T> v1)` Calculate the scalar product of the vectors `v0` and `v1`.
    `static <T> long` | PVectorM4L.`dotProduct(PVectorReadable4LType<T> v0, PVectorReadable4LType<T> v1)` Calculate the scalar product of the vectors `v0` and `v1`.
    `static <T> long` | PVectorI4L.`dotProduct(PVectorReadable4LType<T> v0, PVectorReadable4LType<T> v1)` Calculate the scalar product of the vectors `v0` and `v1`.
    `static <T> long` | PVectorI4L.`dotProduct(PVectorReadable4LType<T> v0, PVectorReadable4LType<T> v1)` Calculate the scalar product of the vectors `v0` and `v1`.
    `static <T,V extends PVectorWritable4LType<T>> V` | PVectorM4L.`interpolateLinear(PVectorM4L.ContextPVM4L c, PVectorReadable4LType<T> v0, PVectorReadable4LType<T> v1, double alpha, V r)` Linearly interpolate between `v0` and `v1` by the amount `alpha`, saving the result to `r`.
    `static <T,V extends PVectorWritable4LType<T>> V` | PVectorM4L.`interpolateLinear(PVectorM4L.ContextPVM4L c, PVectorReadable4LType<T> v0, PVectorReadable4LType<T> v1, double alpha, V r)` Linearly interpolate between `v0` and `v1` by the amount `alpha`, saving the result to `r`.
    `static <T> PVectorI4L<T>` | PVectorI4L.`interpolateLinear(PVectorReadable4LType<T> v0, PVectorReadable4LType<T> v1, double alpha)` Linearly interpolate between `v0` and `v1` by the amount `alpha`.
    `static <T> PVectorI4L<T>` | PVectorI4L.`interpolateLinear(PVectorReadable4LType<T> v0, PVectorReadable4LType<T> v1, double alpha)` Linearly interpolate between `v0` and `v1` by the amount `alpha`.
    `static <T> long` | PVectorM4L.`magnitude(PVectorReadable4LType<T> v)` Calculate the magnitude of the vector `v`.
    `static <T> long` | PVectorI4L.`magnitude(PVectorReadable4LType<T> v)` Calculate the magnitude of the vector `v`.
    `static <T> long` | PVectorM4L.`magnitudeSquared(PVectorReadable4LType<T> v)` Calculate the squared magnitude of the vector `v`.
    `static <T> long` | PVectorI4L.`magnitudeSquared(PVectorReadable4LType<T> v)` Calculate the squared magnitude of the vector `v`.
    `static <T> PVectorI4L<T>` | PVectorI4L.`projection(PVectorReadable4LType<T> p, PVectorReadable4LType<T> q)` Calculate the projection of the vector `p` onto the vector `q`.
    `static <T> PVectorI4L<T>` | PVectorI4L.`projection(PVectorReadable4LType<T> p, PVectorReadable4LType<T> q)` Calculate the projection of the vector `p` onto the vector `q`.
    `static <T,V extends PVectorWritable4LType<T>> V` | PVectorM4L.`projection(PVectorReadable4LType<T> p, PVectorReadable4LType<T> q, V r)` Calculate the projection of the vector `p` onto the vector `q`, saving the result in `r`.
    `static <T,V extends PVectorWritable4LType<T>> V` | PVectorM4L.`projection(PVectorReadable4LType<T> p, PVectorReadable4LType<T> q, V r)` Calculate the projection of the vector `p` onto the vector `q`, saving the result in `r`.
    `static <T> PVectorI4L<T>` | PVectorI4L.`scale(PVectorReadable4LType<T> v, double r)` Scale the vector `v` by the scalar `r`.
    `static <T,V extends PVectorWritable4LType<T>> V` | PVectorM4L.`scale(PVectorReadable4LType<T> v, double r, V out)` Scale the vector `v` by the scalar `r`, saving the result to `out`.
    `static <T> PVectorI4L<T>` | PVectorI4L.`subtract(PVectorReadable4LType<T> v0, PVectorReadable4LType<T> v1)` Subtract the vector `v1` from the vector `v0`.
    `static <T> PVectorI4L<T>` | PVectorI4L.`subtract(PVectorReadable4LType<T> v0, PVectorReadable4LType<T> v1)` Subtract the vector `v1` from the vector `v0`.
    `static <T,V extends PVectorWritable4LType<T>> V` | PVectorM4L.`subtract(PVectorReadable4LType<T> v0, PVectorReadable4LType<T> v1, V out)` Subtract the vector `v1` from the vector `v0`, saving the result to `out`.
    `static <T,V extends PVectorWritable4LType<T>> V` | PVectorM4L.`subtract(PVectorReadable4LType<T> v0, PVectorReadable4LType<T> v1, V out)` Subtract the vector `v1` from the vector `v0`, saving the result to `out`.
    `static <T,V extends PVectorWritable4LType<T> & PVectorReadable4LType<T>> V` | PVectorM4L.`subtractInPlace(V v0, PVectorReadable4LType<T> v1)` Subtract the vector `v1` from the vector `v0`, saving the result to `v0`.

    Constructors in com.io7m.jtensors.parameterized with parameters of type PVectorReadable4LType
    Constructor and Description
    `PVectorI4L(PVectorReadable4LType<T> in_v)` Construct a vector initialized with the values given in the vector `in_v`.
    `PVectorM4L(PVectorReadable4LType<T> in_v)` Construct a vector initialized with the values given in the vector `in_v`.

Copyright © 2015 <code@io7m.com> http://io7m.com