Skip to content

vectorise vs vectorize bug #128

Closed
Closed
@taiwuchiang

Description

@taiwuchiang

Matlab code:

a = rand(5,5);
b = sum(a(:));

Generated C++ code:
int main(int argc, char** argv)
{
double b ;
mat a ;
a = arma::randu(5, 5) ;
b = double(arma::as_scalar(arma::sum(arma:vectorize(a(span(0, a.n_rows-1)))))) ;
return 0 ;
}

Corrected C++ code:

int main(int argc, char** argv)
{
double b;
mat a;
a = arma::randu(5, 5);
b = double(arma::as_scalar(arma::sum(arma::vectorise(a))));
return 0;
}

There are 3 issues here:

  1. Armadillo uses 'vectorise' instead of 'vectorize' as the function name. I guess it's a typo but ...
  2. the generated code missed one column ':' after arma. It should be arma::vectorise().
  3. a(span(0, a.n_rows-1)) is not right since it's a mat. You can simply use a, doesn't need indexing. Like:
    arma::vectorise(a)

Thanks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions