subroutine sftrnx(m,n,f,idf,ws)
c
integer m,n,idf
real f(idf,*)
real ws(*)
c
c performs n sine transforms. the transform is unscaled.
c note that this transform must be scaled up by a factor
c two in order to correspond to the transform described
c in chapter 4.2 of "numerical solution of the biharmonic
c equation."
c m must be odd.(when ssint is called.)
c workspace ws must have at least int(2.5*m+15) elements.
c note that routine ssint overwrites f(m+1,j).
c
c local.
c
c fourier: ssinti, dsint (swarztrauber version 3.)
c
integer j
real x1
c
call ssinti(m,ws)
do 500 j=1,n
x1 = f(m+1,j)
call ssint(m,f(1,j),ws)
f(m+1,j) = x1
500 continue
return
end