Framework | vecLib |
Declared in | vBasicOps.h vBigNum.h vForce.h vecLibTypes.h vectorOps.h vfp.h |
The vecLib framework contains nine C header files (not counting vecLib.h which merely includes the others). Two of them, vDSP.h and vDSP_translate.h, are covered in vDSP Library.
Three of the header files are Apple’s versions of well-known libraries which are described in detail in external references:
cblas.h and vblas.h are the interfaces to Apple’s implementations of BLAS. Documentation on the BLAS standard, including reference implementations, can be found on the web starting from the BLAS FAQ page at these URLs (verified live as of July 2005): http://www.netlib.org/blas/faq.html and http://www.netlib.org/blas/blast-forum/blast-forum.html
clapack.h is the interface to Apple’s implementation of LAPACK. Documentation of the LAPACK interfaces, including reference implementations, can be found on the web starting from the LAPACK FAQ page at this URL (verified live as of July 2005): http://netlib.org/lapack/faq.html
This document describes the functions declared in the remaining header files: vecLibTypes.h, vfp.h, vForce.h, vBasicOps.h, vectorOps.h, and vBigNum.h.
These files support the vector mathematical functions library (also called “vMathLib”), which runs on vector processing hardware (Altivec or SSE3) if available. This library abstracts the vector processing capability so that code written for it will execute appropriate instructions for the processor available at runtime.
The vecLibTypes.h header file defines a set of vector data types (vFloat
, vUInt32
, etc.), which represent 128-bit vectors containing values of type float
, UInt32
, etc. The vBasicOps.h and vfp.h headers make use of these types.
The type names all begin with the letter “v,” followed by a mnemonic for the scalar data type used for elements of the vector. For example, vUInt32
, vSInt16
, vFloat
, etc.
vBasicOps.h declares a set of basic arithmetic and logical functions on 128-bit vectors, using the integer types from vecLibTypes.h.
The function names begin with “v,” followed by a mnemonic for the type of operation, e.g. “S” or “U” for signed or unsigned, then the width of the operation, then the name of the operation. For example, vS8Divide
performs division of signed 8-bit values packed into 128-bit vectors.
vBasicOps.h declares a set of floating-point arithmetic, transcendental and trigonometric functions, on 128-bit vectors, using the floating-point types from vecLibTypes.h.
These functions are named with their customary mathematical names, prefixed with the letter “v”, and all except vtablelookup()
have the suffix “f” to indicate that they work with single-precision floating-point data. For example, vcosf
is the single-precision cosine function.
vForce.h declares a set of trigonometric and transcendental functions in terms of C arrays (double *
or float *
), which can be of any desired length. Internally, the C arrays are converted piecewise into collections of 128-bit vectors, if appropriate for the current architecture.
The functions declared in vForce.h are named with the customary mathematical names, but with the prefix “vv.” Each mathematical function is available in two variants: one for single-precision floating-point data and one for double-precision data. The single-precision forms have the suffix “f”, while the double-precision forms have no suffix. For example, vvcosf
is the single-precision cosine function, while vvcos
is the double-precision variant.
All of the vForce.h functions follow a common format:
The return type is void
.
The first parameter points to an array to hold the results. (The only exceptions are vvsincosf()
and vvsincos()
, which have two result arrays pointed to by the first two parameters.)
One or more parameters point to operand arrays, the same length as the result array.
The last parameter is the array length.
vectorOps.h declares a set of vector and matrix BLAS functions on arrays of 128-bit vectors containing single-precision floating-point values. The arrays can be of any desired length, but the number of float
elements must be a multiple of 4.
vBigNum.h provides arithmetic and logical operations on large integers, which may be 128, 256, 512, or 1024 bits in length. It defines types for these values, and internally processes them as collections of 128-bit vectors.
vBigNum.h defines its own set of data types to represent large integer quantities, such as vS128
for a signed, 128-bit integer or vU1024
for an unsigned, 1025-bit integer. The function names begin with the data type name, followed by the name of the operation. For example, vS512Add
performs addition of two 128-bit signed integers.
The functions perform logical and arithmetic operations on scalar values that may be 128, 256, 512, or 1024 bits in width. These values are implemented as structures of one, two, four, or eight 128-bit vectors, and the operations execute on the available vector-processing hardware if possible.
The functions have names that are compatible with those in vBasicOps.h.
For information about membership in Apple’s developer program, go to this URL:
http://developer.apple.com/membership/
For information about the Velocity Engine, go to this URL:
http://developer.apple.com/hardwaredrivers/ve/index.html
For general technical support from Apple, go to this URL:
http://developer.apple.com/technicalsupport/index.html
vLL64Shift
vLL64Shift2
vLR64Shift
vLR64Shift2
vA64Shift
vA64Shift2
vA128Shift
vL64Rotate
vR64Rotate
vL64Rotate2
vR64Rotate2
vL128Rotate
vR128Rotate
vU64Add
vU64AddS
vS64Add
vS64AddS
vU128Add
vU128AddS
vS128Add
vS128AddS
vU64Sub
vU64SubS
vS64Sub
vS64SubS
vU128Sub
vU128SubS
vS128Sub
vS128SubS
vU8HalfMultiply
vS8HalfMultiply
vU16HalfMultiply
vS16HalfMultiply
vU32HalfMultiply
vS32HalfMultiply
vU64HalfMultiply
vS64HalfMultiply
vU128HalfMultiply
vS128HalfMultiply
vU32FullMulEven
vU32FullMulOdd
vS32FullMulEven
vS32FullMulOdd
vU64FullMulEven
vU64FullMulOdd
vS64FullMulEven
vS64FullMulOdd
vU8Divide
vS8Divide
vU16Divide
vS16Divide
vU32Divide
vS32Divide
vU64Divide
vS64Divide
vU128Divide
vS128Divide
vvrecf
vvrec
vvdivf
vvdiv
vvsqrtf
vvsqrt
vvrsqrtf
vvrsqrt
vvintf
vvint
vvnintf
vvnint
vvceilf
vvceil
vvfloorf
vvfloor
vvsinf
vvsin
vvcosf
vvcos
vvtanf
vvtan
vvasinf
vvasin
vvacosf
vvacos
vvatanf
vvatan
vvatan2f
vvatan2
vvsincosf
vvsincos
vvcosisinf
vvcosisin
vLL256Shift
vLR256Shift
vA256Shift
vLL512Shift
vLR512Shift
vA512Shift
vLL1024Shift
vLR1024Shift
vA1024Shift
vL256Rotate
vR256Rotate
vL512Rotate
vR512Rotate
vL1024Rotate
vR1024Rotate
vU256Add
vU256AddS
vS256Add
vS256AddS
vU512Add
vU512AddS
vS512Add
vS512AddS
vU1024Add
vU1024AddS
vS1024Add
vS1024AddS
vU256Sub
vU256SubS
vS256Sub
vS256SubS
vU512Sub
vU512SubS
vS512Sub
vS512SubS
vU1024Sub
vU1024SubS
vS1024Sub
vS1024SubS
vU256Neg
vS256Neg
vU512Neg
vS512Neg
vU1024Neg
vS1024Neg
vU256Mod
vS256Mod
vU512Mod
vS512Mod
vU1024Mod
vS1024Mod
vU256HalfMultiply
vS256HalfMultiply
vU512HalfMultiply
vS512HalfMultiply
vU1024HalfMultiply
vS1024HalfMultiply
vU128FullMultiply
vS128FullMultiply
vU256FullMultiply
vS256FullMultiply
vU512FullMultiply
vS512FullMultiply
vU256Divide
vS256Divide
vU512Divide
vS512Divide
vU1024Divide
vS1024Divide
vIsamax
vIsamin
vIsmax
vIsmin
vSasum
vSsum
vSaxpy
vSnaxpy
vScopy
vSdot
vSndot
vSnrm2
vSnorm2
vSrot
vSscal
vSswap
vSyax()
vSzaxpy()
1024-bit arithmetic shift.
extern void vA1024Shift( const vS1024 * a, UInt32 shiftAmount, vS1024 * result);
vBigNum.h
128-bit arithmetic shift.
extern vUInt32 vA128Shift(vUInt32 vA, vUInt8 vShiftFactor);
vBasicOps.h
256-bit arithmetic shift.
extern void vA256Shift( const vS256 * a, UInt32 shiftAmount, vS256 * result);
vBigNum.h
512-bit arithmetic shift.
extern void vA512Shift( const vS512 * a, UInt32 shiftAmount, vS512 * result);
vBigNum.h
64-bit arithmetic shift.
extern vUInt32 vA64Shift(vUInt32 vA, vUInt8 vShiftFactor);
vBasicOps.h
64-bit arithmetic shift with two shift factors.
extern vUInt32 vA64Shift2(vUInt32 vA, vUInt8 vShiftFactor);
vBasicOps.h
For each vector element, calculates the arccosine. Results are in the interval [0, pi].
extern vFloat vacosf(vFloat arg);
vfp.h
For each vector element, calculates the inverse hyperbolic cosine of X
.
extern vFloat vacoshf(vFloat X);
vfp.h
For each vector element, calculates the arcsine. Results are in the interval [-pi/2, pi/2].
extern vFloat vasinf(vFloat arg);
vfp.h
For each vector element, calculates the inverse hyperbolic sine of X
.
extern vFloat vasinhf(vFloat X);
vfp.h
For each vector element, calculates the arctangent of arg2
/arg1
in the interval [-pi,pi] using the sign of both arguments to determine the quadrant of the computed value.
extern vFloat vatan2f(vFloat arg1, vFloat arg2);
vfp.h
For each vector element, calculates the arctangent. Results are in the interval [-pi/2, pi/2].
extern vFloat vatanf(vFloat arg);
vfp.h
For each vector element, calculates the inverse hyperbolic tangent of X
.
extern vFloat vatanhf(vFloat X);
vfp.h
For each vector element, returns the class of the argument (one of the FP_ ... constants defined in math.h).
extern vUInt32 vclassifyf(vFloat arg);
vfp.h
For each vector element, produces a value with the magnitude of arg2
and sign arg1
. Note that the order of the arguments matches the recommendation of the IEEE 754 floating-point standard, which is opposite from the SANE copysign function.
extern vFloat vcopysignf(vFloat arg2, vFloat arg1);
vfp.h
For each vector element, calculates the cosine.
extern vFloat vcosf(vFloat arg);
vfp.h
For each vector element, calculates the hyperbolic cosine of X
.
extern vFloat vcoshf(vFloat X);
vfp.h
For each vector element, calculates A
/B
.
extern vFloat vdivf(vFloat A, vFloat B);
vfp.h
For each vector element, calculates the exponential of X.
extern vFloat vexpf(vFloat X);
vfp.h
For each vector element, calculates ExpM1(x) = Exp(x) - 1. But, for small enough arguments, ExpM1(x) is expected to be more accurate than Exp(x) - 1.
extern vFloat vexpm1f(vFloat X);
vfp.h
For each vector element, calculates the absolute value of v
.
extern vFloat vfabf(vFloat v);
vfp.h
For each vector element, calculates X
modulo Y
.
extern vFloat vfmodf(vFloat X, vFloat Y);
vfp.h
For each vector element, calculates X
to the integer power of Y
.
extern vFloat vipowf(vFloat X, vSInt32 Y);
vfp.h
Finds the position of the first vector element having the largest absolute value.
extern SInt32 vIsamax(SInt32 count, const vector float x[]);
Number of elements in the vector x; must be a multiple of 4.
A vector array of float
values.
The index of the first element having the largest absolute value in the vector.
vectorOps.h
Finds the position of the first vector element having the smallest absolute value.
extern SInt32 vIsamin(SInt32 count, const vector float x[]);
Number of elements in the vector x; must be a multiple of 4.
A vector array of float
values.
The index of the first element having the smallest absolute value in the vector.
vectorOps.h
Finds the position of the first vector element having the maximum value.
extern SInt32 vIsmax(SInt32 count, const vector float x[]);
Number of elements in the vector x; must be a multiple of 4.
A vector array of float
values.
The index of the first element having the maximum value in the vector.
vectorOps.h
Finds the position of the first vector element having the minimum value.
extern SInt32 vIsmin(SInt32 count, const vector float x[]);
Number of elements in the vector x; must be a multiple of 4.
A vector array of float
values.
The index of the first element having the minimum value in the vector.
vectorOps.h
1024-bit left rotate.
extern void vL1024Rotate( const vU1024 * a, UInt32 rotateAmount, vU1024 * result);
vBigNum.h
128-bit left rotate.
extern vUInt32 vL128Rotate(vUInt32 vA, vUInt8 vRotateFactor);
vBasicOps.h
256-bit left rotate.
extern void vL256Rotate( const vU256 * a, UInt32 rotateAmount, vU256 * result);
vBigNum.h
512-bit left rotate.
extern void vL512Rotate( const vU512 * a, UInt32 rotateAmount, vU512 * result);
vBigNum.h
64-bit left rotate.
extern vUInt32 vL64Rotate(vUInt32 vA, vUInt8 vRotateFactor);
vBasicOps.h
64-bit left rotate with two rotation factors.
extern vUInt32 vL64Rotate2(vUInt32 vA, vUInt8 vRotateFactor);
vBasicOps.h
1024-bit logical left shift.
extern void vLL1024Shift( const vU1024 * a, UInt32 shiftAmount, vU1024 * result);
vBigNum.h
256-bit logical left shift.
extern void vLL256Shift( const vU256 * a, UInt32 shiftAmount, vU256 * result);
vBigNum.h
512-bit logical left shift.
extern void vLL512Shift( const vU512 * a, UInt32 shiftAmount, vU512 * result);
vBigNum.h
64-bit logical left shift.
extern vUInt32 vLL64Shift(vUInt32 vA, vUInt8 vShiftFactor);
vBasicOps.h
64-bit logical left shift with two shift factors.
extern vUInt32 vLL64Shift2(vUInt32 vA, vUInt8 vShiftFactor);
vBasicOps.h
For each vector element, calculates Log1P = Log(1 + x). But, for small enough arguments, Log1P is expected to be more accurate than Log(1 + x).
extern vFloat vlog1pf(vFloat X);
vfp.h
For each vector element, extracts the exponent of X
, as a signed integral value. A subnormal argument is treated as though it were first normalized. Thus: 1 <= x * 2^(-logb(x)) < 2.
extern vFloat vlogbf(vFloat X);
vfp.h
For each vector element, calculates the natural logarithm of X
.
extern vFloat vlogf(vFloat X);
vfp.h
1024-bit logical right shift .
extern void vLR1024Shift( const vU1024 * a, UInt32 shiftAmount, vU1024 * result);
vBigNum.h
256-bit logical right shift.
extern void vLR256Shift( const vU256 * a, UInt32 shiftAmount, vU256 * result);
vBigNum.h
512-bit logical right shift .
extern void vLR512Shift( const vU512 * a, UInt32 shiftAmount, vU512 * result);
vBigNum.h
64-bit logical right shift.
extern vUInt32 vLR64Shift(vUInt32 vA, vUInt8 vShiftFactor);
vBasicOps.h
64-bit logical right shift with two shift factors.
extern vUInt32 vLR64Shift2(vUInt32 vA, vUInt8 vShiftFactor);
vBasicOps.h
For each vector element, calculates the next representable value after x
in the direction of y
. If x
is equal to y
, then y
is returned.
extern vFloat vnextafterf(vFloat x, vFloat y);
vfp.h
For each vector element, calculates X
to the floating-point power of Y
. The result is more accurate than using exp(log(X
)*Y
).
extern vFloat vpowf(vFloat X, vFloat Y);
vfp.h
1024-bit right rotate.
extern void vR1024Rotate( const vU1024 * a, UInt32 rotateAmount, vU1024 * result);
vBigNum.h
128-bit right rotate.
extern vUInt32 vR128Rotate(vUInt32 vA, vUInt8 vRotateFactor);
vBasicOps.h
256-bit right rotate.
extern void vR256Rotate(const vU256 * a, UInt32 rotateAmount, vU256 * result);
vBigNum.h
512-bit right rotate.
extern void vR512Rotate( const vU512 * a, UInt32 rotateAmount, vU512 * result);
vBigNum.h
64-bit right rotate.
extern vUInt32 vR64Rotate(vUInt32 vA, vUInt8 RotateFactor);
vBasicOps.h
64-bit right rotate with two rotation factors.
extern vUInt32 vR64Rotate2(vUInt32 vA, vUInt8 vRotateFactor);
vBasicOps.h
For each vector element, calculates the remainder of X
/Y
, according to the IEEE 754 floating-point standard.
extern vFloat vremainderf(vFloat X, vFloat Y);
vfp.h
For each vector element, calculates the remainder of X
/Y
, according to the SANE standard. It stores into QUO
the 7 low-order bits of the integer quotient, such that -127 <= QUO
<= 127.
extern vFloat vremquof(vFloat X, vFloat Y, vUInt32 *QUO);
vfp.h
For each vector element, calculates the inverse of the square root of X
.
extern vFloat vrsqrtf(vFloat X);
vfp.h
Signed 1024-bit addition (modular arithmetic).
extern void vS1024Add( const vS1024 * a, const vS1024 * b, vS1024 * result);
vBigNum.h
Signed 1024-bit addition with saturation (clipping).
extern void vS1024AddS( const vS1024 * a, const vS1024 * b, vS1024 * result);
vBigNum.h
Signed 1024-bit division.
extern void vS1024Divide( const vS1024 * numerator, const vS1024 * divisor, vS1024 * result, vS1024 * remainder);
vBigNum.h
Signed 1024-bit multiplication; result is the same width as multiplicands.
extern void vS1024HalfMultiply( const vS1024 * a, const vS1024 * b, vS1024 * result);
vBigNum.h
Signed 256-bit Mod.
extern void vS1024Mod( const vS1024 * numerator, const vS1024 * divisor, vS1024 * remainder);
vBigNum.h
Signed 1024-bit negation.
extern void vS1024Neg( const vS1024 * a, vS1024 * result);
vBigNum.h
Signed 1024-bit subtraction (modular arithmetic).
extern void vS1024Sub( const vS1024 * a, const vS1024 * b, vS1024 * result);
vBigNum.h
Signed 1024-bit subtraction with saturation (clipping).
extern void vS1024SubS( const vS1024 * a, const vS1024 * b, vS1024 * result);
vBigNum.h
Signed 128-bit addition (modular arithmetic).
extern vSInt32 vS128Add(vSInt32 vA, vSInt32 vB);
vBasicOps.h
Signed 128-bit addition with saturation (clipping).
extern vSInt32 vS128AddS(vSInt32 vA, vSInt32 vB);
vBasicOps.h
Signed 128-bit division.
extern vSInt32 vS128Divide( vSInt32 vN, vSInt32 vD, vSInt32 * vRemainder);
vBasicOps.h
Signed 128-bit multiplication; result is twice as wide as multiplicands.
extern void vS128FullMultiply( const vS128 * a, const vS128 * b, vS256 * result);
vBigNum.h
Signed 128-bit multiplication; results are same width as multiplicands.
extern vSInt32 vS128HalfMultiply(vSInt32 vA, vSInt32 vB);
vBasicOps.h
Signed 128-bit subtraction (modular arithmetic).
extern vSInt32 vS128Sub(vSInt32 vA, vSInt32 vB);
vBasicOps.h
Signed 128-bit subtraction with saturation (clipping).
extern vSInt32 vS128SubS(vSInt32 vA, vSInt32 vB);
vBasicOps.h
Signed 16-bit division.
extern vSInt16 vS16Divide(vSInt16 vN, vSInt16 vD, vSInt16 * vRemainder);
vBasicOps.h
Signed 16-bit multiplication; results are same width as multiplicands.
extern vSInt16 vS16HalfMultiply(vSInt16 vA, vSInt16 vB);
vBasicOps.h
Signed 256-bit addition (modular arithmetic).
extern void vS256Add( const vS256 * a, const vS256 * b, vS256 * result);
vBigNum.h
Signed 256-bit addition with saturation (clipping).
extern void vS256AddS( const vS256 * a, const vS256 * b, vS256 * result);
vBigNum.h
Signed 256-bit division.
extern void vS256Divide( const vS256 * numerator, const vS256 * divisor, vS256 * result, vS256 * remainder);
vBigNum.h
Signed 256-bit multiplication; result is twice as wide as multiplicands.
extern void vS256FullMultiply( const vS256 * a, const vS256 * b, vS512 * result);
vBigNum.h
Signed 256-bit multiplication; result is the same width as multiplicands.
extern void vS256HalfMultiply( const vS256 * a, const vS256 * b, vS256 * result);
vBigNum.h
Signed 256-bit mod.
extern void vS256Mod( const vS256 * numerator, const vS256 * divisor, vS256 * remainder);
vBigNum.h
Signed 256-bit negation.
extern void vS256Neg( const vS256 * a, vS256 * result);
vBigNum.h
Signed 256-bit subtraction (modular arithmetic).
extern void vS256Sub( const vS256 * a, const vS256 * b, vS256 * result);
vBigNum.h
Signed 256-bit subtraction with saturation (clipping).
extern void vS256SubS( const vS256 * a, const vS256 * b, vS256 * result);
vBigNum.h
Signed 32-bit division.
extern vSInt32 vS32Divide(vSInt32 vN, vSInt32 vD, vSInt32 * vRemainder);
vBasicOps.h
Signed 32-bit multiplication; results are twice as wide as multiplicands, even-numbered elements of multiplicand vectors are used. Note the big-endian convention: the leftmost element is element 0.
extern vSInt32 vS32FullMulEven(vSInt32 vA, vSInt32 vB);
vBasicOps.h
Signed 32-bit multiplication; results are twice as wide as multiplicands, odd-numbered elements of multiplicand vectors are used. Note the big-endian convention: the leftmost element is element 0.
extern vSInt32 vS32FullMulOdd(vSInt32 vA, vSInt32 vB);
vBasicOps.h
Signed 32-bit multiplication; results are same width as multiplicands.
extern vSInt32 vS32HalfMultiply(vSInt32 vA, vSInt32 vB);
vBasicOps.h
Signed 512-bit addition (modular arithmetic).
extern void vS512Add( const vS512 * a, const vS512 * b, vS512 * result);
vBigNum.h
Signed 512-bit addition with saturation (clipping).
extern void vS512AddS( const vS512 * a, const vS512 * b, vS512 * result);
vBigNum.h
Signed 512-bit division.
extern void vS512Divide( const vS512 * numerator, const vS512 * divisor, vS512 * result, vS512 * remainder);
vBigNum.h
Signed 512-bit multiplication; result is twice as wide as multiplicands.
extern void vS512FullMultiply( const vS512 * a, const vS512 * b, vS1024 * result);
vBigNum.h
Signed 512-bit multiplication; result is the same width as multiplicands.
extern void vS512HalfMultiply( const vS512 * a, const vS512 * b, vS512 * result);
vBigNum.h
Signed 512-bit mod.
extern void vS512Mod( const vS512 * numerator, const vS512 * divisor, vS512 * remainder);
vBigNum.h
Signed 512-bit negation.
extern void vS512Neg( const vS512 * a, vS512 * result);
vBigNum.h
Signed 512-bit subtraction (modular arithmetic).
extern void vS512Sub( const vS512 * a, const vS512 * b, vS512 * result);
vBigNum.h
Signed 512-bit subtraction with saturation (clipping).
extern void vS512SubS( const vS512 * a, const vS512 * b, vS512 * result);
vBigNum.h
Signed 64-bit addition (modular arithmetic).
extern vSInt32 vS64Add(vSInt32 vA, vSInt32 vB);
vBasicOps.h
Signed 64-bit addition with saturation (clipping).
extern vSInt32 vS64AddS(vSInt32 vA, vSInt32 vB);
vBasicOps.h
Signed 64-bit division.
extern vSInt32 vS64Divide(vSInt32 vN, vSInt32 vD, vSInt32 * vRemainder);
vBasicOps.h
Signed 64-bit multiplication; results are twice as wide as multiplicands, even-numbered elements of multiplicand vectors are used. Note the big-endian convention: the leftmost element is element 0.
extern vSInt32 vS64FullMulEven(vSInt32 vA, vSInt32 vB);
vBasicOps.h
Signed 64-bit multiplication; results are twice as wide as multiplicands, odd-numbered elements of multiplicand vectors are used. Note the big-endian convention: the leftmost element is element 0.
extern vSInt32 vS64FullMulOdd(vSInt32 vA, vSInt32 vB);
vBasicOps.h
Signed 64-bit multiplication; results are same width as multiplicands.
extern vSInt32 vS64HalfMultiply(vSInt32 vA, vSInt32 vB);
vBasicOps.h
Signed 64-bit subtraction (modular arithmetic).
extern vSInt32 vS64Sub(vSInt32 vA, vSInt32 vB);
vBasicOps.h
Signed 64-bit subtraction with saturation (clipping).
extern vSInt32 vS64SubS(vSInt32 vA, vSInt32 vB);
vBasicOps.h
Signed 8-bit division.
extern vSInt8 vS8Divide(vSInt8 vN, vSInt8 vD, vSInt8 * vRemainder);
vBasicOps.h
Signed 8-bit multiplication; results are same width as multiplicands.
extern vSInt8 vS8HalfMultiply(vSInt8 vA, vSInt8 vB);
vBasicOps.h
Finds the sum of the absolute values of the elements in a vector.
extern float vSasum(SInt32 count, const vector float x[]);
Number of elements in the vector x; must be a multiple of 4.
A vector array of float
values.
The sum of the absolute values of the elements in the vector.
vectorOps.h
Multiplies a vector by a scalar , adds it to a second vector , and stores the result in the second vector.
extern void vSaxpy( SInt32 n, float alpha, const vector float x[], vector float y[]);
Number of elements in each of the vectors x and y; must be a multiple of 4.
A multiplier for the vector x.
A vector array of float
values.
A second vector array of float
values.
The elements of x are multiplied by alpha and added to the corresponding elements of y. The results are stored in y.
vectorOps.h
For each vector element, calculates x * 2^n efficiently. This is not normally done by computing 2^n explicitly.
extern vFloat vscalbf(vFloat X, vSInt32 n);
vfp.h
Copies one vector to another.
extern void vScopy( SInt32 n, const vector float x[], vector float y[]);
Number of elements in vectors x and y; must be a multiple of 4.
A vector array of float
values.
A second vector array of float
values.
The elements of x are copied to the corresponding elements of y.
vectorOps.h
Computes the dot product of two vectors.
extern float vSdot( SInt32 n, const vector float x[], const vector float y[]);
Number of elements in vectors x and y; must be a multiple of 4.
A vector array of float
values.
A second vector array of float
values.
The dot product of the two vectors.
vectorOps.h
Matrix addition for general matrices or their transposes.
extern void vSgeadd( SInt32 height, SInt32 width, const vector float a[], char forma, const vector float b[], char formb, vector float c[]);
number of rows in the matrices to be added; must be a multiple of 4.
number of columns in the matrices to be added; must be a multiple of 4.
a matrix with elements of type float
. If forma = ‘n’, the matrix itself is used in the calculation and it has height rows and width columns. If forma = ‘T’, the transpose is used and a has width rows and height columns.
selector with a value of ‘n’ or ‘T’.
a matrix with elements of type float
. If formb = ‘n’, the matrix itself is used in the calculation and it has height rows and width columns. If formb = ‘T’, the transpose is used and b has width rows and height columns.
selector with a value of ‘n’ or ‘T’.
destination matrix with height rows and width columns.
Matrix a (or its transpose) is added to matrix b (or its transpose); the result is stored in mactrix c.
Combined matrix multiplication and addition for general matrices or their transposes.
extern void vSgemm( Sint32 l, SInt32 m, SInt32 n, const vector float a[], char forma, const vector float b[], char formb, vector float c, float alpha, float beta vector float matrix[]);
number of rows in matrix c; must be a multiple of 4.
if forma = ‘n’, m is the number of columns in matrix a ; if forma = ‘T’, m is the number of rows in matrix a. Also, if formb = ‘n’, m is the number of rows in matrix b; if formb = ‘T’, m is the number of columns in matrix b. m must be a multiple of 4.
number of columns in matrix c; must be a multiple of 4.
a matrix with elements of type float
. If forma = ‘n’, the matrix itself is used in the calculation and it has l rows and m columns. If forma = ‘T’, the transpose is used and a has m rows and l columns. Thus the matrix used in the calculation is l by n.
selector with a value of ‘n’ or ‘T’.
a matrix with elements of type float
. If formb = ‘n’, the matrix itself is used in the calculation and it has m rows and n columns. If formb = ‘T’, the transpose is used and b has n rows and m columns. Thus the matrix used in the calculation is m by n.
selector with a value of ‘n’ or ‘T’.
an l by n matrix with elements of type float
.
multiplier for matrix a.
multiplier for matrix c.
destination matrix with l rows and n columns.
Matrix a (or its transpose) is multiplied by matrix b (or its transpose); matrix c is multiplied by beta, and the result is added to the result of the matrix multiplication; the result is stored in matrix matrix
Forms the transpose of a matrix, multiplies it by a scalar and then by a vector, and adds the resulting vector to a second vector.
extern void vSgemtx( SInt32 m, SInt32 n, float alpha, const vector float a[], const vector float x[], vector float y[]);
number of rows in a, and the length of vector y; must be a multiple of 4.
number of columns in a, and the length of vector x; must be a multiple of 4.
scalar multiplier for matrix a
.
m by n matrix with elements of type float
.
vector with elements of type float
.
destination vector with n elements of type float
.
The transpose of matrix a is multiplied by alpha and then by vector x; the resulting vector is added to vector y, and the results are stored in y.
Matrix multiplication for general matrices or their transposes.
extern void vSgemul( Sint32 l, SInt32 m, SInt32 n, const vector float a[], char forma, const vector float b[], char formb, vector float matrix[]);
number of rows in matrix matrix; must be a multiple of 4.
if forma = ‘n’, m is the number of columns in matrix a ; if forma = ‘T’, m is the number of rows in matrix a. Also, if formb = ‘n’, m is the number of rows in matrix b; if formb = ‘T’, m is the number of columns in matrix b. m must be a multiple of 4.
number of columns in the matrix matrix; must be a multiple of 4.
a matrix with elements of type float
. If forma = ‘n’, the matrix itself is used in the calculation and it has l rows and m columns. If forma = ‘T’, the transpose is used and a has m rows and l columns. Thus the matrix used in the calculation is l by m.
selector with a value of ‘n’ or ‘T’.
a matrix with elements of type float
. If formb = ‘n’, the matrix itself is used in the calculation and it has m rows and n columns. If formb = ‘T’, the transpose is used and b has n rows and m columns. Thus the matrix used in the calculation is m by n.
selector with a value of ‘n’ or ‘T’.
destination matrix with l rows and n columns.
Matrix a (or its transpose) is multiplied by matrix b (or its transpose); the result is stored in matrix matrix.
Multiplies a vector by a scalar. Multiplies a matrix by another scalar, then by a second vector, and adds the resulting vector to the first vector. This function can also perform the calculation with the transpose of the original matrix instead of the matrix itself. A selector parameter determines whether the transpose is used.
extern void vSgemv( char forma, SInt32 m, SInt32 n, float alpha, const vector float a[], const vector float x[], float beta, vector float y[]);
selects the variant computation to be performed: ‘T’ causes the transform of matrix a to be used, ‘n’ causes a itself to be used.
number of rows in a. If forma = ‘n’, m is the length of vector y; if forma = ‘T’, m is the length of vector x; must be a multiple of 4.
number of columns in a. If forma = ‘n’, m is the length of vector x; if forma = ‘T’, m is the length of vector y; must be a multiple of 4.
scalar multiplier for matrix a
.
m by n matrix with elements of type float
.
vector with elements of type float
.
scalar multiplier for vector y
.
destination vector with n elements of type float
.
Vector y is multiplied by beta. Matrix a is multiplied by alpha. Then if forma = ‘n’, a is multiplied by vector x; if forma = ‘T’, the transpose of a is multiplied by x. The resulting vector is added to vector y, and the results are stored in y.
Multiplies a matrix by a scalar and then by a vector, and adds the resulting vector to a second vector.
extern void vSgemx( SInt32 m, SInt32 n, float alpha, const vector float a[], const vector float x[], vector float y[]);
number of rows in a, and the length of vector y; must be a multiple of 4.
number of columns in a, and the length of vector x; must be a multiple of 4.
scalar multiplier for matrix a
.
m by n matrix with elements of type float
.
vector with elements of type float
.
destination vector with n elements of type float
.
Matrix a is multiplied by alpha and then by vector x; the resulting vector is added to vector y, and the results are stored in y.
Matrix subtraction for general matrices or their transposes.
extern void vSgesub( SInt32 height, SInt32 width, const vector float a[], char forma, const vector float b[], char formb, vector float c[]);
number of rows in the matrices to be subtracted; must be a multiple of 4.
number of columns in the matrices to be subtracted; must be a multiple of 4.
a matrix with elements of type float
. If forma = ‘n’, the matrix itself is used in the calculation and it has height rows and width columns. If forma = ‘T’, the transpose is used and a has width rows and height columns.
selector with a value of ‘n’ or ‘T’.
a matrix with elements of type float
. If formb = ‘n’, the matrix itself is used in the calculation and it has height rows and width columns. If formb = ‘T’, the transpose is used and b has width rows and height columns.
selector with a value of ‘n’ or ‘T’.
destination matrix with height rows and width columns.
Matrix b (or its transpose) is subtracted from matrix a (or its transpose); the result is stored in mactrix c.
General matrix transpose, in place.
extern void vSgetmi( SInt32 size, vector float x[]);
number of rows and columns in matrix x; must be a multiple of 4.
square matrix with size rows and size columns.
The matrix x is transposed in place.
General matrix transpose, out of place.
extern void vSgetmo( SInt32 height, SInt32 width, const vector float x[], vector float y[]);
number of rows in matrix x and number of columns in matrix y; must be a multiple of 4.
number of columns in matrix x and number of rows in matrix y; must be a multiple of 4.
matrix with height rows and width columns.
matrix with width rows and height columns.
The matrix x is transposed into matrix y.
Multiplies two matrices and places the results in a third matrix.
extern void vSgevv( SInt32 l, SInt32 n, const vector float a[], const vector float b[], vector float m[]);
number of rows in matrix a and in matrix m; must be a multiple of 4.
number of columns in matrix b and in matrix m; must be a multiple of 4.
matrix with l rows.
matrix with n columns.
matrix with l rows and n columns.
The matrices a and b are multiplied and the result is stored in matrix m.
For each vector element, returns a non-zero value if and only if the sign of arg
is negative. This includes NaNs, infinities and zeros.
extern vUInt32 vsignbitf(vFloat arg);
vfp.h
For each vector element, calculates the sine.
extern vFloat vsinf(vFloat arg);
vfp.h
For each vector element, calculates the hyperbolic sine of X
.
extern vFloat vsinhf(vFloat X);
vfp.h
Performs the computation of vSaxpy
n
times, using a different multiplier each time.
extern void vSnaxpy( SInt32 n, SInt32 m, const vector float a[], const vector float x[], vector float y[]);
Number of elements in vector a; must be a multiple of 4.
Number of elements in each of the vectors x and y; must be a multiple of 4.
A vector array of float
values.
A second vector array of float
values.
For i = 0 to n-1, the elements of x are multiplied by a[i] and added to the corresponding elements of y. The results are accumulated and stored in y.
vectorOps.h
Computes the dot products of n pairs of vectors, accumulating or storing the results in an array of n
float
values.
extern void vSndot( SInt32 n, SInt32 m, float s[], SInt32 isw, const vector float x[], const vector float y[]);
Number of dot products to compute, and number of elements in vector s ; must be a multiple of 4.
Number of elements in the vectors whose dot products are computed; must be a multiple of 4.
Destination vector; the n dot products are accumulated or stored here.
A key that selects one of the four variants of this function: see Discussion below.
A matrix whose rows are n floating-point vectors, each containing m values.
A second matrix whose rows are n floating-point vectors, each containing m values.
For i = 0 to n-1, the dot product of vectors x[i] and y[i] is computed. The dot product is accumulated or stored in s[i], according to the value of isw:
if isw = 1, the dot product is stored in s[i].
if isw = 2, the dot product is negated and then stored in s[i].
if isw = 3, the dot product is added to the value in s[i].
if isw = 4, the dot product is negated and then added to the value in s[i].
vectorOps.h
Finds the Euclidean length of a vector.
extern float vSnorm2(SInt32 count, const vector float x[]);
Number of elements in the vector x; must be a multiple of 4.
A vector array of float
values.
The Euclidean length of x.
Input is not scaled.
vectorOps.h
Finds the Euclidean length of a vector.
extern float vSnrm2(SInt32 count, const vector float x[]);
Number of elements in the vector x; must be a multiple of 4.
A vector array of float
values.
The Euclidean length of x.
Input is scaled to avoid destructive underflow and overflow.
vectorOps.h
For each vector element, calculates the square root of X
.
extern vFloat vsqrtf(vFloat X);
vfp.h
Applies planar rotation to a set of n points whose x and y coordinates are contained in two arrays of vectors.
extern void vSrot( SInt32 n, vector float x[], vector float y[], float c, float s);
number of points to be rotated; must be a multiple of 4.
vector with n/4 elements of type vector float
, representing the x-coordinates of the points.
vector with n/4 elements of type vector float
, representing the y-coordinates of the points.
cosine of the angle of rotation.
sine of the angle of rotation.
The coordinates are modified in place in the vectors in arrays x and y.
vectorOps.h
Scales a vector in place.
extern void vSscal(SInt32 n, float alpha, vector float x[]);
number of elements in vector x; must be a multiple of 4.
scaling factor.
vector with n elements of type float
.
Each element of vector x is multiplied in place by alpha.
vectorOps.h
Finds the sum of the values of the elements in a vector.
extern float vSsum(SInt32 count, const vector float x[]);
Number of elements in the vector x; must be a multiple of 4.
A vector array of float
values.
The sum of the values of the elements in the vector.
vectorOps.h
Interchanges the elements of two vectors.
extern void vSswap(SInt32 n,vector float x[],vector float y[]);
number of elements in vectors x and y; must be a multiple of 4.
vector with n elements of type float
.
vector with n elements of type float
.
Each element of vector x is replaced by the corresponding element of y, and vice versa.
vectorOps.h
Multiplies each element of a vector and stores the results in a second vector.
extern void vSyax( SInt32 n, float alpha, const vector float x[], vector float y[]);
number of elements in vectors x and y; must be a multiple of 4.
multiplier.
source vector with n elements of type float
.
destination vector with n elements of type float
.
Each element of vector x is multiplied by alpha, and stored in the corresponding element of y.
Multiplies a vector by a scalar, adds it to a second vector, and stores the result in a third vector.
extern void vSzaxpy( SInt32 n, float alpha, const vector float x[], const vector float yY[], vector float z[]);
number of elements in vectors x, y, and z; must be a multiple of 4.
multiplier.
source vector with n elements of type float
.
source vector with n elements of type float
.
destination vector with n elements of type float
.
Each element of vector x is multiplied by alpha, then the corresponding element of yY is added. Results are stored in the corresponding elements of z.
For each vector element of Index_Vect
, returns the corresponding value from Table
.
extern vUInt32 vtablelookup(vSInt32 Index_Vect, UInt32 *Table);
vfp.h
For each vector element, calculates the tangent.
extern vFloat vtanf(vFloat arg);
vfp.h
For each vector element, calculates the hyperbolic tangent of X
.
extern vFloat vtanhf(vFloat X);
vfp.h
Unsigned 1024-bit addition (modular arithmetic).
extern void vU1024Add( const vU1024 * a, const vU1024 * b, vU1024 * result);
vBigNum.h
Unsigned 1024-bit addition with saturation (clipping).
extern void vU1024AddS( const vU1024 * a, const vU1024 * b, vU1024 * result);
vBigNum.h
Unsigned 1024-bit division.
extern void vU1024Divide( const vU1024 * numerator, const vU1024 * divisor, vU1024 * result, vU1024 * remainder);
vBigNum.h
Unsigned 1024-bit multiplication; result is the same width as multiplicands.
extern void vU1024HalfMultiply( const vU1024 * a, const vU1024 * b, vU1024 * result);
vBigNum.h
Unsigned 1024-bit mod.
extern void vU1024Mod( const vU1024 * numerator, const vU1024 * divisor, vU1024 * remainder);
vBigNum.h
Unsigned 1024-bit negation.
extern void vU1024Neg( const vU1024 * a, vU1024 * result);
vBigNum.h
Unsigned 1024-bit subtraction (modular arithmetic).
extern void vU1024Sub( const vU1024 * a, const vU1024 * b, vU1024 * result);
vBigNum.h
Unsigned 1024-bit subtraction with saturation (clipping).
extern void vU1024SubS( const vU1024 * a, const vU1024 * b, vU1024 * result);
vBigNum.h
Unsigned 128-bit addition (modular arithmetic).
extern vUInt32 vU128Add(vUInt32 vA, vUInt32 vB);
vBasicOps.h
Unsigned 128-bit addition with saturation (clipping).
extern vUInt32 vU128AddS(vUInt32 vA, vUInt32 vB);
vBasicOps.h
Unsigned 128-bit division.
extern vUInt32 vU128Divide(vUInt32 vN, vUInt32 vD, vUInt32 * vRemainder);
vBasicOps.h
Unsigned 128-bit multiplication; result is twice as wide as multiplicands.
extern void vU128FullMultiply( const vU128 * a, const vU128 * b, vU256 * result);
vBigNum.h
Unsigned 128-bit multiplication; results are same width as multiplicands.
extern vUInt32 vU128HalfMultiply(vUInt32 vA, vUInt32 vB);
vBasicOps.h
Unsigned 128-bit subtraction (modular arithmetic).
extern vUInt32 vU128Sub(vUInt32 vA, vUInt32 vB);
vBasicOps.h
Unsigned 128-bit subtraction with saturation (clipping).
extern vUInt32 vU128SubS(vUInt32 vA, vUInt32 vB);
vBasicOps.h
Unsigned 16-bit division.
extern vUInt16 vU16Divide(vUInt16 vN, vUInt16 vD, vUInt16 * vRemainder);
vBasicOps.h
Unsigned 16-bit multiplication; results are same width as multiplicands.
extern vUInt16 vU16HalfMultiply(vUInt16 vA, vUInt16 vB);
vBasicOps.h
Unsigned 256-bit addition (modular arithmetic).
extern void vU256Add( const vU256 * a, const vU256 * b, vU256 * result);
vBigNum.h
Unsigned 256-bit addition with saturation (clipping).
extern void vU256AddS( const vU256 * a, const vU256 * b, vU256 * result);
vBigNum.h
Unsigned 256-bit division.
extern void vU256Divide( const vU256 * numerator, const vU256 * divisor, vU256 * result, vU256 * remainder);
vBigNum.h
Unsigned 256-bit multiplication; result is twice as wide as multiplicands.
extern void vU256FullMultiply( const vU256 * a, const vU256 * b, vU512 * result);
vBigNum.h
Unsigned 256-bit multiplication; result is the same width as multiplicands.
extern void vU256HalfMultiply( const vU256 * a, const vU256 * b, vU256 * result);
vBigNum.h
Unsigned 256-bit mod.
extern void vU256Mod( const vU256 * numerator, const vU256 * divisor, U256 * remainder);
vBigNum.h
Unsigned 256-bit negation.
extern void vU256Neg( const vU256 * a, vU256 * result);
vBigNum.h
Unsigned 256-bit subtraction (modular arithmetic).
extern void vU256Sub( const vU256 * a, const vU256 * b, vU256 * result);
vBigNum.h
Unsigned 256-bit subtraction with saturation (clipping).
extern void vU256SubS( const vU256 * a, const vU256 * b, vU256 * result);
vBigNum.h
Unsigned 32-bit division.
extern vUInt32 vU32Divide(vUInt32 vN, vUInt32 vD, vUInt32 * vRemainder);
vBasicOps.h
Unsigned 32-bit multiplication; results are twice as wide as multiplicands, even-numbered elements of multiplicand vectors are used. Note the big-endian convention: the leftmost element is element 0.
extern vUInt32 vU32FullMulEven(vUInt32 vA, vUInt32 vB);
vBasicOps.h
Unsigned 32-bit multiplication; results are twice as wide as multiplicands, odd-numbered elements of multiplicand vectors are used. Note the big-endian convention: the leftmost element is element 0.
extern vUInt32 vU32FullMulOdd(vUInt32 vA, vUInt32 vB);
vBasicOps.h
Unsigned 32-bit multiplication; results are same width as multiplicands.
extern vUInt32 vU32HalfMultiply(vUInt32 vA, vUInt32 vB);
vBasicOps.h
Unsigned 512-bit addition (modular arithmetic).
extern void vU512Add( const vU512 * a, const vU512 * b, vU512 * result);
vBigNum.h
Unsigned 512-bit addition with saturation (clipping).
extern void vU512AddS( const vU512 * a, const vU512 * b, vU512 * result);
vBigNum.h
Unsigned 512-bit division.
extern void vU512Divide( const vU512 * numerator, const vU512 * divisor, vU512 * result, vU512 * remainder);
vBigNum.h
Unsigned 512-bit multiplication; result is twice as wide as multiplicands.
extern void vU512FullMultiply( const vU512 * a, const vU512 * b, vU1024 * result);
vBigNum.h
Unsigned 512-bit multiplication; result is the same width as multiplicands.
extern void vU512HalfMultiply( const vU512 * a, const vU512 * b, U512 * result);
vBigNum.h
Unsigned 512-bit mod.
extern void vU512Mod( const vU512 * numerator, const vU512 * divisor, vU512 * remainder);
vBigNum.h
Unsigned 512-bit negation.
extern void vU512Neg( const vU512 * a, vU512 * result);
vBigNum.h
Unsigned 512-bit subtraction (modular arithmetic).
extern void vU512Sub( const vU512 * a, const vU512 * b, vU512 * result);
vBigNum.h
Unsigned 512-bit subtraction with saturation (clipping).
extern void vU512SubS( const vU512 * a, const vU512 * b, vU512 * result);
vBigNum.h
Unsigned 64-bit addition (modular arithmetic).
extern vUInt32 vU64Add(vUInt32 vA, vUInt32 vB);
vBasicOps.h
Unsigned 64-bit addition with saturation (clipping).
extern vUInt32 vU64AddS(vUInt32 vA, vUInt32 vB);
vBasicOps.h
Unsigned 64-bit division.
extern vUInt32 vU64Divide(vUInt32 vN, vUInt32 vD, vUInt32 * vRemainder);
vBasicOps.h
Unsigned 64-bit multiplication; results are twice as wide as multiplicands, even-numbered elements of multiplicand vectors are used. Note the big-endian convention: the leftmost element is element 0.
extern vUInt32 vU64FullMulEven(vUInt32vA, vUInt32vB);
vBasicOps.h
Unsigned 64-bit multiplication; results are twice as wide as multiplicands, odd-numbered elements of multiplicand vectors are used. Note the big-endian convention: the leftmost element is element 0.
extern vUInt32 vU64FullMulOdd(vUInt32 vA, vUInt32 vB);
vBasicOps.h
Unsigned 64-bit multiplication; results are same width as multiplicands.
extern vUInt32 vU64HalfMultiply(vUInt32 vA, vUInt32 vB);
vBasicOps.h
Unsigned 64-bit subtraction (modular arithmetic).
extern vUInt32 vU64Sub(vUInt32 vA, vUInt32 vB);
vBasicOps.h
Unsigned 64-bit subtraction with saturation (clipping).
extern vUInt32 vU64SubS(vUInt32 vA, vUInt32 vB);
vBasicOps.h
Unsigned 8-bit division.
extern vUInt8 vU8Divide(vUInt8 vN, vUInt8 vD, vUInt8 * vRemainder);
vBasicOps.h
Unsigned 8-bit multiplication; results are same width as multiplicands.
extern vUInt8 vU8HalfMultiply(vUInt8 vA, vUInt8 vB);
vBasicOps.h
For each double-precision array element, sets y
to the arccosine of x
.
void vvacos ( double * /* y */, const double * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets y
to the arccosine of x
.
void vvacosf ( float * /* y */, const float * /* x */, const int * /* n */);
vForce.h
For each double-precision array element, sets y
to the inverse hyperbolic cosine of x
.
void vvacosh ( double * /* y */, const double * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets y
to the inverse hyperbolic cosine of x
.
void vvacoshf ( float * /* y */, const float * /* x */, const int * /* n */);
vForce.h
For each double-precision array element, sets y
to the arcsine of x
.
void vvasin ( double * /* y */, const double * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets y
to the arcsine of x
.
void vvasinf ( float * /* y */, const float * /* x */, const int * /* n */);
vForce.h
For each double-precision array element, sets y
to the inverse hyperbolic sine of x
.
void vvasinh ( double * /* y */, const double * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets y
to the inverse hyperbolic sine of x
.
void vvasinhf ( float * /* y */, const float * /* x */, const int * /* n */);
vForce.h
For each double-precision array element, sets y
to the arctangent of x
.
void vvatan ( double * /* y */, const double * /* x */, const int * /* n */);
vForce.h
For each double-precision array element, sets z
to the arctangent of y
/x
.
void vvatan2 ( double * /* z */, const double * /* y */, const double * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets z
to the arctangent of y
/x
.
void vvatan2f ( float * /* z */, const float * /* y */, const float * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets y
to the arctangent of x
.
void vvatanf ( float * /* y */, const float * /* x */, const int * /* n */);
vForce.h
For each double-precision array element, sets y
to the inverse hyperbolic tangent of x
.
void vvatanh ( double * /* y */, const double * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets y
to the inverse hyperbolic tangent of x
.
void vvatanhf ( float * /* y */, const float * /* x */, const int * /* n */);
vForce.h
For each double-precision array element, sets y
to the ceiling of x
.
void vvceil ( double * /* y */, const double * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets y
to the ceiling of x
.
void vvceilf ( float * /* y */, const float * /* x */, const int * /* n */);
vForce.h
For each double-precision array element, sets y
to the cosine of x
.
void vvcos ( double * /* y */, const double * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets y
to the cosine of x
.
void vvcosf ( float * /* y */, const float * /* x */, const int * /* n */);
vForce.h
For each double-precision array element, sets y
to the hyperbolic cosine of x
.
void vvcosh ( double * /* y */, const double * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets y
to the hyperbolic cosine of x
.
void vvcoshf ( float * /* y */, const float * /* x */, const int * /* n */);
vForce.h
For each double-precision array element, sets the real part of C
to the sine of x
and the imaginary part of C
to the cosine of x
.
void vvcosisin ( __double_complex_t * /* C */, const double * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets the real part of C
to the sine of x
and the imaginary part of C
to the cosine of x
.
void vvcosisinf ( __float_complex_t * /* C */, const float * /* x */, const int * /* n */);
vForce.h
For each double-precision array element, sets z
to y
/x
.
void vvdiv ( double * /* z */, const double * /* y */, const double * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets z
to y
/x
.
void vvdivf ( float * /* z */, const float * /* y */, const float * /* x */, const int * /* n */);
vForce.h
For each double-precision array element, sets y
to the exponential of x
.
void vvexp ( double * /* y */, const double * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets y
to the exponential of x
.
void vvexpf ( float * /* y */, const float * /* x */, const int * /* n */);
vForce.h
For each double-precision array element, sets y
to the floor of x
.
void vvfloor (double * /* y */, const double * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets y
to the floor of x
.
void vvfloorf (float * /* y */, const float * /* x */, const int * /* n */);
vForce.h
For each double-precision array element, sets y
to the integer truncation of x
.
void vvint ( double * /* y */, const double * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets y
to the integer truncation of x
.
void vvintf ( float * /* y */, const float * /* x */, const int * /* n */);
vForce.h
For each double-precision array element, sets y
to the natural logarithm of x
.
void vvlog ( double * /* y */, const double * /* x */, const int * /* n */);
vForce.h
For each double-precision array element, sets y
to the base 10 logarithm of x
.
void vvlog10 ( double * /* y */, const double * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets y
to the base 10 logarithm of x
.
void vvlog10f ( float * /* y */, const float * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets y
to the natural logarithm of x
.
void vvlogf ( float * /* y */, const float * /* x */, const int * /* n */);
vForce.h
For each double-precision array element, sets y
to the nearest integer to x
.
void vvnint ( double * /* y */, const double * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets y
to the nearest integer to x
.
void vvnintf ( float * /* y */, const float * /* x */, const int * /* n */);
vForce.h
For each double-precision array element, sets z
to x
raised to the power of y
.
void vvpow ( double * /* z */, const double * /* y */, const double * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets z
to x
raised to the power of y
.
void vvpowf ( float * /* z */, const float * /* y */, const float * /* x */, const int * /* n */);
vForce.h
For each double-precision array element, sets y
to the reciprocal of y
.
void vvrec ( double * /* y */, const double * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets y
to the reciprocal of y
.
void vvrecf( float * /* y */, const float * /* x */, const int * /* n */);
vForce.h
For each double-precision array element, sets y
to the reciprocal of the square root of x
.
void vvrsqrt ( double * /* y */, const double * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets y
to the reciprocal of the square root of x
.
void vvrsqrtf ( float * /* y */, const float * /* x */, const int * /* n */);
vForce.h
For each double-precision array element, sets y
to the sine of x
.
void vvsin ( double * /* y */, const double * /* x */, const int * /* n */);
vForce.h
For each double-precision array element, sets z
to the sine of x
and y
to the cosine of x
.
void vvsincos ( double * /* z */, double * /* y */, const double * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets z
to the sine of x
and y
to the cosine of x
.
void vvsincosf ( float * /* z */, float * /* y */, const float * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets y
to the sine of x
.
void vvsinf ( float * /* y */, const float * /* x */, const int * /* n */);
vForce.h
For each double-precision array element, sets y
to the hyperbolic sine of x
.
void vvsinh ( double * /* y */, const double * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets y
to the hyperbolic sine of x
.
void vvsinhf ( float * /* y */, const float * /* x */, const int * /* n */);
vForce.h
For each double-precision array element, sets y
to the square root of x
.
void vvsqrt ( double * /* y */, const double * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets y
to the square root of x
.
void vvsqrtf ( float * /* y */, const float * /* x */, const int * /* n */);
vForce.h
For each double-precision array element, sets y
to the tangent of x
.
void vvtan ( double * /* y */, const double * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets y
to the tangent of x
.
void vvtanf ( float * /* y */, const float * /* x */, const int * /* n */);
vForce.h
For each double-precision array element, sets y
to the hyperbolic tangent of x
.
void vvtanh ( double * /* y */, const double * /* x */, const int * /* n */);
vForce.h
For each single-precision array element, sets y
to the hyperbolic tangent of x
.
void vvtanhf ( float * /* y */, const float * /* x */, const int * /* n */);
vForce.h
Note: The types given here are valid for C or C++ and for either PowerPC or Intel processors. The typedefs shown are for C++ and PowerPC processors; for other, conditionally compiled typedefs, see the header files.
A 128-bit vector packed with unsigned char
values.
typedef vector unsigned char vUInt8;
vecLibTypes.h
A 128-bit vector packed with signed char
values.
typedef vector signed char vSInt8;
vecLibTypes.h
A 128-bit vector packed with unsigned short
values.
typedef vector unsigned short vUInt16;
vecLibTypes.h
A 128-bit vector packed with signed short
values.
typedef vector signed short vSInt16;
vecLibTypes.h
A 128-bit vector packed with unsigned int
values.
typedef vector unsigned int vUInt32;
vecLibTypes.h
A 128-bit vector packed with signed int
values.
typedef vector signed int vSInt32;
vecLibTypes.h
A 128-bit vector packed with float
values.
typedef vector float vFloat;
vecLibTypes.h
A 128-bit vector packed with bool int
values.
typedef vector bool int vBool32;
vecLibTypes.h
A single-precision complex number type.
typedef complex float __float_complex_t;
A double-precision complex number type.
typedef complex double __double_complex_t;
A union containing one vUInt32
vector or four 32-bit integers, representing a 128-bit unsigned integer. Conditional definitions provide compatibility with both PowerPC and Intel architectures; see the header file for details.
union vU128 { vUInt32 v; struct { vUInt32 v1; } vs; struct { UInt32 MSW; UInt32 d2; UInt32 d3; UInt32 LSW; } s; }; typedef union vU128 vU128;
vBigNum.h
A union containing one vSInt32
vector or four 32-bit integers, representing a 128-bit signed integer. Conditional definitions provide compatibility with both PowerPC and Intel architectures; see the header file for details.
union vS128 { vUInt32 v; struct { vUInt32 v1; } vs; struct { SInt32 MSW; UInt32 d2; UInt32 d3; UInt32 LSW; } s; }; typedef union vS128 vS128;
vBigNum.h
A union containing an array or structure of two vUInt32
vectors or eight 32-bit integers, representing a 256-bit unsigned integer. Conditional definitions provide compatibility with both PowerPC and Intel architectures; see the header file for details.
union vU256 { vUInt32 v[2]; struct { vUInt32 v1; vUInt32 v2; } vs; struct { UInt32 MSW; UInt32 d2; UInt32 d3; UInt32 d4; UInt32 d5; UInt32 d6; UInt32 d7; UInt32 LSW; } s; }; typedef union vU256 vU256;
vBigNum.h
A union containing an array or structure of two vUInt32
vectors or eight 32-bit integers, representing a 256-bit signed integer. Conditional definitions provide compatibility with both PowerPC and Intel architectures; see the header file for details.
union vS256 { vUInt32 v[2]; struct { vUInt32 v1; vUInt32 v2; } vs; struct { SInt32 MSW; UInt32 d2; UInt32 d3; UInt32 d4; UInt32 d5; UInt32 d6; UInt32 d7; UInt32 LSW; } s; }; typedef union vS256 vS256;
vBigNum.h
A union containing an array or structure of four vUInt32
vectors or sixteen 32-bit integers, representing a 256-bit unsigned integer. Conditional definitions provide compatibility with both PowerPC and Intel architectures; see the header file for details.
union vU512 { vUInt32 v[4]; struct { vUInt32 v1; vUInt32 v2; vUInt32 v3; vUInt32 v4; } vs; struct { UInt32 MSW; UInt32 d2; UInt32 d3; UInt32 d4; UInt32 d5; UInt32 d6; UInt32 d7; UInt32 d8; UInt32 d9; UInt32 d10; UInt32 d11; UInt32 d12; UInt32 d13; UInt32 d14; UInt32 d15; UInt32 LSW; } s; }; typedef union vU512 vU512;
vBigNum.h
A union containing an array or structure of four vUInt32
vectors or sixteen 32-bit integers, representing a 256-bit signed integer. Conditional definitions provide compatibility with both PowerPC and Intel architectures; see the header file for details.
union vS512 { vUInt32 v[4]; struct { vUInt32 v1; vUInt32 v2; vUInt32 v3; vUInt32 v4; } vs; struct { SInt32 MSW; UInt32 d2; UInt32 d3; UInt32 d4; UInt32 d5; UInt32 d6; UInt32 d7; UInt32 d8; UInt32 d9; UInt32 d10; UInt32 d11; UInt32 d12; UInt32 d13; UInt32 d14; UInt32 d15; UInt32 LSW; } s; }; typedef union vS512 vS512;
vBigNum.h
A union containing an array or structure of eight vUInt32
vectors or thirty-two 32-bit integers, representing a 1024-bit unsigned integer. Conditional definitions provide compatibility with both PowerPC and Intel architectures; see the header file for details.
union vU1024 { vUInt32 v[8]; struct { vUInt32 v1; vUInt32 v2; vUInt32 v3; vUInt32 v4; vUInt32 v5; vUInt32 v6; vUInt32 v7; vUInt32 v8; } vs; struct { UInt32 MSW; UInt32 d2; UInt32 d3; UInt32 d4; UInt32 d5; UInt32 d6; UInt32 d7; UInt32 d8; UInt32 d9; UInt32 d10; UInt32 d11; UInt32 d12; UInt32 d13; UInt32 d14; UInt32 d15; UInt32 d16; UInt32 d17; UInt32 d18; UInt32 d19; UInt32 d20; UInt32 d21; UInt32 d22; UInt32 d23; UInt32 d24; UInt32 d25; UInt32 d26; UInt32 d27; UInt32 d28; UInt32 d29; UInt32 d30; UInt32 d31; UInt32 LSW; } s; }; typedef union vU1024 vU1024;
vBigNum.h
A union containing an array or structure of eight vUInt32
vectors or thirty-two 32-bit integers, representing a 1024-bit signed integer. Conditional definitions provide compatibility with both PowerPC and Intel architectures; see the header file for details.
union vS1024 { vUInt32 v[8]; struct { vUInt32 v1; vUInt32 v2; vUInt32 v3; vUInt32 v4; vUInt32 v5; vUInt32 v6; vUInt32 v7; vUInt32 v8; } vs; struct { SInt32 MSW; UInt32 d2; UInt32 d3; UInt32 d4; UInt32 d5; UInt32 d6; UInt32 d7; UInt32 d8; UInt32 d9; UInt32 d10; UInt32 d11; UInt32 d12; UInt32 d13; UInt32 d14; UInt32 d15; UInt32 d16; UInt32 d17; UInt32 d18; UInt32 d19; UInt32 d20; UInt32 d21; UInt32 d22; UInt32 d23; UInt32 d24; UInt32 d25; UInt32 d26; UInt32 d27; UInt32 d28; UInt32 d29; UInt32 d30; UInt32 d31; UInt32 LSW; } s; }; typedef union vS1024 vS1024;
vBigNum.h
© 2005, 2009 Apple Inc. All Rights Reserved. (Last updated: 2009-01-06)