      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