|  | 
6#
 
 
 楼主|
发表于 2022-9-27 11:59:01
|
只看该作者 
矩阵操作运算合集编译问题续二
| 按老师提示, 请教如下: 盼复,谢谢!  
 问题1:                                                        附近程序行I
 ********************************************
 main.f90:14225:12:
 
 14225 |             a(i,j) = 0.0D+00
 |            1
 Error: Unclassifiable statement at (1)
 main.f90:17595:35:
 
 subroutine eulerian_inverse ( n, a )
 
 do j = 1, n
 
 do i = 1, n
 
 if ( i .lt. j ) then
 
 14225            a(i,j) = 0.0D+00
 
 else if ( i .eq. j ) then
 
 a(i,j) = 1.0D+00
 
 else if ( j .lt. i ) then
 
 dot = 0.0D+00
 do k = j, i - 1
 dot = dot + b(i,k) * a(k,j)
 end do
 a(i,j) = - dot
 
 end if
 
 end do
 
 end do
 
 return
 end
 
 
 ***********************************************
 问题2:                                                            附件程序行II
 ***********************************************
 main.f90:14237:12:
 
 14237 |             a(i,j) = - dot
 |            1
 Error: The function result on the lhs of the assignment at (1) must have the pointer attribute.
 
 subroutine eulerian_determinant ( n, determ )
 
 implicit none
 
 double precision determ
 integer n
 
 determ = 1.0D+00
 
 return
 end
 subroutine eulerian_inverse ( n, a )
 
 do j = 1, n
 
 do i = 1, n
 
 if ( i .lt. j ) then
 
 a(i,j) = 0.0D+00
 
 else if ( i .eq. j ) then
 
 a(i,j) = 1.0D+00
 
 else if ( j .lt. i ) then
 
 dot = 0.0D+00
 do k = j, i - 1
 dot = dot + b(i,k) * a(k,j)
 end do
 14237            a(i,j) = - dot
 
 end if
 
 end do
 
 end do
 
 return
 end
 subroutine exchange ( m, n, a )
 
 
 implicit none
 
 integer m
 integer n
 
 double precision a(m,n)
 integer i
 integer j
 
 do j = 1, n
 do i = 1, m
 if ( i + j .eq. n + 1 ) then
 a(i,j) = 1.0D+00
 else
 a(i,j) = 0.0D+00
 end if
 end do
 end do
 
 return
 end
 
 
 
 | 
 |