# Runtime error 112

Tags:
1. Oct 17, 2015

### Hejmore

Hi, I try to write program to calculating mach number, with using bisection method. When I run program, fortran write to me an error in line 40. Can you help? I tried to calculating function by using wolfram sucesfully but I need to run it on fortran, An equation is 1.7795 - (0.334898 (1 + 0.2 x^2)^6.)/x^2. Can you help me? Thx

My error code:
Code (Fortran):

program mach
real pp,z1,z2,sucin,a,b,x,machx,a1

pp=1
a1=0.1
b=3

z1=pp**2-(0.334898*(1+0.2*a1**2)**6)/a1**2
z2=pp**2-(0.334898*(1+0.2*b**2)**6)/b**2

sucin=z1*z2

if(sucin.lt.0) go to 1

if(sucin.gt.0) go to 3

1 continue

do
a=a1
a1=(b+a)/2

z1=pp**2-(0.334898*(1+0.2*a1**2)**6)/a1**2
z2=pp**2-(0.334898*(1+0.2*b**2)**6)/b**2

sucin=z1*z2
machx=a
x=abs(b-a)

if(x.lt.0.0001) exit

if(sucin.lt.0) cycle

if(sucin.gt.0) go to 2
end do

2 continue

do
b=a1
a1=(b+a)/2

z1=pp**2-(0.334898*(1+0.2*a**2)**6)/a**2
z2=pp**2-(0.334898*(1+0.2*a1**2)**6)/a1**2

sucin=z1*z2
machx=b
x=abs((b-a))

if(x.lt.0.0001) exit

if(sucin.lt.0) cycle

if(sucin.gt.0) go to 1
end do

3 continue

print*,'Mach number is'
write(5,*) machx

stop

end program mach

Last edited by a moderator: Oct 17, 2015
2. Oct 17, 2015

### Hejmore

Problem is solved.

3. Oct 17, 2015

### Staff: Mentor

That's great.

What was the actual error and how did you solve it?

4. Oct 17, 2015

### Hejmore

You can see, the condition if( sucin.gt.0)go to 3 in line 10 is wrong. If I use only bisection method, the program will not work correctly, because i must to find extreme of the function and then must to choose right interval. I had to use a next numerical method to find extrem and then I could solve this problem. I would be glad if you find some more elegant solution for solving this function. Thx