1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
|
/*
* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
* Copyright (C) 2008-2008 - INRIA - Allan SIMON
*
* This file must be used under the terms of the CeCILL.
* This source file is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at
* http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
*
*/
#include "matrixInversion.h"
#include <math.h>
#include <stdio.h>
#include <assert.h>
#define LEADDIM 10
#define SMATRIX_IN {0.56672112690284848f,0.57116389367729425f,0.81601104838773608f,0.05689279362559319f,\
0.55959366867318749f,0.12493403162807226f,0.72792222863063216f,0.26777664758265018f,\
0.54653349192813039f,0.98854076582938433f,\
0.73956565884873271f,0.00371731072664261f,0.59005728596821427f,0.3096467358991504f,\
0.25522057106718421f,0.62518793903291225f,0.11574173765257001f,0.61170040909200907f,\
0.67839562846347690f,0.33200952783226967f,\
0.02587099233642220f,0.51744682248681784f,0.39168732380494475f,0.24135384149849415f,\
0.50644348980858922f,0.42361020017415285f,0.28937275288626552f,0.08879321813583374f,\
0.62128817522898316f,0.34549844544380903f,\
0.70648676296696067f,0.52114724926650524f,0.28704008506610990f,0.65027950797230005f,\
0.08813347620889544f,0.44987633451819420f,0.72272530803456903f,0.89767962601035833f,\
0.24278218811377883f,0.43377211131155491f,\
0.96770532103255391f,0.50685344357043505f,0.52329764096066356f,0.5596947595477104f,\
0.56173070007935166f,0.46817600261420012f,0.77945467224344611f,0.79010718129575253f,\
0.98085420625284314f,0.81870661024004221f,\
0.42568723810836673f,0.24615605548024178f,0.92295324662700295f,0.10007458087056875f,\
0.46782181179150939f,0.39504976756870747f,0.03661171020939946f,0.51753685344010592f,\
0.83254515705630183f,0.61048321425914764f,\
0.18711117887869477f,0.01895748358219862f,0.84335647663101554f,0.07485948316752911f,\
0.85328151332214475f,0.01245901081711054f,0.18675393564626575f,0.49205840751528740f,\
0.74896081397309899f,0.94149570073932409f,\
0.21240556007251143f,0.57950199581682682f,0.26281475694850087f,0.43609866220504045f,\
0.91105451015755534f,0.80826673656702042f,0.81026530498638749f,0.25904283951967955f,\
0.41390872886404395f,0.35999277792870998f,\
0.69127879338338971f,0.76568587962538004f,0.35726496530696750f,0.76933998242020607f,\
0.54776339093223214f,0.09622887428849936f,0.95611717319115996f,0.22074085660278797f,\
0.01432593585923314f,0.81914897728711367f,\
0.13049928424879909f,0.96820035576820374f,0.6561381467618048f,0.24455389659851789f,\
0.52831235667690635f,0.84689256362617016f,0.78766220854595304f,0.12620826158672571f,\
0.78838609857484698f,0.34530424699187279f}
#define SMATRIX_TEST {-0.52918209318099763f,-1.4122060840199684f,-2.81447731203224061f,-1.55267562705322471f,\
1.7795249093271313f,3.41331242497436538f,-1.88904543501184552f,1.12197724430279377f,\
0.72267367241531266f,-0.34793324767314804f,\
-0.04291642356311276f,-3.42251783874691506f,0.02468613395048536f,0.08908661449574046f,\
0.97788374996171823f,4.61261377725807620f,-2.59399616857143833f,1.20317500146072143f,\
-0.02166245003208622f,-1.3267013649317376f,\
-2.67087412768695565f,-0.22033432555244847f,-5.29579931307827412f,-1.14315667195430248f,\
0.09168583909366912f,1.5851803683202144f,1.66558750370151065f,-0.86555486622239652f,\
1.8195567574793376f,3.61754347340892135f,\
-1.89697408392725020f,1.8626200864938904f,0.79417407448685418f,-0.05121347333860876f,\
-0.58894433303940863f,-2.25150397211694164f,1.83391219779456915f,-1.71612581802446540f,\
1.573412079629398f,1.342726670155854f,\
-2.25362434223770558f,-3.27855988666729736f,-4.38426363396032048f,-1.74427000048068570f,\
2.03129249683994884f,4.82780099711724908f,-0.73809777439724900f,2.2509436506925824f,\
0.94584198058114821f,0.25243671945739055f,\
3.84378244490602494f,3.72355620392145159f,6.53582696174593814f,1.94952916234761564f,\
-3.13395988068588593f,-4.02699662712894213f,-0.76253598522946087f,0.23575927310254180f,\
-1.8359327702678865f,-2.83401823371425543f,\
-1.18180799907519307f,0.63788382527496235f,-3.78074265572599399f,-0.54137361290359209f,\
0.70395890323932231f,-2.37398893454907611f,2.2701087812490388f,-0.86112335471809098f,\
0.47829335155324559f,3.33447092282135671f,\
-0.74596393761410851f,-2.37451784604461391f,-1.71445760029220273f,1.04267932396181950f,\
0.72418115460071419f,2.59078382027510390f,-0.24977554095572621f,1.00522161428916723f,\
-0.63851725590828357f,-0.32538135452852734f,\
-1.03321944290699186f,0.06105622131119152f,-0.23434658474553238f,-0.78361018751135569f,\
1.52101204019895975f,-0.98475391631291920f,0.82324943504312742f,-1.09543520381998416f,\
-0.06310749918170644f,1.29987814669920709f,\
6.08715177443300171f,4.38684491456130132f,10.9588676689371631f,3.07570017972914656f,\
-3.9362327692213568f,-6.43408376602510224f,-0.44360914322700107f,-0.86171558904483270f,\
-2.44206676099519093f,-4.96806164188692279f}
#define DMATRIX_IN {0.56672112690284848,0.57116389367729425,0.81601104838773608,0.05689279362559319,\
0.55959366867318749,0.12493403162807226,0.72792222863063216,0.26777664758265018,\
0.54653349192813039,0.98854076582938433,\
0.73956565884873271,0.00371731072664261,0.59005728596821427,0.3096467358991504,\
0.25522057106718421,0.62518793903291225,0.11574173765257001,0.61170040909200907,\
0.67839562846347690,0.33200952783226967,\
0.02587099233642220,0.51744682248681784,0.39168732380494475,0.24135384149849415,\
0.50644348980858922,0.42361020017415285,0.28937275288626552,0.08879321813583374,\
0.62128817522898316,0.34549844544380903,\
0.70648676296696067,0.52114724926650524,0.28704008506610990,0.65027950797230005,\
0.08813347620889544,0.44987633451819420,0.72272530803456903,0.89767962601035833,\
0.24278218811377883,0.43377211131155491,\
0.96770532103255391,0.50685344357043505,0.52329764096066356,0.5596947595477104,\
0.56173070007935166,0.46817600261420012,0.77945467224344611,0.79010718129575253,\
0.98085420625284314,0.81870661024004221,\
0.42568723810836673,0.24615605548024178,0.92295324662700295,0.10007458087056875,\
0.46782181179150939,0.39504976756870747,0.03661171020939946,0.51753685344010592,\
0.83254515705630183,0.61048321425914764,\
0.18711117887869477,0.01895748358219862,0.84335647663101554,0.07485948316752911,\
0.85328151332214475,0.01245901081711054,0.18675393564626575,0.49205840751528740,\
0.74896081397309899,0.94149570073932409,\
0.21240556007251143,0.57950199581682682,0.26281475694850087,0.43609866220504045,\
0.91105451015755534,0.80826673656702042,0.81026530498638749,0.25904283951967955,\
0.41390872886404395,0.35999277792870998,\
0.69127879338338971,0.76568587962538004,0.35726496530696750,0.76933998242020607,\
0.54776339093223214,0.09622887428849936,0.95611717319115996,0.22074085660278797,\
0.01432593585923314,0.81914897728711367,\
0.13049928424879909,0.96820035576820374,0.6561381467618048,0.24455389659851789,\
0.52831235667690635,0.84689256362617016,0.78766220854595304,0.12620826158672571,\
0.78838609857484698,0.34530424699187279}
#define DMATRIX_TEST {-0.52918209318099763,-1.4122060840199684,-2.81447731203224061,-1.55267562705322471,\
1.7795249093271313,3.41331242497436538,-1.88904543501184552,1.12197724430279377,\
0.72267367241531266,-0.34793324767314804,\
-0.04291642356311276,-3.42251783874691506,0.02468613395048536,0.08908661449574046,\
0.97788374996171823,4.61261377725807620,-2.59399616857143833,1.20317500146072143,\
-0.02166245003208622,-1.3267013649317376,\
-2.67087412768695565,-0.22033432555244847,-5.29579931307827412,-1.14315667195430248,\
0.09168583909366912,1.5851803683202144,1.66558750370151065,-0.86555486622239652,\
1.8195567574793376,3.61754347340892135,\
-1.89697408392725020,1.8626200864938904,0.79417407448685418,-0.05121347333860876,\
-0.58894433303940863,-2.25150397211694164,1.83391219779456915,-1.71612581802446540,\
1.573412079629398,1.342726670155854,\
-2.25362434223770558,-3.27855988666729736,-4.38426363396032048,-1.74427000048068570,\
2.03129249683994884,4.82780099711724908,-0.73809777439724900,2.2509436506925824,\
0.94584198058114821,0.25243671945739055,\
3.84378244490602494,3.72355620392145159,6.53582696174593814,1.94952916234761564,\
-3.13395988068588593,-4.02699662712894213,-0.76253598522946087,0.23575927310254180,\
-1.8359327702678865,-2.83401823371425543,\
-1.18180799907519307,0.63788382527496235,-3.78074265572599399,-0.54137361290359209,\
0.70395890323932231,-2.37398893454907611,2.2701087812490388,-0.86112335471809098,\
0.47829335155324559,3.33447092282135671,\
-0.74596393761410851,-2.37451784604461391,-1.71445760029220273,1.04267932396181950,\
0.72418115460071419,2.59078382027510390,-0.24977554095572621,1.00522161428916723,\
-0.63851725590828357,-0.32538135452852734,\
-1.03321944290699186,0.06105622131119152,-0.23434658474553238,-0.78361018751135569,\
1.52101204019895975,-0.98475391631291920,0.82324943504312742,-1.09543520381998416,\
-0.06310749918170644,1.29987814669920709,\
6.08715177443300171,4.38684491456130132,10.9588676689371631,3.07570017972914656,\
-3.9362327692213568,-6.43408376602510224,-0.44360914322700107,-0.86171558904483270,\
-2.44206676099519093,-4.96806164188692279}
#define CRMATRIX_IN {0.56672112690284848f,0.57116389367729425f,0.81601104838773608f,0.05689279362559319f,\
0.55959366867318749f,0.12493403162807226f,0.72792222863063216f,0.26777664758265018f,\
0.54653349192813039f,0.98854076582938433f,\
0.73956565884873271f,0.00371731072664261f,0.59005728596821427f,0.3096467358991504f,\
0.25522057106718421f,0.62518793903291225f,0.11574173765257001f,0.61170040909200907f,\
0.67839562846347690f,0.33200952783226967f,\
0.02587099233642220f,0.51744682248681784f,0.39168732380494475f,0.24135384149849415f,\
0.50644348980858922f,0.42361020017415285f,0.28937275288626552f,0.08879321813583374f,\
0.62128817522898316f,0.34549844544380903f,\
0.70648676296696067f,0.52114724926650524f,0.28704008506610990f,0.65027950797230005f,\
0.08813347620889544f,0.44987633451819420f,0.72272530803456903f,0.89767962601035833f,\
0.24278218811377883f,0.43377211131155491f,\
0.96770532103255391f,0.50685344357043505f,0.52329764096066356f,0.5596947595477104f,\
0.56173070007935166f,0.46817600261420012f,0.77945467224344611f,0.79010718129575253f,\
0.98085420625284314f,0.81870661024004221f,\
0.42568723810836673f,0.24615605548024178f,0.92295324662700295f,0.10007458087056875f,\
0.46782181179150939f,0.39504976756870747f,0.03661171020939946f,0.51753685344010592f,\
0.83254515705630183f,0.61048321425914764f,\
0.18711117887869477f,0.01895748358219862f,0.84335647663101554f,0.07485948316752911f,\
0.85328151332214475f,0.01245901081711054f,0.18675393564626575f,0.49205840751528740f,\
0.74896081397309899f,0.94149570073932409f,\
0.21240556007251143f,0.57950199581682682f,0.26281475694850087f,0.43609866220504045f,\
0.91105451015755534f,0.80826673656702042f,0.81026530498638749f,0.25904283951967955f,\
0.41390872886404395f,0.35999277792870998f,\
0.69127879338338971f,0.76568587962538004f,0.35726496530696750f,0.76933998242020607f,\
0.54776339093223214f,0.09622887428849936f,0.95611717319115996f,0.22074085660278797f,\
0.01432593585923314f,0.81914897728711367f,\
0.13049928424879909f,0.96820035576820374f,0.6561381467618048f,0.24455389659851789f,\
0.52831235667690635f,0.84689256362617016f,0.78766220854595304f,0.12620826158672571f,\
0.78838609857484698f,0.34530424699187279f}
#define CIMATRIX_IN {0.26598573336377740f,0.12025266280397773f,0.90711546363309026f,0.41329363686963916f,\
0.33616027468815446f,0.20337020372971892f,0.31845858739688993f,0.04173615900799632f,\
0.00291663268581033f,0.92589621385559440f,\
0.97098186518996954f,0.82874121330678463f,0.33601493109017611f,0.14022908732295036f,\
0.53368766140192747f,0.30119446106255054f,0.57618944440037012f,0.34382718056440353f,\
0.89934705849736929f,0.09938172809779644f,\
0.88752476638182998f,0.31610729591920972f,0.11756130633875728f,0.49523561308160424f,\
0.20390639593824744f,0.27625959040597081f,0.42549022240564227f,0.1970167332328856f,\
0.83879271661862731f,0.42805786477401853f,\
0.20667528547346592f,0.53051907662302256f,0.92537237703800201f,0.41948772873729467f,\
0.15899897180497646f,0.29445307422429323f,0.97619816288352013f,0.21228986512869596f,\
0.43437494523823261f,0.94318309519439936f,\
0.85251609655097127f,0.57151748193427920f,0.72636712575331330f,0.86262222891673446f,\
0.01818151073530316f,0.57180739520117640f,0.25189600000157952f,0.31403985014185309f,\
0.77678761305287480f,0.03273952705785632f,\
0.67446978110820055f,0.04780154302716255f,0.90094979386776686f,0.28575096465647221f,\
0.40983706060796976f,0.21417701244354248f,0.43911290075629950f,0.78216253779828548f,\
0.13953176606446505f,0.92132670804858208f,\
0.91528743831440806f,0.82486197212710977f,0.39489932497963309f,0.25121363671496511f,\
0.01058345986530185f,0.68954616272822022f,0.07593036955222487f,0.05409323470667005f,\
0.11506372271105647f,0.94490244099870324f,\
0.02848597615957260f,0.5798843121156096f,0.56551797501742840f,0.33891015965491533f,\
0.19653097167611122f,0.58555728476494551f,0.25593801774084568f,0.91902069095522165f,\
0.53554199635982513f,0.900706990621984f,\
0.23678414756432176f,0.27918082987889647f,0.70614896761253476f,0.39219759730622172f,\
0.27255953708663583f,0.42041230341419578f,0.06706167431548238f,0.46035157097503543f,\
0.43117330456152558f,0.80943161016330123f,\
0.70153435599058867f,0.95451109297573566f,0.67878311965614557f,0.46815521270036697f,\
0.34376550372689962f,0.42775720171630383f,0.76511315722018480f,0.29926850274205208f,\
0.61453847866505384f,0.02519542910158634f}
#define CRMATRIX_RESULT {1.13334136062879454f,1.00204710284162091f,-0.36268445209785111f,0.44135219666801256f,\
-0.28889550886983612f,-0.83933700493692454f,0.02619582683916769f,-0.03686600548096228f,\
-0.3105979269805872f,-0.41314497983816856f,\
-1.35807279244359291f,-0.95351719301170645f,0.24508427491574258f,-0.29038757219777517f,\
0.37390577835866062f,1.1835902691419622f,-0.05725271188164360f,-0.45507733751420543f,\
0.89349083196709700f,0.22599186865989143f,\
0.04475841273073522f,0.65452526617183937f,-0.45264724847008608f,1.48730985056287901f,\
-0.62424039568072809f,-0.07013705727696817f,0.66279285096827567f,-0.49314454581179629f,\
-0.75846179749076570f,0.03847068162421585f,\
-0.28834686632766587f,-0.12621821344664338f,0.66167042153468991f,-0.30750952923310820f,\
-0.38799028698820520f,-0.06244610332663336f,-0.16699468178690519f,-0.25703548004808097f,\
1.05027930016160997f,0.31201179786307248f,\
3.09851038226275932f,0.68543010150986716f,0.67201299485007393f,-1.36595464827487545f,\
-0.97056467795873491f,-2.43637154663396904f,-0.44698290573897426f,0.25335968244039719f,\
0.52656196888052886f,0.8186504936893056f,\
1.61532430192389009f,0.61052036715893920f,0.37049911672435160f,-0.89240571480272601f,\
-0.10120030002332725f,-0.89781867625900547f,-0.69692694811392220f,1.15675538992405480f,\
-0.60391534256305657f,-0.22021828342698485f,\
-0.3741129583278592f,-0.04777966095669883f,-0.71234429260192467f,0.67967568250401755f,\
0.25551727122371526f,-0.21501817490214456f,0.33990052672394827f,0.26217278721004078f,\
-0.62229775428125067f,0.12867275098729825f,\
-1.29410590757942501f,-0.90500447621878899f,-0.02669409932542677f,-0.65737384875432148f,\
1.06680350537307067f,1.0309312701659521f,-0.17448425396711695f,0.10358425160515741f,\
0.48518012284543799f,-0.12380980760248197f,\
-1.74148559631895505f,-0.80563620794306168f,0.09831541569063014f,0.29858001971458137f,\
0.71315790168444038f,1.51589578494898358f,0.26752178758245609f,-0.07814488857312252f,\
-0.33226019516643074f,-0.25594588429781640f,\
-0.55157638336116810f,-0.32553554473562663f,0.18945085905693287f,-0.49018398019943904f,\
0.22032383413091419f,0.80929284051108974f,-0.26930477901947342f,0.01565276572275408f,\
0.50897245662655299f,-0.2000796589321248f}
#define CIMATRIX_RESULT {-0.72071682835421724f,-0.27956750077582515f,-0.12213482023956473f,0.66199681493358187f,\
0.19294748584842841f,0.71511499705121806f,-0.07262892107788382f,0.16934235088255833f,\
-0.28481834522168847f,-0.4356262417043216f,\
0.89322305892893428f,-0.47480723687179577f,0.74313808566553685f,-0.47801173363000360f,\
0.13877492668810687f,-0.24397029588270253f,-0.56410605487977428f,0.13174383488792796f,\
-0.11275208753659083f,-0.02853860897251614f,\
-2.35574562422712885f,-0.66252937112300103f,0.41163350762074485f,0.21189678704881354f,\
0.57210153384651341f,1.59871861336304111f,0.24013928122080053f,0.1908634439410304f,\
0.04233444329438218f,-0.74974593479018292f,\
0.21852271998327827f,0.46641793006923571f,-0.50775725878230649f,0.36932403849454087f,\
-0.97035140329820424f,-0.59905481375287661f,0.47057866052210873f,-0.27484558236611223f,\
0.14983776443256616f,0.65314738162484509f,\
1.21784046668363755f,0.89544041489161419f,-0.55385999040744260f,2.3960585010456512f,\
-1.08813967734866801f,-1.76566044616615891f,1.01831164014477937f,-0.39749297613335716f,\
-1.42421433146953369f,0.1681331405197976f,\
1.2139424005771302f,1.25657353572343178f,-0.00767306183273730f,0.23949549471191356f,\
-0.93651648982768132f,-0.892557290343648f,-0.31803824197434533f,-0.30269705651930523f,\
0.06480270543120303f,0.04863444130781940f,\
-0.4833117651305104f,0.0427206592410736f,-0.32334126501314669f,-0.77563551313076551f,\
0.77531171370204577f,0.4186703610529936f,0.06140053814127502f,0.40102788900264252f,\
0.23384530409440230f,-0.64994440926481989f,\
1.96328712223105617f,0.26113952707794202f,0.7924550400337056f,-0.65512478202793500f,\
-0.18012047754401772f,-1.54644464183129848f,-0.24103692367484025f,0.06994604293168416f,\
-0.14071021436989639f,0.02396061029170871f,\
-0.38634718234016863f,-0.79360643330422442f,-0.24953759611467596f,-1.18124389108964234f,\
0.36517943778230522f,0.69540420551183901f,-0.15267947346137922f,0.23673803504827576f,\
0.58370191145957184f,0.41325242999322420f,\
0.27463944706760368f,-0.07374243215114486f,-0.23939703640616677f,-0.68898202198243763f,\
0.18544512532830235f,-0.26697093307764330f,-0.38327334858322648f,-0.29893133575699177f,\
0.40729781218472505f,0.82660964787147106f}
#define ZRMATRIX_IN {0.56672112690284848,0.57116389367729425,0.81601104838773608,0.05689279362559319,\
0.55959366867318749,0.12493403162807226,0.72792222863063216,0.26777664758265018,\
0.54653349192813039,0.98854076582938433,\
0.73956565884873271,0.00371731072664261,0.59005728596821427,0.3096467358991504,\
0.25522057106718421,0.62518793903291225,0.11574173765257001,0.61170040909200907,\
0.67839562846347690,0.33200952783226967,\
0.02587099233642220,0.51744682248681784,0.39168732380494475,0.24135384149849415,\
0.50644348980858922,0.42361020017415285,0.28937275288626552,0.08879321813583374,\
0.62128817522898316,0.34549844544380903,\
0.70648676296696067,0.52114724926650524,0.28704008506610990,0.65027950797230005,\
0.08813347620889544,0.44987633451819420,0.72272530803456903,0.89767962601035833,\
0.24278218811377883,0.43377211131155491,\
0.96770532103255391,0.50685344357043505,0.52329764096066356,0.5596947595477104,\
0.56173070007935166,0.46817600261420012,0.77945467224344611,0.79010718129575253,\
0.98085420625284314,0.81870661024004221,\
0.42568723810836673,0.24615605548024178,0.92295324662700295,0.10007458087056875,\
0.46782181179150939,0.39504976756870747,0.03661171020939946,0.51753685344010592,\
0.83254515705630183,0.61048321425914764,\
0.18711117887869477,0.01895748358219862,0.84335647663101554,0.07485948316752911,\
0.85328151332214475,0.01245901081711054,0.18675393564626575,0.49205840751528740,\
0.74896081397309899,0.94149570073932409,\
0.21240556007251143,0.57950199581682682,0.26281475694850087,0.43609866220504045,\
0.91105451015755534,0.80826673656702042,0.81026530498638749,0.25904283951967955,\
0.41390872886404395,0.35999277792870998,\
0.69127879338338971,0.76568587962538004,0.35726496530696750,0.76933998242020607,\
0.54776339093223214,0.09622887428849936,0.95611717319115996,0.22074085660278797,\
0.01432593585923314,0.81914897728711367,\
0.13049928424879909,0.96820035576820374,0.6561381467618048,0.24455389659851789,\
0.52831235667690635,0.84689256362617016,0.78766220854595304,0.12620826158672571,\
0.78838609857484698,0.34530424699187279}
#define ZIMATRIX_IN {0.26598573336377740,0.12025266280397773,0.90711546363309026,0.41329363686963916,\
0.33616027468815446,0.20337020372971892,0.31845858739688993,0.04173615900799632,\
0.00291663268581033,0.92589621385559440,\
0.97098186518996954,0.82874121330678463,0.33601493109017611,0.14022908732295036,\
0.53368766140192747,0.30119446106255054,0.57618944440037012,0.34382718056440353,\
0.89934705849736929,0.09938172809779644,\
0.88752476638182998,0.31610729591920972,0.11756130633875728,0.49523561308160424,\
0.20390639593824744,0.27625959040597081,0.42549022240564227,0.1970167332328856,\
0.83879271661862731,0.42805786477401853,\
0.20667528547346592,0.53051907662302256,0.92537237703800201,0.41948772873729467,\
0.15899897180497646,0.29445307422429323,0.97619816288352013,0.21228986512869596,\
0.43437494523823261,0.94318309519439936,\
0.85251609655097127,0.57151748193427920,0.72636712575331330,0.86262222891673446,\
0.01818151073530316,0.57180739520117640,0.25189600000157952,0.31403985014185309,\
0.77678761305287480,0.03273952705785632,\
0.67446978110820055,0.04780154302716255,0.90094979386776686,0.28575096465647221,\
0.40983706060796976,0.21417701244354248,0.43911290075629950,0.78216253779828548,\
0.13953176606446505,0.92132670804858208,\
0.91528743831440806,0.82486197212710977,0.39489932497963309,0.25121363671496511,\
0.01058345986530185,0.68954616272822022,0.07593036955222487,0.05409323470667005,\
0.11506372271105647,0.94490244099870324,\
0.02848597615957260,0.5798843121156096,0.56551797501742840,0.33891015965491533,\
0.19653097167611122,0.58555728476494551,0.25593801774084568,0.91902069095522165,\
0.53554199635982513,0.900706990621984,\
0.23678414756432176,0.27918082987889647,0.70614896761253476,0.39219759730622172,\
0.27255953708663583,0.42041230341419578,0.06706167431548238,0.46035157097503543,\
0.43117330456152558,0.80943161016330123,\
0.70153435599058867,0.95451109297573566,0.67878311965614557,0.46815521270036697,\
0.34376550372689962,0.42775720171630383,0.76511315722018480,0.29926850274205208,\
0.61453847866505384,0.02519542910158634}
#define ZRMATRIX_RESULT {1.13334136062879454,1.00204710284162091,-0.36268445209785111,0.44135219666801256,\
-0.28889550886983612,-0.83933700493692454,0.02619582683916769,-0.03686600548096228,\
-0.3105979269805872,-0.41314497983816856,\
-1.35807279244359291,-0.95351719301170645,0.24508427491574258,-0.29038757219777517,\
0.37390577835866062,1.1835902691419622,-0.05725271188164360,-0.45507733751420543,\
0.89349083196709700,0.22599186865989143,\
0.04475841273073522,0.65452526617183937,-0.45264724847008608,1.48730985056287901,\
-0.62424039568072809,-0.07013705727696817,0.66279285096827567,-0.49314454581179629,\
-0.75846179749076570,0.03847068162421585,\
-0.28834686632766587,-0.12621821344664338,0.66167042153468991,-0.30750952923310820,\
-0.38799028698820520,-0.06244610332663336,-0.16699468178690519,-0.25703548004808097,\
1.05027930016160997,0.31201179786307248,\
3.09851038226275932,0.68543010150986716,0.67201299485007393,-1.36595464827487545,\
-0.97056467795873491,-2.43637154663396904,-0.44698290573897426,0.25335968244039719,\
0.52656196888052886,0.8186504936893056,\
1.61532430192389009,0.61052036715893920,0.37049911672435160,-0.89240571480272601,\
-0.10120030002332725,-0.89781867625900547,-0.69692694811392220,1.15675538992405480,\
-0.60391534256305657,-0.22021828342698485,\
-0.3741129583278592,-0.04777966095669883,-0.71234429260192467,0.67967568250401755,\
0.25551727122371526,-0.21501817490214456,0.33990052672394827,0.26217278721004078,\
-0.62229775428125067,0.12867275098729825,\
-1.29410590757942501,-0.90500447621878899,-0.02669409932542677,-0.65737384875432148,\
1.06680350537307067,1.0309312701659521,-0.17448425396711695,0.10358425160515741,\
0.48518012284543799,-0.12380980760248197,\
-1.74148559631895505,-0.80563620794306168,0.09831541569063014,0.29858001971458137,\
0.71315790168444038,1.51589578494898358,0.26752178758245609,-0.07814488857312252,\
-0.33226019516643074,-0.25594588429781640,\
-0.55157638336116810,-0.32553554473562663,0.18945085905693287,-0.49018398019943904,\
0.22032383413091419,0.80929284051108974,-0.26930477901947342,0.01565276572275408,\
0.50897245662655299,-0.2000796589321248}
#define ZIMATRIX_RESULT {-0.72071682835421724,-0.27956750077582515,-0.12213482023956473,0.66199681493358187,\
0.19294748584842841,0.71511499705121806,-0.07262892107788382,0.16934235088255833,\
-0.28481834522168847,-0.4356262417043216,\
0.89322305892893428,-0.47480723687179577,0.74313808566553685,-0.47801173363000360,\
0.13877492668810687,-0.24397029588270253,-0.56410605487977428,0.13174383488792796,\
-0.11275208753659083,-0.02853860897251614,\
-2.35574562422712885,-0.66252937112300103,0.41163350762074485,0.21189678704881354,\
0.57210153384651341,1.59871861336304111,0.24013928122080053,0.1908634439410304,\
0.04233444329438218,-0.74974593479018292,\
0.21852271998327827,0.46641793006923571,-0.50775725878230649,0.36932403849454087,\
-0.97035140329820424,-0.59905481375287661,0.47057866052210873,-0.27484558236611223,\
0.14983776443256616,0.65314738162484509,\
1.21784046668363755,0.89544041489161419,-0.55385999040744260,2.3960585010456512,\
-1.08813967734866801,-1.76566044616615891,1.01831164014477937,-0.39749297613335716,\
-1.42421433146953369,0.1681331405197976,\
1.2139424005771302,1.25657353572343178,-0.00767306183273730,0.23949549471191356,\
-0.93651648982768132,-0.892557290343648,-0.31803824197434533,-0.30269705651930523,\
0.06480270543120303,0.04863444130781940,\
-0.4833117651305104,0.0427206592410736,-0.32334126501314669,-0.77563551313076551,\
0.77531171370204577,0.4186703610529936,0.06140053814127502,0.40102788900264252,\
0.23384530409440230,-0.64994440926481989,\
1.96328712223105617,0.26113952707794202,0.7924550400337056,-0.65512478202793500,\
-0.18012047754401772,-1.54644464183129848,-0.24103692367484025,0.06994604293168416,\
-0.14071021436989639,0.02396061029170871,\
-0.38634718234016863,-0.79360643330422442,-0.24953759611467596,-1.18124389108964234,\
0.36517943778230522,0.69540420551183901,-0.15267947346137922,0.23673803504827576,\
0.58370191145957184,0.41325242999322420,\
0.27463944706760368,-0.07374243215114486,-0.23939703640616677,-0.68898202198243763,\
0.18544512532830235,-0.26697093307764330,-0.38327334858322648,-0.29893133575699177,\
0.40729781218472505,0.82660964787147106}
static void sinvermaTest (void)
{
int i ;
float in[] = SMATRIX_IN ;
float result[] = SMATRIX_TEST ;
float out[LEADDIM*LEADDIM];
sinverma (in, out, LEADDIM);
for ( i = 0 ; i < LEADDIM*LEADDIM ; i++ )
{
printf ( "\t\t %d out : %e\tresult : %e\tassert : %e \n" , i , out[i] , result[i] , fabs ( out[i] - result[i] ) / fabs( out[i]) ) ;
assert ( fabs ( out[i] - result[i] ) / fabs( out[i]) < 3e-4 ) ;
}
}
static void dinvermaTest (void)
{
int i ;
double in[] = DMATRIX_IN ;
double result[] = DMATRIX_TEST ;
double out[LEADDIM*LEADDIM];
dinverma (in, out, LEADDIM);
for ( i = 0 ; i < LEADDIM*LEADDIM ; i++ )
{
printf ( "\t\t %d out : %e\tresult : %e\tassert : %e \n" , i , out[i] , result[i] , fabs ( out[i] - result[i] ) / fabs( out[i]) ) ;
assert ( fabs ( out[i] - result[i] ) / fabs( out[i]) < 3e-14 ) ;
}
}
static void cinvermaTest (void)
{
int i = 0 ;
float tRealIn [] = CRMATRIX_IN ;
float tImagIn [] = CIMATRIX_IN ;
float tRealResult [] = CRMATRIX_RESULT ;
float tImagResult [] = CIMATRIX_RESULT ;
floatComplex out[LEADDIM*LEADDIM ] ;
floatComplex* in = FloatComplexMatrix ( tRealIn , tImagIn , LEADDIM*LEADDIM );
floatComplex* Result = FloatComplexMatrix ( tRealResult , tImagResult ,LEADDIM*LEADDIM) ;
cinverma( in ,out , LEADDIM ) ;
/* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
for ( i = 0 ; i < (LEADDIM*LEADDIM ) ; i++ )
{
printf ( "\t\t %d out : %e\t %e\t * i result : %e\t +%e\t * i assert : %e + %e \n" ,
i ,creals(out[i]) , cimags(out[i]) , creals (Result[i]) , cimags (Result[i]),
fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) ,
fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])));
if ( creals(out[i]) < 1e-6 && creals (Result[i]) < 1e-6 )
assert ( 1 ) ;
else
assert ( fabs( creals(out[i]) - creals (Result[i]) ) / fabs (creals (out[i])) < 3e-5 );
if ( cimags(out[i]) < 1e-6 && cimags (Result[i]) < 1e-6 )
assert ( 1 ) ;
else
assert ( fabs( cimags(out[i]) - cimags (Result[i]) ) / fabs (cimags (out[i])) < 3e-5) ;
}
}
static void zinvermaTest (void)
{
int i = 0 ;
double tRealIn [] = ZRMATRIX_IN ;
double tImagIn [] = ZIMATRIX_IN ;
double tRealResult [] = ZRMATRIX_RESULT ;
double tImagResult [] = ZIMATRIX_RESULT ;
doubleComplex out[LEADDIM*LEADDIM ] ;
doubleComplex* in = DoubleComplexMatrix ( tRealIn , tImagIn , LEADDIM*LEADDIM );
doubleComplex* Result = DoubleComplexMatrix ( tRealResult , tImagResult ,LEADDIM*LEADDIM) ;
zinverma( in ,out , LEADDIM ) ;
/* if we don't add that test assert failed if result = 0 'cause then we have |(out - 0)|/|out| = 1*/
for ( i = 0 ; i < (LEADDIM*LEADDIM ) ; i++ )
{
printf ( "\t\t %d out : %e\t %e\t * i result : %e\t +%e\t * i assert : %e + %e \n" ,
i ,zreals(out[i]) , zimags(out[i]) , zreals (Result[i]) , zimags (Result[i]),
fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) ,
fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])));
if ( zreals(out[i]) < 1e-14 && zreals (Result[i]) < 1e-18 )
assert ( 1 ) ;
else
assert ( fabs( zreals(out[i]) - zreals (Result[i]) ) / fabs (zreals (out[i])) < 3e-13 );
if ( zimags(out[i]) < 1e-14 && zimags (Result[i]) < 1e-18 )
assert ( 1 ) ;
else
assert ( fabs( zimags(out[i]) - zimags (Result[i]) ) / fabs (zimags (out[i])) < 3e-13 ) ;
}
}
static void mytest (void ){
double in1[16] = { 1 , 5 , 9 ,13 ,
2 , 6 , 10 , 14 ,
3 , 7 , 11 , 15 ,
4 , 8 , 12 , 16 } ;
double out[16] = { 0 } ;
int i = 0 ;
dinverma ( in1 , out , 4 );
for ( i = 0 ; i <16; i++)
{
printf ( "\t\t %d out : %20.15e\t\n" , i , out[i] ) ;
}
}
static int testMatrixInversion(void) {
printf("\n\n\n\t>>> MY TEST Tests\n");
mytest () ;
printf("\n>>>> Matrix Inversion Tests\n");
printf("\t>>>> Matrix Double Realt Tests\n");
dinvermaTest();
printf("\n\n\t>>>> Matrix Float Realt Tests\n");
sinvermaTest();
printf("\n\n\n");
printf("\t>>>> Matrix Float Complex Tests\n");
cinvermaTest();
printf("\n\n\n");
printf("\t>>>> Matrix Double Complex Tests\n");
zinvermaTest();
return 0;
}
int main(void) {
assert(testMatrixInversion() == 0);
return 0;
}
|