| 42 | |
| 43 | template<class View, bool Perm> |
| 44 | inline void |
| 45 | sort_sigma(ViewArray<View>& x, ViewArray<View>& z) { |
| 46 | if (Perm) { |
| 47 | Region r; |
| 48 | ViewPair<View>* xz = r.alloc<ViewPair<View> >(x.size()); |
| 49 | for (int i=x.size(); i--; ) { |
| 50 | xz[i].x=x[i]; xz[i].z=z[i]; |
| 51 | } |
| 52 | TupleMinIncExt<View> min_inc; |
| 53 | Support::quicksort<ViewPair<View>,TupleMinIncExt<View> > |
| 54 | (&xz[0], x.size(), min_inc); |
| 55 | for (int i=x.size(); i--; ) { |
| 56 | x[i]=xz[i].x; z[i]=xz[i].z; |
| 57 | } |
| 58 | } else { |
| 59 | TupleMinInc<View> min_inc; |
| 60 | Support::quicksort<View,TupleMinInc<View> >(&x[0], x.size(), min_inc); |
| 61 | } |
| 62 | } |
| 63 | |
| 64 | /** |
| 65 | * \brief Build \f$\tau\f$ |