Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Arduino Due Support #13

Closed
juanjqo opened this issue Oct 27, 2017 · 8 comments
Closed

Arduino Due Support #13

juanjqo opened this issue Oct 27, 2017 · 8 comments

Comments

@juanjqo
Copy link

juanjqo commented Oct 27, 2017

Dear Tom,

It is possible to use the library on Arduino DUE?

I am trying, but I have problems to compile.

Thanks!

@tomstewart89
Copy link
Owner

Hey Juan,
It should be fine to use Arduino DUE. If you show me some code and the compiler error you're seeing I can probably help you resolve the problem.

@juanjqo
Copy link
Author

juanjqo commented Oct 28, 2017

Hi Tom,
Thank you for your answer.
I trying to compile this:

#include <BasicLinearAlgebra.h>
void setup() {
// put your setup code here, to run once:

}
void loop() {
// put your main code here, to run repeatedly:
}

When the board is MEGA or UNO for instance, everything is ok. But when the selected board is a DUE,
This happens:

example

Arduino: 1.8.5 (Windows 10), Board: "Arduino Due (Programming Port)"

In file included from C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:16:0,

             from C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:1:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:4:61: error: using typedef-name 'Matrix' after 'class'

template<int rows, int cols, class ElemT, class MemT> class Matrix;

                                                         ^

In file included from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3xa/include/sam3x8e.h:282:0,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3xa/include/sam3xa.h:44,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3.h:59,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam.h:198,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/libsam/chip.h:25,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\cores\arduino/Arduino.h:42,

             from sketch\HowToUse.ino.cpp:1:

C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3xa/include/component/component_matrix.h:71:3: note: 'Matrix' has a previous declaration here

} Matrix;

^

In file included from C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:16:0,

             from C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:1:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:24:1: error: 'Matrix' is not a template

Matrix<rows,cols,retElemT,Array<rows,cols,retElemT> > &Add(const Matrix<rows,cols,ElemT,Array<rows,cols,ElemT> > &A, const Matrix<rows,cols,opElemT,Array<rows,cols,opElemT> > &B, Matrix<rows,cols,retElemT,Array<rows,cols,retElemT> > &C)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:24:66: error: 'Matrix' is not a template

Matrix<rows,cols,retElemT,Array<rows,cols,retElemT> > &Add(const Matrix<rows,cols,ElemT,Array<rows,cols,ElemT> > &A, const Matrix<rows,cols,opElemT,Array<rows,cols,opElemT> > &B, Matrix<rows,cols,retElemT,Array<rows,cols,retElemT> > &C)

                                                              ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:24:124: error: 'Matrix' is not a template

Matrix<rows,cols,retElemT,Array<rows,cols,retElemT> > &Add(const Matrix<rows,cols,ElemT,Array<rows,cols,ElemT> > &A, const Matrix<rows,cols,opElemT,Array<rows,cols,opElemT> > &B, Matrix<rows,cols,retElemT,Array<rows,cols,retElemT> > &C)

                                                                                                                        ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:24:180: error: 'Matrix' is not a template

Matrix<rows,cols,retElemT,Array<rows,cols,retElemT> > &Add(const Matrix<rows,cols,ElemT,Array<rows,cols,ElemT> > &A, const Matrix<rows,cols,opElemT,Array<rows,cols,opElemT> > &B, Matrix<rows,cols,retElemT,Array<rows,cols,retElemT> > &C)

                                                                                                                                                                                ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp: In function 'Matrix& Add(const Matrix&, const Matrix&, Matrix&)':

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:28:15: error: 'struct Matrix' has no member named 'delegate'

         C.delegate.m[i * cols + j] = A.delegate.m[i * cols + j] + B.delegate.m[i * cols + j];

           ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:28:44: error: 'const struct Matrix' has no member named 'delegate'

         C.delegate.m[i * cols + j] = A.delegate.m[i * cols + j] + B.delegate.m[i * cols + j];

                                        ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:28:73: error: 'const struct Matrix' has no member named 'delegate'

         C.delegate.m[i * cols + j] = A.delegate.m[i * cols + j] + B.delegate.m[i * cols + j];

                                                                     ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp: At global scope:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:34:1: error: 'Matrix' is not a template

Matrix<rows,cols,retElemT,Array<rows,cols,retElemT> > &Subtract(const Matrix<rows,cols,ElemT,Array<rows,cols,ElemT> > &A, const Matrix<rows,cols,opElemT,Array<rows,cols,opElemT> > &B, Matrix<rows,cols,retElemT,Array<rows,cols,retElemT> > &C)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:34:71: error: 'Matrix' is not a template

Matrix<rows,cols,retElemT,Array<rows,cols,retElemT> > &Subtract(const Matrix<rows,cols,ElemT,Array<rows,cols,ElemT> > &A, const Matrix<rows,cols,opElemT,Array<rows,cols,opElemT> > &B, Matrix<rows,cols,retElemT,Array<rows,cols,retElemT> > &C)

                                                                   ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:34:129: error: 'Matrix' is not a template

Matrix<rows,cols,retElemT,Array<rows,cols,retElemT> > &Subtract(const Matrix<rows,cols,ElemT,Array<rows,cols,ElemT> > &A, const Matrix<rows,cols,opElemT,Array<rows,cols,opElemT> > &B, Matrix<rows,cols,retElemT,Array<rows,cols,retElemT> > &C)

                                                                                                                             ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:34:185: error: 'Matrix' is not a template

Matrix<rows,cols,retElemT,Array<rows,cols,retElemT> > &Subtract(const Matrix<rows,cols,ElemT,Array<rows,cols,ElemT> > &A, const Matrix<rows,cols,opElemT,Array<rows,cols,opElemT> > &B, Matrix<rows,cols,retElemT,Array<rows,cols,retElemT> > &C)

                                                                                                                                                                                     ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp: In function 'Matrix& Subtract(const Matrix&, const Matrix&, Matrix&)':

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:38:15: error: 'struct Matrix' has no member named 'delegate'

         C.delegate.m[i * cols + j] = A.delegate.m[i * cols + j] - B.delegate.m[i * cols + j];

           ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:38:44: error: 'const struct Matrix' has no member named 'delegate'

         C.delegate.m[i * cols + j] = A.delegate.m[i * cols + j] - B.delegate.m[i * cols + j];

                                        ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:38:73: error: 'const struct Matrix' has no member named 'delegate'

         C.delegate.m[i * cols + j] = A.delegate.m[i * cols + j] - B.delegate.m[i * cols + j];

                                                                     ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp: At global scope:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:44:1: error: 'Matrix' is not a template

Matrix<rows,operandCols,retElemT,Array<rows,operandCols,retElemT> > &Multiply(const Matrix<rows,cols,ElemT,Array<rows,cols,ElemT> > &A, const Matrix<cols,operandCols,opElemT,Array<cols,operandCols,opElemT> > &B, Matrix<rows,operandCols,retElemT,Array<rows,operandCols,retElemT> > &C)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:44:85: error: 'Matrix' is not a template

Matrix<rows,operandCols,retElemT,Array<rows,operandCols,retElemT> > &Multiply(const Matrix<rows,cols,ElemT,Array<rows,cols,ElemT> > &A, const Matrix<cols,operandCols,opElemT,Array<cols,operandCols,opElemT> > &B, Matrix<rows,operandCols,retElemT,Array<rows,operandCols,retElemT> > &C)

                                                                                 ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:44:143: error: 'Matrix' is not a template

Matrix<rows,operandCols,retElemT,Array<rows,operandCols,retElemT> > &Multiply(const Matrix<rows,cols,ElemT,Array<rows,cols,ElemT> > &A, const Matrix<cols,operandCols,opElemT,Array<cols,operandCols,opElemT> > &B, Matrix<rows,operandCols,retElemT,Array<rows,operandCols,retElemT> > &C)

                                                                                                                                           ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:44:213: error: 'Matrix' is not a template

Matrix<rows,operandCols,retElemT,Array<rows,operandCols,retElemT> > &Multiply(const Matrix<rows,cols,ElemT,Array<rows,cols,ElemT> > &A, const Matrix<cols,operandCols,opElemT,Array<cols,operandCols,opElemT> > &B, Matrix<rows,operandCols,retElemT,Array<rows,operandCols,retElemT> > &C)

                                                                                                                                                                                                                 ^

In file included from C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:16:0,

             from C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:1:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp: In function 'Matrix& Multiply(const Matrix&, const Matrix&, Matrix&)':

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:52:19: error: 'struct Matrix' has no member named 'delegate'

             C.delegate.m[i * operandCols + j] = A.delegate.m[i * cols] * B.delegate.m[j];

               ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:52:55: error: 'const struct Matrix' has no member named 'delegate'

             C.delegate.m[i * operandCols + j] = A.delegate.m[i * cols] * B.delegate.m[j];

                                                   ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:52:80: error: 'const struct Matrix' has no member named 'delegate'

             C.delegate.m[i * operandCols + j] = A.delegate.m[i * cols] * B.delegate.m[j];

                                                                            ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:55:19: error: 'struct Matrix' has no member named 'delegate'

             C.delegate.m[i * operandCols + j] += A.delegate.m[i * cols + k] * B.delegate.m[k * operandCols + j];

               ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:55:56: error: 'const struct Matrix' has no member named 'delegate'

             C.delegate.m[i * operandCols + j] += A.delegate.m[i * cols + k] * B.delegate.m[k * operandCols + j];

                                                    ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:55:85: error: 'const struct Matrix' has no member named 'delegate'

             C.delegate.m[i * operandCols + j] += A.delegate.m[i * cols + k] * B.delegate.m[k * operandCols + j];

                                                                                 ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp: At global scope:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:78:87: error: 'Matrix' is not a template

template<int rows, int cols, class ParentMemT, class ElemT = float> using RefMatrix = Matrix<rows, cols, ElemT, Ref<ElemT,ParentMemT> >;

                                                                                   ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:95:68: error: 'Matrix' is not a template

template<int rows, int cols, class ElemT = float> using Identity = Matrix<rows, cols, ElemT, Iden >;

                                                                ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:154:94: error: 'Matrix' is not a template

template<int rows, int cols, int tableSize = cols, class ElemT = float> using SparseMatrix = Matrix<rows, cols, ElemT, Sparse<cols, tableSize, ElemT> >;

                                                                                          ^

In file included from C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:1:0:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:20:99: error: using typedef-name 'Matrix' after 'class'

template<int rows, int cols = 1, class ElemT = float, class MemT = Array<rows,cols,ElemT> > class Matrix

                                                                                               ^

In file included from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3xa/include/sam3x8e.h:282:0,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3xa/include/sam3xa.h:44,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3.h:59,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam.h:198,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/libsam/chip.h:25,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\cores\arduino/Arduino.h:42,

             from sketch\HowToUse.ino.cpp:1:

C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3xa/include/component/component_matrix.h:71:3: note: 'Matrix' has a previous declaration here

} Matrix;

^

In file included from C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:1:0:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:71:14: error: expected initializer before '<' token

ElemT &Matrix<rows,cols,ElemT,MemT>::operator()(int row, int col) const

          ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:78:1: error: 'Matrix' is not a template

Matrix<height,width,ElemT,Ref<ElemT,MemT> > Matrix<rows,cols,ElemT,MemT>::Submatrix(Range rowRange, Range colRange) const

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:78:45: error: too many template-parameter-lists

Matrix<height,width,ElemT,Ref<ElemT,MemT> > Matrix<rows,cols,ElemT,MemT>::Submatrix(Range rowRange, Range colRange) const

                                         ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:88:1: error: 'Matrix' is not a template

Matrix<rows,cols,ElemT,MemT> &Matrix<rows,cols,ElemT,MemT>::operator=(const Matrix<rows,cols,opElemT,opMemT> &obj)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:88:30: error: too many template-parameter-lists

Matrix<rows,cols,ElemT,MemT> &Matrix<rows,cols,ElemT,MemT>::operator=(const Matrix<rows,cols,opElemT,opMemT> &obj)

                          ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:98:1: error: 'Matrix' is not a template

Matrix<rows,cols,ElemT,MemT> &Matrix<rows,cols,ElemT,MemT>::operator=(ElemT arr[rows][cols])

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:98:37: error: expected initializer before '<' token

Matrix<rows,cols,ElemT,MemT> &Matrix<rows,cols,ElemT,MemT>::operator=(ElemT arr[rows][cols])

                                 ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:108:1: error: 'Matrix' is not a template

Matrix<rows,cols,ElemT,MemT> &Matrix<rows,cols,ElemT,MemT>::Fill(const ElemT &val)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:108:37: error: expected initializer before '<' token

Matrix<rows,cols,ElemT,MemT> &Matrix<rows,cols,ElemT,MemT>::Fill(const ElemT &val)

                                 ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:121:1: error: 'Matrix' is not a template

Matrix<rows,cols,ElemT,Array<rows,cols,ElemT> > Matrix<rows,cols,ElemT,MemT>::operator+(const Matrix<rows,cols,opElemT,opMemT> &obj)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:121:49: error: too many template-parameter-lists

Matrix<rows,cols,ElemT,Array<rows,cols,ElemT> > Matrix<rows,cols,ElemT,MemT>::operator+(const Matrix<rows,cols,opElemT,opMemT> &obj)

                                             ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:131:1: error: 'Matrix' is not a template

Matrix<rows,cols,ElemT,MemT> &Matrix<rows,cols,ElemT,MemT>::operator+=(const Matrix<rows,cols,opElemT,opMemT> &obj)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:131:30: error: too many template-parameter-lists

Matrix<rows,cols,ElemT,MemT> &Matrix<rows,cols,ElemT,MemT>::operator+=(const Matrix<rows,cols,opElemT,opMemT> &obj)

                          ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:139:1: error: 'Matrix' is not a template

Matrix<rows,cols,retElemT,retMemT> &Add(const Matrix<rows,cols,ElemT,MemT> &A, const Matrix<rows,cols,opElemT,opMemT> &B, Matrix<rows,cols,retElemT,retMemT> &C)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:139:47: error: 'Matrix' is not a template

Matrix<rows,cols,retElemT,retMemT> &Add(const Matrix<rows,cols,ElemT,MemT> &A, const Matrix<rows,cols,opElemT,opMemT> &B, Matrix<rows,cols,retElemT,retMemT> &C)

                                           ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:139:86: error: 'Matrix' is not a template

Matrix<rows,cols,retElemT,retMemT> &Add(const Matrix<rows,cols,ElemT,MemT> &A, const Matrix<rows,cols,opElemT,opMemT> &B, Matrix<rows,cols,retElemT,retMemT> &C)

                                                                                  ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:139:123: error: 'Matrix' is not a template

Matrix<rows,cols,retElemT,retMemT> &Add(const Matrix<rows,cols,ElemT,MemT> &A, const Matrix<rows,cols,opElemT,opMemT> &B, Matrix<rows,cols,retElemT,retMemT> &C)

                                                                                                                       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: In function 'Matrix& Add(const Matrix&, const Matrix&, Matrix&)':

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:143:15: error: 'struct Matrix' has no member named 'delegate'

         C.delegate(i,j) = A.delegate(i,j) + B.delegate(i,j);

           ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:143:33: error: 'const struct Matrix' has no member named 'delegate'

         C.delegate(i,j) = A.delegate(i,j) + B.delegate(i,j);

                             ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:143:51: error: 'const struct Matrix' has no member named 'delegate'

         C.delegate(i,j) = A.delegate(i,j) + B.delegate(i,j);

                                               ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: At global scope:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:152:1: error: 'Matrix' is not a template

Matrix<rows,cols,ElemT,Array<rows,cols,ElemT> > Matrix<rows,cols,ElemT,MemT>::operator-(const Matrix<rows,cols,opElemT,opMemT> &obj)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:152:49: error: too many template-parameter-lists

Matrix<rows,cols,ElemT,Array<rows,cols,ElemT> > Matrix<rows,cols,ElemT,MemT>::operator-(const Matrix<rows,cols,opElemT,opMemT> &obj)

                                             ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:162:1: error: 'Matrix' is not a template

Matrix<rows,cols,ElemT,MemT> &Matrix<rows,cols,ElemT,MemT>::operator-=(const Matrix<rows,cols,opElemT,opMemT> &obj)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:162:30: error: too many template-parameter-lists

Matrix<rows,cols,ElemT,MemT> &Matrix<rows,cols,ElemT,MemT>::operator-=(const Matrix<rows,cols,opElemT,opMemT> &obj)

                          ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:170:1: error: 'Matrix' is not a template

Matrix<rows,cols,retElemT,retMemT> &Subtract(const Matrix<rows,cols,ElemT,MemT> &A, const Matrix<rows,cols,opElemT,opMemT> &B, Matrix<rows,cols,retElemT,retMemT> &C)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:170:52: error: 'Matrix' is not a template

Matrix<rows,cols,retElemT,retMemT> &Subtract(const Matrix<rows,cols,ElemT,MemT> &A, const Matrix<rows,cols,opElemT,opMemT> &B, Matrix<rows,cols,retElemT,retMemT> &C)

                                                ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:170:91: error: 'Matrix' is not a template

Matrix<rows,cols,retElemT,retMemT> &Subtract(const Matrix<rows,cols,ElemT,MemT> &A, const Matrix<rows,cols,opElemT,opMemT> &B, Matrix<rows,cols,retElemT,retMemT> &C)

                                                                                       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:170:128: error: 'Matrix' is not a template

Matrix<rows,cols,retElemT,retMemT> &Subtract(const Matrix<rows,cols,ElemT,MemT> &A, const Matrix<rows,cols,opElemT,opMemT> &B, Matrix<rows,cols,retElemT,retMemT> &C)

                                                                                                                            ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: In function 'Matrix& Subtract(const Matrix&, const Matrix&, Matrix&)':

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:174:18: error: no match for call to '(Matrix) (int&, int&)'

         C(i,j) = A(i,j) - B(i,j);

              ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:174:27: error: no match for call to '(const Matrix) (int&, int&)'

         C(i,j) = A(i,j) - B(i,j);

                       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:174:36: error: no match for call to '(const Matrix) (int&, int&)'

         C(i,j) = A(i,j) - B(i,j);

                                ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: At global scope:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:183:1: error: 'Matrix' is not a template

Matrix<rows,operandCols,ElemT,Array<rows,operandCols,ElemT> > Matrix<rows,cols,ElemT,MemT>::operator*(const Matrix<cols,operandCols,opElemT,opMemT> &operand)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:183:63: error: too many template-parameter-lists

Matrix<rows,operandCols,ElemT,Array<rows,operandCols,ElemT> > Matrix<rows,cols,ElemT,MemT>::operator*(const Matrix<cols,operandCols,opElemT,opMemT> &operand)

                                                           ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:193:1: error: 'Matrix' is not a template

Matrix<rows,cols,ElemT,MemT> &Matrix<rows,cols,ElemT,MemT>::operator*=(const Matrix<rows,cols,opElemT,opMemT> &operand)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:193:30: error: too many template-parameter-lists

Matrix<rows,cols,ElemT,MemT> &Matrix<rows,cols,ElemT,MemT>::operator*=(const Matrix<rows,cols,opElemT,opMemT> &operand)

                          ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:204:1: error: 'Matrix' is not a template

Matrix<rows,operandCols,retElemT,retMemT> &Multiply(const Matrix<rows,cols,ElemT,MemT> &A, const Matrix<cols,operandCols,opElemT,opMemT> &B, Matrix<rows,operandCols,retElemT,retMemT> &C)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:204:59: error: 'Matrix' is not a template

Matrix<rows,operandCols,retElemT,retMemT> &Multiply(const Matrix<rows,cols,ElemT,MemT> &A, const Matrix<cols,operandCols,opElemT,opMemT> &B, Matrix<rows,operandCols,retElemT,retMemT> &C)

                                                       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:204:98: error: 'Matrix' is not a template

Matrix<rows,operandCols,retElemT,retMemT> &Multiply(const Matrix<rows,cols,ElemT,MemT> &A, const Matrix<cols,operandCols,opElemT,opMemT> &B, Matrix<rows,operandCols,retElemT,retMemT> &C)

                                                                                              ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:204:142: error: 'Matrix' is not a template

Matrix<rows,operandCols,retElemT,retMemT> &Multiply(const Matrix<rows,cols,ElemT,MemT> &A, const Matrix<cols,operandCols,opElemT,opMemT> &B, Matrix<rows,operandCols,retElemT,retMemT> &C)

                                                                                                                                          ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: In function 'Matrix& Multiply(const Matrix&, const Matrix&, Matrix&)':

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:212:19: error: 'struct Matrix' has no member named 'delegate'

             C.delegate(i,j) = A.delegate(i,0) * B.delegate(0,j);

               ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:212:37: error: 'const struct Matrix' has no member named 'delegate'

             C.delegate(i,j) = A.delegate(i,0) * B.delegate(0,j);

                                 ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:212:55: error: 'const struct Matrix' has no member named 'delegate'

             C.delegate(i,j) = A.delegate(i,0) * B.delegate(0,j);

                                                   ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:215:19: error: 'struct Matrix' has no member named 'delegate'

             C.delegate(i,j) += A.delegate(i,k) * B.delegate(k,j);

               ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:215:38: error: 'const struct Matrix' has no member named 'delegate'

             C.delegate(i,j) += A.delegate(i,k) * B.delegate(k,j);

                                  ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:215:56: error: 'const struct Matrix' has no member named 'delegate'

             C.delegate(i,j) += A.delegate(i,k) * B.delegate(k,j);

                                                    ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: At global scope:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:224:1: error: 'Matrix' is not a template

Matrix<rows,cols,ElemT,Array<rows,cols,ElemT> > Matrix<rows,cols,ElemT,MemT>::operator-()

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:224:55: error: expected initializer before '<' token

Matrix<rows,cols,ElemT,Array<rows,cols,ElemT> > Matrix<rows,cols,ElemT,MemT>::operator-()

                                                   ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:238:1: error: 'Matrix' is not a template

Matrix<rows,cols,ElemT,Array<rows,cols,ElemT> > Matrix<rows,cols,ElemT,MemT>::operator*(ElemT k)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:238:55: error: expected initializer before '<' token

Matrix<rows,cols,ElemT,Array<rows,cols,ElemT> > Matrix<rows,cols,ElemT,MemT>::operator*(ElemT k)

                                                   ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:247:1: error: 'Matrix' is not a template

Matrix<rows,cols,ElemT,MemT> &Matrix<rows,cols,ElemT,MemT>::operator*=(ElemT k)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:247:37: error: expected initializer before '<' token

Matrix<rows,cols,ElemT,MemT> &Matrix<rows,cols,ElemT,MemT>::operator*=(ElemT k)

                                 ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:256:1: error: 'Matrix' is not a template

Matrix<rows,operandCols,retElemT,retMemT> &Scale(const Matrix<rows,cols,ElemT,MemT> &A, const opElemT &B, Matrix<rows,operandCols,retElemT,retMemT> &C)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:256:56: error: 'Matrix' is not a template

Matrix<rows,operandCols,retElemT,retMemT> &Scale(const Matrix<rows,cols,ElemT,MemT> &A, const opElemT &B, Matrix<rows,operandCols,retElemT,retMemT> &C)

                                                    ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:256:107: error: 'Matrix' is not a template

Matrix<rows,operandCols,retElemT,retMemT> &Scale(const Matrix<rows,cols,ElemT,MemT> &A, const opElemT &B, Matrix<rows,operandCols,retElemT,retMemT> &C)

                                                                                                       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: In function 'Matrix& Scale(const Matrix&, const opElemT&, Matrix&)':

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:260:18: error: no match for call to '(Matrix) (int&, int&)'

         C(i,j) = A(i,j) * B;

              ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:260:27: error: no match for call to '(const Matrix) (int&, int&)'

         C(i,j) = A(i,j) * B;

                       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: At global scope:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:268:1: error: 'Matrix' is not a template

Matrix<cols,rows,ElemT,Array<cols,rows,ElemT> > Matrix<rows,cols,ElemT,MemT>::Transpose()

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:268:55: error: expected initializer before '<' token

Matrix<cols,rows,ElemT,Array<cols,rows,ElemT> > Matrix<rows,cols,ElemT,MemT>::Transpose()

                                                   ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:280:1: error: 'Matrix' is not a template

Matrix<cols,rows,retElemT,retMemT> &Transpose(const Matrix<rows,cols,ElemT,MemT> &A, Matrix<cols,rows,retElemT,retMemT> &C)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:280:53: error: 'Matrix' is not a template

Matrix<cols,rows,retElemT,retMemT> &Transpose(const Matrix<rows,cols,ElemT,MemT> &A, Matrix<cols,rows,retElemT,retMemT> &C)

                                                 ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:280:86: error: 'Matrix' is not a template

Matrix<cols,rows,retElemT,retMemT> &Transpose(const Matrix<rows,cols,ElemT,MemT> &A, Matrix<cols,rows,retElemT,retMemT> &C)

                                                                                  ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: In function 'Matrix& Transpose(const Matrix&, Matrix&)':

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:284:18: error: no match for call to '(Matrix) (int&, int&)'

         C(j,i) = A(i,j);

              ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:284:27: error: no match for call to '(const Matrix) (int&, int&)'

         C(j,i) = A(i,j);

                       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: At global scope:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:292:1: error: 'Matrix' is not a template

Matrix<rows,cols,ElemT,Array<rows,cols,ElemT> > Matrix<rows,cols,ElemT,MemT>::Inverse(int *res = NULL)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:292:55: error: expected initializer before '<' token

Matrix<rows,cols,ElemT,Array<rows,cols,ElemT> > Matrix<rows,cols,ElemT,MemT>::Inverse(int *res = NULL)

                                                   ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:302:1: error: 'Matrix' is not a template

Matrix<dim,dim,ElemT,MemT> &Invert(Matrix<dim,dim,ElemT,MemT> &A, int *res = NULL)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:302:36: error: 'Matrix' is not a template

Matrix<dim,dim,ElemT,MemT> &Invert(Matrix<dim,dim,ElemT,MemT> &A, int *res = NULL)

                                ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: In function 'Matrix& Invert(Matrix&, int*)':

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:314:26: error: no match for call to '(Matrix) (int&, int&)'

         if(fabs(A(i,k)) >= tmp)

                      ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:316:33: error: no match for call to '(Matrix) (int&, int&)'

             tmp = fabs(A(i,k));

                             ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:322:23: error: no match for call to '(Matrix) (int&, int&)'

     if (A(pivrow,k) == 0.0f)

                   ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:332:28: error: no match for call to '(Matrix) (int&, int&)'

             tmp = A(k,j);

                        ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:333:22: error: no match for call to '(Matrix) (int&, int&)'

             A(k,j) = A(pivrow,j);

                  ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:333:36: error: no match for call to '(Matrix) (int&, int&)'

             A(k,j) = A(pivrow,j);

                                ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:334:27: error: no match for call to '(Matrix) (int&, int&)'

             A(pivrow,j) = tmp;

                       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:339:27: error: no match for call to '(Matrix) (int&, int&)'

     tmp = 1.0f / A(k,k); // invert pivot element

                       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:340:14: error: no match for call to '(Matrix) (int&, int&)'

     A(k,k) = 1.0f;  // This element of input matrix becomes result matrix

          ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:344:18: error: no match for call to '(Matrix) (int&, int&)'

         A(k,j) = A(k,j) * tmp;

              ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:344:27: error: no match for call to '(Matrix) (int&, int&)'

         A(k,j) = A(k,j) * tmp;

                       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:351:28: error: no match for call to '(Matrix) (int&, int&)'

             tmp = A(i,k);

                        ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:352:22: error: no match for call to '(Matrix) (int&, int&)'

             A(i,k) = 0.0f;  // The other place where in matrix becomes result mat

                  ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:355:26: error: no match for call to '(Matrix) (int&, int&)'

                 A(i,j) = A(i,j) - A(k,j) * tmp;

                      ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:355:35: error: no match for call to '(Matrix) (int&, int&)'

                 A(i,j) = A(i,j) - A(k,j) * tmp;

                               ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:355:44: error: no match for call to '(Matrix) (int&, int&)'

                 A(i,j) = A(i,j) - A(k,j) * tmp;

                                        ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:367:28: error: no match for call to '(Matrix) (int&, int&)'

             tmp = A(i,k);

                        ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:368:22: error: no match for call to '(Matrix) (int&, int&)'

             A(i,k) = A(i,pivrows[k]);

                  ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: At global scope:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:383:1: error: 'Matrix' is not a template

Matrix<rows,cols+operandCols,ElemT,Array<rows,cols+operandCols,ElemT> > HorzCat(const Matrix<rows,cols,ElemT,MemT> &A, const Matrix<rows,operandCols,opElemT,opMemT> &B)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:383:87: error: 'Matrix' is not a template

Matrix<rows,cols+operandCols,ElemT,Array<rows,cols+operandCols,ElemT> > HorzCat(const Matrix<rows,cols,ElemT,MemT> &A, const Matrix<rows,operandCols,opElemT,opMemT> &B)

                                                                                   ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:383:126: error: 'Matrix' is not a template

Matrix<rows,cols+operandCols,ElemT,Array<rows,cols+operandCols,ElemT> > HorzCat(const Matrix<rows,cols,ElemT,MemT> &A, const Matrix<rows,operandCols,opElemT,opMemT> &B)

                                                                                                                          ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: In function 'Matrix HorzCat(const Matrix&, const Matrix&)':

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:385:5: error: 'Matrix' is not a template

 Matrix<rows,cols + operandCols,ElemT,Array<rows,cols + operandCols,ElemT> > ret;

 ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:386:9: error: 'struct Matrix' has no member named 'Submatrix'

 ret.Submatrix(Range<rows>(0),Range<cols>(0)) = A;

     ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:387:9: error: 'struct Matrix' has no member named 'Submatrix'

 ret.Submatrix(Range<rows>(0),Range<operandCols>(cols)) = B;

     ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: At global scope:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:393:1: error: 'Matrix' is not a template

Matrix<rows + operandRows,cols,ElemT,Array<rows + operandRows,cols,ElemT> > VertCat(const Matrix<rows,cols,ElemT,MemT> &A, const Matrix<operandRows,cols,opElemT,opMemT> &B)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:393:91: error: 'Matrix' is not a template

Matrix<rows + operandRows,cols,ElemT,Array<rows + operandRows,cols,ElemT> > VertCat(const Matrix<rows,cols,ElemT,MemT> &A, const Matrix<operandRows,cols,opElemT,opMemT> &B)

                                                                                       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:393:130: error: 'Matrix' is not a template

Matrix<rows + operandRows,cols,ElemT,Array<rows + operandRows,cols,ElemT> > VertCat(const Matrix<rows,cols,ElemT,MemT> &A, const Matrix<operandRows,cols,opElemT,opMemT> &B)

                                                                                                                              ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: In function 'Matrix VertCat(const Matrix&, const Matrix&)':

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:395:5: error: 'Matrix' is not a template

 Matrix<rows + operandRows,cols,ElemT,Array<rows + operandRows,cols,ElemT> > ret;

 ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:396:9: error: 'struct Matrix' has no member named 'Submatrix'

 ret.Submatrix(Range<rows>(0),Range<cols>(0)) = A;

     ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:397:9: error: 'struct Matrix' has no member named 'Submatrix'

 ret.Submatrix(Range<operandRows>(rows),Range<cols>(0)) = B;

     ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: At global scope:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:426:38: error: 'Matrix' is not a template

Print &operator<<(Print &strm, const Matrix<rows,cols,ElemT,MemT> &obj)

                                  ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: In function 'Print& operator<<(Print&, const Matrix&)':

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:435:28: error: no match for call to '(const Matrix) (int&, int&)'

         strm << obj(i,j) << ((j == cols - 1)? '}' : ',');

                        ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino: In function 'void setup()':

HowToUse:16: error: 'Matrix' is not a template

Matrix<3,3,float> A;

^

HowToUse:19: error: 'Matrix' is not a template

Matrix<3> v;

^

HowToUse:22: error: 'struct Matrix' has no member named 'Fill'

v.Fill(0);

 ^

HowToUse:25: error: no match for call to '(Matrix) (int, int)'

v(2,0) = 5.3;

    ^

HowToUse:26: error: no match for call to '(Matrix) (int)'

v(1) = 43.67; // you can also just write v(2) = 5.3; since v has only one column

  ^

HowToUse:30: error: no match for 'operator=' (operand types are 'Matrix' and 'float [3][3]')

A = arrayA;

 ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:30:5: note: candidates are:

In file included from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3xa/include/sam3x8e.h:282:0,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3xa/include/sam3xa.h:44,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3.h:59,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam.h:198,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/libsam/chip.h:25,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\cores\arduino/Arduino.h:42,

             from sketch\HowToUse.ino.cpp:1:

C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3xa/include/component/component_matrix.h:71:3: note: Matrix& Matrix::operator=(const Matrix&)

} Matrix;

^

C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3xa/include/component/component_matrix.h:71:3: note: no known conversion for argument 1 from 'float [3][3]' to 'const Matrix&'

C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3xa/include/component/component_matrix.h:71:3: note: Matrix& Matrix::operator=(Matrix&&)

C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3xa/include/component/component_matrix.h:71:3: note: no known conversion for argument 1 from 'float [3][3]' to 'Matrix&&'

HowToUse:34: error: 'Matrix' is not a template

Matrix<3,3> B(arrayB);

^

HowToUse:34: error: no matching function for call to 'Matrix::Matrix(float [3][3])'

Matrix<3,3> B(arrayB);

                   ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:34:23: note: candidates are:

In file included from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3xa/include/sam3x8e.h:282:0,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3xa/include/sam3xa.h:44,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3.h:59,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam.h:198,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/libsam/chip.h:25,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\cores\arduino/Arduino.h:42,

             from sketch\HowToUse.ino.cpp:1:

C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3xa/include/component/component_matrix.h:71:3: note: Matrix::Matrix()

} Matrix;

^

C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3xa/include/component/component_matrix.h:71:3: note: candidate expects 0 arguments, 1 provided

C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3xa/include/component/component_matrix.h:71:3: note: constexpr Matrix::Matrix(const Matrix&)

C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3xa/include/component/component_matrix.h:71:3: note: no known conversion for argument 1 from 'float [3][3]' to 'const Matrix&'

C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3xa/include/component/component_matrix.h:71:3: note: constexpr Matrix::Matrix(Matrix&&)

C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3xa/include/component/component_matrix.h:71:3: note: no known conversion for argument 1 from 'float [3][3]' to 'Matrix&&'

HowToUse:37: error: 'Matrix' is not a template

Matrix<3,3> C = A + B;

^

HowToUse:37: error: no match for 'operator+' (operand types are 'Matrix' and 'Matrix')

Matrix<3,3> C = A + B;

                 ^

HowToUse:45: error: no matching function for call to 'Add(Matrix&, Matrix&, Matrix&)'

Add(A,B,C);

        ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:45:12: note: candidates are:

In file included from C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:16:0,

             from C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:1:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:24:56: note: template<int rows, int cols, class ElemT, class opElemT, class retElemT> Matrix& Add(const Matrix&, const Matrix&, Matrix&)

Matrix<rows,cols,retElemT,Array<rows,cols,retElemT> > &Add(const Matrix<rows,cols,ElemT,Array<rows,cols,ElemT> > &A, const Matrix<rows,cols,opElemT,Array<rows,cols,opElemT> > &B, Matrix<rows,cols,retElemT,Array<rows,cols,retElemT> > &C)

                                                    ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:24:56: note: template argument deduction/substitution failed:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:45:12: note: couldn't deduce template parameter 'rows'

Add(A,B,C);

        ^

In file included from C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:1:0:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:139:37: note: template<int rows, int cols, class ElemT, class MemT, class opElemT, class opMemT, class retElemT, class retMemT> Matrix& Add(const Matrix&, const Matrix&, Matrix&)

Matrix<rows,cols,retElemT,retMemT> &Add(const Matrix<rows,cols,ElemT,MemT> &A, const Matrix<rows,cols,opElemT,opMemT> &B, Matrix<rows,cols,retElemT,retMemT> &C)

                                 ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:139:37: note: template argument deduction/substitution failed:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:45:12: note: couldn't deduce template parameter 'rows'

Add(A,B,C);

        ^

HowToUse:49: error: no match for 'operator-=' (operand types are 'Matrix' and 'Matrix')

C -= B;

 ^

HowToUse:52: error: no match for 'operator+=' (operand types are 'Matrix' and 'Matrix')

B += A;

 ^

HowToUse:56: error: 'Matrix' is not a template

Matrix<3,1> D = A * v;

^

HowToUse:56: error: no match for 'operator*' (operand types are 'Matrix' and 'Matrix')

Matrix<3,1> D = A * v;

                 ^

HowToUse:59: error: no matching function for call to 'Multiply(Matrix&, Matrix&, Matrix&)'

Multiply(A,v,D);

             ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:59:17: note: candidates are:

In file included from C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:16:0,

             from C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:1:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:44:70: note: template<int rows, int cols, int operandCols, class ElemT, class opElemT, class retElemT> Matrix& Multiply(const Matrix&, const Matrix&, Matrix&)

Matrix<rows,operandCols,retElemT,Array<rows,operandCols,retElemT> > &Multiply(const Matrix<rows,cols,ElemT,Array<rows,cols,ElemT> > &A, const Matrix<cols,operandCols,opElemT,Array<cols,operandCols,opElemT> > &B, Matrix<rows,operandCols,retElemT,Array<rows,operandCols,retElemT> > &C)

                                                                  ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:44:70: note: template argument deduction/substitution failed:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:59:17: note: couldn't deduce template parameter 'rows'

Multiply(A,v,D);

             ^

In file included from C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:1:0:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:204:44: note: template<int rows, int cols, int operandCols, class ElemT, class MemT, class opElemT, class opMemT, class retElemT, class retMemT> Matrix& Multiply(const Matrix&, const Matrix&, Matrix&)

Matrix<rows,operandCols,retElemT,retMemT> &Multiply(const Matrix<rows,cols,ElemT,MemT> &A, const Matrix<cols,operandCols,opElemT,opMemT> &B, Matrix<rows,operandCols,retElemT,retMemT> &C)

                                        ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:204:44: note: template argument deduction/substitution failed:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:59:17: note: couldn't deduce template parameter 'rows'

Multiply(A,v,D);

             ^

HowToUse:62: error: 'Matrix' is not a template

Matrix<1,3> D_T = D.Transpose();

^

HowToUse:62: error: 'struct Matrix' has no member named 'Transpose'

Matrix<1,3> D_T = D.Transpose();

                   ^

HowToUse:67: error: 'Matrix' is not a template

Matrix<3,3> C_T;

^

HowToUse:68: error: no matching function for call to 'Transpose(Matrix&, Matrix&)'

Transpose(C,C_T);

              ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:68:18: note: candidate is:

In file included from C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:1:0:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:280:37: note: template<int rows, int cols, class ElemT, class MemT, class retElemT, class retMemT> Matrix& Transpose(const Matrix&, Matrix&)

Matrix<cols,rows,retElemT,retMemT> &Transpose(const Matrix<rows,cols,ElemT,MemT> &A, Matrix<cols,rows,retElemT,retMemT> &C)

                                 ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:280:37: note: template argument deduction/substitution failed:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:68:18: note: couldn't deduce template parameter 'rows'

Transpose(C,C_T);

              ^

HowToUse:71: error: 'Matrix' is not a template

Matrix<3,3> C_inv = C.Inverse();

^

HowToUse:71: error: 'struct Matrix' has no member named 'Inverse'

Matrix<3,3> C_inv = C.Inverse();

                     ^

HowToUse:76: error: 'struct Matrix' has no member named 'Inverse'

C_inv = C.Inverse(&res); // after this call res will be 0 if the inversion was successful and non-zero otherwise.

         ^

HowToUse:79: error: no matching function for call to 'Invert(Matrix&)'

Invert(C);

       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:79:11: note: candidate is:

In file included from C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:1:0:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:302:29: note: template<int dim, class ElemT, class MemT> Matrix& Invert(Matrix&, int*)

Matrix<dim,dim,ElemT,MemT> &Invert(Matrix<dim,dim,ElemT,MemT> &A, int *res = NULL)

                         ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:302:29: note: template argument deduction/substitution failed:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:79:11: note: couldn't deduce template parameter 'dim'

Invert(C);

       ^

HowToUse:82: error: 'Matrix' is not a template

Matrix<3,6> AleftOfB = HorzCat(A,B);

^

HowToUse:82: error: no matching function for call to 'HorzCat(Matrix&, Matrix&)'

Matrix<3,6> AleftOfB = HorzCat(A,B);

                                 ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:82:37: note: candidate is:

In file included from C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:1:0:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:383:73: note: template<int rows, int cols, int operandCols, class ElemT, class MemT, class opElemT, class opMemT> Matrix HorzCat(const Matrix&, const Matrix&)

Matrix<rows,cols+operandCols,ElemT,Array<rows,cols+operandCols,ElemT> > HorzCat(const Matrix<rows,cols,ElemT,MemT> &A, const Matrix<rows,operandCols,opElemT,opMemT> &B)

                                                                     ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:383:73: note: template argument deduction/substitution failed:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:82:37: note: couldn't deduce template parameter 'rows'

Matrix<3,6> AleftOfB = HorzCat(A,B);

                                 ^

HowToUse:85: error: 'Matrix' is not a template

Matrix<6,3> AonTopOfB = VertCat(A,B);

^

HowToUse:85: error: no matching function for call to 'VertCat(Matrix&, Matrix&)'

Matrix<6,3> AonTopOfB = VertCat(A,B);

                                  ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:85:38: note: candidate is:

In file included from C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:1:0:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:393:77: note: template<int rows, int cols, int operandRows, class ElemT, class MemT, class opElemT, class opMemT> Matrix VertCat(const Matrix&, const Matrix&)

Matrix<rows + operandRows,cols,ElemT,Array<rows + operandRows,cols,ElemT> > VertCat(const Matrix<rows,cols,ElemT,MemT> &A, const Matrix<operandRows,cols,opElemT,opMemT> &B)

                                                                         ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:393:77: note: template argument deduction/substitution failed:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:85:38: note: couldn't deduce template parameter 'rows'

Matrix<6,3> AonTopOfB = VertCat(A,B);

                                  ^

HowToUse:88: error: no match for call to '(Matrix) (int)'

Serial << "v(1): " << v(1) << '\n';

                        ^

HowToUse:91: error: no match for 'operator<<' (operand types are 'Print' and 'Matrix')

Serial << "B: " << B << '\n';

               ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:91:19: note: candidates are:

In file included from C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:1:0:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:404:15: note: Print& operator<<(Print&, int)

inline Print &operator <<(Print &strm, const int obj)

           ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:404:15: note: no known conversion for argument 2 from 'Matrix' to 'int'

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:409:15: note: Print& operator<<(Print&, float)

inline Print &operator <<(Print &strm, const float obj)

           ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:409:15: note: no known conversion for argument 2 from 'Matrix' to 'float'

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:414:15: note: Print& operator<<(Print&, const char*)

inline Print &operator <<(Print &strm, const char *obj)

           ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:414:15: note: no known conversion for argument 2 from 'Matrix' to 'const char*'

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:419:15: note: Print& operator<<(Print&, char)

inline Print &operator <<(Print &strm, const char obj)

           ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:419:15: note: no known conversion for argument 2 from 'Matrix' to 'char'

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:426:8: note: template<int rows, int cols, class ElemT, class MemT> Print& operator<<(Print&, const Matrix&)

Print &operator<<(Print &strm, const Matrix<rows,cols,ElemT,MemT> &obj)

    ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:426:8: note: template argument deduction/substitution failed:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra\examples\HowToUse\HowToUse.ino:91:22: note: couldn't deduce template parameter 'rows'

Serial << "B: " << B << '\n';

                  ^

HowToUse:94: error: no match for 'operator*' (operand types are 'Matrix' and 'Matrix')

Serial << "identity matrix: " << AleftOfB * AonTopOfB - (A * A + B * B) + C * C.Inverse() << '\n';

                                         ^

HowToUse:94: error: no match for 'operator*' (operand types are 'Matrix' and 'Matrix')

Serial << "identity matrix: " << AleftOfB * AonTopOfB - (A * A + B * B) + C * C.Inverse() << '\n';

                                                          ^

HowToUse:94: error: no match for 'operator*' (operand types are 'Matrix' and 'Matrix')

Serial << "identity matrix: " << AleftOfB * AonTopOfB - (A * A + B * B) + C * C.Inverse() << '\n';

                                                                  ^

HowToUse:94: error: 'struct Matrix' has no member named 'Inverse'

Serial << "identity matrix: " << AleftOfB * AonTopOfB - (A * A + B * B) + C * C.Inverse() << '\n';

                                                                               ^

HowToUse:97: error: 'Matrix' is not a template

Matrix<3> x; Matrix<2> u; Matrix<3,2> G; Matrix<3,3> F; float dt;

^

HowToUse:97: error: 'Matrix' is not a template

Matrix<3> x; Matrix<2> u; Matrix<3,2> G; Matrix<3,3> F; float dt;

            ^

HowToUse:97: error: 'Matrix' is not a template

Matrix<3> x; Matrix<2> u; Matrix<3,2> G; Matrix<3,3> F; float dt;

                         ^

HowToUse:97: error: 'Matrix' is not a template

Matrix<3> x; Matrix<2> u; Matrix<3,2> G; Matrix<3,3> F; float dt;

                                        ^

HowToUse:98: error: no match for 'operator*' (operand types are 'Matrix' and 'Matrix')

x += (F * x + G * u) * dt;

       ^

HowToUse:98: error: no match for 'operator*' (operand types are 'Matrix' and 'Matrix')

x += (F * x + G * u) * dt;

               ^

exit status 1
'Matrix' is not a template

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

@tomstewart89
Copy link
Owner

I've just put up a new version (v2.1) with a few changes that I've been working on over the last few months. Could you upgrade to 2.1 in library manager and let me know how you go? I'd say there's just some differences in the compilation settings between the two boards but to begin with this is worth a shot!

@juanjqo
Copy link
Author

juanjqo commented Oct 28, 2017

Hi Tom,
I updated to 2.1 version. However, the problem is present, yet.
example
Some advice? :(

Arduino: 1.8.5 (Windows 10), Board: "Arduino Due (Programming Port)"

Build options changed, rebuilding all
In file included from C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:9:0,

             from C:\Users\juanj\Documents\Arduino\sketch_oct28a\sketch_oct28a.ino:1:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:4:48: error: using typedef-name 'Matrix' after 'class'

template<int rows, int cols, class MemT> class Matrix;

                                            ^

In file included from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3xa/include/sam3x8e.h:282:0,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3xa/include/sam3xa.h:44,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3.h:59,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam.h:198,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/libsam/chip.h:25,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\cores\arduino/Arduino.h:42,

             from sketch\sketch_oct28a.ino.cpp:1:

C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3xa/include/component/component_matrix.h:71:3: note: 'Matrix' has a previous declaration here

} Matrix;

^

In file included from C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:9:0,

             from C:\Users\juanj\Documents\Arduino\sketch_oct28a\sketch_oct28a.ino:1:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:25:1: error: 'Matrix' is not a template

Matrix<rows,cols,Array<rows,cols,retElemT> > &Add(const Matrix<rows,cols,Array<rows,cols,ElemT> > &A, const Matrix<rows,cols,Array<rows,cols,opElemT> > &B, Matrix<rows,cols,Array<rows,cols,retElemT> > &C)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:25:57: error: 'Matrix' is not a template

Matrix<rows,cols,Array<rows,cols,retElemT> > &Add(const Matrix<rows,cols,Array<rows,cols,ElemT> > &A, const Matrix<rows,cols,Array<rows,cols,opElemT> > &B, Matrix<rows,cols,Array<rows,cols,retElemT> > &C)

                                                     ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:25:109: error: 'Matrix' is not a template

Matrix<rows,cols,Array<rows,cols,retElemT> > &Add(const Matrix<rows,cols,Array<rows,cols,ElemT> > &A, const Matrix<rows,cols,Array<rows,cols,opElemT> > &B, Matrix<rows,cols,Array<rows,cols,retElemT> > &C)

                                                                                                         ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:25:157: error: 'Matrix' is not a template

Matrix<rows,cols,Array<rows,cols,retElemT> > &Add(const Matrix<rows,cols,Array<rows,cols,ElemT> > &A, const Matrix<rows,cols,Array<rows,cols,opElemT> > &B, Matrix<rows,cols,Array<rows,cols,retElemT> > &C)

                                                                                                                                                         ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp: In function 'Matrix& Add(const Matrix&, const Matrix&, Matrix&)':

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:29:15: error: 'struct Matrix' has no member named 'delegate'

         C.delegate.m[i * cols + j] = A.delegate.m[i * cols + j] + B.delegate.m[i * cols + j];

           ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:29:44: error: 'const struct Matrix' has no member named 'delegate'

         C.delegate.m[i * cols + j] = A.delegate.m[i * cols + j] + B.delegate.m[i * cols + j];

                                        ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:29:73: error: 'const struct Matrix' has no member named 'delegate'

         C.delegate.m[i * cols + j] = A.delegate.m[i * cols + j] + B.delegate.m[i * cols + j];

                                                                     ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp: At global scope:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:35:1: error: 'Matrix' is not a template

Matrix<rows,cols,Array<rows,cols,retElemT> > &Subtract(const Matrix<rows,cols,Array<rows,cols,ElemT> > &A, const Matrix<rows,cols,Array<rows,cols,opElemT> > &B, Matrix<rows,cols,Array<rows,cols,retElemT> > &C)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:35:62: error: 'Matrix' is not a template

Matrix<rows,cols,Array<rows,cols,retElemT> > &Subtract(const Matrix<rows,cols,Array<rows,cols,ElemT> > &A, const Matrix<rows,cols,Array<rows,cols,opElemT> > &B, Matrix<rows,cols,Array<rows,cols,retElemT> > &C)

                                                          ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:35:114: error: 'Matrix' is not a template

Matrix<rows,cols,Array<rows,cols,retElemT> > &Subtract(const Matrix<rows,cols,Array<rows,cols,ElemT> > &A, const Matrix<rows,cols,Array<rows,cols,opElemT> > &B, Matrix<rows,cols,Array<rows,cols,retElemT> > &C)

                                                                                                              ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:35:162: error: 'Matrix' is not a template

Matrix<rows,cols,Array<rows,cols,retElemT> > &Subtract(const Matrix<rows,cols,Array<rows,cols,ElemT> > &A, const Matrix<rows,cols,Array<rows,cols,opElemT> > &B, Matrix<rows,cols,Array<rows,cols,retElemT> > &C)

                                                                                                                                                              ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp: In function 'Matrix& Subtract(const Matrix&, const Matrix&, Matrix&)':

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:39:15: error: 'struct Matrix' has no member named 'delegate'

         C.delegate.m[i * cols + j] = A.delegate.m[i * cols + j] - B.delegate.m[i * cols + j];

           ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:39:44: error: 'const struct Matrix' has no member named 'delegate'

         C.delegate.m[i * cols + j] = A.delegate.m[i * cols + j] - B.delegate.m[i * cols + j];

                                        ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:39:73: error: 'const struct Matrix' has no member named 'delegate'

         C.delegate.m[i * cols + j] = A.delegate.m[i * cols + j] - B.delegate.m[i * cols + j];

                                                                     ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp: At global scope:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:45:1: error: 'Matrix' is not a template

Matrix<rows,operandCols,Array<rows,operandCols,retElemT> > &Multiply(const Matrix<rows,cols,Array<rows,cols,ElemT> > &A, const Matrix<cols,operandCols,Array<cols,operandCols,opElemT> > &B, Matrix<rows,operandCols,Array<rows,operandCols,retElemT> > &C)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:45:76: error: 'Matrix' is not a template

Matrix<rows,operandCols,Array<rows,operandCols,retElemT> > &Multiply(const Matrix<rows,cols,Array<rows,cols,ElemT> > &A, const Matrix<cols,operandCols,Array<cols,operandCols,opElemT> > &B, Matrix<rows,operandCols,Array<rows,operandCols,retElemT> > &C)

                                                                        ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:45:128: error: 'Matrix' is not a template

Matrix<rows,operandCols,Array<rows,operandCols,retElemT> > &Multiply(const Matrix<rows,cols,Array<rows,cols,ElemT> > &A, const Matrix<cols,operandCols,Array<cols,operandCols,opElemT> > &B, Matrix<rows,operandCols,Array<rows,operandCols,retElemT> > &C)

                                                                                                                            ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:45:190: error: 'Matrix' is not a template

Matrix<rows,operandCols,Array<rows,operandCols,retElemT> > &Multiply(const Matrix<rows,cols,Array<rows,cols,ElemT> > &A, const Matrix<cols,operandCols,Array<cols,operandCols,opElemT> > &B, Matrix<rows,operandCols,Array<rows,operandCols,retElemT> > &C)

                                                                                                                                                                                          ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp: In function 'Matrix& Multiply(const Matrix&, const Matrix&, Matrix&)':

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:53:19: error: 'struct Matrix' has no member named 'delegate'

             C.delegate.m[i * operandCols + j] = A.delegate.m[i * cols] * B.delegate.m[j];

               ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:53:55: error: 'const struct Matrix' has no member named 'delegate'

             C.delegate.m[i * operandCols + j] = A.delegate.m[i * cols] * B.delegate.m[j];

                                                   ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:53:80: error: 'const struct Matrix' has no member named 'delegate'

             C.delegate.m[i * operandCols + j] = A.delegate.m[i * cols] * B.delegate.m[j];

                                                                            ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:56:19: error: 'struct Matrix' has no member named 'delegate'

             C.delegate.m[i * operandCols + j] += A.delegate.m[i * cols + k] * B.delegate.m[k * operandCols + j];

               ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:56:56: error: 'const struct Matrix' has no member named 'delegate'

             C.delegate.m[i * operandCols + j] += A.delegate.m[i * cols + k] * B.delegate.m[k * operandCols + j];

                                                    ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:56:85: error: 'const struct Matrix' has no member named 'delegate'

             C.delegate.m[i * operandCols + j] += A.delegate.m[i * cols + k] * B.delegate.m[k * operandCols + j];

                                                                                 ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp: At global scope:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:62:75: error: 'Matrix' is not a template

template<int rows, int cols = 1, class ElemT = float> using ArrayMatrix = Matrix<rows,cols,Array<rows,cols,ElemT> >;

                                                                       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:83:67: error: 'Matrix' is not a template

template<int rows, int cols, class ParentMemT > using RefMatrix = Matrix<rows,cols,Reference >;

                                                               ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:103:75: error: 'Matrix' is not a template

template<int rows, int cols = rows, class ElemT = float> using Identity = Matrix<rows,cols,Iden >;

                                                                       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:119:69: error: 'Matrix' is not a template

template<int rows, int cols = 1, class ElemT = float> using Zeros = Matrix<rows,cols,Zero >;

                                                                 ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:181:94: error: 'Matrix' is not a template

template<int rows, int cols, int tableSize = cols, class ElemT = float> using SparseMatrix = Matrix<rows,cols,Sparse<cols,tableSize,ElemT> >;

                                                                                          ^

In file included from C:\Users\juanj\Documents\Arduino\sketch_oct28a\sketch_oct28a.ino:1:0:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:43:78: error: using typedef-name 'Matrix' after 'class'

template<int rows, int cols = 1, class MemT = Array<rows,cols,float> > class Matrix

                                                                          ^

In file included from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3xa/include/sam3x8e.h:282:0,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3xa/include/sam3xa.h:44,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3.h:59,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam.h:198,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/libsam/chip.h:25,

             from C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\cores\arduino/Arduino.h:42,

             from sketch\sketch_oct28a.ino.cpp:1:

C:\Users\juanj\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.11\system/CMSIS/Device/ATMEL/sam3xa/include/component/component_matrix.h:71:3: note: 'Matrix' has a previous declaration here

} Matrix;

^

In file included from C:\Users\juanj\Documents\Arduino\sketch_oct28a\sketch_oct28a.ino:1:0:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:121:30: error: expected initializer before '<' token

typename MemT::elem_t &Matrix<rows,cols,MemT>::operator()(int row, int col) const

                          ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:129:1: error: 'Matrix' is not a template

Matrix<rowEnd-rowStart,colEnd-colStart,Reference > Matrix<rows,cols,MemT>::Submatrix(Slice<rowStart,rowEnd>, Slice<colStart,colEnd>) const

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:129:58: error: too many template-parameter-lists

Matrix<rowEnd-rowStart,colEnd-colStart,Reference > Matrix<rows,cols,MemT>::Submatrix(Slice<rowStart,rowEnd>, Slice<colStart,colEnd>) const

                                                      ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:136:1: error: 'Matrix' is not a template

Matrix<rows,cols,Reference > Matrix<rows,cols,MemT>::Ref() const

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:136:42: error: expected initializer before '<' token

Matrix<rows,cols,Reference > Matrix<rows,cols,MemT>::Ref() const

                                      ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:146:1: error: 'Matrix' is not a template

Matrix<rows,cols+operandCols,HorzCat<cols,MemT,opMemT> > Matrix<rows,cols,MemT>::operator||(const Matrix<rows,operandCols,opMemT> &obj)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:146:58: error: too many template-parameter-lists

Matrix<rows,cols+operandCols,HorzCat<cols,MemT,opMemT> > Matrix<rows,cols,MemT>::operator||(const Matrix<rows,operandCols,opMemT> &obj)

                                                      ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:154:1: error: 'Matrix' is not a template

Matrix<rows+operandRows,cols,VertCat<rows,MemT,opMemT> > Matrix<rows,cols,MemT>::operator&&(const Matrix<operandRows,cols,opMemT> &obj)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:154:58: error: too many template-parameter-lists

Matrix<rows+operandRows,cols,VertCat<rows,MemT,opMemT> > Matrix<rows,cols,MemT>::operator&&(const Matrix<operandRows,cols,opMemT> &obj)

                                                      ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:164:1: error: 'Matrix' is not a template

Matrix<rows,cols,MemT> &Matrix<rows,cols,MemT>::operator=(const Matrix<rows,cols,opMemT> &obj)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:164:24: error: too many template-parameter-lists

Matrix<rows,cols,MemT> &Matrix<rows,cols,MemT>::operator=(const Matrix<rows,cols,opMemT> &obj)

                    ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:174:1: error: 'Matrix' is not a template

Matrix<rows,cols,MemT> &Matrix<rows,cols,MemT>::operator=(typename MemT::elem_t arr[rows][cols])

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:174:31: error: expected initializer before '<' token

Matrix<rows,cols,MemT> &Matrix<rows,cols,MemT>::operator=(typename MemT::elem_t arr[rows][cols])

                           ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:184:10: error: 'Matrix' is not a template

Inserter<Matrix<rows,cols,MemT> > Matrix<rows,cols,MemT>::operator<<(const typename MemT::elem_t &val)

      ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:184:41: error: expected initializer before '<' token

Inserter<Matrix<rows,cols,MemT> > Matrix<rows,cols,MemT>::operator<<(const typename MemT::elem_t &val)

                                     ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:191:1: error: 'Matrix' is not a template

Matrix<rows,cols,MemT> &Matrix<rows,cols,MemT>::Fill(const typename MemT::elem_t &val)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:191:31: error: expected initializer before '<' token

Matrix<rows,cols,MemT> &Matrix<rows,cols,MemT>::Fill(const typename MemT::elem_t &val)

                           ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:202:6: error: too many template-parameter-lists

void Matrix<rows,cols,MemT>::FillRowMajor(typename MemT::elem_t head, TAIL... tail)

  ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:212:11: error: expected initializer before '<' token

int Matrix<rows,cols,MemT>::GetRowCount()

       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:218:11: error: expected initializer before '<' token

int Matrix<rows,cols,MemT>::GetColCount()

       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:227:1: error: 'Matrix' is not a template

Matrix<rows,cols,Array<rows,cols,typename MemT::elem_t> > Matrix<rows,cols,MemT>::operator+(const Matrix<rows,cols,opMemT> &obj)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:227:59: error: too many template-parameter-lists

Matrix<rows,cols,Array<rows,cols,typename MemT::elem_t> > Matrix<rows,cols,MemT>::operator+(const Matrix<rows,cols,opMemT> &obj)

                                                       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:237:1: error: 'Matrix' is not a template

Matrix<rows,cols,MemT> &Matrix<rows,cols,MemT>::operator+=(const Matrix<rows,cols,opMemT> &obj)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:237:24: error: too many template-parameter-lists

Matrix<rows,cols,MemT> &Matrix<rows,cols,MemT>::operator+=(const Matrix<rows,cols,opMemT> &obj)

                    ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:245:1: error: 'Matrix' is not a template

Matrix<rows,cols,retMemT> &Add(const Matrix<rows,cols,MemT> &A, const Matrix<rows,cols,opMemT> &B, Matrix<rows,cols,retMemT> &C)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:245:38: error: 'Matrix' is not a template

Matrix<rows,cols,retMemT> &Add(const Matrix<rows,cols,MemT> &A, const Matrix<rows,cols,opMemT> &B, Matrix<rows,cols,retMemT> &C)

                                  ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:245:71: error: 'Matrix' is not a template

Matrix<rows,cols,retMemT> &Add(const Matrix<rows,cols,MemT> &A, const Matrix<rows,cols,opMemT> &B, Matrix<rows,cols,retMemT> &C)

                                                                   ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:245:100: error: 'Matrix' is not a template

Matrix<rows,cols,retMemT> &Add(const Matrix<rows,cols,MemT> &A, const Matrix<rows,cols,opMemT> &B, Matrix<rows,cols,retMemT> &C)

                                                                                                ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:245:28: error: redefinition of 'template<int rows, int cols, class MemT, class opMemT, class retMemT> Matrix& Add(const Matrix&, const Matrix&, Matrix&)'

Matrix<rows,cols,retMemT> &Add(const Matrix<rows,cols,MemT> &A, const Matrix<rows,cols,opMemT> &B, Matrix<rows,cols,retMemT> &C)

                        ^

In file included from C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:9:0,

             from C:\Users\juanj\Documents\Arduino\sketch_oct28a\sketch_oct28a.ino:1:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:25:47: error: 'template<int rows, int cols, class ElemT, class opElemT, class retElemT> Matrix& Add(const Matrix&, const Matrix&, Matrix&)' previously declared here

Matrix<rows,cols,Array<rows,cols,retElemT> > &Add(const Matrix<rows,cols,Array<rows,cols,ElemT> > &A, const Matrix<rows,cols,Array<rows,cols,opElemT> > &B, Matrix<rows,cols,Array<rows,cols,retElemT> > &C)

                                           ^

In file included from C:\Users\juanj\Documents\Arduino\sketch_oct28a\sketch_oct28a.ino:1:0:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: In function 'Matrix& Add(const Matrix&, const Matrix&, Matrix&)':

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:249:15: error: 'struct Matrix' has no member named 'delegate'

         C.delegate(i,j) = A.delegate(i,j) + B.delegate(i,j);

           ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:249:33: error: 'const struct Matrix' has no member named 'delegate'

         C.delegate(i,j) = A.delegate(i,j) + B.delegate(i,j);

                             ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:249:51: error: 'const struct Matrix' has no member named 'delegate'

         C.delegate(i,j) = A.delegate(i,j) + B.delegate(i,j);

                                               ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: At global scope:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:258:1: error: 'Matrix' is not a template

Matrix<rows,cols,Array<rows,cols,typename MemT::elem_t> > Matrix<rows,cols,MemT>::operator-(const Matrix<rows,cols,opMemT> &obj)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:258:59: error: too many template-parameter-lists

Matrix<rows,cols,Array<rows,cols,typename MemT::elem_t> > Matrix<rows,cols,MemT>::operator-(const Matrix<rows,cols,opMemT> &obj)

                                                       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:268:1: error: 'Matrix' is not a template

Matrix<rows,cols,MemT> &Matrix<rows,cols,MemT>::operator-=(const Matrix<rows,cols,opMemT> &obj)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:268:24: error: too many template-parameter-lists

Matrix<rows,cols,MemT> &Matrix<rows,cols,MemT>::operator-=(const Matrix<rows,cols,opMemT> &obj)

                    ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:276:1: error: 'Matrix' is not a template

Matrix<rows,cols,retMemT> &Subtract(const Matrix<rows,cols,MemT> &A, const Matrix<rows,cols,opMemT> &B, Matrix<rows,cols,retMemT> &C)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:276:43: error: 'Matrix' is not a template

Matrix<rows,cols,retMemT> &Subtract(const Matrix<rows,cols,MemT> &A, const Matrix<rows,cols,opMemT> &B, Matrix<rows,cols,retMemT> &C)

                                       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:276:76: error: 'Matrix' is not a template

Matrix<rows,cols,retMemT> &Subtract(const Matrix<rows,cols,MemT> &A, const Matrix<rows,cols,opMemT> &B, Matrix<rows,cols,retMemT> &C)

                                                                        ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:276:105: error: 'Matrix' is not a template

Matrix<rows,cols,retMemT> &Subtract(const Matrix<rows,cols,MemT> &A, const Matrix<rows,cols,opMemT> &B, Matrix<rows,cols,retMemT> &C)

                                                                                                     ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:276:28: error: redefinition of 'template<int rows, int cols, class MemT, class opMemT, class retMemT> Matrix& Subtract(const Matrix&, const Matrix&, Matrix&)'

Matrix<rows,cols,retMemT> &Subtract(const Matrix<rows,cols,MemT> &A, const Matrix<rows,cols,opMemT> &B, Matrix<rows,cols,retMemT> &C)

                        ^

In file included from C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:9:0,

             from C:\Users\juanj\Documents\Arduino\sketch_oct28a\sketch_oct28a.ino:1:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:35:47: error: 'template<int rows, int cols, class ElemT, class opElemT, class retElemT> Matrix& Subtract(const Matrix&, const Matrix&, Matrix&)' previously declared here

Matrix<rows,cols,Array<rows,cols,retElemT> > &Subtract(const Matrix<rows,cols,Array<rows,cols,ElemT> > &A, const Matrix<rows,cols,Array<rows,cols,opElemT> > &B, Matrix<rows,cols,Array<rows,cols,retElemT> > &C)

                                           ^

In file included from C:\Users\juanj\Documents\Arduino\sketch_oct28a\sketch_oct28a.ino:1:0:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: In function 'Matrix& Subtract(const Matrix&, const Matrix&, Matrix&)':

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:280:18: error: no match for call to '(Matrix) (int&, int&)'

         C(i,j) = A(i,j) - B(i,j);

              ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:280:27: error: no match for call to '(const Matrix) (int&, int&)'

         C(i,j) = A(i,j) - B(i,j);

                       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:280:36: error: no match for call to '(const Matrix) (int&, int&)'

         C(i,j) = A(i,j) - B(i,j);

                                ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: At global scope:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:289:1: error: 'Matrix' is not a template

Matrix<rows,operandCols,Array<rows,operandCols,typename MemT::elem_t> > Matrix<rows,cols,MemT>::operator*(const Matrix<cols,operandCols,opMemT> &operand)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:289:73: error: too many template-parameter-lists

Matrix<rows,operandCols,Array<rows,operandCols,typename MemT::elem_t> > Matrix<rows,cols,MemT>::operator*(const Matrix<cols,operandCols,opMemT> &operand)

                                                                     ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:299:1: error: 'Matrix' is not a template

Matrix<rows,cols,MemT> &Matrix<rows,cols,MemT>::operator*=(const Matrix<rows,cols,opMemT> &operand)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:299:24: error: too many template-parameter-lists

Matrix<rows,cols,MemT> &Matrix<rows,cols,MemT>::operator*=(const Matrix<rows,cols,opMemT> &operand)

                    ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:310:1: error: 'Matrix' is not a template

Matrix<rows,operandCols,retMemT> &Multiply(const Matrix<rows,cols,MemT> &A, const Matrix<cols,operandCols,opMemT> &B, Matrix<rows,operandCols,retMemT> &C)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:310:50: error: 'Matrix' is not a template

Matrix<rows,operandCols,retMemT> &Multiply(const Matrix<rows,cols,MemT> &A, const Matrix<cols,operandCols,opMemT> &B, Matrix<rows,operandCols,retMemT> &C)

                                              ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:310:83: error: 'Matrix' is not a template

Matrix<rows,operandCols,retMemT> &Multiply(const Matrix<rows,cols,MemT> &A, const Matrix<cols,operandCols,opMemT> &B, Matrix<rows,operandCols,retMemT> &C)

                                                                               ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:310:119: error: 'Matrix' is not a template

Matrix<rows,operandCols,retMemT> &Multiply(const Matrix<rows,cols,MemT> &A, const Matrix<cols,operandCols,opMemT> &B, Matrix<rows,operandCols,retMemT> &C)

                                                                                                                   ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:310:35: error: redefinition of 'template<int rows, int cols, int operandCols, class MemT, class opMemT, class retMemT> Matrix& Multiply(const Matrix&, const Matrix&, Matrix&)'

Matrix<rows,operandCols,retMemT> &Multiply(const Matrix<rows,cols,MemT> &A, const Matrix<cols,operandCols,opMemT> &B, Matrix<rows,operandCols,retMemT> &C)

                               ^

In file included from C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:9:0,

             from C:\Users\juanj\Documents\Arduino\sketch_oct28a\sketch_oct28a.ino:1:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/MemoryDelegate.hpp:45:61: error: 'template<int rows, int cols, int operandCols, class ElemT, class opElemT, class retElemT> Matrix& Multiply(const Matrix&, const Matrix&, Matrix&)' previously declared here

Matrix<rows,operandCols,Array<rows,operandCols,retElemT> > &Multiply(const Matrix<rows,cols,Array<rows,cols,ElemT> > &A, const Matrix<cols,operandCols,Array<cols,operandCols,opElemT> > &B, Matrix<rows,operandCols,Array<rows,operandCols,retElemT> > &C)

                                                         ^

In file included from C:\Users\juanj\Documents\Arduino\sketch_oct28a\sketch_oct28a.ino:1:0:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: In function 'Matrix& Multiply(const Matrix&, const Matrix&, Matrix&)':

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:318:19: error: 'struct Matrix' has no member named 'delegate'

             C.delegate(i,j) = A.delegate(i,0) * B.delegate(0,j);

               ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:318:37: error: 'const struct Matrix' has no member named 'delegate'

             C.delegate(i,j) = A.delegate(i,0) * B.delegate(0,j);

                                 ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:318:55: error: 'const struct Matrix' has no member named 'delegate'

             C.delegate(i,j) = A.delegate(i,0) * B.delegate(0,j);

                                                   ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:321:19: error: 'struct Matrix' has no member named 'delegate'

             C.delegate(i,j) += A.delegate(i,k) * B.delegate(k,j);

               ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:321:38: error: 'const struct Matrix' has no member named 'delegate'

             C.delegate(i,j) += A.delegate(i,k) * B.delegate(k,j);

                                  ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:321:56: error: 'const struct Matrix' has no member named 'delegate'

             C.delegate(i,j) += A.delegate(i,k) * B.delegate(k,j);

                                                    ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: At global scope:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:330:1: error: 'Matrix' is not a template

Matrix<rows,cols,Array<rows,cols,typename MemT::elem_t> > Matrix<rows,cols,MemT>::operator-()

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:330:65: error: expected initializer before '<' token

Matrix<rows,cols,Array<rows,cols,typename MemT::elem_t> > Matrix<rows,cols,MemT>::operator-()

                                                             ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:344:1: error: 'Matrix' is not a template

Matrix<cols,rows,Trans > Matrix<rows,cols,MemT>::operator~()

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:344:38: error: expected initializer before '<' token

Matrix<cols,rows,Trans > Matrix<rows,cols,MemT>::operator~()

                                  ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:355:1: error: 'Matrix' is not a template

Matrix<rows,cols,Array<rows,cols,typename MemT::elem_t> > Matrix<rows,cols,MemT>::operator+(const typename MemT::elem_t k)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:355:65: error: expected initializer before '<' token

Matrix<rows,cols,Array<rows,cols,typename MemT::elem_t> > Matrix<rows,cols,MemT>::operator+(const typename MemT::elem_t k)

                                                             ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:364:1: error: 'Matrix' is not a template

Matrix<rows,cols,MemT> &Matrix<rows,cols,MemT>::operator+=(const typename MemT::elem_t k)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:364:31: error: expected initializer before '<' token

Matrix<rows,cols,MemT> &Matrix<rows,cols,MemT>::operator+=(const typename MemT::elem_t k)

                           ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:372:1: error: 'Matrix' is not a template

Matrix<rows,cols,Array<rows,cols,typename MemT::elem_t> > Matrix<rows,cols,MemT>::operator-(const typename MemT::elem_t k)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:372:65: error: expected initializer before '<' token

Matrix<rows,cols,Array<rows,cols,typename MemT::elem_t> > Matrix<rows,cols,MemT>::operator-(const typename MemT::elem_t k)

                                                             ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:381:1: error: 'Matrix' is not a template

Matrix<rows,cols,MemT> &Matrix<rows,cols,MemT>::operator-=(const typename MemT::elem_t k)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:381:31: error: expected initializer before '<' token

Matrix<rows,cols,MemT> &Matrix<rows,cols,MemT>::operator-=(const typename MemT::elem_t k)

                           ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:389:1: error: 'Matrix' is not a template

Matrix<rows,cols,Array<rows,cols,typename MemT::elem_t> > Matrix<rows,cols,MemT>::operator*(const typename MemT::elem_t k)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:389:65: error: expected initializer before '<' token

Matrix<rows,cols,Array<rows,cols,typename MemT::elem_t> > Matrix<rows,cols,MemT>::operator*(const typename MemT::elem_t k)

                                                             ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:398:1: error: 'Matrix' is not a template

Matrix<rows,cols,MemT> &Matrix<rows,cols,MemT>::operator*=(const typename MemT::elem_t k)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:398:31: error: expected initializer before '<' token

Matrix<rows,cols,MemT> &Matrix<rows,cols,MemT>::operator*=(const typename MemT::elem_t k)

                           ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:406:1: error: 'Matrix' is not a template

Matrix<rows,cols,Array<rows,cols,typename MemT::elem_t> > Matrix<rows,cols,MemT>::operator/(const typename MemT::elem_t k)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:406:65: error: expected initializer before '<' token

Matrix<rows,cols,Array<rows,cols,typename MemT::elem_t> > Matrix<rows,cols,MemT>::operator/(const typename MemT::elem_t k)

                                                             ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:415:1: error: 'Matrix' is not a template

Matrix<rows,cols,MemT> &Matrix<rows,cols,MemT>::operator/=(const typename MemT::elem_t k)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:415:31: error: expected initializer before '<' token

Matrix<rows,cols,MemT> &Matrix<rows,cols,MemT>::operator/=(const typename MemT::elem_t k)

                           ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:424:1: error: 'Matrix' is not a template

Matrix<rows,cols,retMemT> &ElementwiseAdd(const Matrix<rows,cols,MemT> &A, const typename MemT::elem_t &B, Matrix<rows,cols,retMemT> &C)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:424:49: error: 'Matrix' is not a template

Matrix<rows,cols,retMemT> &ElementwiseAdd(const Matrix<rows,cols,MemT> &A, const typename MemT::elem_t &B, Matrix<rows,cols,retMemT> &C)

                                             ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:424:108: error: 'Matrix' is not a template

Matrix<rows,cols,retMemT> &ElementwiseAdd(const Matrix<rows,cols,MemT> &A, const typename MemT::elem_t &B, Matrix<rows,cols,retMemT> &C)

                                                                                                        ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: In function 'Matrix& ElementwiseAdd(const Matrix&, const typename MemT::elem_t&, Matrix&)':

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:428:18: error: no match for call to '(Matrix) (int&, int&)'

         C(i,j) = A(i,j) + B;

              ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:428:27: error: no match for call to '(const Matrix) (int&, int&)'

         C(i,j) = A(i,j) + B;

                       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: At global scope:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:435:1: error: 'Matrix' is not a template

Matrix<rows,cols,retMemT> &ElementwiseSubtract(const Matrix<rows,cols,MemT> &A, const typename MemT::elem_t &B, Matrix<rows,cols,retMemT> &C)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:435:54: error: 'Matrix' is not a template

Matrix<rows,cols,retMemT> &ElementwiseSubtract(const Matrix<rows,cols,MemT> &A, const typename MemT::elem_t &B, Matrix<rows,cols,retMemT> &C)

                                                  ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:435:113: error: 'Matrix' is not a template

Matrix<rows,cols,retMemT> &ElementwiseSubtract(const Matrix<rows,cols,MemT> &A, const typename MemT::elem_t &B, Matrix<rows,cols,retMemT> &C)

                                                                                                             ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: In function 'Matrix& ElementwiseSubtract(const Matrix&, const typename MemT::elem_t&, Matrix&)':

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:439:18: error: no match for call to '(Matrix) (int&, int&)'

         C(i,j) = A(i,j) - B;

              ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:439:27: error: no match for call to '(const Matrix) (int&, int&)'

         C(i,j) = A(i,j) - B;

                       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: At global scope:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:446:1: error: 'Matrix' is not a template

Matrix<rows,cols,retMemT> &ElementwiseMultiply(const Matrix<rows,cols,MemT> &A, const typename MemT::elem_t &B, Matrix<rows,cols,retMemT> &C)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:446:54: error: 'Matrix' is not a template

Matrix<rows,cols,retMemT> &ElementwiseMultiply(const Matrix<rows,cols,MemT> &A, const typename MemT::elem_t &B, Matrix<rows,cols,retMemT> &C)

                                                  ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:446:113: error: 'Matrix' is not a template

Matrix<rows,cols,retMemT> &ElementwiseMultiply(const Matrix<rows,cols,MemT> &A, const typename MemT::elem_t &B, Matrix<rows,cols,retMemT> &C)

                                                                                                             ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: In function 'Matrix& ElementwiseMultiply(const Matrix&, const typename MemT::elem_t&, Matrix&)':

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:450:18: error: no match for call to '(Matrix) (int&, int&)'

         C(i,j) = A(i,j) * B;

              ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:450:27: error: no match for call to '(const Matrix) (int&, int&)'

         C(i,j) = A(i,j) * B;

                       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: At global scope:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:457:1: error: 'Matrix' is not a template

Matrix<rows,cols,retMemT> &ElementwiseDivide(const Matrix<rows,cols,MemT> &A, const typename MemT::elem_t &B, Matrix<rows,cols,retMemT> &C)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:457:52: error: 'Matrix' is not a template

Matrix<rows,cols,retMemT> &ElementwiseDivide(const Matrix<rows,cols,MemT> &A, const typename MemT::elem_t &B, Matrix<rows,cols,retMemT> &C)

                                                ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:457:111: error: 'Matrix' is not a template

Matrix<rows,cols,retMemT> &ElementwiseDivide(const Matrix<rows,cols,MemT> &A, const typename MemT::elem_t &B, Matrix<rows,cols,retMemT> &C)

                                                                                                           ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: In function 'Matrix& ElementwiseDivide(const Matrix&, const typename MemT::elem_t&, Matrix&)':

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:461:18: error: no match for call to '(Matrix) (int&, int&)'

         C(i,j) = A(i,j) / B;

              ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:461:27: error: no match for call to '(const Matrix) (int&, int&)'

         C(i,j) = A(i,j) / B;

                       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: At global scope:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:469:41: error: 'Matrix' is not a template

typename MemT::elem_t Determinant(const Matrix<dim,dim,MemT> &A)

                                     ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: In function 'typename MemT::elem_t Determinant(const Matrix&)':

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:476:27: error: 'const struct Matrix' has no member named 'delegate'

     Minor<MemT> del(A.delegate, i, 0);

                       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:477:9: error: 'Matrix' is not a template

     Matrix<dim-1,dim-1,Minor<MemT> > m(del);

     ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:480:32: error: no matching function for call to 'Determinant(Matrix&)'

         det = Determinant(m);

                            ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:480:32: note: candidate is:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:469:23: note: template<int dim, class MemT> typename MemT::elem_t Determinant(const Matrix&)

typename MemT::elem_t Determinant(const Matrix<dim,dim,MemT> &A)

                   ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:469:23: note: template argument deduction/substitution failed:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:480:32: note: couldn't deduce template parameter 'dim'

         det = Determinant(m);

                            ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:482:33: error: no matching function for call to 'Determinant(Matrix&)'

         det += Determinant(m) * (i % 2? -A(i,0) : A(i,0));

                             ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:482:33: note: candidate is:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:469:23: note: template<int dim, class MemT> typename MemT::elem_t Determinant(const Matrix&)

typename MemT::elem_t Determinant(const Matrix<dim,dim,MemT> &A)

                   ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:469:23: note: template argument deduction/substitution failed:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:482:33: note: couldn't deduce template parameter 'dim'

         det += Determinant(m) * (i % 2? -A(i,0) : A(i,0));

                             ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:482:51: error: no match for call to '(const Matrix) (int&, int)'

         det += Determinant(m) * (i % 2? -A(i,0) : A(i,0));

                                               ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:482:60: error: no match for call to '(const Matrix) (int&, int)'

         det += Determinant(m) * (i % 2? -A(i,0) : A(i,0));

                                                        ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: At global scope:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:489:35: error: 'Matrix' is not a template

typename MemT::elem_t Determinant(Matrix<2,2,MemT> &A)

                               ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: In function 'typename MemT::elem_t Determinant(Matrix&)':

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:491:17: error: no match for call to '(Matrix) (int, int)'

 return A(0,0) * A(1,1) - A(1,0) * A(0,1);

             ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:491:26: error: no match for call to '(Matrix) (int, int)'

 return A(0,0) * A(1,1) - A(1,0) * A(0,1);

                      ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:491:35: error: no match for call to '(Matrix) (int, int)'

 return A(0,0) * A(1,1) - A(1,0) * A(0,1);

                               ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:491:44: error: no match for call to '(Matrix) (int, int)'

 return A(0,0) * A(1,1) - A(1,0) * A(0,1);

                                        ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: At global scope:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:497:1: error: 'Matrix' is not a template

Matrix<rows,cols,Array<rows,cols,typename MemT::elem_t> > Matrix<rows,cols,MemT>::Inverse(int *res)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:497:65: error: expected initializer before '<' token

Matrix<rows,cols,Array<rows,cols,typename MemT::elem_t> > Matrix<rows,cols,MemT>::Inverse(int *res)

                                                             ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:507:1: error: 'Matrix' is not a template

Matrix<dim,dim,MemT> &Invert(Matrix<dim,dim,MemT> &A, int *res = NULL)

^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:507:30: error: 'Matrix' is not a template

Matrix<dim,dim,MemT> &Invert(Matrix<dim,dim,MemT> &A, int *res = NULL)

                          ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: In function 'Matrix& Invert(Matrix&, int*)':

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:519:26: error: no match for call to '(Matrix) (int&, int&)'

         if(fabs(A(i,k)) >= tmp)

                      ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:521:33: error: no match for call to '(Matrix) (int&, int&)'

             tmp = fabs(A(i,k));

                             ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:527:23: error: no match for call to '(Matrix) (int&, int&)'

     if (A(pivrow,k) == 0.0f)

                   ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:537:28: error: no match for call to '(Matrix) (int&, int&)'

             tmp = A(k,j);

                        ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:538:22: error: no match for call to '(Matrix) (int&, int&)'

             A(k,j) = A(pivrow,j);

                  ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:538:36: error: no match for call to '(Matrix) (int&, int&)'

             A(k,j) = A(pivrow,j);

                                ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:539:27: error: no match for call to '(Matrix) (int&, int&)'

             A(pivrow,j) = tmp;

                       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:544:27: error: no match for call to '(Matrix) (int&, int&)'

     tmp = 1.0f / A(k,k); // invert pivot element

                       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:545:14: error: no match for call to '(Matrix) (int&, int&)'

     A(k,k) = 1.0f;  // This element of input matrix becomes result matrix

          ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:549:18: error: no match for call to '(Matrix) (int&, int&)'

         A(k,j) = A(k,j) * tmp;

              ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:549:27: error: no match for call to '(Matrix) (int&, int&)'

         A(k,j) = A(k,j) * tmp;

                       ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:556:28: error: no match for call to '(Matrix) (int&, int&)'

             tmp = A(i,k);

                        ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:557:22: error: no match for call to '(Matrix) (int&, int&)'

             A(i,k) = 0.0f;  // The other place where in matrix becomes result mat

                  ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:560:26: error: no match for call to '(Matrix) (int&, int&)'

                 A(i,j) = A(i,j) - A(k,j) * tmp;

                      ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:560:35: error: no match for call to '(Matrix) (int&, int&)'

                 A(i,j) = A(i,j) - A(k,j) * tmp;

                               ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:560:44: error: no match for call to '(Matrix) (int&, int&)'

                 A(i,j) = A(i,j) - A(k,j) * tmp;

                                        ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:572:28: error: no match for call to '(Matrix) (int&, int&)'

             tmp = A(i,k);

                        ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:573:22: error: no match for call to '(Matrix) (int&, int&)'

             A(i,k) = A(i,pivrows[k]);

                  ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: At global scope:

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:609:38: error: 'Matrix' is not a template

Print &operator<<(Print &strm, const Matrix<rows,cols,MemT> &obj)

                                  ^

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h: In function 'Print& operator<<(Print&, const Matrix&)':

C:\Users\juanj\Documents\Arduino\libraries\BasicLinearAlgebra/BasicLinearAlgebra.h:618:28: error: no match for call to '(const Matrix) (int&, int&)'

         strm << obj(i,j) << ((j == cols - 1)? '}' : ',');

                        ^

exit status 1
Error compiling for board Arduino Due (Programming Port).

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

@tomstewart89
Copy link
Owner

Ahhh ok, I managed to reproduce this at my end and I think I've figured this out. Basically the CMSIS (a cortex library that used by the DUE) already defines a Matrix class so there's a conflict. I'll just wrap my stuff up in a namespace and we should be good to go. Give me a little while to make the changes

@tomstewart89
Copy link
Owner

Ok, try version 2.2 and just make sure that you declare Matrices by first specifying the BLA namespace like so: BLA::Matrix<2,2> A;

Let me know how it goes!

@juanjqo
Copy link
Author

juanjqo commented Oct 28, 2017

Hi Tom!
The version 2.2 works now!
The example HowToUse works and I did not perform some kind of additional declaration.

Thank you for your support!

@tomstewart89
Copy link
Owner

No problem, enjoy the library!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants