I have a question on the implementation of the L2-norm. If I'm not mistaken, the implementation resides in the file blas.cpp and is the first function (line 24, fingerprint: double vectornorm2(const ap::real_1d_array& x, int i1, int i2).
For convenience:
Code:
double vectornorm2(const ap::real_1d_array& x, int i1, int i2)
{
    double result;
    int n;
    int ix;
    double absxi;
    double scl;
    double ssq;
    n = i2-i1+1;
    if( n<1 )
    {
        result = 0;
        return result;
    }
    if( n==1 )
    {
        result = fabs(x(i1));
        return result;
    }
    scl = 0;
    ssq = 1;
    for(ix = i1; ix <= i2; ix++)
    {
        if( ap::fp_neq(x(ix),0) )
        {
            absxi = fabs(x(ix));
            if( ap::fp_less(scl,absxi) )
            {
                ssq = 1+ssq*ap::sqr(scl/absxi);
                scl = absxi;
            }
            else
            {
                ssq = ssq+ap::sqr(absxi/scl);
            }
        }
    }
    result = scl*sqrt(ssq);
    return result;
}
On 
http://mathworld.wolfram.com/VectorNorm.html I've read that the L2-norm of a vector is a really simple function, but I can't see how the implementation executes this method.
Could anybody explain it to me?
Thanks in advance!