Problem with LAPACK library compiling

Dear All,

when i want to use a LAPACK function in my code i get the error, please help

function SVDRLS
  import Modelica.Math.Matrices;
  input Real A[3,2];
  output Real sigmasvd[3,2];
  output Real Usvd[3,3];
  output Real VTsvd[2,2];
algorithm
(sigmasvd,Usvd,VTsvd):=Matrices.singularValues(A);
end SVDRLS;

ERROR:

Error: Tuple assignment only allowed when rhs is function call (in Matrices.singularValues(A))

Thank you for bringing this to our attention. We will look into this.

There was a typo in the example file of SingularValue. You can create a new function with the following code. The only change I made is to move “info” to output and outside the protected scope.

function mysingularValues "Compute singular values and left and right singular vectors"  
  extends Modelica.Icons.Function;
  input Real A[:,:] "Matrix";
  output Real sigma[min(size(A, 1), size(A, 2))] "Singular values";
  output Real U[size(A, 1),size(A, 1)]=identity(size(A, 1)) "Left orthogonal matrix";
  output Real VT[size(A, 2),size(A, 2)]=identity(size(A, 2)) "Transposed right orthogonal matrix ";
  output Integer info;
protected
  Integer n=min(size(A, 1), size(A, 2)) "Number of singular values";
algorithm 
  if n > 0 then 
    (sigma,U,VT,info):=Modelica.Math.Matrices.LAPACK.dgesvd(A);
    assert(info == 0, "The numerical algorithm to compute the
singular value decomposition did not converge");
  end if;
end mysingularValues;

And the following sample model should give you a correct result:

model test
  Real q[2,2]={{1,3},{9,8}};
  Real a[2];
  Real b[2,2];
  Real c[2,2];
  Integer d;
algorithm 
  (a,b,c,d):=mysingularValues(q);
end test;

@Zaffer, I created this discussion about calling lapack subroutines. This is dedicated to the QR decomposition, yet the C code in this thread can have fairly generic application. You may want to take a look.