ParaMonte Fortran 2.0.0
Parallel Monte Carlo and Machine Learning Library
See the latest version documentation.
pm_fftnr::getFFTI Interface Reference

Generate and return the Inverse (normalized by 2 / size(data)) Fourier Transform of a periodic sequence of type complex or real of arbitrary kind parameter. More...

Detailed Description

Generate and return the Inverse (normalized by 2 / size(data)) Fourier Transform of a periodic sequence of type complex or real of arbitrary kind parameter.

See the documentation of pm_fftnr for more details.

Parameters
[in]data: The input contiguous vector of arbitrary size of,
  1. type complex of kind any supported by the processor (e.g., CK, CK32, CK64, or CK128),
  2. type real of kind any supported by the processor (e.g., RK, RK32, RK64, or RK128),
containing the periodic sequence whose FFT is to be computed.
Returns
fft : The output vector of size getExpNext(size(data), 2) of the same type and kind as the input data, containing the FFT result.


Possible calling interfaces

use pm_fftnr, only: getFFTI
type_of(data) :: fft(1 : getExpNext(size(data)))
fft(:) = getFFTI(data(:))
Generate and return the Inverse (normalized by 2 / size(data)) Fourier Transform of a periodic sequen...
Definition: pm_fftnr.F90:428
This module contains procedures and generic interfaces for computing the Discrete Fourier Transform o...
Definition: pm_fftnr.F90:184
Remarks
The procedures under discussion are impure.
Note
This functional generic interface is simply a more flexible but slower wrapper around the subroutine generic interface setFFTR.
As such, this functional interface can be significantly slower than the corresponding subroutine interface.
See also
getFFTF
getFFTR
getFFTI
setFFTF
setFFTR
setFFTI


Example usage

1program example
2
3 use pm_kind, only: SK, IK, LK
4 use pm_io, only: display_type
5 use pm_fftnr, only: getFFTF, getFFTI
6 use pm_distUnif, only: getUnifRand
7 use pm_mathCompare, only: isClose
8 use pm_err, only: setAsserted
9
10 implicit none
11
12 integer(IK) :: i
13 integer(IK) :: lenData
14 type(display_type) :: disp
15 disp = display_type(file = "main.out.F90")
16
17 do i = 1, 5
18 block
19 use pm_kind, only: TKG => CKS
20 real(TKG) :: reltol
21 complex(TKG), allocatable :: data(:), atad(:)
22 call disp%show("lenData = getUnifRand(5, 100)")
23 lenData = getUnifRand(5, 100)
24 call disp%show("lenData")
25 call disp%show( lenData )
26 call disp%show("data = 1._TKG + getUnifRand((0._TKG, 0._TKG), (1._TKG, 1._TKG), lenData)")
27 data = 1._TKG + getUnifRand((0._TKG, 0._TKG), (1._TKG, 1._TKG), lenData)
28 call disp%show("data")
29 call disp%show( data )
30 call disp%skip()
31 call disp%show("atad = getFFTI(getFFTF(data))")
32 atad = getFFTI(getFFTF(data))
33 call disp%show("atad")
34 call disp%show( atad )
35 call disp%show("reltol = sqrt(epsilon(1._TKG))")
36 reltol = sqrt(epsilon(1._TKG))
37 call disp%show("reltol")
38 call disp%show( reltol )
39 call disp%show("isClose(data, atad(1:size(data)), reltol = reltol)")
40 call disp%show( isClose(data, atad(1:size(data)), reltol = reltol) )
41 call disp%show("call setAsserted(all(isClose(data, atad(1:size(data)), reltol = reltol)))")
42 call setAsserted(all(isClose(data, atad(1:size(data)), reltol = reltol)))
43 call disp%skip()
44 end block
45
46 block
47 use pm_kind, only: TKG => CKD
48 real(TKG) :: reltol
49 complex(TKG), allocatable :: data(:), atad(:)
50 call disp%show("lenData = getUnifRand(5, 100)")
51 lenData = getUnifRand(5, 100)
52 call disp%show("lenData")
53 call disp%show( lenData )
54 call disp%show("data = 1._TKG + getUnifRand((0._TKG, 0._TKG), (1._TKG, 1._TKG), lenData)")
55 data = 1._TKG + getUnifRand((0._TKG, 0._TKG), (1._TKG, 1._TKG), lenData)
56 call disp%show("data")
57 call disp%show( data )
58 call disp%skip()
59 call disp%show("atad = getFFTI(getFFTF(data))")
60 atad = getFFTI(getFFTF(data))
61 call disp%show("atad")
62 call disp%show( atad )
63 call disp%show("reltol = sqrt(epsilon(1._TKG))")
64 reltol = sqrt(epsilon(1._TKG))
65 call disp%show("reltol")
66 call disp%show( reltol )
67 call disp%show("isClose(data, atad(1:size(data)), reltol = reltol)")
68 call disp%show( isClose(data, atad(1:size(data)), reltol = reltol) )
69 call disp%show("call setAsserted(all(isClose(data, atad(1:size(data)), reltol = reltol)))")
70 call setAsserted(all(isClose(data, atad(1:size(data)), reltol = reltol)))
71 call disp%skip()
72 end block
73
74 block
75 use pm_kind, only: TKG => CKH
76 real(TKG) :: reltol
77 complex(TKG), allocatable :: data(:), atad(:)
78 call disp%show("lenData = getUnifRand(5, 100)")
79 lenData = getUnifRand(5, 100)
80 call disp%show("lenData")
81 call disp%show( lenData )
82 call disp%show("data = 1._TKG + getUnifRand((0._TKG, 0._TKG), (1._TKG, 1._TKG), lenData)")
83 data = 1._TKG + getUnifRand((0._TKG, 0._TKG), (1._TKG, 1._TKG), lenData)
84 call disp%show("data")
85 call disp%show( data )
86 call disp%skip()
87 call disp%show("atad = getFFTI(getFFTF(data))")
88 atad = getFFTI(getFFTF(data))
89 call disp%show("atad")
90 call disp%show( atad )
91 call disp%show("reltol = sqrt(epsilon(1._TKG))")
92 reltol = sqrt(epsilon(1._TKG))
93 call disp%show("reltol")
94 call disp%show( reltol )
95 call disp%show("isClose(data, atad(1:size(data)), reltol = reltol)")
96 call disp%show( isClose(data, atad(1:size(data)), reltol = reltol) )
97 call disp%show("call setAsserted(all(isClose(data, atad(1:size(data)), reltol = reltol)))")
98 call setAsserted(all(isClose(data, atad(1:size(data)), reltol = reltol)))
99 call disp%skip()
100 end block
101
102 block
103 use pm_kind, only: TKG => RKS
104 real(TKG) :: reltol
105 real(TKG), allocatable :: data(:), atad(:)
106 call disp%show("lenData = getUnifRand(5, 100)")
107 lenData = getUnifRand(5, 100)
108 call disp%show("lenData")
109 call disp%show( lenData )
110 call disp%show("data = 1._TKG + getUnifRand(0._TKG, 1._TKG, lenData)")
111 data = 1._TKG + getUnifRand(0._TKG, 1._TKG, lenData)
112 call disp%show("data")
113 call disp%show( data )
114 call disp%skip()
115 call disp%show("atad = getFFTI(getFFTF(data))")
116 atad = getFFTI(getFFTF(data))
117 call disp%show("atad")
118 call disp%show( atad )
119 call disp%show("reltol = sqrt(epsilon(1._TKG))")
120 reltol = sqrt(epsilon(1._TKG))
121 call disp%show("reltol")
122 call disp%show( reltol )
123 call disp%show("isClose(data, atad(1:size(data)), reltol = reltol)")
124 call disp%show( isClose(data, atad(1:size(data)), reltol = reltol) )
125 call disp%show("call setAsserted(all(isClose(data, atad(1:size(data)), reltol = reltol)))")
126 call setAsserted(all(isClose(data, atad(1:size(data)), reltol = reltol)))
127 call disp%skip()
128 end block
129
130 block
131 use pm_kind, only: TKG => RKD
132 real(TKG) :: reltol
133 real(TKG), allocatable :: data(:), atad(:)
134 call disp%show("lenData = getUnifRand(5, 100)")
135 lenData = getUnifRand(5, 100)
136 call disp%show("lenData")
137 call disp%show( lenData )
138 call disp%show("data = 1._TKG + getUnifRand(0._TKG, 1._TKG, lenData)")
139 data = 1._TKG + getUnifRand(0._TKG, 1._TKG, lenData)
140 call disp%show("data")
141 call disp%show( data )
142 call disp%skip()
143 call disp%show("atad = getFFTI(getFFTF(data))")
144 atad = getFFTI(getFFTF(data))
145 call disp%show("atad")
146 call disp%show( atad )
147 call disp%show("reltol = sqrt(epsilon(1._TKG))")
148 reltol = sqrt(epsilon(1._TKG))
149 call disp%show("reltol")
150 call disp%show( reltol )
151 call disp%show("isClose(data, atad(1:size(data)), reltol = reltol)")
152 call disp%show( isClose(data, atad(1:size(data)), reltol = reltol) )
153 call disp%show("call setAsserted(all(isClose(data, atad(1:size(data)), reltol = reltol)))")
154 call setAsserted(all(isClose(data, atad(1:size(data)), reltol = reltol)))
155 call disp%skip()
156 end block
157
158 block
159 use pm_kind, only: TKG => RKH
160 real(TKG) :: reltol
161 real(TKG), allocatable :: data(:), atad(:)
162 call disp%show("lenData = getUnifRand(5, 100)")
163 lenData = getUnifRand(5, 100)
164 call disp%show("lenData")
165 call disp%show( lenData )
166 call disp%show("data = 1._TKG + getUnifRand(0._TKG, 1._TKG, lenData)")
167 data = 1._TKG + getUnifRand(0._TKG, 1._TKG, lenData)
168 call disp%show("data")
169 call disp%show( data )
170 call disp%skip()
171 call disp%show("atad = getFFTI(getFFTF(data))")
172 atad = getFFTI(getFFTF(data))
173 call disp%show("atad")
174 call disp%show( atad )
175 call disp%show("reltol = sqrt(epsilon(1._TKG))")
176 reltol = sqrt(epsilon(1._TKG))
177 call disp%show("reltol")
178 call disp%show( reltol )
179 call disp%show("isClose(data, atad(1:size(data)), reltol = reltol)")
180 call disp%show( isClose(data, atad(1:size(data)), reltol = reltol) )
181 call disp%show("call setAsserted(all(isClose(data, atad(1:size(data)), reltol = reltol)))")
182 call setAsserted(all(isClose(data, atad(1:size(data)), reltol = reltol)))
183 call disp%skip()
184 end block
185 end do
186
187end program example
Generate and return a scalar or a contiguous array of rank 1 of length s1 of randomly uniformly distr...
Verify the input assertion holds and if it does not, print the (optional) input message on stdout and...
Definition: pm_err.F90:735
Generate and return an object of type stop_type with the user-specified input attributes.
Definition: pm_err.F90:1618
Generate and return the Forward Fourier Transform (a.k.a. Fourier Analysis) of a periodic sequence of...
Definition: pm_fftnr.F90:250
This is a generic method of the derived type display_type with pass attribute.
Definition: pm_io.F90:11508
Generate and return .true. if the two input values are sufficiently close to each other within the sp...
This module contains classes and procedures for computing various statistical quantities related to t...
This module contains classes and procedures for reporting and handling errors.
Definition: pm_err.F90:52
This module contains classes and procedures for input/output (IO) or generic display operations on st...
Definition: pm_io.F90:252
type(display_type) disp
This is a scalar module variable an object of type display_type for general display.
Definition: pm_io.F90:11393
This module defines the relevant Fortran kind type-parameters frequently used in the ParaMonte librar...
Definition: pm_kind.F90:268
integer, parameter LK
The default logical kind in the ParaMonte library: kind(.true.) in Fortran, kind(....
Definition: pm_kind.F90:541
integer, parameter CKH
The scalar integer constant of intrinsic default kind, representing the highest-precision complex kin...
Definition: pm_kind.F90:843
integer, parameter CKS
The single-precision complex kind in Fortran mode. On most platforms, this is a 32-bit real kind.
Definition: pm_kind.F90:570
integer, parameter IK
The default integer kind in the ParaMonte library: int32 in Fortran, c_int32_t in C-Fortran Interoper...
Definition: pm_kind.F90:540
integer, parameter CKD
The double precision complex kind in Fortran mode. On most platforms, this is a 64-bit real kind.
Definition: pm_kind.F90:571
integer, parameter RKD
The double precision real kind in Fortran mode. On most platforms, this is an 64-bit real kind.
Definition: pm_kind.F90:568
integer, parameter SK
The default character kind in the ParaMonte library: kind("a") in Fortran, c_char in C-Fortran Intero...
Definition: pm_kind.F90:539
integer, parameter RKH
The scalar integer constant of intrinsic default kind, representing the highest-precision real kind t...
Definition: pm_kind.F90:858
integer, parameter RKS
The single-precision real kind in Fortran mode. On most platforms, this is an 32-bit real kind.
Definition: pm_kind.F90:567
This module contains the procedures and interfaces for evaluating the relative or absolute proximity ...
Generate and return an object of type display_type.
Definition: pm_io.F90:10282

Example Unix compile command via Intel ifort compiler
1#!/usr/bin/env sh
2rm main.exe
3ifort -fpp -standard-semantics -O3 -Wl,-rpath,../../../lib -I../../../inc main.F90 ../../../lib/libparamonte* -o main.exe
4./main.exe

Example Windows Batch compile command via Intel ifort compiler
1del main.exe
2set PATH=..\..\..\lib;%PATH%
3ifort /fpp /standard-semantics /O3 /I:..\..\..\include main.F90 ..\..\..\lib\libparamonte*.lib /exe:main.exe
4main.exe

Example Unix / MinGW compile command via GNU gfortran compiler
1#!/usr/bin/env sh
2rm main.exe
3gfortran -cpp -ffree-line-length-none -O3 -Wl,-rpath,../../../lib -I../../../inc main.F90 ../../../lib/libparamonte* -o main.exe
4./main.exe

Example output
1lenData = getUnifRand(5, 100)
2lenData
3+12
4data = 1._TKG + getUnifRand((0._TKG, 0._TKG), (1._TKG, 1._TKG), lenData)
5data
6(+1.60369337, +0.604437888), (+1.89323521, +0.328545332), (+1.91244769, +0.601616323), (+1.92673087, +0.363423765), (+1.46782923, +0.397505820), (+1.21840692, +0.807026029E-1), (+1.02808046, +0.232863486), (+1.47297263, +0.185856283), (+1.92338920, +0.831554472), (+1.92616999, +0.934404135), (+1.26729321, +0.690473974), (+1.66360438, +0.618965864)
7
8atad = getFFTI(getFFTF(data))
9atad
10(+1.60369325, +0.604437828), (+1.89323521, +0.328545421), (+1.91244733, +0.601616383), (+1.92673075, +0.363424003), (+1.46782911, +0.397505730), (+1.21840715, +0.807024837E-1), (+1.02808046, +0.232863367), (+1.47297263, +0.185856208), (+1.92338896, +0.831554413), (+1.92616987, +0.934404135), (+1.26729310, +0.690473795), (+1.66360414, +0.618965805), (-0.119209290E-6, +0.149011612E-6), (+0.596046448E-7, -0.596046448E-7), (+0.119209290E-6, +0.238418579E-6), (+0.238418579E-6, +0.447034836E-7)
11reltol = sqrt(epsilon(1._TKG))
12reltol
13+0.345266977E-3
14isClose(data, atad(1:size(data)), reltol = reltol)
15T, T, T, T, T, T, T, T, T, T, T, T
16call setAsserted(all(isClose(data, atad(1:size(data)), reltol = reltol)))
17
18lenData = getUnifRand(5, 100)
19lenData
20+79
21data = 1._TKG + getUnifRand((0._TKG, 0._TKG), (1._TKG, 1._TKG), lenData)
22data
23(+1.5033865230145880, +0.83766602494672271), (+1.9392695230952970, +0.41682096731030172), (+1.0033216722434408, +0.55286789724070484), (+1.3037920862855008, +0.48553967207386928), (+1.9566783340973926, +0.94510147742790962), (+1.2229682390592522, +0.91587499970717023E-1), (+1.8843942309379087, +0.95438715292583454), (+1.6070593604636714, +0.71497655220785106E-1), (+1.3540675273938707, +0.67146999976327570), (+1.1822358136120039, +0.89188360083509477), (+1.6954557713861416, +0.49519844585455675), (+1.2119930822125957, +0.81581641612345346), (+1.5907549830425274, +0.53689517636547668), (+1.6977510387149368, +0.75680602014348575), (+1.2522791356569738, +0.64106925195476139), (+1.3304501641577553, +0.22633820517489844), (+1.6321361235478005, +0.93252951448959476), (+1.0465548244549474, +0.38427223987424708E-1), (+1.1989921103867220, +0.47899928935648739), (+1.7696447087327685, +0.39301001729650242), (+1.0779875726558121, +0.95211249335414472), (+1.6452410471223557, +0.86548531619172020), (+1.7516840692011950, +0.22005512058764831), (+1.2649065353102764, +0.99168302097812266), (+1.6176379984631750, +0.58735021685326916), (+1.4451735750298838, +0.17587771618119796), (+1.5966707301850405, +0.65505843862372648), (+1.1659276832355132, +0.88404271815026225), (+1.3711112179569847, +0.94332408187246530E-1), (+1.8520790439080372, +0.48717543746026937), (+1.6202272275554781, +0.66426284549092018), (+1.7029424022674622, +0.44646811193568958), (+1.1456821365394974, +0.17588902973450260), (+1.2121685367232209, +0.39211448607327581), (+1.6402704635252818, +0.14918706881814237), (+1.3532429427920283, +0.71123392833039167), (+1.9363141290869399, +0.70874582847588752), (+1.9351772090074995, +0.42032603801357160), (+1.1947928698832775, +0.35895916231191283), (+1.2881495050063387, +0.53878715944433497), (+1.4081251195958835, +0.26084684270389558), (+1.2711142448042900, +0.86032163233896242), (+1.1715942211596371, +0.23026914695251610), (+1.2996669743156870, +0.28934108569069883), (+1.7627155011310478, +0.28593225623474972), (+1.6415812774268450, +0.16296917944994327), (+1.9507228424871805, +0.97427377835893725), (+1.5132078942303222, +0.13957000298159905), (+1.0953879703147100, +0.43872814258005821E-3), (+1.5134012664299039, +0.51797800976194031), (+1.0008238992899208, +0.13598866153606726E-1), (+1.2430957814775692, +0.96752202161715328), (+1.1820493203385194, +0.42426644727850737), (+1.5043043613024913, +0.99728896357199093), (+1.7847741868551441, +0.46969012853035008), (+1.5562953676344486, +0.72452655977383607), (+1.5647552541671743, +0.53693968816881821E-1), (+1.6249068663398263, +0.22882989988015690), (+1.8339528069033391, +0.91789588704609326), (+1.8772718802009782, +0.53513524494043008), (+1.8288449282885075, +0.45140518534133356), (+1.9264901363707658, +0.65297101279009295), (+1.1442922648296052, +0.87355204599301473), (+1.6507780829910037, +0.77198770595206490), (+1.1767177305807333, +0.40103325480445029), (+1.8581960745754791, +0.61904811815808236), (+1.0413787497230320, +0.15365610182623779), (+1.7298294403889303, +0.98161936207001754E-1), (+1.3559719910055437, +0.86372581631336987), (+1.2058297754172689, +0.78150342153831054), (+1.4608984860086971, +0.40775467016031430), (+1.0528085516902181, +0.24233819186858785), (+1.5991351951805812, +0.60335074045925119), (+1.6691287131801131, +0.57206328415181185), (+1.8549737247583504, +0.58355329308272363E-1), (+1.1883926906182678, +0.62287432025093004), (+1.9534285531117366, +0.54088491052794596), (+1.9358981242218949, +0.53950072997663623), (+1.5034338769831530, +0.39325909849116325E-1)
24
25atad = getFFTI(getFFTF(data))
26atad
27(+1.5033865230145878, +0.83766602494672271), (+1.9392695230952972, +0.41682096731030194), (+1.0033216722434408, +0.55286789724070506), (+1.3037920862855013, +0.48553967207386955), (+1.9566783340973923, +0.94510147742790962), (+1.2229682390592520, +0.91587499970717245E-1), (+1.8843942309379087, +0.95438715292583476), (+1.6070593604636716, +0.71497655220785550E-1), (+1.3540675273938705, +0.67146999976327582), (+1.1822358136120039, +0.89188360083509477), (+1.6954557713861416, +0.49519844585455697), (+1.2119930822125955, +0.81581641612345357), (+1.5907549830425274, +0.53689517636547701), (+1.6977510387149362, +0.75680602014348586), (+1.2522791356569738, +0.64106925195476172), (+1.3304501641577553, +0.22633820517489878), (+1.6321361235478002, +0.93252951448959476), (+1.0465548244549472, +0.38427223987424750E-1), (+1.1989921103867220, +0.47899928935648739), (+1.7696447087327682, +0.39301001729650265), (+1.0779875726558119, +0.95211249335414461), (+1.6452410471223557, +0.86548531619172031), (+1.7516840692011948, +0.22005512058764842), (+1.2649065353102760, +0.99168302097812233), (+1.6176379984631748, +0.58735021685326927), (+1.4451735750298835, +0.17587771618119807), (+1.5966707301850405, +0.65505843862372659), (+1.1659276832355132, +0.88404271815026214), (+1.3711112179569849, +0.94332408187246933E-1), (+1.8520790439080368, +0.48717543746026959), (+1.6202272275554779, +0.66426284549092018), (+1.7029424022674617, +0.44646811193568958), (+1.1456821365394974, +0.17588902973450249), (+1.2121685367232204, +0.39211448607327559), (+1.6402704635252818, +0.14918706881814214), (+1.3532429427920283, +0.71123392833039145), (+1.9363141290869399, +0.70874582847588719), (+1.9351772090074992, +0.42032603801357138), (+1.1947928698832770, +0.35895916231191249), (+1.2881495050063387, +0.53878715944433486), (+1.4081251195958835, +0.26084684270389524), (+1.2711142448042898, +0.86032163233896242), (+1.1715942211596371, +0.23026914695251624), (+1.2996669743156870, +0.28934108569069850), (+1.7627155011310480, +0.28593225623474949), (+1.6415812774268446, +0.16296917944994299), (+1.9507228424871803, +0.97427377835893680), (+1.5132078942303218, +0.13957000298159888), (+1.0953879703147096, +0.43872814257986392E-3), (+1.5134012664299035, +0.51797800976194019), (+1.0008238992899208, +0.13598866153606656E-1), (+1.2430957814775685, +0.96752202161715295), (+1.1820493203385194, +0.42426644727850726), (+1.5043043613024909, +0.99728896357199048), (+1.7847741868551439, +0.46969012853034958), (+1.5562953676344482, +0.72452655977383551), (+1.5647552541671743, +0.53693968816881765E-1), (+1.6249068663398258, +0.22882989988015690), (+1.8339528069033393, +0.91789588704609315), (+1.8772718802009778, +0.53513524494042986), (+1.8288449282885075, +0.45140518534133323), (+1.9264901363707654, +0.65297101279009229), (+1.1442922648296054, +0.87355204599301428), (+1.6507780829910033, +0.77198770595206401), (+1.1767177305807330, +0.40103325480445018), (+1.8581960745754786, +0.61904811815808214), (+1.0413787497230322, +0.15365610182623790), (+1.7298294403889301, +0.98161936207001477E-1), (+1.3559719910055439, +0.86372581631336964), (+1.2058297754172684, +0.78150342153831043), (+1.4608984860086971, +0.40775467016031403), (+1.0528085516902184, +0.24233819186858740), (+1.5991351951805810, +0.60335074045925130), (+1.6691287131801125, +0.57206328415181185), (+1.8549737247583504, +0.58355329308272474E-1), (+1.1883926906182674, +0.62287432025092948), (+1.9534285531117366, +0.54088491052794563), (+1.9358981242218942, +0.53950072997663567), (+1.5034338769831530, +0.39325909849115992E-1), (+0.11102230246251565E-15, -0.98532293435482643E-15), (+0.0000000000000000, -0.11102230246251565E-15), (-0.22204460492503131E-15, -0.51347814888913490E-15), (+0.22204460492503131E-15, +0.27755575615628914E-16), (-0.22204460492503131E-15, -0.47184478546569153E-15), (+0.55511151231257827E-15, +0.11102230246251565E-15), (+0.11102230246251565E-15, -0.33306690738754696E-15), (+0.44408920985006262E-15, +0.11102230246251565E-15), (+0.33306690738754696E-15, -0.33306690738754696E-15), (+0.0000000000000000, -0.44408920985006262E-15), (+0.0000000000000000, -0.45796699765787707E-15), (+0.11102230246251565E-15, -0.22204460492503131E-15), (+0.0000000000000000, -0.27755575615628914E-15), (+0.33306690738754696E-15, -0.18041124150158794E-15), (+0.22204460492503131E-15, -0.44408920985006262E-15), (+0.11102230246251565E-15, +0.11102230246251565E-15), (+0.55511151231257827E-15, -0.13877787807814457E-15), (-0.11102230246251565E-15, +0.13877787807814457E-16), (+0.22204460492503131E-15, -0.11102230246251565E-15), (+0.0000000000000000, +0.37470027081099033E-15), (+0.0000000000000000, +0.0000000000000000), (-0.22204460492503131E-15, +0.49960036108132044E-15), (+0.0000000000000000, +0.24980018054066022E-15), (+0.11102230246251565E-15, +0.24980018054066022E-15), (+0.0000000000000000, +0.33306690738754696E-15), (-0.44408920985006262E-15, -0.27755575615628914E-16), (+0.22204460492503131E-15, -0.22204460492503131E-15), (+0.11102230246251565E-15, -0.27755575615628914E-16), (-0.11102230246251565E-15, +0.27755575615628914E-16), (+0.22204460492503131E-15, +0.19428902930940239E-15), (+0.0000000000000000, +0.55511151231257827E-16), (-0.11102230246251565E-15, +0.49960036108132044E-15), (+0.44408920985006262E-15, +0.40245584642661925E-15), (+0.11102230246251565E-15, +0.24980018054066022E-15), (+0.11102230246251565E-15, +0.0000000000000000), (+0.22204460492503131E-15, +0.20816681711721685E-15), (+0.22204460492503131E-15, +0.16653345369377348E-15), (+0.11102230246251565E-15, +0.47184478546569153E-15), (-0.11102230246251565E-15, +0.33306690738754696E-15), (+0.22204460492503131E-15, +0.83266726846886741E-15), (+0.33306690738754696E-15, +0.66613381477509392E-15), (-0.11102230246251565E-15, +0.16653345369377348E-15), (+0.22204460492503131E-15, +0.15265566588595902E-15), (+0.11102230246251565E-15, +0.27755575615628914E-15), (+0.11102230246251565E-15, +0.49960036108132044E-15), (+0.22204460492503131E-15, +0.63837823915946501E-15), (+0.22204460492503131E-15, +0.72164496600635175E-15), (-0.33306690738754696E-15, +0.77715611723760958E-15), (+0.33306690738754696E-15, +0.99920072216264089E-15)
28reltol = sqrt(epsilon(1._TKG))
29reltol
30+0.14901161193847656E-7
31isClose(data, atad(1:size(data)), reltol = reltol)
32T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T
33call setAsserted(all(isClose(data, atad(1:size(data)), reltol = reltol)))
34
35lenData = getUnifRand(5, 100)
36lenData
37+59
38data = 1._TKG + getUnifRand((0._TKG, 0._TKG), (1._TKG, 1._TKG), lenData)
39data
40(+1.17323499410519481796562654910156243, +0.916921644822015293900664288841764465), (+1.81250746557586499603561394375235725, +0.442870784093480649484411295926577243), (+1.39525057306772457742757108192435048, +0.629603384045048129733133062554770685), (+1.14255722105730983657889108777014525, +0.390641057145294178925933015776008495), (+1.46312293517813607676314399402986988, +0.376027771423891743586749492228028476), (+1.77464047420229427023271870155609417, +0.472538435946756995805893884019285648), (+1.21459465511967472633809121718883636, +0.274052493096906718276508798390466437), (+1.29943404597760036128546541427170208, +0.844665969782436781732442621650751683), (+1.05821351436854365110219416802445662, +0.236771709752657941494642341702529466), (+1.23883543409069792187415530834801795, +0.808058750449623414831305386834197761), (+1.08608455745928990118037941382753419, +0.284328176821091687953519837245921829), (+1.71481205494762857323326966426762720, +0.992366253744675239072072045620521362), (+1.71233643730231410998489144833285699, +0.906191294015697007550622769020538603), (+1.35473887052106003312444406138044291, +0.332520425755392371445303201674160025), (+1.32230271949810989663577308838412388, +0.545736251260941835196584483632246548), (+1.19577195562292179377295080553059318, +0.695799596347827313665113200554358330E-1), (+1.33928081792635640557657249290033138, +0.868074752357733477376223835813818189E-1), (+1.98862456196151179081190366661723832, +0.692499785272459126303381398130981508), (+1.31348221068145365211695158186229896, +0.562310782709768181162865671607143446), (+1.38145592955302202489870145899892206, +0.989956200601258342554875860476397812), (+1.72440105546725070474043587837685275, +0.207536159732452057229526592806164382), (+1.59031270721410723475412578548359543, +0.602005792045430501435924197630511656), (+1.16246176991786603430991606759936052, +0.712682635789546006118346491581554135), (+1.93495258693320155227864810920403745, +0.289478878378342581607770517450766354E-1), (+1.11930355723692665293194258771643651, +0.679469910900261485055567667247876543), (+1.93281967520572072459827546465387593, +0.481040041052838130799183272458227802), (+1.66903937779032029901037413709327074, +0.865602211301031736627861698317723146), (+1.60039525370709162761582866901042828, +0.167563206374041598076905721801502916), (+1.43394446593366088127296664458581030, +0.309523113120427986240318269976471819E-1), (+1.29534996421788841058628633703238774, +0.422095565106135897407510744339465027), (+1.03802453298154152471357127306659150, +0.708324473745406743856913774972044114E-1), (+1.15357947057659868347846566784035388, +0.648151796428443806311627746172601508E-1), (+1.67988701396200724364447424614479598, +0.168489661696479890216685533193326092), (+1.32517596831278271612322984648666368, +0.963318191567098481720581568996212046), (+1.25461588819561901202285747985225990, +0.867190886924935032140167497900374685), (+1.45433278043156424684020970061818400, +0.712496047167824595870524597084231833), (+1.55330663460426409325289287861025828, +0.919361535829495699269970157989352637), (+1.50195787097633646312520639193138971, +0.619247335069109816245337243619216973), (+1.01659762038563582202726742742528493, +0.215178348890482208693490121770737221), (+1.31945638589970663463432299452777871, +0.806727257114376767653824429301906741), (+1.40932503755442522482002916137285164, +0.242704723900892995412040460036224952), (+1.70630892082970471523936318688625915, +0.875696976220368724864616502807895162), (+1.98408071121674324410190707123798264, +0.883257418311859270029334106516531552), (+1.00942916620762264995587069918068028, +0.250325709864530234534973785333133147), (+1.15455174762305345646175316588249233, +0.368373817975236013001220168874156701), (+1.69062842541602419999239656809993475, +0.313124491839293564711573381590612353), (+1.93402340705497777041365458387993565, +0.855226653792015691883402730724174948), (+1.99578222282015197669053215062783320, +0.663307752325459777373408242533734767E-1), (+1.02327593663290131695949465673476052, +0.189302704038603129812019531246884614), (+1.65433696991740639487260879674252839, +0.177341524458840401295594652506246549), (+1.47985024878240686116770971760687760, +0.977909652701519217400162898895302274E-1), (+1.37800135704470525129612810158286367, +0.887371536726798436968132997113625787), (+1.49248759427912986863544833399092129, +0.130778547575843163072252083409914261), (+1.65737812329383947956272034018608095, +0.450524599744445621238255511134907645), (+1.43490184733123817454198191612600559, +0.513984436500306142356934805282390750), (+1.31066792624959893765980323672655078, +0.297154811320279249137643666976764394), (+1.77403428661400738399377572767678476, +0.351753208988609157029260584340719257), (+1.83682285972444625578852535994036758, +0.473052867684245235312512537180735711), (+1.48149409116432509560344832130665299, +0.195718998246960566996691454691727670)
41
42atad = getFFTI(getFFTF(data))
43atad
44(+1.17323499410519481796562654910156224, +0.916921644822015293900664288841764465), (+1.81250746557586499603561394375235706, +0.442870784093480649484411295926577147), (+1.39525057306772457742757108192435029, +0.629603384045048129733133062554770781), (+1.14255722105730983657889108777014506, +0.390641057145294178925933015776008592), (+1.46312293517813607676314399402987007, +0.376027771423891743586749492228028332), (+1.77464047420229427023271870155609455, +0.472538435946756995805893884019285600), (+1.21459465511967472633809121718883617, +0.274052493096906718276508798390466389), (+1.29943404597760036128546541427170189, +0.844665969782436781732442621650751683), (+1.05821351436854365110219416802445662, +0.236771709752657941494642341702529370), (+1.23883543409069792187415530834801795, +0.808058750449623414831305386834197761), (+1.08608455745928990118037941382753400, +0.284328176821091687953519837245921829), (+1.71481205494762857323326966426762720, +0.992366253744675239072072045620521169), (+1.71233643730231410998489144833285718, +0.906191294015697007550622769020538795), (+1.35473887052106003312444406138044311, +0.332520425755392371445303201674160121), (+1.32230271949810989663577308838412388, +0.545736251260941835196584483632246740), (+1.19577195562292179377295080553059280, +0.695799596347827313665113200554357608E-1), (+1.33928081792635640557657249290033119, +0.868074752357733477376223835813817949E-1), (+1.98862456196151179081190366661723793, +0.692499785272459126303381398130981508), (+1.31348221068145365211695158186229877, +0.562310782709768181162865671607143350), (+1.38145592955302202489870145899892206, +0.989956200601258342554875860476398004), (+1.72440105546725070474043587837685275, +0.207536159732452057229526592806164286), (+1.59031270721410723475412578548359562, +0.602005792045430501435924197630511656), (+1.16246176991786603430991606759936052, +0.712682635789546006118346491581554232), (+1.93495258693320155227864810920403745, +0.289478878378342581607770517450767558E-1), (+1.11930355723692665293194258771643651, +0.679469910900261485055567667247876543), (+1.93281967520572072459827546465387574, +0.481040041052838130799183272458227947), (+1.66903937779032029901037413709327055, +0.865602211301031736627861698317723146), (+1.60039525370709162761582866901042808, +0.167563206374041598076905721801502820), (+1.43394446593366088127296664458581030, +0.309523113120427986240318269976470375E-1), (+1.29534996421788841058628633703238774, +0.422095565106135897407510744339464931), (+1.03802453298154152471357127306659150, +0.708324473745406743856913774972043031E-1), (+1.15357947057659868347846566784035388, +0.648151796428443806311627746172601026E-1), (+1.67988701396200724364447424614479578, +0.168489661696479890216685533193326140), (+1.32517596831278271612322984648666348, +0.963318191567098481720581568996212046), (+1.25461588819561901202285747985225990, +0.867190886924935032140167497900374685), (+1.45433278043156424684020970061818381, +0.712496047167824595870524597084231833), (+1.55330663460426409325289287861025847, +0.919361535829495699269970157989353022), (+1.50195787097633646312520639193138990, +0.619247335069109816245337243619217165), (+1.01659762038563582202726742742528493, +0.215178348890482208693490121770737342), (+1.31945638589970663463432299452777871, +0.806727257114376767653824429301906741), (+1.40932503755442522482002916137285164, +0.242704723900892995412040460036224904), (+1.70630892082970471523936318688625876, +0.875696976220368724864616502807895066), (+1.98408071121674324410190707123798225, +0.883257418311859270029334106516531456), (+1.00942916620762264995587069918068028, +0.250325709864530234534973785333133147), (+1.15455174762305345646175316588249233, +0.368373817975236013001220168874156604), (+1.69062842541602419999239656809993475, +0.313124491839293564711573381590612257), (+1.93402340705497777041365458387993565, +0.855226653792015691883402730724174948), (+1.99578222282015197669053215062783282, +0.663307752325459777373408242533735249E-1), (+1.02327593663290131695949465673476033, +0.189302704038603129812019531246884638), (+1.65433696991740639487260879674252801, +0.177341524458840401295594652506246549), (+1.47985024878240686116770971760687760, +0.977909652701519217400162898895301311E-1), (+1.37800135704470525129612810158286348, +0.887371536726798436968132997113625691), (+1.49248759427912986863544833399092129, +0.130778547575843163072252083409914261), (+1.65737812329383947956272034018608095, +0.450524599744445621238255511134907790), (+1.43490184733123817454198191612600579, +0.513984436500306142356934805282391135), (+1.31066792624959893765980323672655078, +0.297154811320279249137643666976764779), (+1.77403428661400738399377572767678476, +0.351753208988609157029260584340719257), (+1.83682285972444625578852535994036739, +0.473052867684245235312512537180735663), (+1.48149409116432509560344832130665261, +0.195718998246960566996691454691727574), (+0.00000000000000000000000000000000000, +0.00000000000000000000000000000000000), (-0.288889491658085377958396691387739098E-33, -0.144444745829042688979198345693869549E-33), (-0.288889491658085377958396691387739098E-33, -0.264815367353244929795196967105427506E-33), (-0.288889491658085377958396691387739098E-33, -0.842594350669415685711990349880905702E-34), (+0.00000000000000000000000000000000000, -0.240741243048404481631997242823115915E-34)
45reltol = sqrt(epsilon(1._TKG))
46reltol
47+0.138777878078144567552953958511352539E-16
48isClose(data, atad(1:size(data)), reltol = reltol)
49T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T
50call setAsserted(all(isClose(data, atad(1:size(data)), reltol = reltol)))
51
52lenData = getUnifRand(5, 100)
53lenData
54+99
55data = 1._TKG + getUnifRand(0._TKG, 1._TKG, lenData)
56data
57+1.45566940, +1.69907236, +1.39878023, +1.92617130, +1.85524368, +1.48934746, +1.55837274, +1.80635285, +1.15185618, +1.70993972, +1.07805991, +1.52130628, +1.69242668, +1.41220260, +1.38900399, +1.28687596, +1.64090538, +1.21083045, +1.09199083, +1.03029442, +1.61444676, +1.49529648, +1.19947231, +1.41118979, +1.62469220, +1.54497123, +1.88811255, +1.55084646, +1.66256118, +1.02050114, +1.78744352, +1.40005505, +1.66805601, +1.75669765, +1.94660926, +1.46934164, +1.02532053, +1.04491806, +1.98483360, +1.82961869, +1.90175653, +1.65958059, +1.92587042, +1.57102025, +1.73400474, +1.58327055, +1.67836976, +1.84513938, +1.48188436, +1.42470050, +1.38653970, +1.42796898, +1.41606641, +1.39792156, +1.66360974, +1.65599608, +1.93766928, +1.02082419, +1.58931530, +1.83115888, +1.22528529, +1.82879400, +1.44809103, +1.99830234, +1.90076089, +1.22290778, +1.08732665, +1.91862655, +1.10834122, +1.31789327, +1.51124394, +1.43985105, +1.21195018, +1.94859552, +1.31491899, +1.99621379, +1.67562664, +1.90365815, +1.96038187, +1.94756770, +1.47807491, +1.60289025, +1.59631228, +1.55457127, +1.90437841, +1.00807369, +1.96613264, +1.85146868, +1.24719429, +1.73448205, +1.21920681, +1.02892554, +1.60806417, +1.34531093, +1.27890730, +1.08794427, +1.24716830, +1.83847785, +1.19777441
58
59atad = getFFTI(getFFTF(data))
60atad
61+1.45566952, +1.69907260, +1.39878023, +1.92617130, +1.85524344, +1.48934758, +1.55837250, +1.80635273, +1.15185618, +1.70993984, +1.07806027, +1.52130616, +1.69242668, +1.41220248, +1.38900411, +1.28687608, +1.64090538, +1.21083069, +1.09199095, +1.03029442, +1.61444664, +1.49529648, +1.19947231, +1.41118991, +1.62469208, +1.54497123, +1.88811255, +1.55084646, +1.66256106, +1.02050126, +1.78744328, +1.40005565, +1.66805601, +1.75669777, +1.94660926, +1.46934152, +1.02532053, +1.04491794, +1.98483348, +1.82961869, +1.90175653, +1.65958071, +1.92587066, +1.57102013, +1.73400486, +1.58327043, +1.67836988, +1.84513950, +1.48188424, +1.42470074, +1.38653970, +1.42796886, +1.41606629, +1.39792132, +1.66360974, +1.65599608, +1.93766916, +1.02082431, +1.58931518, +1.83115864, +1.22528529, +1.82879376, +1.44809103, +1.99830246, +1.90076101, +1.22290778, +1.08732688, +1.91862679, +1.10834146, +1.31789339, +1.51124406, +1.43985116, +1.21195030, +1.94859564, +1.31491935, +1.99621379, +1.67562675, +1.90365803, +1.96038210, +1.94756782, +1.47807503, +1.60289025, +1.59631205, +1.55457115, +1.90437841, +1.00807381, +1.96613276, +1.85146868, +1.24719417, +1.73448205, +1.21920681, +1.02892554, +1.60806406, +1.34531105, +1.27890766, +1.08794475, +1.24716854, +1.83847797, +1.19777441, -0.119209290E-6, +0.298023224E-6, +0.357627869E-6, +0.596046448E-7, +0.596046448E-6, +0.178813934E-6, +0.178813934E-6, +0.357627869E-6, -0.596046448E-7, +0.119209290E-6, +0.357627869E-6, +0.238418579E-6, +0.774860382E-6, +0.536441803E-6, +0.298023224E-6, +0.298023224E-6, +0.119209290E-6, +0.238418579E-6, +0.417232513E-6, +0.298023224E-6, +0.298023224E-6, +0.596046448E-6, +0.119209290E-6, +0.596046448E-6, +0.00000000, +0.119209290E-6, +0.119209290E-6, +0.00000000, +0.536441803E-6
62reltol = sqrt(epsilon(1._TKG))
63reltol
64+0.345266977E-3
65isClose(data, atad(1:size(data)), reltol = reltol)
66T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T
67call setAsserted(all(isClose(data, atad(1:size(data)), reltol = reltol)))
68
69lenData = getUnifRand(5, 100)
70lenData
71+26
72data = 1._TKG + getUnifRand(0._TKG, 1._TKG, lenData)
73data
74+1.5141841670680707, +1.4478184118256767, +1.7625762261060509, +1.0305102546646479, +1.4842722462341686, +1.4540502091847669, +1.0342110866976835, +1.7126932651260298, +1.8463792115512772, +1.5840652506862103, +1.1115140428180301, +1.7649824675161603, +1.4733155556863524, +1.8906416535603610, +1.7393451644500413, +1.9996935925626338, +1.1821685507849158, +1.8120617037618070, +1.94132543