Uh oh!
There was an error while loading. Please reload this page.
This repository was archived by the owner on Nov 20, 2020. It is now read-only.
- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmatrix_op_source.c
More file actions
Latest commit
67 lines (56 loc) · 1.89 KB
/
Copy pathmatrix_op_source.c
File metadata and controls
67 lines (56 loc) · 1.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/* matrix_op_source.c
*
* Copyright (C) 2009 Francesco Abbate
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or (at
* your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifdefSCALAR_OP
staticint
FUNCTION (scalar_matrix, OPER) (lua_State*L, intindex_scalar, intindex_matrix)
{
constTYPE (gsl_matrix) *m=FUNCTION (matrix, check) (L, index_matrix);
LUA_TYPEval=LUA_FUNCTION (to) (L, index_scalar);
BASEgval=TYPE (value_assign) (val);
TYPE (gsl_matrix) *r;
r=FUNCTION (matrix, push) (L, m->size1, m->size2);
FUNCTION (gsl_matrix, memcpy) (r, m);
FUNCTION (gsl_matrix, SCALAR_OP) (r, gval);
return1;
}
#endif
int
FUNCTION(matrix,OPER) (lua_State*L)
{
constTYPE(gsl_matrix) *a, *b;
TYPE(gsl_matrix) *r;
#ifdefSCALAR_OP
if (LUA_FUNCTION(is) (L, 1))
{
returnFUNCTION(scalar_matrix, OPER) (L, 1, 2);
}
elseif (LUA_FUNCTION(is) (L, 2))
{
returnFUNCTION(scalar_matrix, OPER) (L, 2, 1);
}
#endif
a=FUNCTION (matrix, check) (L, 1);
b=FUNCTION (matrix, check) (L, 2);
if (a->size1!=b->size1||a->size2!=b->size2)
luaL_error (L, "matrices should have the same size in "OP_NAME);
r=FUNCTION (matrix, push) (L, a->size1, a->size2);
FUNCTION(gsl_matrix, memcpy) (r, a);
FUNCTION(gsl_matrix, OPER) (r, b);
return1;
}