1 static char help[] = "Tests IsInf/IsNan routines.\n"; 2 3 #include <petscsys.h> 4 5 PETSC_INTERN PetscReal zero; 6 PetscReal zero = 0; 7 8 #define CALL(call) do { \ 9 PetscErrorCode _ierr; \ 10 _ierr = PetscPrintf(PETSC_COMM_WORLD,"%-32s -> %s\n",#call,(call)?"True":"False");CHKERRQ(_ierr); \ 11 } while (0); 12 13 int main(int argc, char **argv) { 14 15 PetscReal neg_zero = PetscRealConstant(-0.0); 16 PetscReal pos_zero = PetscRealConstant(+0.0); 17 PetscReal neg_one = PetscRealConstant(-1.0); 18 PetscReal pos_one = PetscRealConstant(+1.0); 19 PetscReal neg_inf = neg_one/zero; /* -inf */ 20 PetscReal pos_inf = pos_one/zero; /* +inf */ 21 PetscReal x_nan = zero/zero; /* NaN */ 22 23 PetscErrorCode ierr; 24 ierr = PetscInitialize(&argc,&argv,NULL,help);if (ierr) return ierr; 25 26 CALL(PetscIsInfReal(neg_zero)); 27 CALL(PetscIsInfReal(pos_zero)); 28 CALL(PetscIsInfReal(neg_one)); 29 CALL(PetscIsInfReal(pos_one)); 30 CALL(PetscIsInfReal(neg_inf)); 31 CALL(PetscIsInfReal(pos_inf)); 32 CALL(PetscIsInfReal(x_nan)); 33 34 CALL(PetscIsNanReal(neg_zero)); 35 CALL(PetscIsNanReal(pos_zero)); 36 CALL(PetscIsNanReal(neg_one)); 37 CALL(PetscIsNanReal(pos_one)); 38 CALL(PetscIsNanReal(neg_inf)); 39 CALL(PetscIsNanReal(pos_inf)); 40 CALL(PetscIsNanReal(x_nan)); 41 42 ierr = PetscFinalize(); 43 return ierr; 44 } 45 46 47 /*TEST 48 49 test: 50 output_file: output/ex34.out 51 52 TEST*/ 53