summaryrefslogtreecommitdiff
path: root/src/c/matrixOperations/multiplication/i16mulma.c
diff options
context:
space:
mode:
authorimushir2015-12-29 11:55:07 +0530
committerimushir2015-12-29 11:55:07 +0530
commita8627e204617fc212c4f05d232208890d9d1cad6 (patch)
treead24a217bac494193bf54a82bdb16eab668e5c0b /src/c/matrixOperations/multiplication/i16mulma.c
parent52780e449df15747b1339b1fa2c8caf8d69b2c56 (diff)
downloadScilab2C_fossee_old-a8627e204617fc212c4f05d232208890d9d1cad6.tar.gz
Scilab2C_fossee_old-a8627e204617fc212c4f05d232208890d9d1cad6.tar.bz2
Scilab2C_fossee_old-a8627e204617fc212c4f05d232208890d9d1cad6.zip
added support for matrixMultiplication
Diffstat (limited to 'src/c/matrixOperations/multiplication/i16mulma.c')
-rw-r--r--src/c/matrixOperations/multiplication/i16mulma.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/c/matrixOperations/multiplication/i16mulma.c b/src/c/matrixOperations/multiplication/i16mulma.c
new file mode 100644
index 0000000..ee1268a
--- /dev/null
+++ b/src/c/matrixOperations/multiplication/i16mulma.c
@@ -0,0 +1,44 @@
+/*SCilab2C FOSSEE IIT Bombay*/
+
+/*
+** \brief Compute a multiplication for int16 matrixes.
+** \param in1 : input matrix.
+** \param lines1 : lines of in1 matrix.
+** \param columns1 : columns of in1 matrix.
+** \param in2 : input arry.
+** \param lines2 : lines of in2 matrix.
+** \param columns2 : columns of in2 matrix.
+** \param out : Matrix that contains the multiplication in1 * in2.
+*/
+
+// dgemm function of lapack library does not support uint8,uint16,int8 and int16 datatype so removed
+
+#include "matrixMultiplication.h"
+
+void i16mulma(int16 *in1,int lines1,int columns1,
+ int16 *in2,int lines2,int columns2,
+ int16 *out)
+{
+
+ /* Do Not Use Any BLAS Function*/
+ int i = 0;
+ int k = 0;
+ int16 accu = 0;
+
+ /* How to convert 2 index matrixes to one.
+ ** #define in1(a,b) in1[a+b*lines1]
+ ** #define in2(c,d) in2[c+d*lines2]
+ */
+ for(i=0;i < lines1 * columns2; ++i)
+ {
+ accu = 0;
+ for(k=0;k < columns1; ++k)
+ {
+ accu += in1[i % lines1 + k * lines1] * in2[k + (i / lines1) * lines2];
+
+ }
+ out[i] = accu;
+
+ }
+
+}