# Infinite Loop somewhere in Fortran Code

Page 1 of 1

## 1 Replies - 3471 Views - Last Post: 22 November 2007 - 08:50 AMRate Topic: //<![CDATA[ rating = new ipb.rating( 'topic_rate_', { url: 'https://www.dreamincode.net/forums/index.php?app=forums&module=ajax&section=topics&do=rateTopic&t=37919&amp;s=3aeb1d64b1115fa6f299308c1b790bd7&md5check=' + ipb.vars['secure_hash'], cur_rating: 0, rated: 0, allow_rate: 0, multi_rate: 1, show_rate_text: true } ); //]]>

### #1 bobby19

Reputation: 0
• Posts: 2
• Joined: 21-November 07

# Infinite Loop somewhere in Fortran Code

Posted 22 November 2007 - 12:03 AM

Hi, I am writing a function that takes in a real data array and a key partition value, which will rearrange the array so that elements with a lower value than x are placed before the elements with values >= the partition value. It then returns the index of the last element of the array with a value less than the partition value.

We were given some pseudo-code which uses the idea that we start from the left and right and simultaneously switch elements using two loops excited together.

``` integer function partition_data( xdata, xmiddle )
implicit none

real, dimension(:) :: xdata
real :: xmiddle !INTENT?

integer ::  l = 1
integer ::  r = 16
real :: temp

do
if (xdata(l) < xmiddle) then
if (l == r) then
partition_data = l
exit
end if

l = l + 1

else

do
if (xdata(r) >= xmiddle) then
if (l == r) then
partition_data = l - 1
exit
end if

r = r - 1

else

temp = xdata(l)
xdata(l) = xdata(r)
xdata(r) = temp
exit
end if
end do

end if
end do

end function partition_data

```

With the xdata array

xdata = (/ 0.00392, 0.0251, 0.453, 0.667, 0.963, 0.838, 0.335, 0.975, &
0.796, 0.833, 0.345, 0.871, 0.0899, 0.888, 0.701, 0.735 /)

The xmiddle was set to 0.5 in the main test program.

When I compile, I seem to get an infinite loop and I cannot find where it is.

If anyone can spot where I went wrong, that would be great.

Is This A Good Question/Topic? 0

## Replies To: Infinite Loop somewhere in Fortran Code

### #2 NickDMax

Reputation: 2255
• Posts: 9,245
• Joined: 18-February 07

## Re: Infinite Loop somewhere in Fortran Code

Posted 22 November 2007 - 08:50 AM

I only see one way to get out of the outer loop:
```	   if (xdata(l) < xmiddle) then
if (l == r) then
partition_data = l
exit !!This will exit the do-loop
end if
```

course it has been a long time since I last used fortran.