home *** CD-ROM | disk | FTP | other *** search
- *****Listing 2*****
-
- #include <stdio.h>
- #include <setjmp.h>
-
- main()
- {
- double value, result;
- jmp_buf context;
- double mysqrt(double value, jmp_buf context);
-
- while (1) {
- if (setjmp(context) != 0)
- printf("Value is out of the domain for sqrt\n");
-
- printf("Enter fp value: ");
- scanf("%lf", &value);
- if (value == -1.0)
- return;
- result = mysqrt(value, context);
- printf("sqrt(%f) = %f\n", value, result);
- }
- }
-
-
- #include <errno.h>
- #include <math.h>
-
- double mysqrt(double value, jmp_buf context)
- {
- double d;
-
- errno = 0;
- d = sqrt(value);
- if (errno == EDOM)
- longjmp(context, 1);
- else
- return (d);
- }
-
- Enter fp value: 1.234
- sqrt(1.234000) = 1.110856
- Enter fp value: 12345
- sqrt(12345.000000) = 111.108056
- Enter fp value: -0.000000
- sqrt(-0.000000) = -0.000000
- Enter fp value: -0.0000001
- Value is out of the domain for sqrt
- Enter fp value: -5
- Value is out of the domain for sqrt
-
-