source: LMDZ5/branches/LMDZ5-DOFOCO/tools/Max_diff_nc_with_lib/NR_util/zroots_unity.f90 @ 2955

Last change on this file since 2955 was 1765, checked in by lguez, 11 years ago

A tool to compare NetCDF files.

File size: 694 bytes
Line 
1module zroots_unity_m
2
3  implicit none
4
5contains
6
7  FUNCTION zroots_unity(n, nn)
8
9    ! Returns nn powers of the nth root of unity.
10
11    USE nrtype, only: wp, twopi
12
13    INTEGER, INTENT(IN) :: n, nn
14    COMPLEX(WP) zroots_unity(nn)
15
16    ! Local:
17    INTEGER k
18    REAL(WP) :: theta
19
20    !-------------------------------------------------
21
22    zroots_unity(1) = 1.
23    theta = TWOPI / n
24    k=1
25    do
26       if (k >= nn) exit
27       zroots_unity(k + 1) = cmplx(cos(k * theta), sin(k * theta), WP)
28       zroots_unity(k + 2: min(2 * k, nn)) = zroots_unity(k + 1) &
29            * zroots_unity(2: min(k, nn - k))
30       k = 2 * k
31    end do
32
33  END FUNCTION zroots_unity
34
35end module zroots_unity_m
Note: See TracBrowser for help on using the repository browser.