Added MACS source
[htsworkflow.git] / htswanalysis / MACS / lib / gsl / gsl-1.11 / cblas / test_hemm.c
1 #include <gsl/gsl_test.h>
2 #include <gsl/gsl_ieee_utils.h>
3 #include <gsl/gsl_math.h>
4 #include <gsl/gsl_cblas.h>
5
6 #include "tests.h"
7
8 void
9 test_hemm (void) {
10 const double flteps = 1e-4, dbleps = 1e-6;
11   {
12    int order = 101;
13    int side = 141;
14    int uplo = 121;
15    int M = 1;
16    int N = 2;
17    float alpha[2] = {0.0f, 0.1f};
18    float beta[2] = {0.0f, 0.1f};
19    float A[] = { -0.126f, 0.079f };
20    int lda = 1;
21    float B[] = { -0.954f, -0.059f, 0.296f, -0.988f };
22    int ldb = 2;
23    float C[] = { -0.859f, -0.731f, 0.737f, 0.593f };
24    int ldc = 2;
25    float C_expected[] = { 0.0723566f, -0.0738796f, -0.0717488f, 0.0699704f };
26    cblas_chemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc);
27    {
28      int i;
29      for (i = 0; i < 2; i++) {
30        gsl_test_rel(C[2*i], C_expected[2*i], flteps, "chemm(case 1550) real");
31        gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "chemm(case 1550) imag");
32      };
33    };
34   };
35
36
37   {
38    int order = 102;
39    int side = 141;
40    int uplo = 121;
41    int M = 1;
42    int N = 2;
43    float alpha[2] = {0.0f, 0.1f};
44    float beta[2] = {0.0f, 0.1f};
45    float A[] = { 0.652f, 0.584f };
46    int lda = 1;
47    float B[] = { -0.983f, -0.734f, -0.422f, -0.825f };
48    int ldb = 1;
49    float C[] = { 0.387f, 0.341f, -0.734f, 0.632f };
50    int ldc = 1;
51    float C_expected[] = { 0.0137568f, -0.0253916f, -0.00941f, -0.100914f };
52    cblas_chemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc);
53    {
54      int i;
55      for (i = 0; i < 2; i++) {
56        gsl_test_rel(C[2*i], C_expected[2*i], flteps, "chemm(case 1551) real");
57        gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "chemm(case 1551) imag");
58      };
59    };
60   };
61
62
63   {
64    int order = 101;
65    int side = 142;
66    int uplo = 121;
67    int M = 1;
68    int N = 2;
69    float alpha[2] = {0.0f, 1.0f};
70    float beta[2] = {-1.0f, 0.0f};
71    float A[] = { 0.78f, 0.885f, 0.507f, 0.765f, 0.911f, -0.461f, 0.707f, 0.508f };
72    int lda = 2;
73    float B[] = { -0.905f, 0.633f, 0.85f, -0.943f };
74    int ldb = 2;
75    float C[] = { 0.045f, -0.237f, 0.078f, -0.252f };
76    int ldc = 2;
77    float C_expected[] = { 0.589611f, -0.759345f, 0.960095f, -0.09013f };
78    cblas_chemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc);
79    {
80      int i;
81      for (i = 0; i < 2; i++) {
82        gsl_test_rel(C[2*i], C_expected[2*i], flteps, "chemm(case 1552) real");
83        gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "chemm(case 1552) imag");
84      };
85    };
86   };
87
88
89   {
90    int order = 102;
91    int side = 142;
92    int uplo = 121;
93    int M = 1;
94    int N = 2;
95    float alpha[2] = {0.0f, 1.0f};
96    float beta[2] = {-1.0f, 0.0f};
97    float A[] = { 0.947f, 0.939f, -0.267f, -0.819f, -0.827f, -0.937f, 0.991f, 0.838f };
98    int lda = 2;
99    float B[] = { 0.871f, -0.988f, -0.232f, -0.434f };
100    int ldb = 1;
101    float C[] = { -0.261f, 0.927f, -0.351f, -0.203f };
102    int ldc = 1;
103    float C_expected[] = { 1.0551f, 0.496359f, 0.780145f, -1.67298f };
104    cblas_chemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc);
105    {
106      int i;
107      for (i = 0; i < 2; i++) {
108        gsl_test_rel(C[2*i], C_expected[2*i], flteps, "chemm(case 1553) real");
109        gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "chemm(case 1553) imag");
110      };
111    };
112   };
113
114
115   {
116    int order = 101;
117    int side = 141;
118    int uplo = 122;
119    int M = 1;
120    int N = 2;
121    float alpha[2] = {-1.0f, 0.0f};
122    float beta[2] = {0.0f, 0.0f};
123    float A[] = { -0.593f, -0.9f };
124    int lda = 1;
125    float B[] = { -0.861f, 0.747f, -0.984f, 0.595f };
126    int ldb = 2;
127    float C[] = { -0.589f, -0.671f, -0.011f, -0.417f };
128    int ldc = 2;
129    float C_expected[] = { -0.510573f, 0.442971f, -0.583512f, 0.352835f };
130    cblas_chemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc);
131    {
132      int i;
133      for (i = 0; i < 2; i++) {
134        gsl_test_rel(C[2*i], C_expected[2*i], flteps, "chemm(case 1554) real");
135        gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "chemm(case 1554) imag");
136      };
137    };
138   };
139
140
141   {
142    int order = 102;
143    int side = 141;
144    int uplo = 122;
145    int M = 1;
146    int N = 2;
147    float alpha[2] = {-1.0f, 0.0f};
148    float beta[2] = {0.0f, 0.0f};
149    float A[] = { -0.79f, 0.132f };
150    int lda = 1;
151    float B[] = { -0.243f, -0.12f, 0.633f, -0.556f };
152    int ldb = 1;
153    float C[] = { -0.658f, -0.74f, -0.47f, 0.481f };
154    int ldc = 1;
155    float C_expected[] = { -0.19197f, -0.0948f, 0.50007f, -0.43924f };
156    cblas_chemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc);
157    {
158      int i;
159      for (i = 0; i < 2; i++) {
160        gsl_test_rel(C[2*i], C_expected[2*i], flteps, "chemm(case 1555) real");
161        gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "chemm(case 1555) imag");
162      };
163    };
164   };
165
166
167   {
168    int order = 101;
169    int side = 142;
170    int uplo = 122;
171    int M = 1;
172    int N = 2;
173    float alpha[2] = {-0.3f, 0.1f};
174    float beta[2] = {0.0f, 1.0f};
175    float A[] = { -0.114f, -0.515f, -0.513f, -0.527f, -0.995f, 0.986f, 0.229f, -0.076f };
176    int lda = 2;
177    float B[] = { 0.084f, 0.522f, 0.61f, 0.694f };
178    int ldb = 2;
179    float C[] = { 0.802f, 0.136f, -0.161f, -0.364f };
180    int ldc = 2;
181    float C_expected[] = { 0.269101f, 0.716492f, 0.237088f, 0.0290666f };
182    cblas_chemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc);
183    {
184      int i;
185      for (i = 0; i < 2; i++) {
186        gsl_test_rel(C[2*i], C_expected[2*i], flteps, "chemm(case 1556) real");
187        gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "chemm(case 1556) imag");
188      };
189    };
190   };
191
192
193   {
194    int order = 102;
195    int side = 142;
196    int uplo = 122;
197    int M = 1;
198    int N = 2;
199    float alpha[2] = {-0.3f, 0.1f};
200    float beta[2] = {0.0f, 1.0f};
201    float A[] = { 0.798f, -0.324f, -0.693f, -0.893f, -0.223f, 0.749f, 0.102f, -0.357f };
202    int lda = 2;
203    float B[] = { -0.572f, -0.569f, -0.391f, -0.938f };
204    int ldb = 1;
205    float C[] = { 0.152f, -0.834f, -0.633f, -0.473f };
206    int ldc = 1;
207    float C_expected[] = { 1.08642f, -0.113853f, 0.234826f, -0.48289f };
208    cblas_chemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc);
209    {
210      int i;
211      for (i = 0; i < 2; i++) {
212        gsl_test_rel(C[2*i], C_expected[2*i], flteps, "chemm(case 1557) real");
213        gsl_test_rel(C[2*i+1], C_expected[2*i+1], flteps, "chemm(case 1557) imag");
214      };
215    };
216   };
217
218
219   {
220    int order = 101;
221    int side = 141;
222    int uplo = 121;
223    int M = 1;
224    int N = 2;
225    double alpha[2] = {0, 0.1};
226    double beta[2] = {0, 0.1};
227    double A[] = { -0.359, 0.089 };
228    int lda = 1;
229    double B[] = { -0.451, -0.337, -0.901, -0.871 };
230    int ldb = 2;
231    double C[] = { 0.729, 0.631, 0.364, 0.246 };
232    int ldc = 2;
233    double C_expected[] = { -0.0751983, 0.0890909, -0.0558689, 0.0687459 };
234    cblas_zhemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc);
235    {
236      int i;
237      for (i = 0; i < 2; i++) {
238        gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zhemm(case 1558) real");
239        gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zhemm(case 1558) imag");
240      };
241    };
242   };
243
244
245   {
246    int order = 102;
247    int side = 141;
248    int uplo = 121;
249    int M = 1;
250    int N = 2;
251    double alpha[2] = {0, 0.1};
252    double beta[2] = {0, 0.1};
253    double A[] = { 0.044, -0.496 };
254    int lda = 1;
255    double B[] = { -0.674, 0.281, 0.366, 0.888 };
256    int ldb = 1;
257    double C[] = { -0.9, 0.919, 0.857, -0.049 };
258    int ldc = 1;
259    double C_expected[] = { -0.0931364, -0.0929656, 0.0009928, 0.0873104 };
260    cblas_zhemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc);
261    {
262      int i;
263      for (i = 0; i < 2; i++) {
264        gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zhemm(case 1559) real");
265        gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zhemm(case 1559) imag");
266      };
267    };
268   };
269
270
271   {
272    int order = 101;
273    int side = 142;
274    int uplo = 121;
275    int M = 1;
276    int N = 2;
277    double alpha[2] = {0, 0};
278    double beta[2] = {0, 0.1};
279    double A[] = { -0.314, 0.115, 0.114, 0.878, 0.961, -0.224, 0.973, 0.771 };
280    int lda = 2;
281    double B[] = { 0.5, -0.016, -0.5, 0.149 };
282    int ldb = 2;
283    double C[] = { -0.054, 0.064, 0.02, 0.245 };
284    int ldc = 2;
285    double C_expected[] = { -0.0064, -0.0054, -0.0245, 0.002 };
286    cblas_zhemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc);
287    {
288      int i;
289      for (i = 0; i < 2; i++) {
290        gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zhemm(case 1560) real");
291        gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zhemm(case 1560) imag");
292      };
293    };
294   };
295
296
297   {
298    int order = 102;
299    int side = 142;
300    int uplo = 121;
301    int M = 1;
302    int N = 2;
303    double alpha[2] = {0, 0};
304    double beta[2] = {0, 0.1};
305    double A[] = { 0.186, 0.578, 0.797, -0.957, -0.539, -0.969, -0.21, 0.354 };
306    int lda = 2;
307    double B[] = { 0.641, -0.968, 0.15, -0.569 };
308    int ldb = 1;
309    double C[] = { -0.556, -0.9, 0.197, 0.31 };
310    int ldc = 1;
311    double C_expected[] = { 0.09, -0.0556, -0.031, 0.0197 };
312    cblas_zhemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc);
313    {
314      int i;
315      for (i = 0; i < 2; i++) {
316        gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zhemm(case 1561) real");
317        gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zhemm(case 1561) imag");
318      };
319    };
320   };
321
322
323   {
324    int order = 101;
325    int side = 141;
326    int uplo = 122;
327    int M = 1;
328    int N = 2;
329    double alpha[2] = {1, 0};
330    double beta[2] = {1, 0};
331    double A[] = { 0.323, 0.641 };
332    int lda = 1;
333    double B[] = { -0.188, 0.091, -0.235, 0.523 };
334    int ldb = 2;
335    double C[] = { 0.919, 0.806, 0.823, -0.94 };
336    int ldc = 2;
337    double C_expected[] = { 0.858276, 0.835393, 0.747095, -0.771071 };
338    cblas_zhemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc);
339    {
340      int i;
341      for (i = 0; i < 2; i++) {
342        gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zhemm(case 1562) real");
343        gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zhemm(case 1562) imag");
344      };
345    };
346   };
347
348
349   {
350    int order = 102;
351    int side = 141;
352    int uplo = 122;
353    int M = 1;
354    int N = 2;
355    double alpha[2] = {1, 0};
356    double beta[2] = {1, 0};
357    double A[] = { -0.688, 0.915 };
358    int lda = 1;
359    double B[] = { 0.914, -0.204, 0.205, -0.476 };
360    int ldb = 1;
361    double C[] = { 0.27, -0.628, -0.079, 0.507 };
362    int ldc = 1;
363    double C_expected[] = { -0.358832, -0.487648, -0.22004, 0.834488 };
364    cblas_zhemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc);
365    {
366      int i;
367      for (i = 0; i < 2; i++) {
368        gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zhemm(case 1563) real");
369        gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zhemm(case 1563) imag");
370      };
371    };
372   };
373
374
375   {
376    int order = 101;
377    int side = 142;
378    int uplo = 122;
379    int M = 1;
380    int N = 2;
381    double alpha[2] = {0, 1};
382    double beta[2] = {0, 0.1};
383    double A[] = { 0.681, 0.574, -0.425, -0.64, 0.792, 0.661, -0.009, 0.005 };
384    int lda = 2;
385    double B[] = { -0.221, 0.554, -0.465, -0.95 };
386    int ldb = 2;
387    double C[] = { 0.331, -0.958, -0.826, -0.972 };
388    int ldc = 2;
389    double C_expected[] = { 0.778291, 0.142269, -0.496199, 0.112747 };
390    cblas_zhemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc);
391    {
392      int i;
393      for (i = 0; i < 2; i++) {
394        gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zhemm(case 1564) real");
395        gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zhemm(case 1564) imag");
396      };
397    };
398   };
399
400
401   {
402    int order = 102;
403    int side = 142;
404    int uplo = 122;
405    int M = 1;
406    int N = 2;
407    double alpha[2] = {0, 1};
408    double beta[2] = {0, 0.1};
409    double A[] = { 0.959, 0.34, -0.23, 0.064, 0.516, -0.275, 0.714, 0.899 };
410    int lda = 2;
411    double B[] = { -0.502, -0.987, -0.134, 0.215 };
412    int ldb = 1;
413    double C[] = { 0.929, 0.181, -0.16, -0.921 };
414    int ldc = 1;
415    double C_expected[] = { 0.986459, -0.371458, -0.320548, -0.059384 };
416    cblas_zhemm(order, side, uplo, M, N, alpha, A, lda, B, ldb, beta, C, ldc);
417    {
418      int i;
419      for (i = 0; i < 2; i++) {
420        gsl_test_rel(C[2*i], C_expected[2*i], dbleps, "zhemm(case 1565) real");
421        gsl_test_rel(C[2*i+1], C_expected[2*i+1], dbleps, "zhemm(case 1565) imag");
422      };
423    };
424   };
425
426
427 }