Home | History | Annotate | Download | only in valarray.members
      1 //===----------------------------------------------------------------------===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is dual licensed under the MIT and the University of Illinois Open
      6 // Source Licenses. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 
     10 // <valarray>
     11 
     12 // template<class T> class valarray;
     13 
     14 // valarray shift(int i) const;
     15 
     16 #include <valarray>
     17 #include <cassert>
     18 
     19 int main()
     20 {
     21     {
     22         typedef int T;
     23         T a1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
     24         T a2[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
     25         const unsigned N1 = sizeof(a1)/sizeof(a1[0]);
     26         std::valarray<T> v1(a1, N1);
     27         std::valarray<T> v2 = v1.shift(0);
     28         assert(v2.size() == N1);
     29         for (unsigned i = 0; i < N1; ++i)
     30             assert(v2[i] == a2[i]);
     31     }
     32     {
     33         typedef int T;
     34         T a1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
     35         T a2[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 0};
     36         const unsigned N1 = sizeof(a1)/sizeof(a1[0]);
     37         std::valarray<T> v1(a1, N1);
     38         std::valarray<T> v2 = v1.shift(1);
     39         assert(v2.size() == N1);
     40         for (unsigned i = 0; i < N1; ++i)
     41             assert(v2[i] == a2[i]);
     42     }
     43     {
     44         typedef int T;
     45         T a1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
     46         T a2[] = {10, 0, 0, 0, 0, 0, 0, 0, 0, 0};
     47         const unsigned N1 = sizeof(a1)/sizeof(a1[0]);
     48         std::valarray<T> v1(a1, N1);
     49         std::valarray<T> v2 = v1.shift(9);
     50         assert(v2.size() == N1);
     51         for (unsigned i = 0; i < N1; ++i)
     52             assert(v2[i] == a2[i]);
     53     }
     54     {
     55         typedef int T;
     56         T a1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
     57         T a2[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
     58         const unsigned N1 = sizeof(a1)/sizeof(a1[0]);
     59         std::valarray<T> v1(a1, N1);
     60         std::valarray<T> v2 = v1.shift(90);
     61         assert(v2.size() == N1);
     62         for (unsigned i = 0; i < N1; ++i)
     63             assert(v2[i] == a2[i]);
     64     }
     65     {
     66         typedef int T;
     67         T a1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
     68         T a2[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
     69         const unsigned N1 = sizeof(a1)/sizeof(a1[0]);
     70         std::valarray<T> v1(a1, N1);
     71         std::valarray<T> v2 = v1.shift(-1);
     72         assert(v2.size() == N1);
     73         for (unsigned i = 0; i < N1; ++i)
     74             assert(v2[i] == a2[i]);
     75     }
     76     {
     77         typedef int T;
     78         T a1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
     79         T a2[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1};
     80         const unsigned N1 = sizeof(a1)/sizeof(a1[0]);
     81         std::valarray<T> v1(a1, N1);
     82         std::valarray<T> v2 = v1.shift(-9);
     83         assert(v2.size() == N1);
     84         for (unsigned i = 0; i < N1; ++i)
     85             assert(v2[i] == a2[i]);
     86     }
     87     {
     88         typedef int T;
     89         T a1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
     90         T a2[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
     91         const unsigned N1 = sizeof(a1)/sizeof(a1[0]);
     92         std::valarray<T> v1(a1, N1);
     93         std::valarray<T> v2 = v1.shift(-90);
     94         assert(v2.size() == N1);
     95         for (unsigned i = 0; i < N1; ++i)
     96             assert(v2[i] == a2[i]);
     97     }
     98     {
     99         typedef int T;
    100         const unsigned N1 = 0;
    101         std::valarray<T> v1;
    102         std::valarray<T> v2 = v1.shift(-90);
    103         assert(v2.size() == N1);
    104     }
    105     {
    106         typedef int T;
    107         T a1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    108         T a2[] = {8, 10, 12, 14, 16, 18, 20, 0, 0, 0};
    109         const unsigned N1 = sizeof(a1)/sizeof(a1[0]);
    110         std::valarray<T> v1(a1, N1);
    111         std::valarray<T> v2 = (v1 + v1).shift(3);
    112         assert(v2.size() == N1);
    113         for (unsigned i = 0; i < N1; ++i)
    114             assert(v2[i] == a2[i]);
    115     }
    116     {
    117         typedef int T;
    118         T a1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    119         T a2[] = {0, 0, 0, 2, 4, 6, 8, 10, 12, 14};
    120         const unsigned N1 = sizeof(a1)/sizeof(a1[0]);
    121         std::valarray<T> v1(a1, N1);
    122         std::valarray<T> v2 = (v1 + v1).shift(-3);
    123         assert(v2.size() == N1);
    124         for (unsigned i = 0; i < N1; ++i)
    125             assert(v2[i] == a2[i]);
    126     }
    127 }
    128