Mac binaries
[jabaws.git] / website / archive / binaries / mac / src / disembl / Tisean_3.0.1 / source_f / store_spec.f
1 c===========================================================================
2 c
3 c   This file is part of TISEAN
4
5 c   Copyright (c) 1998-2007 Rainer Hegger, Holger Kantz, Thomas Schreiber
6
7 c   TISEAN is free software; you can redistribute it and/or modify
8 c   it under the terms of the GNU General Public License as published by
9 c   the Free Software Foundation; either version 2 of the License, or
10 c   (at your option) any later version.
11 c
12 c   TISEAN is distributed in the hope that it will be useful,
13 c   but WITHOUT ANY WARRANTY; without even the implied warranty of
14 c   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 c   GNU General Public License for more details.
16 c
17 c   You should have received a copy of the GNU General Public License
18 c   along with TISEAN; if not, write to the Free Software
19 c   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
20 c
21 c===========================================================================
22 c   store data periodogram of x 
23 c   if iback.ne.0 transform back to get autocorrelation instead
24 C   author Thomas Schreiber (1998)
25 c===========================================================================
26       subroutine store_spec(nmax,x,iback)
27       parameter(nx=1000000)
28       dimension x(nmax), w1(nx), w2(nx), iw(15)
29       save w2, iw
30
31       if(nmax.gt.nx) stop "store_spec: make nx larger."
32       call rffti1(nmax,w2,iw)  
33       call rfftf1(nmax,x,w1,w2,iw)
34       do 10 n=1,nmax
35  10      x(n)=x(n)/real(nmax)
36       x(1)=x(1)**2
37       do 20 n=2,(nmax+1)/2
38          amp=x(2*n-2)**2+x(2*n-1)**2
39          pha=atan2(x(2*n-1),x(2*n-2))
40          x(2*n-2)=amp
41  20      x(2*n-1)=pha
42       if(mod(nmax,2).eq.0) x(nmax)=x(nmax)**2
43       if(iback.eq.0) return
44       do 30 n=1,nmax
45  30      x(n)=x(n)*nmax
46       do 40 n=2,(nmax+1)/2
47  40      x(2*n-1)=0
48       call rfftb1(nmax,x,w1,w2,iw)
49       end