2 // { dg-options "-Ofast" }
4 template <typename Number>
6 typedef Number value_type;
7 typedef const value_type *const_iterator;
8 Number norm_sqr () const;
9 const_iterator begin () const;
12 template <typename Number>
14 local_sqr (const Number x)
18 template <typename Number>
20 Vector<Number>::norm_sqr () const
22 Number sum0 = 0, sum1 = 0, sum2 = 0, sum3 = 0;
23 const_iterator ptr = begin(), eptr = ptr + (dim/4)*4;
26 sum0 += ::local_sqr(*ptr++);
27 sum1 += ::local_sqr(*ptr++);
29 return sum0+sum1+sum2+sum3;
31 template class Vector<double>;