1: static char help[] = "Tests inclusion of petscsystypes.h.\n\n"; 3: #include <petscsystypes.h> 4: #include <stddef.h> /* for NULL */ 6: #if defined(PETSC_HAVE_COMPLEX) 7: #define TestComplexOperators(type, value) \ 8: do { \ 9: type x = value; \ 10: PetscComplex z = value; \ 11: (void)z; \ 12: z = x; \ 13: z += x; \ 14: z = z + x; \ 15: z = x + z; \ 16: z = x; \ 17: z -= x; \ 18: z = z - x; \ 19: z = x - z; \ 20: z = x; \ 21: z *= x; \ 22: z = z * x; \ 23: z = x * z; \ 24: z = x; \ 25: z /= x; \ 26: z = z / x; \ 27: z = x / z; \ 28: (void)(z == x); \ 29: (void)(x == z); \ 30: (void)(z != x); \ 31: (void)(x != z); \ 32: } while (0) 33: #endif 35: int main(int argc, char **argv) 36: { 37: /* numeric types */ 38: PetscScalar svalue; 39: PetscReal rvalue; 40: #if defined(PETSC_HAVE_COMPLEX) 41: PetscComplex cvalue; 42: #endif 44: /* integer types */ 45: PetscInt64 i64; 46: PetscInt i; 47: PetscBLASInt bi; 48: PetscMPIInt rank; 50: /* PETSc types */ 51: PetscBool b; 52: PetscErrorCode ierr; 53: PetscClassId cid; 54: PetscEnum e; 55: PetscShort s; 56: PetscChar c; 57: PetscFloat f; 58: PetscLogDouble ld; 59: PetscObjectId oid; 60: PetscObjectState ost; 62: /* Enums */ 63: PetscCopyMode cp; 64: PetscDataType dt; 65: PetscFileMode fm; 66: PetscDLMode dlm; 67: PetscBinarySeekType bsk; 68: PetscBuildTwoSidedType b2s; 69: InsertMode im; 70: PetscSubcommType subct; 72: /* Sys objects */ 73: PetscObject obj; 74: PetscRandom rand; 75: PetscToken token; 76: PetscFunctionList flist; 77: PetscDLHandle dlh; 78: PetscObjectList olist; 79: PetscDLLibrary dlist; 80: PetscContainer cont; 81: PetscSubcomm subc; 82: PetscHeap pheap; 83: PetscShmComm scomm; 84: PetscOmpCtrl octrl; 85: PetscSegBuffer sbuff; 86: PetscOptionsHelpPrinted oh; 88: ierr = PETSC_SUCCESS; 89: svalue = 0.0; 90: rvalue = 0.0; 91: #if defined(PETSC_HAVE_COMPLEX) 92: cvalue = 0.0; 93: #endif 95: #if defined(PETSC_HAVE_COMPLEX) 96: /* this example returns an error of 141 in GitLab CI once in a great while; this is an attempt to debug that issue */ 97: if (ierr != PETSC_SUCCESS) return 77; 98: TestComplexOperators(signed char, 1); 99: TestComplexOperators(signed short, 1); 100: TestComplexOperators(signed int, 1); 101: TestComplexOperators(signed long, 1L); 102: TestComplexOperators(float, 1.0f); 103: TestComplexOperators(double, 1.0); 104: if (ierr != PETSC_SUCCESS) return 78; 105: #endif 107: i64 = 0; 108: i = 0; 109: bi = 0; 110: rank = 0; 112: b = PETSC_FALSE; 113: cid = 0; 114: e = ENUM_DUMMY; 115: s = 0; 116: c = '\0'; 117: f = 0; 118: ld = 0.0; 119: oid = 0; 120: ost = 0; 122: cp = PETSC_COPY_VALUES; 123: dt = PETSC_DATATYPE_UNKNOWN; 124: fm = FILE_MODE_READ; 125: dlm = PETSC_DL_DECIDE; 126: bsk = PETSC_BINARY_SEEK_SET; 127: b2s = PETSC_BUILDTWOSIDED_NOTSET; 128: im = INSERT_VALUES; 129: subct = PETSC_SUBCOMM_GENERAL; 131: obj = NULL; 132: rand = NULL; 133: token = NULL; 134: flist = NULL; 135: dlh = NULL; 136: olist = NULL; 137: dlist = NULL; 138: cont = NULL; 139: subc = NULL; 140: pheap = NULL; 141: scomm = NULL; 142: octrl = NULL; 143: sbuff = NULL; 144: oh = NULL; 146: /* prevent to issue warning about unused-but-set variables */ 147: (void)help; 149: (void)svalue; 150: (void)rvalue; 151: #if defined(PETSC_HAVE_COMPLEX) 152: (void)cvalue; 153: #endif 154: (void)i64; 155: (void)i; 156: (void)bi; 157: (void)rank; 159: (void)b; 160: (void)ierr; 161: (void)cid; 162: (void)e; 163: (void)s; 164: (void)c; 165: (void)f; 166: (void)ld; 167: (void)oid; 168: (void)ost; 170: (void)cp; 171: (void)dt; 172: (void)fm; 173: (void)dlm; 174: (void)bsk; 175: (void)b2s; 176: (void)im; 177: (void)subct; 179: (void)obj; 180: (void)rand; 181: (void)token; 182: (void)flist; 183: (void)dlh; 184: (void)olist; 185: (void)dlist; 186: (void)cont; 187: (void)subc; 188: (void)pheap; 189: (void)scomm; 190: (void)octrl; 191: (void)sbuff; 192: (void)oh; 193: return (int)ierr; 194: } 196: /*TEST 198: test: 200: TEST*/