1;
2; under GNU GPL v3
3; Alain Coulais, 17 july 2017
4;
5; we are not ready for LA_SVD :(
6;
7; -----------------------------------------------------------------
8;
9pro TEST_NORM_VECTORS, cumul_errors, verbose=verbose, test=test
10;
11nb_errors=0
12;
13; to be extend to other types ? (float, complex ?)
14;
15vector=INDGEN(10)
16norms=FINDGEN(6)/2
17expected=[9.0, 372.72165, 45.0, 23.103502, 16.881943, 14.141151]
18;
19results=FLTARR(N_ELEMENTS(norms))
20;
21for ii=0, N_ELEMENTS(norms)-1 do begin
22   results[ii]=NORM(vector, lnorm=norms[ii])
23endfor
24;
25if TOTAL(ABS(expected-results)) GT 1.e-6 then nb_errors++
26;
27BANNER_FOR_TESTSUITE, 'TEST_NORM_VECTORS', nb_errors, /short, verb=verbose
28;
29ERRORS_CUMUL, cumul_errors, nb_errors
30;
31if KEYWORD_SET(test) then STOP
32;
33end
34; -----------------------------------------------------------------
35;
36pro TEST_NORM_MATRIX, cumul_errors, verbose=verbose, test=test, type=type
37;
38nb_errors=0
39;
40matrix=DIST(4)
41if KEYWORD_SET(type) then matrix=FIX(matrix, type=type)
42;
43norms=[0,1,2]
44expected=[9.3005631, 9.3005631, 6.84515559]
45;
46results=FLTARR(N_ELEMENTS(norms))
47;
48for ii=0, N_ELEMENTS(norms)-1 do begin
49   results[ii]=NORM(matrix, lnorm=norms[ii])
50endfor
51;
52if TOTAL(ABS(expected-results)) GT 1.e-6 then nb_errors++
53;
54BANNER_FOR_TESTSUITE, 'TEST_NORM_MATRIX', nb_errors, /short, verb=verbose
55;
56ERRORS_CUMUL, cumul_errors, nb_errors
57;
58if KEYWORD_SET(test) then STOP
59;
60end
61;
62; -----------------------------------------------------------------
63;
64pro TEST_NORM, help=help, verbose=verbose, no_exit=no_exit, test=test
65;
66if KEYWORD_SET(help) then begin
67   print, 'pro TEST_NORM, help=help, verbose=verbose, $'
68   print, '               no_exit=no_exit, test=test'
69   return
70endif
71;
72; do we need to add tests for other types in "vectors" ?
73; e.g. : a=dist(4) & print, norm(a^25L, lnorm=1,/dou)
74;
75TEST_NORM_VECTORS, nb_errors
76;
77; same question !
78TEST_NORM_MATRIX, nb_errors
79TEST_NORM_MATRIX, nb_errors, type=5
80a=EXECUTE("TEST_NORM_MATRIX, nb_errors, type=6")
81;
82; ----------------- final message ----------
83;
84BANNER_FOR_TESTSUITE, 'TEST_NORM', nb_errors
85;
86if (nb_errors GT 0) AND ~KEYWORD_SET(no_exit) then EXIT, status=1
87;
88if KEYWORD_SET(test) then STOP
89;
90end
91