MADlib
1.0
A newer version is available
User Documentation
Main Page
Modules
All
Files
Functions
Groups
matrix_op.sql_in
1
m4_include(`SQLCommon.m4
')
2
3
CREATE TYPE MADLIB_SCHEMA.matrix_result AS(
4
output_table TEXT
5
);
6
7
CREATE OR REPLACE FUNCTION
8
MADLIB_SCHEMA.matrix_mult
9
(
10
matrix_a TEXT,
11
a_row TEXT,
12
a_col TEXT,
13
a_val TEXT,
14
a_trans BOOLEAN,
15
matrix_b TEXT,
16
b_row TEXT,
17
b_col TEXT,
18
b_val TEXT,
19
b_trans BOOLEAN,
20
matrix_r TEXT
21
)
22
RETURNS MADLIB_SCHEMA.matrix_result AS $$
23
PythonFunctionBodyOnly(`linalg'
, `matrix_op
')
24
matrix_op.matrix_mult(schema_madlib,
25
matrix_a, a_row, a_col, a_val, a_trans,
26
matrix_b, b_row, b_col, b_val, b_trans,
27
matrix_r)
28
return [matrix_r]
29
$$ LANGUAGE plpythonu;
30
31
CREATE OR REPLACE FUNCTION
32
MADLIB_SCHEMA.matrix_mult
33
(
34
matrix_a TEXT,
35
a_trans BOOLEAN,
36
matrix_b TEXT,
37
b_trans BOOLEAN,
38
matrix_r TEXT
39
)
40
RETURNS MADLIB_SCHEMA.matrix_result AS $$
41
SELECT
42
MADLIB_SCHEMA.matrix_mult(
43
$1, NULL, NULL, NULL, $2,
44
$3, NULL, NULL, NULL, $4,
45
$5);
46
$$ LANGUAGE sql;
47
48
CREATE OR REPLACE FUNCTION
49
MADLIB_SCHEMA.matrix_block_mult
50
(
51
matrix_a TEXT,
52
matrix_b TEXT,
53
matrix_r TEXT
54
)
55
RETURNS MADLIB_SCHEMA.matrix_result AS $$
56
PythonFunctionBodyOnly(`linalg'
, `matrix_op
')
57
matrix_op.matrix_block_mult(schema_madlib,
58
matrix_a, matrix_b, matrix_r)
59
return [matrix_r]
60
$$ LANGUAGE plpythonu;
61
62
CREATE OR REPLACE FUNCTION
63
MADLIB_SCHEMA.matrix_block_square
64
(
65
matrix_in TEXT,
66
matrix_out TEXT
67
)
68
RETURNS MADLIB_SCHEMA.matrix_result AS $$
69
PythonFunctionBodyOnly(`linalg'
, `matrix_op
')
70
matrix_op.matrix_block_square(schema_madlib, matrix_in, matrix_out)
71
return [matrix_out]
72
$$ LANGUAGE plpythonu;
73
74
CREATE OR REPLACE FUNCTION
75
MADLIB_SCHEMA.matrix_block_trans
76
(
77
matrix_in TEXT,
78
matrix_out TEXT
79
)
80
RETURNS MADLIB_SCHEMA.matrix_result AS $$
81
PythonFunctionBodyOnly(`linalg'
, `matrix_op
')
82
matrix_op.matrix_block_trans(schema_madlib, matrix_in, matrix_out)
83
return [matrix_out]
84
$$ LANGUAGE plpythonu;
85
86
CREATE OR REPLACE FUNCTION
87
MADLIB_SCHEMA.matrix_square
88
(
89
matrix_in TEXT,
90
matrix_out TEXT
91
)
92
RETURNS MADLIB_SCHEMA.matrix_result AS $$
93
PythonFunctionBodyOnly(`linalg'
, `matrix_op
')
94
matrix_op.matrix_square(schema_madlib,
95
matrix_in, matrix_out)
96
return [matrix_out]
97
$$ LANGUAGE plpythonu;
98
99
CREATE OR REPLACE FUNCTION
100
MADLIB_SCHEMA.matrix_trans
101
(
102
matrix_in TEXT,
103
in_row TEXT,
104
in_col TEXT,
105
in_val TEXT,
106
matrix_out TEXT,
107
use_temp_table BOOLEAN
108
)
109
RETURNS MADLIB_SCHEMA.matrix_result AS $$
110
PythonFunctionBodyOnly(`linalg'
, `matrix_op
')
111
matrix_op.matrix_trans(schema_madlib,
112
matrix_in, in_row, in_col, in_val, matrix_out, use_temp_table)
113
return [matrix_out]
114
$$ LANGUAGE plpythonu;
115
116
CREATE OR REPLACE FUNCTION
117
MADLIB_SCHEMA.matrix_trans
118
(
119
matrix_in TEXT,
120
matrix_out TEXT,
121
use_temp_table BOOLEAN
122
)
123
RETURNS MADLIB_SCHEMA.matrix_result AS $$
124
SELECT
125
MADLIB_SCHEMA.matrix_trans(
126
$1, NULL, NULL, NULL, $2, $3);
127
$$ LANGUAGE sql;
128
129
CREATE OR REPLACE FUNCTION
130
MADLIB_SCHEMA.matrix_sparsify
131
(
132
matrix_in TEXT,
133
matrix_out TEXT,
134
use_temp_table BOOLEAN
135
)
136
RETURNS MADLIB_SCHEMA.matrix_result AS $$
137
PythonFunctionBodyOnly(`linalg'
, `matrix_op
')
138
matrix_op.matrix_sparsify(matrix_in, matrix_out, use_temp_table)
139
return [matrix_out]
140
$$ LANGUAGE plpythonu;
141
142
CREATE OR REPLACE FUNCTION
143
MADLIB_SCHEMA.matrix_densify
144
(
145
matrix_in TEXT,
146
in_row TEXT,
147
in_col TEXT,
148
in_val TEXT,
149
matrix_out TEXT,
150
use_temp_table BOOLEAN
151
)
152
RETURNS MADLIB_SCHEMA.matrix_result AS $$
153
PythonFunctionBodyOnly(`linalg'
, `matrix_op
')
154
matrix_op.matrix_densify(schema_madlib,
155
matrix_in, in_row, in_col, in_val, matrix_out, use_temp_table)
156
return [matrix_out]
157
$$ LANGUAGE plpythonu;
158
159
CREATE OR REPLACE FUNCTION
160
MADLIB_SCHEMA.__matrix_densify_sfunc
161
(
162
state FLOAT8[],
163
col_dim INT4,
164
col INT4,
165
val FLOAT8
166
)
167
RETURNS FLOAT8[]
168
AS '
MODULE_PATHNAME
', '
matrix_densify_sfunc
'
169
LANGUAGE C;
170
171
CREATE OR REPLACE FUNCTION
172
MADLIB_SCHEMA.__rand_vector
173
(
174
dim INT4
175
)
176
RETURNS INT4[]
177
AS '
MODULE_PATHNAME
', '
rand_vector
'
178
LANGUAGE C STRICT;
179
180
CREATE OR REPLACE FUNCTION
181
MADLIB_SCHEMA.__rand_block
182
(
183
row_dim INT4,
184
col_dim INT4
185
)
186
RETURNS INT4[]
187
AS '
MODULE_PATHNAME
', '
rand_block
'
188
LANGUAGE C STRICT;
189
190
CREATE OR REPLACE FUNCTION
191
MADLIB_SCHEMA.__rand_block
192
(
193
dim INT4
194
)
195
RETURNS INT4[] AS $$
196
SELECT MADLIB_SCHEMA.__rand_block($1, $1);
197
$$ LANGUAGE sql STRICT;
198
199
CREATE OR REPLACE FUNCTION
200
MADLIB_SCHEMA.__matrix_row_split
201
(
202
row_in FLOAT8[],
203
size INT4
204
)
205
RETURNS SETOF FLOAT8[]
206
AS '
MODULE_PATHNAME
', '
row_split
'
207
LANGUAGE C STRICT;
208
209
CREATE OR REPLACE FUNCTION
210
MADLIB_SCHEMA.__matrix_blockize_sfunc
211
(
212
state FLOAT8[],
213
row_id INT4,
214
row_vec FLOAT8[],
215
rsize INT4
216
)
217
RETURNS FLOAT8[]
218
AS '
MODULE_PATHNAME
', '
matrix_blockize_sfunc
'
219
LANGUAGE C;
220
221
CREATE OR REPLACE FUNCTION
222
MADLIB_SCHEMA.__matrix_unblockize_sfunc
223
(
224
state FLOAT8[],
225
total_col_dim INT4,
226
col_id INT4,
227
row_vec FLOAT8[]
228
)
229
RETURNS FLOAT8[]
230
AS '
MODULE_PATHNAME
', '
matrix_unblockize_sfunc
'
231
LANGUAGE C;
232
233
DROP AGGREGATE IF EXISTS
234
MADLIB_SCHEMA.__matrix_densify_agg
235
(
236
INT4,
237
INT4,
238
FLOAT8
239
);
240
241
CREATE AGGREGATE
242
MADLIB_SCHEMA.__matrix_densify_agg
243
(
244
INT4,
245
INT4,
246
FLOAT8
247
)
248
(
249
stype = FLOAT8[],
250
sfunc = MADLIB_SCHEMA.__matrix_densify_sfunc
251
);
252
253
DROP AGGREGATE IF EXISTS
254
MADLIB_SCHEMA.__matrix_blockize_agg
255
(
256
INT4,
257
FLOAT8[],
258
INT4
259
);
260
261
CREATE AGGREGATE
262
MADLIB_SCHEMA.__matrix_blockize_agg
263
(
264
INT4,
265
FLOAT8[],
266
INT4
267
)
268
(
269
stype = FLOAT8[],
270
sfunc = MADLIB_SCHEMA.__matrix_blockize_sfunc
271
);
272
273
DROP AGGREGATE IF EXISTS
274
MADLIB_SCHEMA.__matrix_unblockize_agg
275
(
276
INT4,
277
INT4,
278
FLOAT8[]
279
);
280
281
CREATE AGGREGATE
282
MADLIB_SCHEMA.__matrix_unblockize_agg
283
(
284
INT4,
285
INT4,
286
FLOAT8[]
287
)
288
(
289
stype = FLOAT8[],
290
sfunc = MADLIB_SCHEMA.__matrix_unblockize_sfunc
291
);
292
293
CREATE OR REPLACE FUNCTION
294
MADLIB_SCHEMA.matrix_mem_mult
295
(
296
matrix_a FLOAT[],
297
matrix_b FLOAT[],
298
trans_b BOOLEAN
299
)
300
RETURNS FLOAT8[]
301
AS '
MODULE_PATHNAME
', '
matrix_mem_mult
'
302
LANGUAGE C;
303
304
CREATE OR REPLACE FUNCTION
305
MADLIB_SCHEMA.matrix_mem_mult
306
(
307
matrix_a FLOAT[],
308
matrix_b FLOAT[]
309
)
310
RETURNS FLOAT8[] AS $$
311
SELECT MADLIB_SCHEMA.matrix_mem_mult($1, $2, false);
312
$$ LANGUAGE sql;
313
314
CREATE OR REPLACE FUNCTION
315
MADLIB_SCHEMA.matrix_mem_trans
316
(
317
matrix FLOAT[]
318
)
319
RETURNS FLOAT8[]
320
AS '
MODULE_PATHNAME
', '
matrix_mem_trans
'
321
LANGUAGE C;
322
323
CREATE OR REPLACE FUNCTION
324
MADLIB_SCHEMA.__matrix_mem_sum_sfunc
325
(
326
state FLOAT[],
327
matrix FLOAT[]
328
)
329
RETURNS FLOAT8[]
330
AS '
MODULE_PATHNAME
', '
matrix_mem_sum_sfunc
'
331
LANGUAGE C;
332
333
DROP AGGREGATE IF EXISTS
334
MADLIB_SCHEMA.__matrix_mem_sum
335
(
336
FLOAT[],
337
FLOAT[]
338
);
339
340
CREATE AGGREGATE
341
MADLIB_SCHEMA.__matrix_mem_sum
342
(
343
FLOAT[]
344
)
345
(
346
stype = FLOAT8[],
347
sfunc = MADLIB_SCHEMA.__matrix_mem_sum_sfunc
348
);
349
350
CREATE OR REPLACE FUNCTION
351
MADLIB_SCHEMA.__matrix_column_to_array_format
352
(
353
matrix_in TEXT,
354
matrix_out TEXT
355
)
356
RETURNS MADLIB_SCHEMA.matrix_result AS $$
357
PythonFunctionBodyOnly(`linalg'
, `matrix_op
')
358
matrix_op.__matrix_column_to_array_format(matrix_in, matrix_out)
359
return [matrix_out]
360
$$ LANGUAGE plpythonu STRICT;
361
362
CREATE OR REPLACE FUNCTION
363
MADLIB_SCHEMA.matrix_blockize
364
(
365
matrix_in TEXT,
366
rsize INT4,
367
csize INT4,
368
matrix_out TEXT
369
)
370
RETURNS MADLIB_SCHEMA.matrix_result AS $$
371
PythonFunctionBodyOnly(`linalg'
, `matrix_op
')
372
matrix_op.matrix_blockize(schema_madlib, matrix_in, rsize, csize, matrix_out)
373
return [matrix_out]
374
$$ LANGUAGE plpythonu;
375
376
CREATE OR REPLACE FUNCTION
377
MADLIB_SCHEMA.matrix_unblockize
378
(
379
matrix_in TEXT,
380
matrix_out TEXT
381
)
382
RETURNS MADLIB_SCHEMA.matrix_result AS $$
383
PythonFunctionBodyOnly(`linalg'
, `matrix_op
')
384
matrix_op.matrix_unblockize(schema_madlib, matrix_in, matrix_out)
385
return [matrix_out]
386
$$ LANGUAGE plpythonu;
387
388
CREATE OR REPLACE FUNCTION
389
MADLIB_SCHEMA.__matrix_unnest_block
390
(
391
block FLOAT8[]
392
)
393
RETURNS SETOF FLOAT8[]
394
AS '
MODULE_PATHNAME
', '
unnest_block
'
395
LANGUAGE C IMMUTABLE STRICT;
src
ports
postgres
modules
linalg
matrix_op.sql_in
Generated on Tue Sep 10 2013 15:48:04 for MADlib by
1.8.4