xref: /libCEED/tests/t121-vector.c (revision 0f7fd0f8b8a217b3039591f3d95e1a4bbb58f157)
1*0f7fd0f8Sjeremylt /// @file
2*0f7fd0f8Sjeremylt /// Test summing of a pair of vectors
3*0f7fd0f8Sjeremylt /// \test Test summing of a pair of vectors
4*0f7fd0f8Sjeremylt #include <ceed.h>
5*0f7fd0f8Sjeremylt #include <math.h>
6*0f7fd0f8Sjeremylt 
7*0f7fd0f8Sjeremylt int main(int argc, char **argv) {
8*0f7fd0f8Sjeremylt   Ceed ceed;
9*0f7fd0f8Sjeremylt   CeedVector x, y;
10*0f7fd0f8Sjeremylt   CeedInt n;
11*0f7fd0f8Sjeremylt   CeedScalar a[10];
12*0f7fd0f8Sjeremylt   const CeedScalar *b;
13*0f7fd0f8Sjeremylt 
14*0f7fd0f8Sjeremylt   CeedInit(argv[1], &ceed);
15*0f7fd0f8Sjeremylt 
16*0f7fd0f8Sjeremylt   n = 10;
17*0f7fd0f8Sjeremylt   CeedVectorCreate(ceed, n, &x);
18*0f7fd0f8Sjeremylt   CeedVectorCreate(ceed, n, &y);
19*0f7fd0f8Sjeremylt   for (CeedInt i=0; i<n; i++)
20*0f7fd0f8Sjeremylt     a[i] = 10 + i;
21*0f7fd0f8Sjeremylt   CeedVectorSetArray(x, CEED_MEM_HOST, CEED_COPY_VALUES, a);
22*0f7fd0f8Sjeremylt   CeedVectorSetArray(y, CEED_MEM_HOST, CEED_COPY_VALUES, a);
23*0f7fd0f8Sjeremylt 
24*0f7fd0f8Sjeremylt   CeedVectorAXPY(y, -0.5, x);
25*0f7fd0f8Sjeremylt 
26*0f7fd0f8Sjeremylt   CeedVectorGetArrayRead(y, CEED_MEM_HOST, &b);
27*0f7fd0f8Sjeremylt   for (CeedInt i=0; i<n; i++)
28*0f7fd0f8Sjeremylt     if (fabs(b[i] - (10.0 + i)/2 ) > 1e-14)
29*0f7fd0f8Sjeremylt       // LCOV_EXCL_START
30*0f7fd0f8Sjeremylt       printf("Error in alpha x + y, computed: %f actual: %f\n", b[i],
31*0f7fd0f8Sjeremylt              (10.0 + i)/2);
32*0f7fd0f8Sjeremylt   // LCOV_EXCL_STOP
33*0f7fd0f8Sjeremylt   CeedVectorRestoreArrayRead(y, &b);
34*0f7fd0f8Sjeremylt 
35*0f7fd0f8Sjeremylt   CeedVectorDestroy(&x);
36*0f7fd0f8Sjeremylt   CeedVectorDestroy(&y);
37*0f7fd0f8Sjeremylt   CeedDestroy(&ceed);
38*0f7fd0f8Sjeremylt   return 0;
39*0f7fd0f8Sjeremylt }
40