ok cool, could you add that reference in the header of the test? useuful for the future years when nobody remembers this conversation :)

You are right, BRML uses SVD always, but what I was after is the case distinction they have in there:

```
if nargin>=3; usemean=varargin{2}; else usemean=1; end
N=size(X,2);
m = usemean*mean(X,2);
X0 = X - repmat(m,1,N); % centre the data
[E D]=svd(X0,0);
L = (diag(D).^2)/(N-1);
if M<N
    Y = E(:,1:M)'*X0;
    Xtilde = E(:,1:M)*Y + repmat(m,1,N);
else
    Y = E'*X0;
    Xtilde = E*Y + repmat(m,1,N);
end
if nargin==4; if varargin{3}; E=E(:,1:M); L=L(1:M); end; end
```