vector<T>
fgMapMag(const vector<FgMatrixC<T,nrows,ncols> > & v)
{
    vector<T>   ret(v.size());
    for (size_t ii=0; ii<v.size(); ++ii)
        ret[ii] = fgLengthSqr(v[ii]);
    return ret;
}
typename FgTraits<T>::Scalar
fgRmsd(const vector<T> & a,const vector<T> & b)
{
    FGASSERT(a.size() == b.size());
    typename FgTraits<T>::Scalar   acc(0);
    for (size_t ii=0; ii<a.size(); ++ii)
        acc += fgLengthSqr(a[ii]-b[ii]);
    return std::sqrt(acc / a.size());
}
inline T
fgLength(const std::vector<FgMatrixC<T,nrows,ncols> > & v)
{
    return std::sqrt(fgLengthSqr(v));
}