1e0dd3b27Sjeremylt /// @file 2e0dd3b27Sjeremylt /// Test scaling a vector 3e0dd3b27Sjeremylt /// \test Test scaling of a vector 4e0dd3b27Sjeremylt #include <ceed.h> 5e0dd3b27Sjeremylt #include <math.h> 6e0dd3b27Sjeremylt 7e0dd3b27Sjeremylt int main(int argc, char **argv) { 8e0dd3b27Sjeremylt Ceed ceed; 9e0dd3b27Sjeremylt CeedVector x; 10*4fee36f0SJeremy L Thompson CeedInt len = 10; 11e0dd3b27Sjeremylt 12e0dd3b27Sjeremylt CeedInit(argv[1], &ceed); 13e0dd3b27Sjeremylt 14*4fee36f0SJeremy L Thompson CeedVectorCreate(ceed, len, &x); 15*4fee36f0SJeremy L Thompson { 16*4fee36f0SJeremy L Thompson CeedScalar array[len]; 17e0dd3b27Sjeremylt 18*4fee36f0SJeremy L Thompson for (CeedInt i = 0; i < len; i++) array[i] = 10 + i; 19*4fee36f0SJeremy L Thompson CeedVectorSetArray(x, CEED_MEM_HOST, CEED_COPY_VALUES, array); 20*4fee36f0SJeremy L Thompson } 2116e0f512Sjeremylt { 2216e0f512Sjeremylt // Sync memtype to device for GPU backends 2316e0f512Sjeremylt CeedMemType type = CEED_MEM_HOST; 2416e0f512Sjeremylt CeedGetPreferredMemType(ceed, &type); 2516e0f512Sjeremylt CeedVectorSyncArray(x, type); 2616e0f512Sjeremylt } 27e0dd3b27Sjeremylt CeedVectorScale(x, -0.5); 28e0dd3b27Sjeremylt 29*4fee36f0SJeremy L Thompson { 30*4fee36f0SJeremy L Thompson const CeedScalar *read_array; 31*4fee36f0SJeremy L Thompson 32*4fee36f0SJeremy L Thompson CeedVectorGetArrayRead(x, CEED_MEM_HOST, &read_array); 33*4fee36f0SJeremy L Thompson for (CeedInt i = 0; i < len; i++) { 34*4fee36f0SJeremy L Thompson if (fabs(read_array[i] + (10.0 + i) / 2) > 1e-14) { 35e0dd3b27Sjeremylt // LCOV_EXCL_START 36*4fee36f0SJeremy L Thompson printf("Error in alpha x at index %" CeedInt_FMT ", computed: %f actual: %f\n", i, read_array[i], -(10.0 + i) / 2); 37e0dd3b27Sjeremylt // LCOV_EXCL_STOP 382b730f8bSJeremy L Thompson } 392b730f8bSJeremy L Thompson } 40*4fee36f0SJeremy L Thompson CeedVectorRestoreArrayRead(x, &read_array); 41*4fee36f0SJeremy L Thompson } 42e0dd3b27Sjeremylt 43e0dd3b27Sjeremylt CeedVectorDestroy(&x); 44e0dd3b27Sjeremylt CeedDestroy(&ceed); 45e0dd3b27Sjeremylt return 0; 46e0dd3b27Sjeremylt } 47