#include #include int main() { double var, nan, inf, minf, one, zero; inf = 1.0/0.0; minf = -1.0 * inf; nan = sqrt(-1.0); one = 1.0; zero = 0.0; printf("Using nan = %f, inf = %f and -inf = %f.\n\n", nan, inf, minf); // Check the 1 ** inf case. var = pow(1.1, inf); printf("1.1 ** inf is %f.\n", var); var = pow(1.0, inf); printf("1.0 ** inf is %f", var); var = pow(one, inf); // This produces incorrect results! printf(", %f.\n", var); var = pow(0.9, inf); printf("0.9 ** inf is %f.\n\n", var); // Check the 1 ** -inf case. var = pow(1.1, minf); printf("1.1 ** -inf is %f.\n", var); var = pow(1.0, minf); printf("1.0 ** -inf is %f", var); var = pow(one, minf); // This produces incorrect results! printf(", %f.\n", var); var = pow(0.9, minf); printf("0.9 ** -inf is %f.\n\n", var); // Check the -1 ** inf case. // var = pow(-1.1, inf); // Shouldn't this also be nan? // printf("-1.1 ** inf is %f.\n", var); // var = pow(-1.0, inf); // printf("-1.0 ** inf is %f.\n", var); // var = pow(-0.9, inf); // printf("-0.9 ** inf is %f.\n\n", var); // Check the -1 ** -inf case. // var = pow(-1.1, minf); // Shouldn't this also be nan? // printf("-1.1 ** -inf is %f.\n", var); // var = pow(-1.0, minf); // printf("-1.0 ** -inf is %f.\n", var); // var = pow(-0.9, minf); // printf("-0.9 ** -inf is %f.\n\n", var); // Check the nan cases. var = pow(1.0, nan); printf("1.0 ** nan is %f", var); var = pow(one, nan); // This produces incorrect results! printf(", %f.\n", var); var = pow(nan, 0.0); printf("nan ** 0.0 is %f", var); var = pow(nan, zero); // This produces incorrect results! printf(", %f.\n", var); return 0; }