brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.1 KiB · 3b9cc2b Raw
131 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// <valarray>10 11// template<class T> class valarray;12 13// valarray cshift(int i) const;14 15#include <valarray>16#include <cassert>17 18#include "test_macros.h"19 20int main(int, char**)21{22    {23        typedef int T;24        T a1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};25        T a2[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};26        const unsigned N1 = sizeof(a1)/sizeof(a1[0]);27        std::valarray<T> v1(a1, N1);28        std::valarray<T> v2 = v1.cshift(0);29        assert(v2.size() == N1);30        for (unsigned i = 0; i < N1; ++i)31            assert(v2[i] == a2[i]);32    }33    {34        typedef int T;35        T a1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};36        T a2[] = {4, 5, 6, 7, 8, 9, 10, 1, 2, 3};37        const unsigned N1 = sizeof(a1)/sizeof(a1[0]);38        std::valarray<T> v1(a1, N1);39        std::valarray<T> v2 = v1.cshift(3);40        assert(v2.size() == N1);41        for (unsigned i = 0; i < N1; ++i)42            assert(v2[i] == a2[i]);43    }44    {45        typedef int T;46        T a1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};47        T a2[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};48        const unsigned N1 = sizeof(a1)/sizeof(a1[0]);49        std::valarray<T> v1(a1, N1);50        std::valarray<T> v2 = v1.cshift(10);51        assert(v2.size() == N1);52        for (unsigned i = 0; i < N1; ++i)53            assert(v2[i] == a2[i]);54    }55    {56        typedef int T;57        T a1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};58        T a2[] = {8, 9, 10, 1, 2, 3, 4, 5, 6, 7};59        const unsigned N1 = sizeof(a1)/sizeof(a1[0]);60        std::valarray<T> v1(a1, N1);61        std::valarray<T> v2 = v1.cshift(17);62        assert(v2.size() == N1);63        for (unsigned i = 0; i < N1; ++i)64            assert(v2[i] == a2[i]);65    }66    {67        typedef int T;68        T a1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};69        T a2[] = {8, 9, 10, 1, 2, 3, 4, 5, 6, 7};70        const unsigned N1 = sizeof(a1)/sizeof(a1[0]);71        std::valarray<T> v1(a1, N1);72        std::valarray<T> v2 = v1.cshift(-3);73        assert(v2.size() == N1);74        for (unsigned i = 0; i < N1; ++i)75            assert(v2[i] == a2[i]);76    }77    {78        typedef int T;79        T a1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};80        T a2[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};81        const unsigned N1 = sizeof(a1)/sizeof(a1[0]);82        std::valarray<T> v1(a1, N1);83        std::valarray<T> v2 = v1.cshift(-10);84        assert(v2.size() == N1);85        for (unsigned i = 0; i < N1; ++i)86            assert(v2[i] == a2[i]);87    }88    {89        typedef int T;90        T a1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};91        T a2[] = {4, 5, 6, 7, 8, 9, 10, 1, 2, 3};92        const unsigned N1 = sizeof(a1)/sizeof(a1[0]);93        std::valarray<T> v1(a1, N1);94        std::valarray<T> v2 = v1.cshift(-17);95        assert(v2.size() == N1);96        for (unsigned i = 0; i < N1; ++i)97            assert(v2[i] == a2[i]);98    }99    {100        typedef int T;101        const unsigned N1 = 0;102        std::valarray<T> v1;103        std::valarray<T> v2 = v1.cshift(-17);104        assert(v2.size() == N1);105    }106    {107        typedef int T;108        T a1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};109        T a2[] = {8, 10, 12, 14, 16, 18, 20, 2, 4, 6};110        const unsigned N1 = sizeof(a1)/sizeof(a1[0]);111        std::valarray<T> v1(a1, N1);112        std::valarray<T> v2 = (v1 + v1).cshift(3);113        assert(v2.size() == N1);114        for (unsigned i = 0; i < N1; ++i)115            assert(v2[i] == a2[i]);116    }117    {118        typedef int T;119        T a1[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};120        T a2[] = {16, 18, 20, 2, 4, 6, 8, 10, 12, 14};121        const unsigned N1 = sizeof(a1)/sizeof(a1[0]);122        std::valarray<T> v1(a1, N1);123        std::valarray<T> v2 = (v1 + v1).cshift(-3);124        assert(v2.size() == N1);125        for (unsigned i = 0; i < N1; ++i)126            assert(v2[i] == a2[i]);127    }128 129  return 0;130}131