1e0dd3b27Sjeremylt /// @file 2e0dd3b27Sjeremylt /// Test scaling a vector 3e0dd3b27Sjeremylt /// \test Test scaling of a vector 4e0dd3b27Sjeremylt #include <ceed.h> 5e0dd3b27Sjeremylt #include <math.h> 6*49aac155SJeremy L Thompson #include <stdio.h> 7e0dd3b27Sjeremylt 8e0dd3b27Sjeremylt int main(int argc, char **argv) { 9e0dd3b27Sjeremylt Ceed ceed; 10e0dd3b27Sjeremylt CeedVector x; 114fee36f0SJeremy L Thompson CeedInt len = 10; 12e0dd3b27Sjeremylt 13e0dd3b27Sjeremylt CeedInit(argv[1], &ceed); 14e0dd3b27Sjeremylt 154fee36f0SJeremy L Thompson CeedVectorCreate(ceed, len, &x); 164fee36f0SJeremy L Thompson { 174fee36f0SJeremy L Thompson CeedScalar array[len]; 18e0dd3b27Sjeremylt 194fee36f0SJeremy L Thompson for (CeedInt i = 0; i < len; i++) array[i] = 10 + i; 204fee36f0SJeremy L Thompson CeedVectorSetArray(x, CEED_MEM_HOST, CEED_COPY_VALUES, array); 214fee36f0SJeremy L Thompson } 2216e0f512Sjeremylt { 2316e0f512Sjeremylt // Sync memtype to device for GPU backends 2416e0f512Sjeremylt CeedMemType type = CEED_MEM_HOST; 2516e0f512Sjeremylt CeedGetPreferredMemType(ceed, &type); 2616e0f512Sjeremylt CeedVectorSyncArray(x, type); 2716e0f512Sjeremylt } 28e0dd3b27Sjeremylt CeedVectorScale(x, -0.5); 29e0dd3b27Sjeremylt 304fee36f0SJeremy L Thompson { 314fee36f0SJeremy L Thompson const CeedScalar *read_array; 324fee36f0SJeremy L Thompson 334fee36f0SJeremy L Thompson CeedVectorGetArrayRead(x, CEED_MEM_HOST, &read_array); 344fee36f0SJeremy L Thompson for (CeedInt i = 0; i < len; i++) { 354fee36f0SJeremy L Thompson if (fabs(read_array[i] + (10.0 + i) / 2) > 1e-14) { 36e0dd3b27Sjeremylt // LCOV_EXCL_START 374fee36f0SJeremy L Thompson printf("Error in alpha x at index %" CeedInt_FMT ", computed: %f actual: %f\n", i, read_array[i], -(10.0 + i) / 2); 38e0dd3b27Sjeremylt // LCOV_EXCL_STOP 392b730f8bSJeremy L Thompson } 402b730f8bSJeremy L Thompson } 414fee36f0SJeremy L Thompson CeedVectorRestoreArrayRead(x, &read_array); 424fee36f0SJeremy L Thompson } 43e0dd3b27Sjeremylt 44e0dd3b27Sjeremylt CeedVectorDestroy(&x); 45e0dd3b27Sjeremylt CeedDestroy(&ceed); 46e0dd3b27Sjeremylt return 0; 47e0dd3b27Sjeremylt } 48