| ! Program to test the power (**) operator |
| program testpow |
| implicit none |
| real(kind=4) r, s, two |
| real(kind=8) :: q |
| complex(kind=4) :: c, z |
| real, parameter :: del = 0.0001 |
| integer i, j |
| |
| i = 2 |
| j = i ** 10 |
| if (abs (j - 1024) .gt. del) STOP 1 |
| j = i ** (-10) |
| if (abs (j - 0) .gt. del) STOP 2 |
| j = i ** 0 |
| if (abs (j - 1) .gt. del) STOP 3 |
| i = 1 |
| j = i ** 10 |
| if (abs (j - 1) .gt. del) STOP 4 |
| j = i ** (-10) |
| if (abs (j - 1) .gt. del) STOP 5 |
| j = i ** 0 |
| if (abs (j - 1) .gt. del) STOP 6 |
| i = -1 |
| j = i ** 10 |
| if (abs (j - 1) .gt. del) STOP 7 |
| j = i ** (-10) |
| if (abs (j - 1) .gt. del) STOP 8 |
| j = i ** 0 |
| if (abs (j - 1) .gt. del) STOP 9 |
| j = i ** 11 |
| if (abs (j - (-1)) .gt. del) STOP 10 |
| j = i ** (-11) |
| if (abs (j - (-1)) .gt. del) STOP 11 |
| |
| c = (2.0, 3.0) |
| z = c ** 2 |
| if (abs(z - (-5.0, 12.0)) .gt. del) STOP 12 |
| z = c ** 7 |
| if (abs(z - (6554.0, 4449.0)) .gt. del) STOP 13 |
| |
| two = 2.0 |
| |
| r = two ** 1 |
| if (abs (r - 2.0) .gt. del) STOP 14 |
| r = two ** 2 |
| if (abs (r - 4.0) .gt. del) STOP 15 |
| r = two ** 3 |
| if (abs (r - 8.0) .gt. del) STOP 16 |
| r = two ** 4 |
| if (abs (r - 16.0) .gt. del) STOP 17 |
| r = two ** 0 |
| if (abs (r - 1.0) .gt. del) STOP 18 |
| r = two ** (-1) |
| if (abs (r - 0.5) .gt. del) STOP 19 |
| r = two ** (-2) |
| if (abs (r - 0.25) .gt. del) STOP 20 |
| r = two ** (-4) |
| if (abs (r - 0.0625) .gt. del) STOP 21 |
| s = 3.0 |
| r = two ** s |
| if (abs (r - 8.0) .gt. del) STOP 22 |
| s = -3.0 |
| r = two ** s |
| if (abs (r - 0.125) .gt. del) STOP 23 |
| i = 3 |
| r = two ** i |
| if (abs (r - 8.0) .gt. del) STOP 24 |
| i = -3 |
| r = two ** i |
| if (abs (r - 0.125) .gt. del) STOP 25 |
| c = (2.0, 3.0) |
| c = c ** two |
| if (abs(c - (-5.0, 12.0)) .gt. del) STOP 26 |
| end program |