help-octave
[Top][All Lists]

## Re: Mark a matrix "upper" in a oct-file

 From: Marco Caliari Subject: Re: Mark a matrix "upper" in a oct-file Date: Tue, 9 Sep 2014 13:16:44 +0200 (CEST) User-agent: Alpine 2.10 (DEB 1266 2009-07-14)

```On Fri, 5 Sep 2014, David Bateman wrote:

```
```

```
```Le 5 sept. 2014 à 13:56, Marco Caliari <address@hidden> a écrit :

Dear all,

I have to take the upper triangular part of a matrix in a oct-file. Later, I
have to perform RowVector-Matrix products with it. This is my code

// given Matrix F(m,m)
// take the upper triangular part
for (octave_idx_type j = 0; j < m; j++)
{
for (octave_idx_type i = j+1; i < m; i++)
F(i,j) = 0.0;
}
RowVector d = F.row(0);
// make RowVector-matrix products
for (octave_idx_type i = 0; i < s-1; i++)
d = d * F;

My question is: if I mark the matrix "upper" (but do not know how to do it), is
the RowVector-Matrix product faster (for instance BLAS dtrmv is used instead of general
dgemv)?

```
```
Look at the matrix_type function for how to mark the matrix as upper. However,
marking it as such is only useful at this point for the solve function or slash
operators.
```
```
Dear all, copying from dMatrix.cc, I replaced

for (octave_idx_type i = 0; i < s-1; i++)
d = d*F

with the triangular matrix vector product

double *Fd = d.fortran_vec();
for (octave_idx_type i = 0; i < s-1; i++)
{
F77_XFCN(dtrmv, DTRMV, (F77_CONST_CHAR_ARG2 ("U",1),
F77_CONST_CHAR_ARG2 ("T",1),
F77_CONST_CHAR_ARG2 ("N",1),
m, F.data(),
m, Fd, 1
F77_CHAR_ARG_LEN (1)
F77_CHAR_ARG_LEN (1)
F77_CHAR_ARG_LEN (1)));
}

```
It works, but even with large matrices (around 400x400) I do not see any speed-up.
```
Thanks,

Marco```