blob: a08cb1fa31eef935c73be83672e00fcefc9c63cc [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
Xvector = source(line,"../tests/data/Xvector.txt",",",type( (double,long) ));
Yvector = source(line,"../tests/data/Yvector.txt",",",type( (double,long) ));
Xmatrix = source(line,"../tests/data/Xmatrix.txt",",",type( (double,long,long) ));
Ymatrix = source(line,"../tests/data/Ymatrix.txt",",",type( (double,long,long) ));
// inner product:
sum(select v*w
from (v,i) in Xvector,
(w,i) in Yvector);
// matrix addition:
select ( x+y, i, j )
from (x,i,j) in Xmatrix,
(y,i,j) in Ymatrix;
// matrix transpose:
macro transpose ( X ) {
select (x,j,i)
from (x,i,j) in X
};
transpose(Xmatrix);
// map to a vector:
select (sum(x),i)
from (x,i,j) in Xmatrix
group by i;
// matrix multiplication #1:
macro multiply ( X, Y ) {
select (sum(z),i,j)
from (x,i,k) in X, (y,k,j) in Y, z = x*y
group by (i,j)
};
multiply(Xmatrix,transpose(Ymatrix));
// matrix multiplication #2:
select (sum(select p.x*p.y from p in partition),i,j)
from (x,i,k) in Xmatrix,
(y,k,j) in Ymatrix
group by (i,j);
// matrix-vector product:
macro MVprod ( M, V ) {
select ( sum(z), i )
from (m,i,j) in M, (v,j) in V, z = m*v
group by i
};
MVprod(Xmatrix,Xvector);