16 integer(IK) :: ndim, npnt, nsam, isam
18 type(display_type) :: disp
22 call disp%show(
"!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
23 call disp%show(
"!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
24 call disp%show(
"! Compute the Mahalanobis distance squared for real-valued arguments.")
25 call disp%show(
"!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
26 call disp%show(
"!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
32 real(RKG),
allocatable :: point(:,:), mahalSq(:,:), mean(:,:), invCov(:,:,:)
34 call disp%show(
"ndim = 3; npnt = 5; nsam = 2")
35 ndim
= 3; npnt
= 5; nsam
= 2
36 call disp%show(
"point = getUnifRand(0., 1., ndim, npnt)")
40 call disp%show(
"call setResized(mean, [ndim, nsam])")
42 call disp%show(
"call setResized(invCov, [ndim, ndim, nsam])")
46 call disp%show(
"invCov(:,:,isam) = getCovRand(mold = 1., ndim = ndim)")
47 invCov(:,:,isam)
= getCovRand(
mold = 1., ndim
= ndim)
48 call disp%show(
"mean(:,isam) = getFilled(isam - 1, ndim)")
56 call disp%show(
"call setResized(mahalSq, [nsam, npnt])")
60 call disp%show(
"call setDisMahalSq(mahalSq, point, invCov) ! for a set of ndim-dimensional points against nsam independent samples centered at origin.")
64 call disp%show(
"call setDisMahalSq(mahalSq, point, invCov, mean) ! for a set of ndim-dimensional points against nsam independent samples centered at mean.")
69 call disp%show(
"call setDisMahalSq(mahalSq(1:nsam, 1), point(1:ndim, 1), invCov) ! for a single ndim-dimensional point against nsam independent samples centered at origin.")
70 call setDisMahalSq(mahalSq(
1:nsam,
1), point(
1:ndim,
1), invCov)
73 call disp%show(
"call setDisMahalSq(mahalSq(1:nsam, 1), point(1:ndim, 1), invCov, mean) ! for a single ndim-dimensional point against nsam independent samples centered at mean.")
74 call setDisMahalSq(mahalSq(
1:nsam,
1), point(
1:ndim,
1), invCov, mean)
79 call disp%show(
"call setDisMahalSq(mahalSq(1, 1:npnt), point, invCov(:,:,1)) ! for a set of ndim-dimensional points against one sample centered at origin.")
83 call disp%show(
"call setDisMahalSq(mahalSq(1, 1:npnt), point, invCov(:,:,1), mean(:,1)) ! for a set of ndim-dimensional points against one sample centered at mean.")
84 call setDisMahalSq(mahalSq(
1,
1:npnt), point, invCov(:,:,
1), mean(:,
1))
88 call disp%show(
"call setDisMahalSq(mahalSq(1, 1), point(1:ndim, 1), invCov(:,:,1)) ! for a single ndim-dimensional point one sample centered at origin.")
89 call setDisMahalSq(mahalSq(
1,
1), point(
1:ndim,
1), invCov(:,:,
1))
92 call disp%show(
"call setDisMahalSq(mahalSq(1, 1), point(1:ndim, 1), invCov(:,:,1), mean(:,1)) ! for a single ndim-dimensional point one sample centered at mean.")
93 call setDisMahalSq(mahalSq(
1,
1), point(
1:ndim,
1), invCov(:,:,
1), mean(:,
1))
98 call disp%show(
"call setDisMahalSq(mahalSq(1, 1:npnt), point(1, 1:npnt), invCov(1,1,1)) ! for a set of single-dimensional points against one sample centered at origin.")
99 call setDisMahalSq(mahalSq(
1,
1:npnt), point(
1,
1:npnt), invCov(
1,
1,
1))
100 call disp%show(
"mahalSq(1, 1:npnt)")
101 call disp%show( mahalSq(
1,
1:npnt) )
102 call disp%show(
"call setDisMahalSq(mahalSq(1, 1:npnt), point(1, 1:npnt), invCov(1,1,1), mean(1,1)) ! for a set of single-dimensional points against one sample centered at mean.")
103 call setDisMahalSq(mahalSq(
1,
1:npnt), point(
1,
1:npnt), invCov(
1,
1,
1), mean(
1,
1))
104 call disp%show(
"mahalSq(1, 1:npnt)")
105 call disp%show( mahalSq(
1,
1:npnt) )
107 call disp%show(
"call setDisMahalSq(mahalSq(1, 1), point(1, 1), invCov(1,1,1)) ! for a single single-dimensional point one sample centered at origin.")
108 call setDisMahalSq(mahalSq(
1,
1), point(
1,
1), invCov(
1,
1,
1))
111 call disp%show(
"call setDisMahalSq(mahalSq(1, 1), point(1, 1), invCov(1,1,1), mean(1,1)) ! for a single single-dimensional point one sample centered at mean.")
112 call setDisMahalSq(mahalSq(
1,
1), point(
1,
1), invCov(
1,
1,
1), mean(
1,
1))
119 call disp%show(
"!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
120 call disp%show(
"!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
121 call disp%show(
"! Compute the Mahalanobis distance squared for complex-valued arguments.")
122 call disp%show(
"!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
123 call disp%show(
"!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
129 complex(CKG),
allocatable :: point(:,:), mahalSq(:,:), mean(:,:), invCov(:,:,:)
131 call disp%show(
"ndim = 3; npnt = 5; nsam = 2")
132 ndim
= 3; npnt
= 5; nsam
= 2
133 call disp%show(
"point = getUnifRand(0., 1., ndim, npnt)")
137 call disp%show(
"call setResized(mean, [ndim, nsam])")
139 call disp%show(
"call setResized(invCov, [ndim, ndim, nsam])")
143 call disp%show(
"invCov(:,:,isam) = getCovRand(mold = (1., 1.), ndim = ndim)")
144 invCov(:,:,isam)
= getCovRand(
mold = (
1.,
1.), ndim
= ndim)
145 call disp%show(
"mean(:,isam) = getFilled(isam - 1, ndim)")
153 call disp%show(
"call setResized(mahalSq, [nsam, npnt])")
157 call disp%show(
"call setDisMahalSq(mahalSq, point, invCov) ! for a set of ndim-dimensional points against nsam independent samples centered at origin.")
161 call disp%show(
"call setDisMahalSq(mahalSq, point, invCov, mean) ! for a set of ndim-dimensional points against nsam independent samples centered at mean.")
166 call disp%show(
"call setDisMahalSq(mahalSq(1:nsam, 1), point(1:ndim, 1), invCov) ! for a single ndim-dimensional point against nsam independent samples centered at origin.")
167 call setDisMahalSq(mahalSq(
1:nsam,
1), point(
1:ndim,
1), invCov)
168 call disp%show(
"mahalSq(1:nsam, 1)")
169 call disp%show( mahalSq(
1:nsam,
1) )
170 call disp%show(
"call setDisMahalSq(mahalSq(1:nsam, 1), point(1:ndim, 1), invCov, mean) ! for a single ndim-dimensional point against nsam independent samples centered at mean.")
171 call setDisMahalSq(mahalSq(
1:nsam,
1), point(
1:ndim,
1), invCov, mean)
172 call disp%show(
"mahalSq(1:nsam, 1)")
173 call disp%show( mahalSq(
1:nsam,
1) )
176 call disp%show(
"call setDisMahalSq(mahalSq(1, 1:npnt), point, invCov(:,:,1)) ! for a set of ndim-dimensional points against one sample centered at origin.")
178 call disp%show(
"mahalSq(1, 1:npnt)")
179 call disp%show( mahalSq(
1,
1:npnt) )
180 call disp%show(
"call setDisMahalSq(mahalSq(1, 1:npnt), point, invCov(:,:,1), mean(:,1)) ! for a set of ndim-dimensional points against one sample centered at mean.")
181 call setDisMahalSq(mahalSq(
1,
1:npnt), point, invCov(:,:,
1), mean(:,
1))
182 call disp%show(
"mahalSq(1, 1:npnt)")
183 call disp%show( mahalSq(
1,
1:npnt) )
185 call disp%show(
"call setDisMahalSq(mahalSq(1, 1), point(1:ndim, 1), invCov(:,:,1)) ! for a single ndim-dimensional point one sample centered at origin.")
186 call setDisMahalSq(mahalSq(
1,
1), point(
1:ndim,
1), invCov(:,:,
1))
189 call disp%show(
"call setDisMahalSq(mahalSq(1, 1), point(1:ndim, 1), invCov(:,:,1), mean(:,1)) ! for a single ndim-dimensional point one sample centered at mean.")
190 call setDisMahalSq(mahalSq(
1,
1), point(
1:ndim,
1), invCov(:,:,
1), mean(:,
1))
195 call disp%show(
"call setDisMahalSq(mahalSq(1, 1:npnt), point(1, 1:npnt), invCov(1,1,1)) ! for a set of single-dimensional points against one sample centered at origin.")
196 call setDisMahalSq(mahalSq(
1,
1:npnt), point(
1,
1:npnt), invCov(
1,
1,
1))
197 call disp%show(
"mahalSq(1, 1:npnt)")
198 call disp%show( mahalSq(
1,
1:npnt) )
199 call disp%show(
"call setDisMahalSq(mahalSq(1, 1:npnt), point(1, 1:npnt), invCov(1,1,1), mean(1,1)) ! for a set of single-dimensional points against one sample centered at mean.")
200 call setDisMahalSq(mahalSq(
1,
1:npnt), point(
1,
1:npnt), invCov(
1,
1,
1), mean(
1,
1))
201 call disp%show(
"mahalSq(1, 1:npnt)")
202 call disp%show( mahalSq(
1,
1:npnt) )
204 call disp%show(
"call setDisMahalSq(mahalSq(1, 1), point(1, 1), invCov(1,1,1)) ! for a single single-dimensional point one sample centered at origin.")
205 call setDisMahalSq(mahalSq(
1,
1), point(
1,
1), invCov(
1,
1,
1))
208 call disp%show(
"call setDisMahalSq(mahalSq(1, 1), point(1, 1), invCov(1,1,1), mean(1,1)) ! for a single single-dimensional point one sample centered at mean.")
209 call setDisMahalSq(mahalSq(
1,
1), point(
1,
1), invCov(
1,
1,
1), mean(
1,
1))
Generate and return an array of the specified rank and shape of arbitrary intrinsic type and kind wit...
Allocate or resize (shrink or expand) an input allocatable scalar string or array of rank 1....
Generate and return a random positive-definite (correlation or covariance) matrix using the Gram meth...
Generate and return a scalar or a contiguous array of rank 1 of length s1 of randomly uniformly distr...
This is a generic method of the derived type display_type with pass attribute.
This is a generic method of the derived type display_type with pass attribute.
Generate and return a matrix of shape (shape(1), shape(2)) with the upper/lower triangle and the diag...
Generate a sample of shape (nsam), or (ndim, nsam) or (nsam, ndim) that is shifted by the specified i...
This module contains procedures and generic interfaces for convenient allocation and filling of array...
This module contains procedures and generic interfaces for resizing allocatable arrays of various typ...
This module contains classes and procedures for generating random matrices distributed on the space o...
This module contains classes and procedures for computing various statistical quantities related to t...
This module contains classes and procedures for input/output (IO) or generic display operations on st...
type(display_type) disp
This is a scalar module variable an object of type display_type for general display.
This module defines the relevant Fortran kind type-parameters frequently used in the ParaMonte librar...
integer, parameter CKS
The single-precision complex kind in Fortran mode. On most platforms, this is a 32-bit real kind.
integer, parameter IK
The default integer kind in the ParaMonte library: int32 in Fortran, c_int32_t in C-Fortran Interoper...
integer, parameter SK
The default character kind in the ParaMonte library: kind("a") in Fortran, c_char in C-Fortran Intero...
integer, parameter RKS
The single-precision real kind in Fortran mode. On most platforms, this is an 32-bit real kind.
This module contains procedures and generic interfaces relevant to generating and initializing matric...
This module contains classes and procedures for shifting univariate or multivariate samples by arbitr...
Generate and return an object of type display_type.
8ndim
= 3; npnt
= 5; nsam
= 2
11+0.108310223,
+0.163552523,
+0.154336512,
+0.882765174,
+0.135043442
12+0.837170243,
+0.339359999,
+0.212025642E-2,
+0.179435432,
+0.957951069
13+0.714514554,
+0.269619286,
+0.664380789E-1,
+0.684940279,
+0.811459124
17invCov(:,:,isam)
= getCovRand(
mold = 1., ndim
= ndim)
20invCov(:,:,isam)
= getCovRand(
mold = 1., ndim
= ndim)
25+1.00000000,
+0.873463392,
-0.295291334
26+0.873463392,
+1.00000000,
-0.700885773
27-0.295291334,
-0.700885773,
+1.00000000
29+1.00000000,
+0.988503277,
+0.758755982
30+0.988503277,
+1.00000000,
+0.776153624
31+0.758755982,
+0.776153624,
+1.00000000
33+0.00000000,
+1.00000000
34+0.00000000,
+1.00000000
35+0.00000000,
+1.00000000
39+0.497314304,
+0.157267034,
+0.225567333E-1,
+1.02795458,
+0.665996194
40+2.44836283,
+0.533289969,
+0.446641780E-1,
+2.70210433,
+3.22308826
43+0.497314304,
+0.157267034,
+0.225567333E-1,
+1.02795458,
+0.665996194
44+1.64863944,
+4.43812466,
+6.89493227,
+1.43388224,
+1.11715221
45call setDisMahalSq(mahalSq(
1:nsam,
1), point(
1:ndim,
1), invCov)
47+0.497314304,
+2.44836283
48call setDisMahalSq(mahalSq(
1:nsam,
1), point(
1:ndim,
1), invCov, mean)
50+0.497314304,
+1.64863944
53+0.497314304,
+0.157267034,
+0.225567333E-1,
+1.02795458,
+0.665996194
54call setDisMahalSq(mahalSq(
1,
1:npnt), point, invCov(:,:,
1), mean(:,
1))
56+0.497314304,
+0.157267034,
+0.225567333E-1,
+1.02795458,
+0.665996194
57call setDisMahalSq(mahalSq(
1,
1), point(
1:ndim,
1), invCov(:,:,
1))
60call setDisMahalSq(mahalSq(
1,
1), point(
1:ndim,
1), invCov(:,:,
1), mean(:,
1))
63call setDisMahalSq(mahalSq(
1,
1:npnt), point(
1,
1:npnt), invCov(
1,
1,
1))
65+0.117311040E-1,
+0.267494284E-1,
+0.238197595E-1,
+0.779274344,
+0.182367321E-1
66call setDisMahalSq(mahalSq(
1,
1:npnt), point(
1,
1:npnt), invCov(
1,
1,
1), mean(
1,
1))
68+0.117311040E-1,
+0.267494284E-1,
+0.238197595E-1,
+0.779274344,
+0.182367321E-1
72call setDisMahalSq(mahalSq(
1,
1), point(
1,
1), invCov(
1,
1,
1), mean(
1,
1))
82ndim
= 3; npnt
= 5; nsam
= 2
85(
+0.375551045,
+0.00000000), (
+0.126413524,
+0.00000000), (
+0.876723468,
+0.00000000), (
+0.668731630,
+0.00000000), (
+0.109771073,
+0.00000000)
86(
+0.368765593E-1,
+0.00000000), (
+0.132633448E-1,
+0.00000000), (
+0.931067467,
+0.00000000), (
+0.403245270,
+0.00000000), (
+0.686878026,
+0.00000000)
87(
+0.635960162,
+0.00000000), (
+0.819039464,
+0.00000000), (
+0.738346100,
+0.00000000), (
+0.984976768,
+0.00000000), (
+0.862937272,
+0.00000000)
91invCov(:,:,isam)
= getCovRand(
mold = (
1.,
1.), ndim
= ndim)
94invCov(:,:,isam)
= getCovRand(
mold = (
1.,
1.), ndim
= ndim)
99(
+1.00000000,
+0.00000000), (
-0.561239839,
-0.408925712), (
-0.210951618E-2,
-0.613281988E-1)
100(
-0.561239839,
+0.408925712), (
+1.00000000,
+0.00000000), (
+0.477281570,
+0.271481603)
101(
-0.210951618E-2,
+0.613281988E-1), (
+0.477281570,
-0.271481603), (
+1.00000000,
+0.00000000)
103(
+1.00000000,
+0.00000000), (
+0.502396882,
-0.224990189), (
-0.244474053,
+0.524210095)
104(
+0.502396882,
+0.224990189), (
+1.00000000,
+0.00000000), (
+0.224503934,
+0.455577910)
105(
-0.244474053,
-0.524210095), (
+0.224503934,
-0.455577910), (
+1.00000000,
+0.00000000)
107(
+0.00000000,
+0.00000000), (
+1.00000000,
+0.00000000)
108(
+0.00000000,
+0.00000000), (
+1.00000000,
+0.00000000)
109(
+0.00000000,
+0.00000000), (
+1.00000000,
+0.00000000)
113(
+0.552677333,
-0.931322575E-9), (
+0.695032716,
+0.00000000), (
+1.91790152,
+0.00000000), (
+1.65365815,
-0.745058060E-8), (
+1.70927870,
+0.00000000)
114(
+0.454511195,
-0.149011612E-7), (
+0.642919779,
+0.00000000), (
+2.99304914,
+0.00000000), (
+1.70722079,
+0.596046448E-7), (
+1.52409840,
+0.298023224E-7)
117(
+0.552677333,
-0.931322575E-9), (
+0.695032716,
+0.00000000), (
+1.91790152,
+0.00000000), (
+1.65365815,
-0.745058060E-8), (
+1.70927870,
+0.00000000)
118(
+2.10065198,
-0.298023224E-7), (
+2.63856125,
-0.149011612E-7), (
+0.892771631E-1,
+0.00000000), (
+0.666306376,
-0.325962901E-8), (
+1.14903581,
+0.745058060E-8)
119call setDisMahalSq(mahalSq(
1:nsam,
1), point(
1:ndim,
1), invCov)
121(
+0.552677333,
-0.931322575E-9), (
+0.454511195,
-0.149011612E-7)
122call setDisMahalSq(mahalSq(
1:nsam,
1), point(
1:ndim,
1), invCov, mean)
124(
+0.552677333,
-0.931322575E-9), (
+2.10065198,
-0.298023224E-7)
127(
+0.552677333,
-0.931322575E-9), (
+0.695032716,
+0.00000000), (
+1.91790152,
+0.00000000), (
+1.65365815,
-0.745058060E-8), (
+1.70927870,
+0.00000000)
128call setDisMahalSq(mahalSq(
1,
1:npnt), point, invCov(:,:,
1), mean(:,
1))
130(
+0.552677333,
-0.931322575E-9), (
+0.695032716,
+0.00000000), (
+1.91790152,
+0.00000000), (
+1.65365815,
-0.745058060E-8), (
+1.70927870,
+0.00000000)
131call setDisMahalSq(mahalSq(
1,
1), point(
1:ndim,
1), invCov(:,:,
1))
133(
+0.552677333,
-0.931322575E-9)
134call setDisMahalSq(mahalSq(
1,
1), point(
1:ndim,
1), invCov(:,:,
1), mean(:,
1))
136(
+0.552677333,
-0.931322575E-9)
137call setDisMahalSq(mahalSq(
1,
1:npnt), point(
1,
1:npnt), invCov(
1,
1,
1))
139(
+0.141038582,
+0.00000000), (
+0.159803797E-1,
+0.00000000), (
+0.768644035,
+0.00000000), (
+0.447201997,
+0.00000000), (
+0.120496880E-1,
+0.00000000)
140call setDisMahalSq(mahalSq(
1,
1:npnt), point(
1,
1:npnt), invCov(
1,
1,
1), mean(
1,
1))
142(
+0.141038582,
+0.00000000), (
+0.159803797E-1,
+0.00000000), (
+0.768644035,
+0.00000000), (
+0.447201997,
+0.00000000), (
+0.120496880E-1,
+0.00000000)
145(
+0.141038582,
+0.00000000)
146call setDisMahalSq(mahalSq(
1,
1), point(
1,
1), invCov(
1,
1,
1), mean(
1,
1))
148(
+0.141038582,
+0.00000000)