* Bug 15599 fixed: now degree of zero polynomial is -Inf
[scilab.git] / scilab / modules / ast / includes / operations / matrix_multiplication.h
1 /*
2 *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 *  Copyright (C) 2008-2008 - DIGITEO - Antoine ELIAS
4 *
5  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  *
7  * This file is hereby licensed under the terms of the GNU GPL v2.0,
8  * pursuant to article 5.3.4 of the CeCILL v.2.1.
9  * This file was originally licensed under the terms of the CeCILL v2.1,
10  * and continues to be available under such terms.
11  * For more information, see the COPYING file which you should have received
12  * along with this program.
13 *
14 */
15
16 #ifndef __MATRIX_MULT__
17 #define __MATRIX_MULT__
18
19 #include "dynlib_ast.h"
20
21 EXTERN_AST int iMultiComplexMatrixByComplexMatrix(
22     double *_pdblReal1,         double *_pdblImg1, int _iRows1, int _iCols1,
23     double *_pdblReal2,         double *_pdblImg2, int _iRows2, int _iCols2,
24     double *_pdblRealOut,       double *_pdblImgOut);
25
26 EXTERN_AST int iMultiRealMatrixByRealMatrix(
27     double *_pdblReal1, int _iRows1, int _iCols1,
28     double *_pdblReal2, int _iRows2, int _iCols2,
29     double *_pdblRealOut);
30
31 EXTERN_AST int iMultiRealMatrixByComplexMatrix(
32     double *_pdblReal1,         int _iRows1, int _iCols1,
33     double *_pdblReal2,         double *_pdblImg2, int _iRows2, int _iCols2,
34     double *_pdblRealOut,       double *_pdblImgOut);
35
36 EXTERN_AST int iMultiComplexMatrixByRealMatrix(
37     double *_pdblReal1,         double *_pdblImg1,      int _iRows1, int _iCols1,
38     double *_pdblReal2,         int _iRows2, int _iCols2,
39     double *_pdblRealOut,       double *_pdblImgOut);
40
41 EXTERN_AST int iMultiRealScalarByRealMatrix(
42     double _dblReal1,
43     double *_pdblReal2, int _iRows2, int _iCols2,
44     double *_pdblRealOut);
45
46 EXTERN_AST int iMultiRealScalarByComplexMatrix(
47     double _dblReal1,
48     double *_pdblReal2, double *_pdblImg2, int _iRows2, int _iCols2,
49     double *_pdblRealOut, double *_pdblImgOut);
50
51 EXTERN_AST int iMultiComplexScalarByRealMatrix(
52     double _dblReal1,           double _dblImg1,
53     double *_pdblReal2,         int _iRows2, int _iCols2,
54     double *_pdblRealOut,       double *_pdblImgOut);
55
56 EXTERN_AST int iMultiComplexScalarByComplexMatrix(
57     double _dblReal1,           double _dblImg1,
58     double *_pdblReal2,         double *_pdblImg2, int _iRows2, int _iCols2,
59     double *_pdblRealOut,       double *_pdblImgOut);
60
61
62 /*polynomial multiplications*/
63 EXTERN_AST int iMultiScilabPolynomByScilabPolynom(
64     double *_pdblReal1, int _iRank1,
65     double *_pdblReal2, int _iRank2,
66     double *_pdblRealOut, int _iRankOut);
67
68 EXTERN_AST int iMultiComplexPolyByScilabPolynom(
69     double *_pdblReal1, double *_pdblImg1, int _iRank1,
70     double *_pdblReal2, int _iRank2,
71     double *_pdblRealOut, double *_pdblImgOut, int _iRankOut);
72
73 EXTERN_AST int iMultiScilabPolynomByComplexPoly(
74     double *_pdblReal1, int _iRank1,
75     double *_pdblReal2, double *_pdblImg2, int _iRank2,
76     double *_pdblRealOut, double *_pdblImgOut, int _iRankOut);
77
78 EXTERN_AST int iMultiComplexPolyByComplexPoly(
79     double *_pdblReal1, double *_pdblImg1, int _iRank1,
80     double *_pdblReal2, double *_pdblImg2, int _iRank2,
81     double *_pdblRealOut, double *_pdblImgOut, int _iRankOut);
82
83 EXTERN_AST int iDotMultiplyRealMatrixByRealMatrix(
84     double* _pdblReal1,
85     double* _pdblReal2,
86     double* _pdblRealOut, int _iRowsOut, int _iColsOut);
87
88 EXTERN_AST int iDotMultiplyRealMatrixByComplexMatrix(
89     double* _pdblReal1,
90     double* _pdblReal2, double* _pdblImg2,
91     double* _pdblRealOut, double* _pdblImgOut, int _iRowsOut, int _iColsOut);
92
93 EXTERN_AST int iDotMultiplyComplexMatrixByRealMatrix(
94     double* _pdblReal1, double* _pdblImg1,
95     double* _pdblReal2,
96     double* _pdblRealOut, double* _pdblImgOut, int _iRowsOut, int _iColsOut);
97
98 EXTERN_AST int iDotMultiplyComplexMatrixByComplexMatrix(
99     double* _pdblReal1, double* _pdblImg1,
100     double* _pdblReal2, double* _pdblImg2,
101     double* _pdblRealOut, double* _pdblImgOut, int _iRowsOut, int _iColsOut);
102
103 #endif /* __MATRIX_MULT__ */