Enable R_NO_REMAP for a cleaner namespace
[openmx:openmx.git] / src / omxAlgebraFunctions.h
1 /*
2  *  Copyright 2007-2014 The OpenMx Project
3  *
4  *  Licensed under the Apache License, Version 2.0 (the "License");
5  *  you may not use this file except in compliance with the License.
6  *  You may obtain a copy of the License at
7  *
8  *       http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *  Unless required by applicable law or agreed to in writing, software
11  *  distributed under the License is distributed on an "AS IS" BASIS,
12  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *  See the License for the specific language governing permissions and
14  *  limitations under the License.
15  */
16
17 #ifndef _OMX_ALGEBRA_FUNCTIONS_
18 #define _OMX_ALGEBRA_FUNCTIONS_
19
20 #define R_NO_REMAP
21 #include <R.h>
22 #include <Rinternals.h>
23 #include <R_ext/Rdynload.h>
24 #include <R_ext/BLAS.h>
25 #include <R_ext/Lapack.h>
26 #include <stdlib.h>
27 #include "omxMatrix.h"
28
29 /* Helpers */
30 void omxStandardizeCovMatrix(omxMatrix* cov, double* corList, double* weights); // TODO: Convert to Algebra?
31 void checkIncreasing(omxMatrix* om, int column);
32
33 /* Functional Wrappers */
34 void omxMatrixInvert(omxMatrix** matList, int numArgs, omxMatrix* result);
35 void omxUnaryNegation(omxMatrix** matList, int numArgs, omxMatrix* result);
36 void omxBinaryOr(omxMatrix** matList, int numArgs, omxMatrix* result);
37 void omxBinaryAnd(omxMatrix** matList, int numArgs, omxMatrix* result);
38 void omxBinaryGreaterThan(omxMatrix** matList, int numArgs, omxMatrix* result);
39 void omxBinaryLessThan(omxMatrix** matList, int numArgs, omxMatrix* result);
40 void omxBinaryApproxEquals(omxMatrix** matList, int numArgs, omxMatrix* result);
41 void omxMatrixTranspose(omxMatrix** matList, int numArgs, omxMatrix* result);
42 void omxElementPower(omxMatrix** matList, int numArgs, omxMatrix* result);
43 void omxMatrixMult(omxMatrix** matList, int numArgs, omxMatrix* result);
44 void omxMatrixElementMult(omxMatrix** matList, int numArgs, omxMatrix* result);
45 void omxKroneckerProd(omxMatrix** matList, int numArgs, omxMatrix* result);
46 void omxKroneckerPower(omxMatrix** matList, int numArgs, omxMatrix* result);
47 void omxQuadraticProd(omxMatrix** matList, int numArgs, omxMatrix* result);
48 void omxElementDivide(omxMatrix** matList, int numArgs, omxMatrix* result);
49 void omxMatrixAdd(omxMatrix** matList, int numArgs, omxMatrix* result);
50 void omxMatrixSubtract(omxMatrix** matList, int numArgs, omxMatrix* result);
51 void omxUnaryMinus(omxMatrix** matList, int numArgs, omxMatrix* result);
52 void omxMatrixHorizCat(omxMatrix** matList, int numArgs, omxMatrix* result);
53 void omxMatrixVertCat(omxMatrix** matList, int numArgs, omxMatrix* result);
54 void omxMatrixDeterminant(omxMatrix** matList, int numArgs, omxMatrix* result);
55 void omxMatrixTrace(omxMatrix** matList, int numArgs, omxMatrix* result);
56 void omxMatrixTotalSum(omxMatrix** matList, int numArgs, omxMatrix* result);
57 void omxMatrixTotalProduct(omxMatrix** matList, int numArgs, omxMatrix* result);
58 void omxMatrixArithmeticMean(omxMatrix** matList, int numArgs, omxMatrix* result);
59 void omxMatrixMaximum(omxMatrix** matList, int numArgs, omxMatrix* result);
60 void omxMatrixMinimum(omxMatrix** matList, int numArgs, omxMatrix* result);
61 void omxMatrixAbsolute(omxMatrix** matList, int numArgs, omxMatrix* result);
62 void omxMatrixDiagonal(omxMatrix** matList, int numArgs, omxMatrix* result);
63 void omxMatrixFromDiagonal(omxMatrix** matList, int numArgs, omxMatrix* result);
64 void omxElementCosine(omxMatrix** matList, int numArgs, omxMatrix* result);
65 void omxElementCosh(omxMatrix** matList, int numArgs, omxMatrix* result);
66 void omxElementSine(omxMatrix** matList, int numArgs, omxMatrix* result);
67 void omxElementSinh(omxMatrix** matList, int numArgs, omxMatrix* result);
68 void omxElementTangent(omxMatrix** matList, int numArgs, omxMatrix* result);
69 void omxElementTanh(omxMatrix** matList, int numArgs, omxMatrix* result);
70 void omxElementExponent(omxMatrix** matList, int numArgs, omxMatrix* result);
71 void omxElementNaturalLog(omxMatrix** matList, int numArgs, omxMatrix* result);
72 void omxElementSquareRoot(omxMatrix** matList, int numArgs, omxMatrix* result);
73 void omxMatrixExtract(omxMatrix** matList, int numArgs, omxMatrix* result);
74 void omxMatrixVech(omxMatrix** matList, int numArgs, omxMatrix* result);
75 void omxMatrixVechs(omxMatrix** matList, int numArgs, omxMatrix* result);
76 void omxMultivariateNormalIntegration(omxMatrix** matList, int numArgs, omxMatrix* result);
77 void omxAllIntegrationNorms(omxMatrix** matList, int numArgs, omxMatrix* result);
78 void omxSequenceGenerator(omxMatrix** matList, int numArgs, omxMatrix* result);
79 void omxRowVectorize(omxMatrix** matList, int numArgs, omxMatrix* result);
80 void omxColVectorize(omxMatrix** matList, int numArgs, omxMatrix* result);
81 void omxImaginaryEigenvectors(omxMatrix** matList, int numArgs, omxMatrix* result);
82 void omxRealEigenvectors(omxMatrix** matList, int numArgs, omxMatrix* result);
83 void omxRealEigenvalues(omxMatrix** matList, int numArgs, omxMatrix* result);
84 void omxImaginaryEigenvalues(omxMatrix** matList, int numArgs, omxMatrix* result);
85 void omxSelectRows(omxMatrix** matList, int numArgs, omxMatrix* result);
86 void omxSelectCols(omxMatrix** matList, int numArgs, omxMatrix* result);
87 void omxSelectRowsAndCols(omxMatrix** matList, int numArgs, omxMatrix* result);
88 void omxAddOwnTranspose(omxMatrix** matList, int numArgs, omxMatrix* result);
89 void omxCovToCor(omxMatrix** matList, int numArgs, omxMatrix* result);
90 void omxCholesky(omxMatrix** matList, int numArgs, omxMatrix* result);
91 void omxVechToMatrix(omxMatrix** matList, int numArgs, omxMatrix* result);
92 void omxVechsToMatrix(omxMatrix** matList, int numArgs, omxMatrix* result);
93 #endif