summaryrefslogtreecommitdiff
path: root/common/quicktime_win32/vectorOps.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /common/quicktime_win32/vectorOps.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'common/quicktime_win32/vectorOps.h')
-rw-r--r--common/quicktime_win32/vectorOps.h1015
1 files changed, 1015 insertions, 0 deletions
diff --git a/common/quicktime_win32/vectorOps.h b/common/quicktime_win32/vectorOps.h
new file mode 100644
index 0000000..4b240d1
--- /dev/null
+++ b/common/quicktime_win32/vectorOps.h
@@ -0,0 +1,1015 @@
+/*
+ File: vectorOps.h
+
+ Contains: vector and matrix functions for AltiVec
+
+ Version: QuickTime 7.3
+
+ Copyright: (c) 2007 (c) 1999-2001 by Apple Computer, Inc., all rights reserved.
+
+ Bugs?: For bug reports, consult the following page on
+ the World Wide Web:
+
+ http://developer.apple.com/bugreporter/
+
+*/
+#ifndef __VECTOROPS__
+#define __VECTOROPS__
+
+#ifndef __CONDITIONALMACROS__
+#include <ConditionalMacros.h>
+#endif
+
+
+
+#if PRAGMA_ONCE
+#pragma once
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if PRAGMA_IMPORT
+#pragma import on
+#endif
+
+/*
+-------------------------------------------------------------------------------------
+
+ This section is a collection of Basic Linear Algebra Subprograms (BLAS), which
+ use AltiVec technology for their implementations. The functions are grouped into
+ three categories (called levels), as follows:
+
+ 1) Vector-scalar linear algebra subprograms
+ 2) Matrix-vector linear algebra subprograms
+ 3) Matrix operations
+
+ Following is a list of subprograms and a short description of each one.
+-------------------------------------------------------------------------------------
+*/
+#ifdef __VEC__
+/*
+-------------------------------------------------------------------------------------
+ Level 1
+-------------------------------------------------------------------------------------
+*/
+/**************************************************
+ vIsamax finds the position of the first vector
+ element having the largest magnitude.
+ count length of vector x (count is a
+ multiple of 4)
+ x array of floats
+**************************************************/
+/*
+ * vIsamax()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( long )
+vIsamax(
+ long count,
+ const vector float x[]);
+
+
+
+
+/**************************************************
+ vIsamin finds the position of the first vector
+ element having minimum absolute value.
+ count length of vector x (count is a
+ multiple of 4)
+ x array of floats
+**************************************************/
+/*
+ * vIsamin()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( long )
+vIsamin(
+ long count,
+ const vector float x[]);
+
+
+
+
+/**************************************************
+ vIsmax finds the position of the first vector
+ element having maximum value.
+ count length of vector x (count is a
+ multiple of 4)
+ x array of floats
+**************************************************/
+/*
+ * vIsmax()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( long )
+vIsmax(
+ long count,
+ const vector float x[]);
+
+
+
+
+/**************************************************
+ vIsmin finds the position of the first vector
+ element having minimum value.
+ count length of vector x (count is a
+ multiple of 4)
+ x array of floats
+**************************************************/
+/*
+ * vIsmin()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( long )
+vIsmin(
+ long count,
+ const vector float x[]);
+
+
+
+
+/**************************************************
+ vSasum finds the sum of the magnitudes of the
+ elements in a vector.
+ count length of vector x (count is a
+ multiple of 4)
+ x array of floats
+**************************************************/
+/*
+ * vSasum()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( float )
+vSasum(
+ long count,
+ const vector float x[]);
+
+
+
+
+/**************************************************
+ vSsum is the vector version of sasum but without
+ the absolute value. It takes the value of each
+ element of the array and adds them together.
+ multiple of 4)
+ x array of floats
+**************************************************/
+/*
+ * vSsum()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( float )
+vSsum(
+ long count,
+ const vector float x[]);
+
+
+
+
+/**************************************************
+ vSaxpy multiplies a vector x, by a scalar and
+ adds it to a vector y and stores the result in y
+ n number of floats in x (n is a
+ multiple of 4)
+ alpha scalar number is single-precision
+ floating-point
+ x array of vector floats
+ y array of vector floats, where the
+ the result is stored
+**************************************************/
+/*
+ * vSaxpy()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vSaxpy(
+ long n,
+ float alpha,
+ const vector float x[],
+ vector float y[]);
+
+
+
+
+/*************************************************************
+ vScopy copies a vector x, into another vector y.
+ n mumber of floats in x and y (n is a
+ multiple of 4)
+ x array of vector floats
+ y array of vector floats
+*************************************************************/
+/*
+ * vScopy()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vScopy(
+ long n,
+ const vector float x[],
+ vector float y[]);
+
+
+
+/*************************************************************
+ vSdot finds the dot product of two vectors.
+ n mumber of floats in x and y (n is a
+ multiple of 4)
+ x array of vector floats
+ y array of vector floats
+*************************************************************/
+/*
+ * vSdot()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( float )
+vSdot(
+ long n,
+ const vector float x[],
+ const vector float y[]);
+
+
+
+/*************************************************************
+ vSnaxpy computes saxpy "n" times.
+ n number of saxpyV computations to be
+ performed and the number of elements
+ in vector A (n is a multiple of 4)
+ m number of floats in each vector x(i)
+ or y(i)
+ a array of vector floats containing
+ scalars a(i)
+ x matrix containing arrays of vector-
+ floats x(i)
+ y matrix containing vectors y(i)
+*************************************************************/
+/*
+ * vSnaxpy()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vSnaxpy(
+ long n,
+ long m,
+ const vector float a[],
+ const vector float x[],
+ vector float y[]);
+
+
+
+
+/*************************************************************
+ vSndot computes the dot products "n" times.
+ n number of dot product computations
+ to be performed and the number of
+ elements in vector S
+ m number of elements in vectors x(i)
+ and y(i) for each dot product
+ computation (m is a multiple of 4)
+ s array of floats. Depending on the
+ value of "isw" different computations/
+ are performed and the results are
+ stored in the array S
+ isw indicates the type of computation
+ to perform.
+ if isw=1, S(i) <-- x(i) y(i)
+ if isw=2, S(i) <-- - x(i) y(i)
+ if isw=3, S(i) <-- S(i) + x(i) y(i)/
+ if isw=4, S(i) <-- S(i) - x(i) y(i)/
+ x matrix containing arrays x(i)
+ y matrix containing arrays y(i)
+*************************************************************/
+/*
+ * vSndot()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vSndot(
+ long n,
+ long m,
+ float s[],
+ long isw,
+ const vector float x[],
+ const vector float y[]);
+
+
+
+
+/*************************************************************
+ vSnrm2 finds the Euclidean length of a vector
+ with scaling of input to avoid destructive
+ underflow and overflow.
+ count length of vector (multiple of 4)
+ x array of vector floats
+*************************************************************/
+/*
+ * vSnrm2()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( float )
+vSnrm2(
+ long count,
+ const vector float x[]);
+
+
+
+
+/*************************************************************
+ vSnorm2 finds the Euclidean length of a vector
+ with no scaling of input.
+ count length of vector (multiple of 4)
+ x array of vector floats
+*************************************************************/
+/*
+ * vSnorm2()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( float )
+vSnorm2(
+ long count,
+ const vector float x[]);
+
+
+
+
+/*************************************************************
+ vSrot applies a plane rotation.
+ n number of points to be rotated, also
+ number of elements in x and y (n is
+ a multiple of 4)
+ x array of vector floats. It is a
+ vector of length n, containing x(i)
+ coordinates of points to be rotated
+ y array of vector floats. It is a
+ vector of length n, containing y(i)
+ coordinates of points to be rotated
+ c cosine of angle of rotation
+ s sine of angle of rotation
+*************************************************************/
+/*
+ * vSrot()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vSrot(
+ long n,
+ vector float x[],
+ vector float y[],
+ float c,
+ float s);
+
+
+
+
+/*************************************************************
+ vSscal multiplies a vector x, by a scalar and
+ stores the result in the vector x.
+ n number of floats in x (n is a
+ multiple of 4)
+ alpha scalar number is single-precision
+ floating-point
+ x array of vector floats
+*************************************************************/
+/*
+ * vSscal()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vSscal(
+ long n,
+ float alpha,
+ vector float x[]);
+
+
+
+
+/*************************************************************
+ vSswap interchanges the elements of vectors x
+ and y
+ n number of floats in x and y (n is a
+ multiple of 4)
+ x array of vector floats
+ y array of vector floats
+*************************************************************/
+/*
+ * vSswap()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vSswap(
+ long n,
+ vector float x[],
+ vector float y[]);
+
+
+
+
+/*************************************************************
+ vSyax multiplies a vector x, by a scalar and
+ stores the result in a vector y.
+ n number of floats in x (n is a
+ multiple of 4)
+ alpha scalar number is single-precision
+ floating-point
+ x array of vector floats
+ y array of vector floats
+*************************************************************/
+/*
+ * vSyax()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vSyax(
+ long n,
+ float alpha,
+ const vector float x[],
+ vector float y[]);
+
+
+
+
+/*************************************************************
+ vSzaxpy multiplies a vector x, by a scalar and
+ adds it to a vector y and stores the result in
+ vector Z.
+ n number of floats in x (n is a
+ multiple of 4)
+ alpha scalar number is single-precision
+ floating-point
+ x array of vector floats
+ y array of vector floats
+ Z array of vector floats, where the
+ is stored
+*************************************************************/
+/*
+ * vSzaxpy()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vSzaxpy(
+ long n,
+ float alpha,
+ const vector float x[],
+ const vector float yY[],
+ vector float z[]);
+
+
+
+
+
+/*
+-------------------------------------------------------------------------------------
+ Level 2
+-------------------------------------------------------------------------------------
+*/
+/*************************************************************
+ vSgemv multiplies an array of vector floats y by
+ a scalar beta, and takes the result and adds it
+ to the product of a scalar alpha multiplied by
+ a matrix A multiplied by a vector x. The above
+ result is stored in array y. Futhermore, the
+ same function also performs the above calculation/
+ with the transpose of matrix A, instead of
+ matrix A. In this function argument "forma"
+ distinguishes between the above two cases.
+ forma indicates the form of matrix A to
+ use in the computation, where:
+ If forma = "n", Matrix A is used
+ If forma = "T", Transpose of Matrix
+ A is used
+ m number of rows in matrix A and
+ depending on value of forma
+ if forma = "n", it is the length of
+ vector y
+ if forma = "T", it is the length of
+ vector x. m is a multiple of 4
+ n number of columns in matrix A and
+ depending on value of forma
+ if forma = "n", it is the length of
+ vector x
+ if forma = "T", it is the length of
+ vector y. m is a multiple of 4
+ alpha is a scaling constant
+ A is an m by n matrix. Its elements
+ are vector floats
+ x is an array of vector floats
+ beta is a scaling constant
+ y is an array of vector floats
+*************************************************************/
+/*
+ * vSgemv()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vSgemv(
+ char forma,
+ long m,
+ long n,
+ float alpha,
+ const vector float a[],
+ const vector float x[],
+ float beta,
+ vector float y[]);
+
+
+
+
+
+/*************************************************************
+ vSgemx adds an array of vector floats y to the
+ product of an scalar alpha by a mtrix A
+ multiplied by an array of vector floats x. It
+ then stores the result in the vector y.
+ m number of rows in matrix A and
+ the length of vector y. m is a
+ multiple of 4
+ n number of columns in matrix A and
+ the length of vector x. m is a
+ multiple of 4
+ alpha is a scaling constant
+ a is an m by n matrix. Its elements
+ are vector floats
+ x is an array of vector floats
+ y is an array of vector floats
+*************************************************************/
+/*
+ * vSgemx()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vSgemx(
+ long m,
+ long n,
+ float alpha,
+ const vector float a[],
+ const vector float x[],
+ vector float y[]);
+
+
+
+
+/*************************************************************
+ vSgemtx takes the transpose of a mtrix A and
+ multiplies it by an array x. It then multiplies
+ the result by a scalar alpha. Finally adds the
+ above result to an array y and stores the result
+ in array y.
+ m number of rows in matrix A and
+ the length of vector x. m is a
+ multiple of 4
+ n number of columns in matrix A and
+ the length of vector y. m is a
+ multiple of 4
+ alpha is a scaling constant
+ a is an m by n matrix. Its elements
+ are vector floats
+ x is an array of vector floats
+ y is an array of vector floats
+*************************************************************/
+/*
+ * vSgemtx()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vSgemtx(
+ long m,
+ long n,
+ float alpha,
+ const vector float a[],
+ const vector float x[],
+ vector float y[]);
+
+
+
+
+/*
+-------------------------------------------------------------------------------------
+ Level 3
+-------------------------------------------------------------------------------------
+*/
+
+
+/*************************************************************
+ vSgeadd performs matrix addition for general
+ matrices or their transposes.
+ height height of the matrix (it is multiple
+ of 4)
+ width width of the matrix (it is multiple
+ of 4)
+ A matrix A, and depending on forma:
+ if forma='n', A is used in the
+ computation, and A has m rows and
+ n columns
+ if forma='T', A(T) is used in the
+ computation, and A has n rows and
+ m columns
+ forma indicates the form of matrix A to
+ use in the computation, where:
+ if forma='n', A is used in the
+ computation
+ if forma='T', A(T) is used in the
+ computation
+ b matrix b, and depending on formb:
+ if formb='n', b is used in the
+ computation, and b has m rows and
+ n columns
+ if formb='T', b(T) is used in the
+ computation, and b has n rows and
+ m columns
+ formb indicates the form of matrix b to
+ use in the computation, where:
+ if forma='n', b is used in the
+ computation
+ if forma='T', b(T) is used in the
+ computation
+ c is an m by n matrix c, containing
+ the reults of the computation
+*************************************************************/
+/*
+ * vSgeadd()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vSgeadd(
+ long height,
+ long width,
+ const vector float a[],
+ char forma,
+ const vector float b[],
+ char formb,
+ vector float c[]);
+
+
+
+
+/*************************************************************
+ vSgesub performs matrix subtraction for general
+ matrices or their transposes.
+ height height of the matrix (it is multiple
+ of 4)
+ width width of the matrix (it is multiple
+ of 4)
+ A matrix A, and depending on forma:
+ if forma='n', A is used in the
+ computation, and A has m rows and
+ n columns
+ if forma='T', A(T) is used in the
+ computation, and A has n rows and
+ m columns
+ forma indicates the form of matrix A to
+ use in the computation, where:
+ if forma='n', A is used in the
+ computation
+ if forma='T', A(T) is used in the
+ computation
+ b matrix b, and depending on formb:
+ if formb='n', b is used in the
+ computation, and b has m rows and
+ n columns
+ if formb='T', b(T) is used in the
+ computation, and b has n rows and
+ m columns
+ formb indicates the form of matrix b to
+ use in the computation, where:
+ if forma='n', b is used in the
+ computation
+ if forma='T', b(T) is used in the
+ computation
+ c is an m by n matrix c, containing
+ the reults of the computation
+*************************************************************/
+/*
+ * vSgesub()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vSgesub(
+ long height,
+ long width,
+ const vector float a[],
+ char forma,
+ const vector float b[],
+ char formb,
+ vector float c[]);
+
+
+
+
+/*************************************************************
+ vSgemul performs matrix multiplication for
+ general matrices or their transposes.
+ l height of the matrix A (it is
+ multiple of 4)
+ m width of matrix A (it is multiple
+ of 4)
+ n width of matrix b (it is multiple
+ of 4)
+ A matrix A, and depending on forma:
+ if forma='n', A is used in the
+ computation, and A has l rows and
+ m columns
+ if forma='T', A(T) is used in the
+ computation, and A has m rows and
+ l columns
+ forma indicates the form of matrix A to
+ use in the computation, where:
+ if forma='n', A is used in the
+ computation
+ if forma='T', A(T) is used in the
+ computation
+ b matrix b, and depending on formb:
+ if formb='n', b is used in the
+ computation, and b has m rows and
+ n columns
+ if formb='T', b(T) is used in the
+ computation, and b has n rows and
+ m columns
+ formb indicates the form of matrix b to
+ use in the computation, where:
+ if forma='n', b is used in the
+ computation
+ if forma='T', b(T) is used in the
+ computation
+ matrix is the matrix containing the
+ results of the computation
+*************************************************************/
+/*
+ * vSgemul()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vSgemul(
+ long l,
+ long m,
+ long n,
+ const vector float a[],
+ char forma,
+ const vector float b[],
+ char formb,
+ vector float matrix[]);
+
+
+
+
+/*************************************************************
+ vSgemm performs combined matrix multiplication
+ and addition for general matrices or their transposes.
+ l number of rows in matrix c (it is
+ multiple of 4)
+ m has the following meaning:
+ if forma='n', it is the number of
+ columns in matrix A
+ if forma='T', it is the number of
+ rows in matrix A. In addition
+ if formb='n', it is the number of
+ rows in matrix b
+ if formb='T', it is the number of
+ columns in matrix b
+ n columns in matrix c
+ A matrix A, and depending on forma:
+ if forma='n', A is used in the
+ computation, and A has l rows and
+ m columns
+ if forma='T', A(T) is used in the
+ computation, and A has m rows and
+ l columns
+ forma indicates the form of matrix A to
+ use in the computation, where:
+ if forma='n', A is used in the
+ computation
+ if forma='T', A(T) is used in the
+ computation
+ b matrix b, and depending on formb:
+ if formb='n', b is used in the
+ computation, and b has m rows and
+ n columns
+ if formb='T', b(T) is used in the
+ computation, and b has n rows and
+ m columns
+ formb indicates the form of matrix b to
+ use in the computation, where:
+ if forma='n', b is used in the
+ computation
+ if forma='T', b(T) is used in the
+ computation
+ alpha is a scalar
+ beta is a scalar
+ matrix is the l by n matrix
+*************************************************************/
+/*
+ * vSgemm()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vSgemm(
+ long l,
+ long m,
+ long n,
+ const vector float a[],
+ char forma,
+ const vector float b[],
+ char formb,
+ vector float c[],
+ float alpha,
+ float beta,
+ vector float matrix[]);
+
+
+
+
+
+/*************************************************************
+ vSgetmi performs general matrix transpose (in place).
+ size is the number of rows and columns
+ in matrix x
+*************************************************************/
+/*
+ * vSgetmi()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vSgetmi(
+ long size,
+ vector float x[]);
+
+
+
+
+
+/*************************************************************
+ vSgetmo performs general matrix transpose (out-of-place).
+ height is the height of the matrix
+ width is the width of the matrix
+ x array of vector floats
+ y array of vector floats
+*************************************************************/
+/*
+ * vSgetmo()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vSgetmo(
+ long height,
+ long width,
+ const vector float x[],
+ vector float y[]);
+
+
+
+
+
+/*************************************************************
+ vSgevv is a new function. It takes matrix A and
+ multiplies it by matrix b and puts the result in
+ matrix m.
+ l is the height of the matrix
+ n is the width of the matrix
+ A array of vector floats of at least
+ l * m in length
+ b array of vector floats of at least
+ m * n in length
+ m array of vector floats, containing
+ the results of multiplication. It
+ is m * n in size
+*************************************************************/
+/*
+ * vSgevv()
+ *
+ * Availability:
+ * Non-Carbon CFM: in vecLib 1.0 and later
+ * CarbonLib: not in Carbon, but vecLib is compatible with CarbonLib
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+vSgevv(
+ long l,
+ long n,
+ const vector float a[],
+ const vector float b[],
+ vector float m[]);
+
+
+#endif /* defined(__VEC__) */
+
+
+#ifdef PRAGMA_IMPORT_OFF
+#pragma import off
+#elif PRAGMA_IMPORT
+#pragma import reset
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __VECTOROPS__ */
+