vecOps.c
This file contains a number of functions to do arithmetic operations
on vectors.
DESCRIPTION:
Create a vector.
SIGNATURE:
VECTOR *
shVectorNew(int dimen)
DESCRIPTION:
Destroy a vector.
SIGNATURE:
void
shVectorDel(VECTOR *vec)
DESCRIPTION:
Realloc the vector's values.
SIGNATURE:
VECTOR *
shVectorResize(
VECTOR *vec,
int dimen
)
DESCRIPTION:
Print a vector
SIGNATURE:
void
shVectorPrint(VECTOR *x)
DESCRIPTION:
Return a vector created by an implicit do loop, e.g.
shVectorDo(1,9,2) would return a vector {1 3 5 7 9}.
SIGNATURE:
VECTOR *
shVectorDo(
VECTOR *x1,
VECTOR *x2,
VECTOR *dx
)
DESCRIPTION:
Return those elements of v1 for which v2 is true
SIGNATURE:
VECTOR *
shVectorIf(VECTOR *v1, /* vector to be trimmed */
VECTOR *v2) /* logical values */
DESCRIPTION:
subscript vector v1 with v2
SIGNATURE:
VECTOR *
shVectorSubscript(
VECTOR *v1, /* vector to be indexed */
VECTOR *v2 /* indexes */
)
DESCRIPTION:
Take the absolute value of a vector
SIGNATURE:
VECTOR *
shVectorAbs(
VECTOR *v1 /* vector to be absed */
)
DESCRIPTION:
Take the acos of a vector
SIGNATURE:
VECTOR *
shVectorAcos(
VECTOR *v1 /* vector to be acosed */
)
DESCRIPTION:
Add two vectors
SIGNATURE:
VECTOR *
shVectorAdd(
VECTOR *v1,
VECTOR *v2 /* vectors to be added */
)
DESCRIPTION:
Take the asin of a vector
SIGNATURE:
VECTOR *
shVectorAsin(
VECTOR *v1 /* vector to be asined */
)
DESCRIPTION:
Take the atan of a vector
SIGNATURE:
VECTOR *
shVectorAtan(
VECTOR *v1 /* vector to be ataned */
)
DESCRIPTION:
Take the atan of a pair of vectors, v1 and v2
SIGNATURE:
VECTOR *
shVectorAtan2(
VECTOR *v1,
VECTOR *v2
)
Return a vector consisting of all of v1 followed by all of v2
SIGNATURE:
VECTOR *
shVectorConcat(VECTOR *v1, /* vectors to */
VECTOR *v2) /* be concatenated */
DESCRIPTION:
Take the cosine of a vector
SIGNATURE:
VECTOR *
shVectorCos(
VECTOR *v1 /* vector to be cosed */
)
DESCRIPTION:
divide two vectors
SIGNATURE:
VECTOR *
shVectorDivide(
VECTOR *v1,
VECTOR *v2
)
DESCRIPTION:
Take the exponential of a vector
SIGNATURE:
VECTOR *
shVectorExp(
VECTOR *v1 /* vector to be exped */
)
DESCRIPTION:
Take the integral part of a vector
SIGNATURE:
VECTOR *
shVectorInt(
VECTOR *v1 /* vector to be inted */
)
Evaluate the number of elements of a vector
SIGNATURE:
VECTOR *
shVectorDimen(VECTOR *v1) /* vector whose size is desired */
DESCRIPTION:
Take the lg of a vector
SIGNATURE:
VECTOR *
shVectorLg(
VECTOR *v1 /* vector to be logged (base 10) */
)
DESCRIPTION:
Take the ln of a vector
SIGNATURE:
VECTOR *
shVectorLn(
VECTOR *v1 /* vector to be logged (base 10) */
)
DESCRIPTION:
Multiply two vectors
SIGNATURE:
VECTOR *
shVectorMultiply(
VECTOR *v1,
VECTOR *v2 /* vectors to be multiplied */
)
DESCRIPTION:
negate a vector
SIGNATURE:
VECTOR *
shVectorNegate(
VECTOR *v1 /* vector to be negated */
)
DESCRIPTION:
Calculate a power of a vector
SIGNATURE:
VECTOR *
shVectorPow(
VECTOR *v1,
VECTOR *v2
)
Select some elements of a vector
SIGNATURE:
VECTOR *
shVectorSelect(VECTOR *v1, /* vector to be chosen from */
VECTOR *v2) /* desired elements */
Overwrite the elements of vec2 with the elements of vec1
at the index positions given by index. Index must be the same
size as vec1
SIGNATURE:
VECTOR *
shVectorMap(VECTOR *v1, /* vector with elemets to use for overwriting*/
VECTOR *index, /* index into v2 */
VECTOR *v2) /* vector with elements to be overwritten */
Count the number of elements in vector 1 that are less
than the value in vector 2. Vector 2 may be either
of size 1 or of size Dimen(vector 2)
SIGNATURE:
VECTOR *
shVectorNtile(VECTOR *v1, /* vector to count in */
VECTOR *v2) /* values to compare */
Construct a uniform random number distribution
between v1 and v2.
SIGNATURE:
VECTOR *
shVectorRand(VECTOR *v1, /* min vector*/
VECTOR *v2) /* max vector*/
Construct a normal random number distribution
of mean v1 and dispersion v2
SIGNATURE:
VECTOR *
shVectorRandN(VECTOR *v1, /* mean vector*/
VECTOR *v2) /* sigma vector*/
DESCRIPTION:
Take the sine of a vector
SIGNATURE:
VECTOR *
shVectorSin(
VECTOR *v1 /* vector to be sined */
)
Take vector v1; if v2 is present, set its values to be indices to sort
other vectors the same way (using vectorExprEval select<index>)
SIGNATURE:
VECTOR *
shVectorSort(VECTOR *v1,
VECTOR *v2)
DESCRIPTION:
Take the sqrt of a vector
SIGNATURE:
VECTOR *
shVectorSqrt(
VECTOR *v1 /* vector to be sqrted */
)
DESCRIPTION:
Subtract two vectors
SIGNATURE:
VECTOR *
shVectorSubtract(
VECTOR *v1,
VECTOR *v2 /* vectors to be subtracted */
)
Evaluate the sum of the elements of a vector
SIGNATURE:
VECTOR *
shVectorSum(VECTOR *v1) /* vector to be summed */
DESCRIPTION:
Take the tangent of a vector
SIGNATURE:
VECTOR *
shVectorTan(
VECTOR *v1 /* vector to be tanned */
)
DESCRIPTION:
return v1 & v2
SIGNATURE:
VECTOR *
shVectorLAnd(VECTOR *v1,
VECTOR *v2) /* vectors to be ANDed together */
DESCRIPTION:
return v1 | v2
SIGNATURE:
VECTOR *
shVectorLOr(VECTOR *v1,
VECTOR *v2) /* vectors to be ORd together */
DESCRIPTION:
return v1 && v2
SIGNATURE:
VECTOR *
shVectorAnd(
VECTOR *v1,
VECTOR *v2 /* vectors to be tested */
)
DESCRIPTION:
are two vectors equal (element by element)
SIGNATURE:
VECTOR *
shVectorEq(
VECTOR *v1,
VECTOR *v2 /* vectors to be tested */
)
DESCRIPTION:
is v1 >= v2?
SIGNATURE:
VECTOR *
shVectorGe(
VECTOR *v1,
VECTOR *v2 /* vectors to be tested */
)
DESCRIPTION:
is v1 > v2?
SIGNATURE:
VECTOR *
shVectorGt(
VECTOR *v1,
VECTOR *v2 /* vectors to be tested */
)
DESCRIPTION:
SIGNATURE:
VECTOR *
shVectorLternary(
VECTOR *logical,
VECTOR *expr1,
VECTOR *expr2
)
DESCRIPTION:
find the logical not of a vector
SIGNATURE:
VECTOR *
shVectorNot(
VECTOR *v1 /* vector to be !ed */
)
DESCRIPTION:
return v1 || v2
SIGNATURE:
VECTOR *
shVectorOr(
VECTOR *v1,
VECTOR *v2 /* vectors to be tested */
)