source: LMDZ5/tags/proto-testing-20131015/tools/Max_diff_nc_with_lib/NR_util/zroots_unity.f90 @ 4175

Last change on this file since 4175 was 1795, checked in by Ehouarn Millour, 11 years ago

Version testing basee sur la r1794


Testing release based on r1794

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.