1c4762a1bSJed Brown static char help[] = "Tests IsInf/IsNan routines.\n"; 2c4762a1bSJed Brown 3c4762a1bSJed Brown #include <petscsys.h> 4c4762a1bSJed Brown 5c4762a1bSJed Brown PETSC_INTERN PetscReal zero; 6c4762a1bSJed Brown PetscReal zero = 0; 774ac20f2SStefano Zampini PETSC_INTERN PetscReal zero2; 874ac20f2SStefano Zampini PetscReal zero2 = 0; 9c4762a1bSJed Brown 109566063dSJacob Faibussowitsch #define CALL(call) PetscCall(PetscPrintf(PETSC_COMM_WORLD, "%-32s -> %s\n", #call, (call) ? "True" : "False")) 11c4762a1bSJed Brown main(int argc,char ** argv)12d71ae5a4SJacob Faibussowitschint main(int argc, char **argv) 13d71ae5a4SJacob Faibussowitsch { 14c4762a1bSJed Brown PetscReal neg_zero = PetscRealConstant(-0.0); 15c4762a1bSJed Brown PetscReal pos_zero = PetscRealConstant(+0.0); 16c4762a1bSJed Brown PetscReal neg_one = PetscRealConstant(-1.0); 17c4762a1bSJed Brown PetscReal pos_one = PetscRealConstant(+1.0); 18c4762a1bSJed Brown PetscReal neg_inf = neg_one / zero; /* -inf */ 19c4762a1bSJed Brown PetscReal pos_inf = pos_one / zero; /* +inf */ 2074ac20f2SStefano Zampini PetscReal x_nan = zero2 / zero; /* NaN */ /* some compilers may optimize out zero/zero and set x_nan = 1! */ 21c4762a1bSJed Brown 22327415f7SBarry Smith PetscFunctionBeginUser; 239566063dSJacob Faibussowitsch PetscCall(PetscInitialize(&argc, &argv, NULL, help)); 24c4762a1bSJed Brown 25c4762a1bSJed Brown CALL(PetscIsInfReal(neg_zero)); 26c4762a1bSJed Brown CALL(PetscIsInfReal(pos_zero)); 27c4762a1bSJed Brown CALL(PetscIsInfReal(neg_one)); 28c4762a1bSJed Brown CALL(PetscIsInfReal(pos_one)); 29c4762a1bSJed Brown CALL(PetscIsInfReal(neg_inf)); 30c4762a1bSJed Brown CALL(PetscIsInfReal(pos_inf)); 31c4762a1bSJed Brown CALL(PetscIsInfReal(x_nan)); 32c4762a1bSJed Brown 33c4762a1bSJed Brown CALL(PetscIsNanReal(neg_zero)); 34c4762a1bSJed Brown CALL(PetscIsNanReal(pos_zero)); 35c4762a1bSJed Brown CALL(PetscIsNanReal(neg_one)); 36c4762a1bSJed Brown CALL(PetscIsNanReal(pos_one)); 37c4762a1bSJed Brown CALL(PetscIsNanReal(neg_inf)); 38c4762a1bSJed Brown CALL(PetscIsNanReal(pos_inf)); 39c4762a1bSJed Brown CALL(PetscIsNanReal(x_nan)); 40c4762a1bSJed Brown 419566063dSJacob Faibussowitsch PetscCall(PetscFinalize()); 42b122ec5aSJacob Faibussowitsch return 0; 43c4762a1bSJed Brown } 44c4762a1bSJed Brown 45c4762a1bSJed Brown /*TEST 46c4762a1bSJed Brown 47c4762a1bSJed Brown test: 48*c4cfd3bbSStefano Zampini args: -fp_trap 0 49c4762a1bSJed Brown output_file: output/ex34.out 50c4762a1bSJed Brown 51c4762a1bSJed Brown TEST*/ 52