• shVectorNew
  • shVectorDel
  • shVectorResize
  • shVectorPrint
  • shVectorDo
  • shVectorIf
  • shVectorSubscript
  • shVectorAbs
  • shVectorAcos
  • shVectorAdd
  • shVectorAsin
  • shVectorAtan
  • shVectorAtan2
  • shVectorConcat
  • shVectorCos
  • shVectorDivide
  • shVectorExp
  • shVectorInt
  • shVectorDimen
  • shVectorLg
  • shVectorLn
  • shVectorMultiply
  • shVectorNegate
  • shVectorPow
  • shVectorSelect
  • shVectorMap
  • shVectorNtile
  • shVectorRand
  • shVectorRandN
  • shVectorSin
  • shVectorSort
  • shVectorSqrt
  • shVectorSubtract
  • shVectorSum
  • shVectorTan
  • shVectorLAnd
  • shVectorLOr
  • shVectorAnd
  • shVectorEq
  • shVectorGe
  • shVectorGt
  • shVectorLternary
  • shVectorNot
  • shVectorOr
  • vecOps.c

     This file contains a number of functions to do arithmetic operations
     on vectors.
    
    
    
    

    shVectorNew

    DESCRIPTION:
    
    Create a vector.
    SIGNATURE:
      VECTOR *
      shVectorNew(int dimen)
    

    shVectorDel

    DESCRIPTION:
    
    Destroy a vector.
    SIGNATURE:
      void
      shVectorDel(VECTOR *vec)
    

    shVectorResize

    DESCRIPTION:
    
    Realloc the vector's values.
    SIGNATURE:
      VECTOR *
      shVectorResize(
      	       VECTOR *vec,
      	       int dimen
      	       )
    

    shVectorPrint

    DESCRIPTION:
    
    Print a vector
    SIGNATURE:
      void
      shVectorPrint(VECTOR *x)
    

    shVectorDo

    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
             )
    

    shVectorIf

    DESCRIPTION:
    
    Return those elements of v1 for which v2 is true
    SIGNATURE:
      VECTOR *
      shVectorIf(VECTOR *v1,			/* vector to be trimmed */
      	   VECTOR *v2)			/* logical values */
    

    shVectorSubscript

    DESCRIPTION:
    
    subscript vector v1 with v2
    SIGNATURE:
      VECTOR *
      shVectorSubscript(
         VECTOR *v1,			/* vector to be indexed */
         VECTOR *v2			/* indexes */
         )
    

    shVectorAbs

    DESCRIPTION:
    
    Take the absolute value of a vector
    SIGNATURE:
      VECTOR *
      shVectorAbs(
      	VECTOR *v1		/* vector to be absed */
      	)
    

    shVectorAcos

    DESCRIPTION:
    
    Take the acos of a vector
    SIGNATURE:
      VECTOR *
      shVectorAcos(
         VECTOR *v1			/* vector to be acosed */
         )
    

    shVectorAdd

    DESCRIPTION:
    
    Add two vectors
    SIGNATURE:
      VECTOR *
      shVectorAdd(
         VECTOR *v1,
         VECTOR *v2			/* vectors to be added */
         )
    

    shVectorAsin

    DESCRIPTION:
    
    Take the asin of a vector
    SIGNATURE:
      VECTOR *
      shVectorAsin(
         VECTOR *v1			/* vector to be asined */
         )
    

    shVectorAtan

    DESCRIPTION:
    
    Take the atan of a vector
    SIGNATURE:
      VECTOR *
      shVectorAtan(
         VECTOR *v1			/* vector to be ataned */
         )
    

    shVectorAtan2

    DESCRIPTION:
    
    Take the atan of a pair of vectors, v1 and v2
    SIGNATURE:
      VECTOR *
      shVectorAtan2(
         VECTOR *v1,
         VECTOR *v2
         )
    

    shVectorConcat

     Return a vector consisting of all of v1 followed by all of v2
    
    SIGNATURE:
      VECTOR *
      shVectorConcat(VECTOR *v1,		/* vectors to */
      	       VECTOR *v2)		/*   be concatenated */
    

    shVectorCos

    DESCRIPTION:
    
    Take the cosine of a vector
    SIGNATURE:
      VECTOR *
      shVectorCos(
         VECTOR *v1			/* vector to be cosed */
         )
    

    shVectorDivide

    DESCRIPTION:
    
    divide two vectors
    SIGNATURE:
      VECTOR *
      shVectorDivide(
         VECTOR *v1,
         VECTOR *v2
         )
    

    shVectorExp

    DESCRIPTION:
    
    Take the exponential of a vector
    SIGNATURE:
      VECTOR *
      shVectorExp(
         VECTOR *v1			/* vector to be exped */
         )
    

    shVectorInt

    DESCRIPTION:
    
    Take the integral part of a vector
    SIGNATURE:
      VECTOR *
      shVectorInt(
         VECTOR *v1			/* vector to be inted */
         )
    

    shVectorDimen

     Evaluate the number of elements of a vector
    
    SIGNATURE:
      VECTOR *
      shVectorDimen(VECTOR *v1)		/* vector whose size is desired */
    

    shVectorLg

    DESCRIPTION:
    
    Take the lg of a vector
    SIGNATURE:
      VECTOR *
      shVectorLg(
         VECTOR *v1			/* vector to be logged (base 10) */
         )
    

    shVectorLn

    DESCRIPTION:
    
    Take the ln of a vector
    SIGNATURE:
      VECTOR *
      shVectorLn(
         VECTOR *v1			/* vector to be logged (base 10) */
         )
    

    shVectorMultiply

    DESCRIPTION:
    
    Multiply two vectors
    SIGNATURE:
      VECTOR *
      shVectorMultiply(
         VECTOR *v1,
         VECTOR *v2			/* vectors to be multiplied */
         )
    

    shVectorNegate

    DESCRIPTION:
    
    negate a vector
    SIGNATURE:
      VECTOR *
      shVectorNegate(
         VECTOR *v1			/* vector to be negated */
         )
    

    shVectorPow

    DESCRIPTION:
    
    Calculate a power of a vector
    SIGNATURE:
      VECTOR *
      shVectorPow(
         VECTOR *v1,
         VECTOR *v2
         )
    

    shVectorSelect

     Select some elements of a vector
    
    SIGNATURE:
      VECTOR *
      shVectorSelect(VECTOR *v1,		/* vector to be chosen from */
      	       VECTOR *v2)		/* desired elements */
    

    shVectorMap

     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 */
    

    shVectorNtile

     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 */
    

    shVectorRand

     Construct a uniform random number distribution
     between v1 and v2.
    
    SIGNATURE:
      VECTOR *
      shVectorRand(VECTOR *v1,		/* min vector*/
      	       VECTOR *v2)			/* max vector*/
    

    shVectorRandN

     Construct a normal random number distribution
     of mean v1 and dispersion v2
    
    SIGNATURE:
      VECTOR *
      shVectorRandN(VECTOR *v1,		/* mean vector*/
      	       VECTOR *v2)			/* sigma vector*/
    

    shVectorSin

    DESCRIPTION:
    
    Take the sine of a vector
    SIGNATURE:
      VECTOR *
      shVectorSin(
         VECTOR *v1			/* vector to be sined */
         )
    

    shVectorSort

     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)
    

    shVectorSqrt

    DESCRIPTION:
    
    Take the sqrt of a vector
    SIGNATURE:
      VECTOR *
      shVectorSqrt(
         VECTOR *v1			/* vector to be sqrted */
         )
    

    shVectorSubtract

    DESCRIPTION:
    
    Subtract two vectors
    SIGNATURE:
      VECTOR *
      shVectorSubtract(
         VECTOR *v1,
         VECTOR *v2			/* vectors to be subtracted */
         )
    

    shVectorSum

     Evaluate the sum of the elements of a vector
    
    SIGNATURE:
      VECTOR *
      shVectorSum(VECTOR *v1)			/* vector to be summed */
    

    shVectorTan

    DESCRIPTION:
    
    Take the tangent of a vector
    SIGNATURE:
      VECTOR *
      shVectorTan(
         VECTOR *v1			/* vector to be tanned */
         )
    

    shVectorLAnd

    DESCRIPTION:
    
    return v1 & v2
    SIGNATURE:
      VECTOR *
      shVectorLAnd(VECTOR *v1,
      	     VECTOR *v2)		/* vectors to be ANDed together */
    

    shVectorLOr

    DESCRIPTION:
    
    return v1 | v2
    SIGNATURE:
      VECTOR *
      shVectorLOr(VECTOR *v1,
      	    VECTOR *v2)			/* vectors to be ORd together */
    

    shVectorAnd

    DESCRIPTION:
    
    return v1 && v2
    SIGNATURE:
      VECTOR *
      shVectorAnd(
             VECTOR *v1,
             VECTOR *v2			/* vectors to be tested */
             )
    

    shVectorEq

    DESCRIPTION:
    
    are two vectors equal (element by element)
    SIGNATURE:
      VECTOR *
      shVectorEq(
      	   VECTOR *v1,
      	   VECTOR *v2			/* vectors to be tested */
      	   )
    

    shVectorGe

    DESCRIPTION:
    
    is v1 >= v2?
    SIGNATURE:
      VECTOR *
      shVectorGe(
             VECTOR *v1,
             VECTOR *v2			/* vectors to be tested */
             )
    

    shVectorGt

    DESCRIPTION:
    
    is v1 > v2?
    SIGNATURE:
      VECTOR *
      shVectorGt(
             VECTOR *v1,
             VECTOR *v2			/* vectors to be tested */
             )
    

    shVectorLternary

    DESCRIPTION:
    
    SIGNATURE:
      VECTOR *
      shVectorLternary(
      	     VECTOR *logical,
      	     VECTOR *expr1,
      	     VECTOR *expr2
      	     )
    

    shVectorNot

    DESCRIPTION:
    
    find the logical not of a vector
    SIGNATURE:
      VECTOR *
      shVectorNot(
      	VECTOR *v1			/* vector to be !ed */
      	)
    

    shVectorOr

    DESCRIPTION:
    
    return v1 || v2
    SIGNATURE:
      VECTOR *
      shVectorOr(
             VECTOR *v1,
             VECTOR *v2			/* vectors to be tested */
             )