xref: /aosp_15_r20/cts/tests/tests/rsblas/assets/blas_gen.py (revision b7c941bb3fa97aba169d73cee0bed2de8ac964bf)
1*b7c941bbSAndroid Build Coastguard Worker#
2*b7c941bbSAndroid Build Coastguard Worker# Copyright (C) 2015 The Android Open Source Project
3*b7c941bbSAndroid Build Coastguard Worker#
4*b7c941bbSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
5*b7c941bbSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
6*b7c941bbSAndroid Build Coastguard Worker# You may obtain a copy of the License at
7*b7c941bbSAndroid Build Coastguard Worker#
8*b7c941bbSAndroid Build Coastguard Worker#      http://www.apache.org/licenses/LICENSE-2.0
9*b7c941bbSAndroid Build Coastguard Worker#
10*b7c941bbSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
11*b7c941bbSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
12*b7c941bbSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*b7c941bbSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
14*b7c941bbSAndroid Build Coastguard Worker# limitations under the License.
15*b7c941bbSAndroid Build Coastguard Worker#
16*b7c941bbSAndroid Build Coastguard Worker
17*b7c941bbSAndroid Build Coastguard Worker# This Python script is used to generate all input and output
18*b7c941bbSAndroid Build Coastguard Worker# reference data into BLASData.txt
19*b7c941bbSAndroid Build Coastguard Worker
20*b7c941bbSAndroid Build Coastguard Worker#!/usr/bin/python
21*b7c941bbSAndroid Build Coastguard Worker
22*b7c941bbSAndroid Build Coastguard Workerfrom numpy import *
23*b7c941bbSAndroid Build Coastguard Worker
24*b7c941bbSAndroid Build Coastguard Worker# functions used for generating input matrices.
25*b7c941bbSAndroid Build Coastguard Worker
26*b7c941bbSAndroid Build Coastguard Worker# Modify a regular matrix to a triangular matrix.
27*b7c941bbSAndroid Build Coastguard Workerdef triangularMatrixGen(a, uplo):
28*b7c941bbSAndroid Build Coastguard Worker    if uplo == 'u': #upper = 1, lower = 2
29*b7c941bbSAndroid Build Coastguard Worker        for i in range(1, a.shape[0]):
30*b7c941bbSAndroid Build Coastguard Worker            for j in range(0, i):
31*b7c941bbSAndroid Build Coastguard Worker                a[i, j] = 0
32*b7c941bbSAndroid Build Coastguard Worker    elif uplo == 'l':
33*b7c941bbSAndroid Build Coastguard Worker        for i in range(0, a.shape[0]-1):
34*b7c941bbSAndroid Build Coastguard Worker            for j in range(i+1, a.shape[1]):
35*b7c941bbSAndroid Build Coastguard Worker                a[i, j] = 0
36*b7c941bbSAndroid Build Coastguard Worker
37*b7c941bbSAndroid Build Coastguard Worker# Modify a regular matrix to a symmetric matrix.
38*b7c941bbSAndroid Build Coastguard Workerdef symm(a):
39*b7c941bbSAndroid Build Coastguard Worker    for i in range(1, a.shape[0]):
40*b7c941bbSAndroid Build Coastguard Worker        for j in range(0, i):
41*b7c941bbSAndroid Build Coastguard Worker            a[i, j] = a[j, i];
42*b7c941bbSAndroid Build Coastguard Worker
43*b7c941bbSAndroid Build Coastguard Worker# Modify a regular matrix to a hermitian matrix.
44*b7c941bbSAndroid Build Coastguard Workerdef herm(a):
45*b7c941bbSAndroid Build Coastguard Worker    for i in range(0, a.shape[0]):
46*b7c941bbSAndroid Build Coastguard Worker        a[i,i] = complex(a[i,i].real, 0);
47*b7c941bbSAndroid Build Coastguard Worker    for i in range(1, a.shape[0]):
48*b7c941bbSAndroid Build Coastguard Worker        for j in range(0, i):
49*b7c941bbSAndroid Build Coastguard Worker            a[i, j] = complex(a[j, i].real, -a[j, i].imag);
50*b7c941bbSAndroid Build Coastguard Worker
51*b7c941bbSAndroid Build Coastguard Worker# Zero all elments in a matrix
52*b7c941bbSAndroid Build Coastguard Workerdef zero(a):
53*b7c941bbSAndroid Build Coastguard Worker    for i in range(0, a.shape[0]):
54*b7c941bbSAndroid Build Coastguard Worker        for j in range(0, a.shape[1]):
55*b7c941bbSAndroid Build Coastguard Worker            a[i, j] = 0;
56*b7c941bbSAndroid Build Coastguard Worker
57*b7c941bbSAndroid Build Coastguard Worker# Generate a random float matrix given a scale.
58*b7c941bbSAndroid Build Coastguard Workerdef sMatGen(m, n, scale):
59*b7c941bbSAndroid Build Coastguard Worker    a = mat(random.randint(1, 10, size=(m, n)).astype('f4')/scale)
60*b7c941bbSAndroid Build Coastguard Worker    return a;
61*b7c941bbSAndroid Build Coastguard Worker
62*b7c941bbSAndroid Build Coastguard Worker# Generate a random double matrix given a scale.
63*b7c941bbSAndroid Build Coastguard Workerdef dMatGen(m, n, scale):
64*b7c941bbSAndroid Build Coastguard Worker    a = mat(random.randint(1, 10, size=(m, n)).astype('f8')/scale)
65*b7c941bbSAndroid Build Coastguard Worker    return a;
66*b7c941bbSAndroid Build Coastguard Worker
67*b7c941bbSAndroid Build Coastguard Worker# Generate a random float complex matrix given a scale.
68*b7c941bbSAndroid Build Coastguard Workerdef cMatGen(m, n, scale):
69*b7c941bbSAndroid Build Coastguard Worker    a_real = mat(random.randint(1, 10, size=(m, n)).astype('f4')/scale)
70*b7c941bbSAndroid Build Coastguard Worker    a_img = mat(random.randint(1, 10, size=(m, n)).astype('f4')/scale)
71*b7c941bbSAndroid Build Coastguard Worker    a = a_real + 1j * a_img
72*b7c941bbSAndroid Build Coastguard Worker    return a;
73*b7c941bbSAndroid Build Coastguard Worker
74*b7c941bbSAndroid Build Coastguard Worker# Generate a random double complex matrix given a scale.
75*b7c941bbSAndroid Build Coastguard Workerdef zMatGen(m, n, scale):
76*b7c941bbSAndroid Build Coastguard Worker    a_real = mat(random.randint(1, 10, size=(m, n)).astype('f8')/scale)
77*b7c941bbSAndroid Build Coastguard Worker    a_img = mat(random.randint(1, 10, size=(m, n)).astype('f8')/scale)
78*b7c941bbSAndroid Build Coastguard Worker    a = a_real + 1j * a_img
79*b7c941bbSAndroid Build Coastguard Worker    return a;
80*b7c941bbSAndroid Build Coastguard Worker
81*b7c941bbSAndroid Build Coastguard Worker# A wrapper to generated random matrices given a scale
82*b7c941bbSAndroid Build Coastguard Workerdef matrixCreateScale(dt, m, n, scale):
83*b7c941bbSAndroid Build Coastguard Worker    if dt == 's':
84*b7c941bbSAndroid Build Coastguard Worker        return sMatGen(m, n, scale);
85*b7c941bbSAndroid Build Coastguard Worker    elif dt == 'd':
86*b7c941bbSAndroid Build Coastguard Worker        return dMatGen(m, n, scale);
87*b7c941bbSAndroid Build Coastguard Worker    elif dt == 'c':
88*b7c941bbSAndroid Build Coastguard Worker        return cMatGen(m, n, scale);
89*b7c941bbSAndroid Build Coastguard Worker    else:
90*b7c941bbSAndroid Build Coastguard Worker        return zMatGen(m, n, scale);
91*b7c941bbSAndroid Build Coastguard Worker
92*b7c941bbSAndroid Build Coastguard Worker# A wrapper to generated random matrices
93*b7c941bbSAndroid Build Coastguard Workerdef matrixCreate(dt, m, n):
94*b7c941bbSAndroid Build Coastguard Worker    return matrixCreateScale(dt, m, n, 10);
95*b7c941bbSAndroid Build Coastguard Worker
96*b7c941bbSAndroid Build Coastguard Worker# Write a float matrix into a given file.
97*b7c941bbSAndroid Build Coastguard Worker# For each element, can pad arbitrary number of 0s after it.
98*b7c941bbSAndroid Build Coastguard Workerdef writeFloatMatrix(a, name, skip, fo):
99*b7c941bbSAndroid Build Coastguard Worker    fo.write(name + '\n');
100*b7c941bbSAndroid Build Coastguard Worker    for i in range(0, a.shape[0]):
101*b7c941bbSAndroid Build Coastguard Worker        for j in range(0, a.shape[1]):
102*b7c941bbSAndroid Build Coastguard Worker            fo.write(str(a[i,j]) + ", ");
103*b7c941bbSAndroid Build Coastguard Worker            for hh in range(0, skip):
104*b7c941bbSAndroid Build Coastguard Worker                fo.write("0.0, ");
105*b7c941bbSAndroid Build Coastguard Worker    fo.write("\n\n");
106*b7c941bbSAndroid Build Coastguard Worker
107*b7c941bbSAndroid Build Coastguard Worker# Write a double matrix into a given file.
108*b7c941bbSAndroid Build Coastguard Worker# For each element, can pad arbitrary number of 0s after it.
109*b7c941bbSAndroid Build Coastguard Workerdef writeDoubleMatrix(a, name, skip, fo):
110*b7c941bbSAndroid Build Coastguard Worker    writeFloatMatrix(a, name, skip, fo);
111*b7c941bbSAndroid Build Coastguard Worker
112*b7c941bbSAndroid Build Coastguard Worker# Write a float complex matrix into a given file.
113*b7c941bbSAndroid Build Coastguard Worker# For each element, can pad arbitrary number of 0s after it.
114*b7c941bbSAndroid Build Coastguard Workerdef writeFloatComplexMatrix(a, name, skip, fo):
115*b7c941bbSAndroid Build Coastguard Worker    fo.write(name + '\n');
116*b7c941bbSAndroid Build Coastguard Worker    for i in range(0, a.shape[0]):
117*b7c941bbSAndroid Build Coastguard Worker        for j in range(0, a.shape[1]):
118*b7c941bbSAndroid Build Coastguard Worker            fo.write(str(real(a[i,j])) + ", ");
119*b7c941bbSAndroid Build Coastguard Worker            fo.write(str(imag(a[i,j])) + ", ");
120*b7c941bbSAndroid Build Coastguard Worker            for hh in range(0, skip):
121*b7c941bbSAndroid Build Coastguard Worker                fo.write("0.0, ");
122*b7c941bbSAndroid Build Coastguard Worker                fo.write("0.0, ");
123*b7c941bbSAndroid Build Coastguard Worker    fo.write("\n\n");
124*b7c941bbSAndroid Build Coastguard Worker
125*b7c941bbSAndroid Build Coastguard Worker# Write a double complex matrix into a given file.
126*b7c941bbSAndroid Build Coastguard Worker# For each element, can pad arbitrary number of 0s after it.
127*b7c941bbSAndroid Build Coastguard Workerdef writeDoubleComplexMatrix(a, name, skip, fo):
128*b7c941bbSAndroid Build Coastguard Worker    writeFloatComplexMatrix(a, name, skip, fo);
129*b7c941bbSAndroid Build Coastguard Worker
130*b7c941bbSAndroid Build Coastguard Worker# Wrapper to write a matrix into a given file.
131*b7c941bbSAndroid Build Coastguard Worker# For each element, can pad arbitrary number of 0s after it.
132*b7c941bbSAndroid Build Coastguard Workerdef writeMatrixWithIncrements(dt, a, name, skip, fo):
133*b7c941bbSAndroid Build Coastguard Worker    if dt == 's':
134*b7c941bbSAndroid Build Coastguard Worker        writeFloatMatrix(a, name, skip, fo);
135*b7c941bbSAndroid Build Coastguard Worker    elif dt == 'd':
136*b7c941bbSAndroid Build Coastguard Worker        writeDoubleMatrix(a, name, skip, fo);
137*b7c941bbSAndroid Build Coastguard Worker    elif dt == 'c':
138*b7c941bbSAndroid Build Coastguard Worker        writeFloatComplexMatrix(a, name, skip, fo);
139*b7c941bbSAndroid Build Coastguard Worker    else:
140*b7c941bbSAndroid Build Coastguard Worker        writeDoubleComplexMatrix(a, name, skip, fo);
141*b7c941bbSAndroid Build Coastguard Worker
142*b7c941bbSAndroid Build Coastguard Worker# Wrapper to write a matrix into a given file.
143*b7c941bbSAndroid Build Coastguard Workerdef writeMatrix(dt, a, name, fo):
144*b7c941bbSAndroid Build Coastguard Worker    writeMatrixWithIncrements(dt, a, name, 0, fo);
145*b7c941bbSAndroid Build Coastguard Worker
146*b7c941bbSAndroid Build Coastguard Worker# Write a symmetric or hermitian float matrix into a given file, in a packed form.
147*b7c941bbSAndroid Build Coastguard Workerdef writeFloatPackedMatrix(a, name, fo):
148*b7c941bbSAndroid Build Coastguard Worker    fo.write(name + '\n');
149*b7c941bbSAndroid Build Coastguard Worker    for i in range(0, a.shape[0]):
150*b7c941bbSAndroid Build Coastguard Worker        for j in range(i, a.shape[1]):
151*b7c941bbSAndroid Build Coastguard Worker            fo.write(str(a[i,j]) + ", ");
152*b7c941bbSAndroid Build Coastguard Worker    fo.write("\n\n");
153*b7c941bbSAndroid Build Coastguard Worker
154*b7c941bbSAndroid Build Coastguard Worker# Write a symmetric or hermitian double matrix into a given file, in a packed form.
155*b7c941bbSAndroid Build Coastguard Workerdef writeDoublePackedMatrix(a, name, fo):
156*b7c941bbSAndroid Build Coastguard Worker    writeFloatPackedMatrix(a, name, fo);
157*b7c941bbSAndroid Build Coastguard Worker
158*b7c941bbSAndroid Build Coastguard Worker# Write a symmetric or hermitian float complex matrix into a given file, in a packed form.
159*b7c941bbSAndroid Build Coastguard Workerdef writeFloatComplexPackedMatrix(a, name, fo):
160*b7c941bbSAndroid Build Coastguard Worker    fo.write(name + '\n');
161*b7c941bbSAndroid Build Coastguard Worker    for i in range(0, a.shape[0]):
162*b7c941bbSAndroid Build Coastguard Worker        for j in range(i, a.shape[1]):
163*b7c941bbSAndroid Build Coastguard Worker            fo.write(str(real(a[i,j])) + ", ");
164*b7c941bbSAndroid Build Coastguard Worker            fo.write(str(imag(a[i,j])) + ", ");
165*b7c941bbSAndroid Build Coastguard Worker    fo.write("\n\n");
166*b7c941bbSAndroid Build Coastguard Worker
167*b7c941bbSAndroid Build Coastguard Worker# Write a symmetric or hermitian double complex matrix into a given file, in a packed form.
168*b7c941bbSAndroid Build Coastguard Workerdef writeDoubleComplexPackedMatrix(a, name, fo):
169*b7c941bbSAndroid Build Coastguard Worker    writeFloatComplexPackedMatrix(a, name, fo);
170*b7c941bbSAndroid Build Coastguard Worker
171*b7c941bbSAndroid Build Coastguard Worker# Wrapper to write a symmetric or hermitian matrix into a given file, in a packed form.
172*b7c941bbSAndroid Build Coastguard Workerdef writePackedMatrix(dt, a, name, fo):
173*b7c941bbSAndroid Build Coastguard Worker    if dt == 's':
174*b7c941bbSAndroid Build Coastguard Worker        writeFloatPackedMatrix(a, name, fo);
175*b7c941bbSAndroid Build Coastguard Worker    elif dt == 'd':
176*b7c941bbSAndroid Build Coastguard Worker        writeDoublePackedMatrix(a, name, fo);
177*b7c941bbSAndroid Build Coastguard Worker    elif dt == 'c':
178*b7c941bbSAndroid Build Coastguard Worker        writeFloatComplexPackedMatrix(a, name, fo);
179*b7c941bbSAndroid Build Coastguard Worker    else:
180*b7c941bbSAndroid Build Coastguard Worker        writeDoubleComplexPackedMatrix(a, name, fo);
181*b7c941bbSAndroid Build Coastguard Worker
182*b7c941bbSAndroid Build Coastguard Worker# Write a float band matrix into a given file, in a banded-storage form.
183*b7c941bbSAndroid Build Coastguard Workerdef writeGeneralFloatBandedMatrix(a, kl, ku, name, fo):
184*b7c941bbSAndroid Build Coastguard Worker    m = a.shape[0];
185*b7c941bbSAndroid Build Coastguard Worker    n = a.shape[1];
186*b7c941bbSAndroid Build Coastguard Worker    b = sMatGen(m, kl + ku + 1, 1);
187*b7c941bbSAndroid Build Coastguard Worker    zero(b);
188*b7c941bbSAndroid Build Coastguard Worker    for i in range(0, m):
189*b7c941bbSAndroid Build Coastguard Worker        for j in range(max(0, i-kl), min(i+ku+1, n)):
190*b7c941bbSAndroid Build Coastguard Worker            b[i, j-i+kl] = a[i, j]
191*b7c941bbSAndroid Build Coastguard Worker    writeFloatMatrix(b, name, 0, fo);
192*b7c941bbSAndroid Build Coastguard Worker    zero(a);
193*b7c941bbSAndroid Build Coastguard Worker    for i in range(0, m):
194*b7c941bbSAndroid Build Coastguard Worker        for j in range(max(0, i-kl), min(i+ku+1, n)):
195*b7c941bbSAndroid Build Coastguard Worker            a[i, j] = b[i, j-i+kl]
196*b7c941bbSAndroid Build Coastguard Worker
197*b7c941bbSAndroid Build Coastguard Worker# Write a double band matrix into a given file, in a banded-storage form.
198*b7c941bbSAndroid Build Coastguard Workerdef writeGeneralDoubleBandedMatrix(a, kl, ku, name, fo):
199*b7c941bbSAndroid Build Coastguard Worker    m = a.shape[0];
200*b7c941bbSAndroid Build Coastguard Worker    n = a.shape[1];
201*b7c941bbSAndroid Build Coastguard Worker    b = dMatGen(m, kl + ku + 1, 1);
202*b7c941bbSAndroid Build Coastguard Worker    zero(b);
203*b7c941bbSAndroid Build Coastguard Worker    for i in range(0, m):
204*b7c941bbSAndroid Build Coastguard Worker        for j in range(max(0, i-kl), min(i+ku+1, n)):
205*b7c941bbSAndroid Build Coastguard Worker            b[i, j-i+kl] = a[i, j]
206*b7c941bbSAndroid Build Coastguard Worker    writeDoubleMatrix(b, name, 0, fo);
207*b7c941bbSAndroid Build Coastguard Worker    zero(a);
208*b7c941bbSAndroid Build Coastguard Worker    for i in range(0, m):
209*b7c941bbSAndroid Build Coastguard Worker        for j in range(max(0, i-kl), min(i+ku+1, n)):
210*b7c941bbSAndroid Build Coastguard Worker            a[i, j] = b[i, j-i+kl]
211*b7c941bbSAndroid Build Coastguard Worker
212*b7c941bbSAndroid Build Coastguard Worker# Write a float complex band matrix into a given file, in a banded-storage form.
213*b7c941bbSAndroid Build Coastguard Workerdef writeGeneralFloatComplexBandedMatrix(a, kl, ku, name, fo):
214*b7c941bbSAndroid Build Coastguard Worker    m = a.shape[0];
215*b7c941bbSAndroid Build Coastguard Worker    n = a.shape[1];
216*b7c941bbSAndroid Build Coastguard Worker    b = cMatGen(m, kl + ku + 1, 1);
217*b7c941bbSAndroid Build Coastguard Worker    zero(b);
218*b7c941bbSAndroid Build Coastguard Worker    for i in range(0, m):
219*b7c941bbSAndroid Build Coastguard Worker        for j in range(max(0, i-kl), min(i+ku+1, n)):
220*b7c941bbSAndroid Build Coastguard Worker            b[i, j-i+kl] = a[i, j]
221*b7c941bbSAndroid Build Coastguard Worker    writeFloatComplexMatrix(b, name, 0, fo);
222*b7c941bbSAndroid Build Coastguard Worker    zero(a);
223*b7c941bbSAndroid Build Coastguard Worker    for i in range(0, m):
224*b7c941bbSAndroid Build Coastguard Worker        for j in range(max(0, i-kl), min(i+ku+1, n)):
225*b7c941bbSAndroid Build Coastguard Worker            a[i, j] = b[i, j-i+kl]
226*b7c941bbSAndroid Build Coastguard Worker
227*b7c941bbSAndroid Build Coastguard Worker# Write a double complex band matrix into a given file, in a banded-storage form.
228*b7c941bbSAndroid Build Coastguard Workerdef writeGeneralDoubleComplexBandedMatrix(a, kl, ku, name, fo):
229*b7c941bbSAndroid Build Coastguard Worker    m = a.shape[0];
230*b7c941bbSAndroid Build Coastguard Worker    n = a.shape[1];
231*b7c941bbSAndroid Build Coastguard Worker    b = zMatGen(m, kl + ku + 1, 1);
232*b7c941bbSAndroid Build Coastguard Worker    zero(b);
233*b7c941bbSAndroid Build Coastguard Worker    for i in range(0, m):
234*b7c941bbSAndroid Build Coastguard Worker        for j in range(max(0, i-kl), min(i+ku+1, n)):
235*b7c941bbSAndroid Build Coastguard Worker            b[i, j-i+kl] = a[i, j]
236*b7c941bbSAndroid Build Coastguard Worker    writeDoubleComplexMatrix(b, name, 0, fo);
237*b7c941bbSAndroid Build Coastguard Worker    zero(a);
238*b7c941bbSAndroid Build Coastguard Worker    for i in range(0, m):
239*b7c941bbSAndroid Build Coastguard Worker        for j in range(max(0, i-kl), min(i+ku+1, n)):
240*b7c941bbSAndroid Build Coastguard Worker            a[i, j] = b[i, j-i+kl]
241*b7c941bbSAndroid Build Coastguard Worker
242*b7c941bbSAndroid Build Coastguard Worker# Wrapper to write a band matrix into a given file, in a banded-storage form.
243*b7c941bbSAndroid Build Coastguard Workerdef writeGeneralBandedMatrix(dt, a, kl, ku, name, fo):
244*b7c941bbSAndroid Build Coastguard Worker    if dt == 's':
245*b7c941bbSAndroid Build Coastguard Worker        writeGeneralFloatBandedMatrix(a, kl, ku, name, fo);
246*b7c941bbSAndroid Build Coastguard Worker    elif dt == 'd':
247*b7c941bbSAndroid Build Coastguard Worker        writeGeneralDoubleBandedMatrix(a, kl, ku, name, fo);
248*b7c941bbSAndroid Build Coastguard Worker    elif dt == 'c':
249*b7c941bbSAndroid Build Coastguard Worker        writeGeneralFloatComplexBandedMatrix(a, kl, ku, name, fo);
250*b7c941bbSAndroid Build Coastguard Worker    else:
251*b7c941bbSAndroid Build Coastguard Worker        writeGeneralDoubleComplexBandedMatrix(a, kl, ku, name, fo);
252*b7c941bbSAndroid Build Coastguard Worker
253*b7c941bbSAndroid Build Coastguard Worker# Write a float symmetric or hermitian band matrix into a given file, in a banded-storage form.
254*b7c941bbSAndroid Build Coastguard Workerdef writeFloatSymmBandedMatrix(a, k, name, fo):
255*b7c941bbSAndroid Build Coastguard Worker    n = a.shape[1];
256*b7c941bbSAndroid Build Coastguard Worker    b = sMatGen(n, k+1, 1);
257*b7c941bbSAndroid Build Coastguard Worker    zero(b);
258*b7c941bbSAndroid Build Coastguard Worker    for i in range(0, n):
259*b7c941bbSAndroid Build Coastguard Worker        for j in range(i, min(i+k+1, n)):
260*b7c941bbSAndroid Build Coastguard Worker            b[i, j-i] = a[i, j]
261*b7c941bbSAndroid Build Coastguard Worker    writeFloatMatrix(b, name, 0, fo);
262*b7c941bbSAndroid Build Coastguard Worker    zero(a);
263*b7c941bbSAndroid Build Coastguard Worker    for i in range(0, n):
264*b7c941bbSAndroid Build Coastguard Worker        for j in range(i, min(i+k+1, n)):
265*b7c941bbSAndroid Build Coastguard Worker            a[i, j] = b[i, j-i]
266*b7c941bbSAndroid Build Coastguard Worker
267*b7c941bbSAndroid Build Coastguard Worker# Write a double symmetric or hermitian band matrix into a given file, in a banded-storage form.
268*b7c941bbSAndroid Build Coastguard Workerdef writeDoubleSymmBandedMatrix(a, k, name, fo):
269*b7c941bbSAndroid Build Coastguard Worker    n = a.shape[1];
270*b7c941bbSAndroid Build Coastguard Worker    b = dMatGen(n, k+1, 1);
271*b7c941bbSAndroid Build Coastguard Worker    zero(b);
272*b7c941bbSAndroid Build Coastguard Worker    for i in range(0, n):
273*b7c941bbSAndroid Build Coastguard Worker        for j in range(i, min(i+k+1, n)):
274*b7c941bbSAndroid Build Coastguard Worker            b[i, j-i] = a[i, j]
275*b7c941bbSAndroid Build Coastguard Worker    writeDoubleMatrix(b, name, 0, fo);
276*b7c941bbSAndroid Build Coastguard Worker    zero(a);
277*b7c941bbSAndroid Build Coastguard Worker    for i in range(0, n):
278*b7c941bbSAndroid Build Coastguard Worker        for j in range(i, min(i+k+1, n)):
279*b7c941bbSAndroid Build Coastguard Worker            a[i, j] = b[i, j-i]
280*b7c941bbSAndroid Build Coastguard Worker
281*b7c941bbSAndroid Build Coastguard Worker# Write a float complex symmetric or hermitian band matrix into a given file, in a banded-storage form.
282*b7c941bbSAndroid Build Coastguard Workerdef writeFloatComplexSymmBandedMatrix(a, k, name, fo):
283*b7c941bbSAndroid Build Coastguard Worker    n = a.shape[1];
284*b7c941bbSAndroid Build Coastguard Worker    b = cMatGen(n, k+1, 1);
285*b7c941bbSAndroid Build Coastguard Worker    zero(b);
286*b7c941bbSAndroid Build Coastguard Worker    for i in range(0, n):
287*b7c941bbSAndroid Build Coastguard Worker        for j in range(i, min(i+k+1, n)):
288*b7c941bbSAndroid Build Coastguard Worker            b[i, j-i] = a[i, j]
289*b7c941bbSAndroid Build Coastguard Worker    writeFloatComplexMatrix(b, name, 0, fo);
290*b7c941bbSAndroid Build Coastguard Worker    zero(a);
291*b7c941bbSAndroid Build Coastguard Worker    for i in range(0, n):
292*b7c941bbSAndroid Build Coastguard Worker        for j in range(i, min(i+k+1, n)):
293*b7c941bbSAndroid Build Coastguard Worker            a[i, j] = b[i, j-i]
294*b7c941bbSAndroid Build Coastguard Worker
295*b7c941bbSAndroid Build Coastguard Worker# Write a double complex symmetric or hermitian band matrix into a given file, in a banded-storage form.
296*b7c941bbSAndroid Build Coastguard Workerdef writeDoubleComplexSymmBandedMatrix(a, k, name, fo):
297*b7c941bbSAndroid Build Coastguard Worker    n = a.shape[1];
298*b7c941bbSAndroid Build Coastguard Worker    b = zMatGen(n, k+1, 1);
299*b7c941bbSAndroid Build Coastguard Worker    zero(b);
300*b7c941bbSAndroid Build Coastguard Worker    for i in range(0, n):
301*b7c941bbSAndroid Build Coastguard Worker        for j in range(i, min(i+k+1, n)):
302*b7c941bbSAndroid Build Coastguard Worker            b[i, j-i] = a[i, j]
303*b7c941bbSAndroid Build Coastguard Worker    writeDoubleComplexMatrix(b, name, 0, fo);
304*b7c941bbSAndroid Build Coastguard Worker    zero(a);
305*b7c941bbSAndroid Build Coastguard Worker    for i in range(0, n):
306*b7c941bbSAndroid Build Coastguard Worker        for j in range(i, min(i+k+1, n)):
307*b7c941bbSAndroid Build Coastguard Worker            a[i, j] = b[i, j-i]
308*b7c941bbSAndroid Build Coastguard Worker
309*b7c941bbSAndroid Build Coastguard Worker# Wrapper to write a symmetric or hermitian band matrix into a given file, in a banded-storage form.
310*b7c941bbSAndroid Build Coastguard Workerdef writeSymmBandedMatrix(dt, a, k, name, fo):
311*b7c941bbSAndroid Build Coastguard Worker    if dt == 's':
312*b7c941bbSAndroid Build Coastguard Worker        writeFloatSymmBandedMatrix(a, k, name, fo);
313*b7c941bbSAndroid Build Coastguard Worker    elif dt == 'd':
314*b7c941bbSAndroid Build Coastguard Worker        writeDoubleSymmBandedMatrix(a, k, name, fo);
315*b7c941bbSAndroid Build Coastguard Worker    elif dt == 'c':
316*b7c941bbSAndroid Build Coastguard Worker        writeFloatComplexSymmBandedMatrix(a, k, name, fo);
317*b7c941bbSAndroid Build Coastguard Worker    else:
318*b7c941bbSAndroid Build Coastguard Worker        writeDoubleComplexSymmBandedMatrix(a, k, name, fo);
319*b7c941bbSAndroid Build Coastguard Worker
320*b7c941bbSAndroid Build Coastguard Worker
321*b7c941bbSAndroid Build Coastguard Worker
322*b7c941bbSAndroid Build Coastguard Worker#L3 Functions, generate input and output matrices to file.
323*b7c941bbSAndroid Build Coastguard Workerdef L3_xGEMM(fo, alpha, beta, m, n, k):
324*b7c941bbSAndroid Build Coastguard Worker    dataType = ['s', 'd', 'c', 'z'];
325*b7c941bbSAndroid Build Coastguard Worker
326*b7c941bbSAndroid Build Coastguard Worker    for dt in dataType:
327*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, m, k);
328*b7c941bbSAndroid Build Coastguard Worker        b = matrixCreate(dt, k, n);
329*b7c941bbSAndroid Build Coastguard Worker        c = matrixCreate(dt, m, n);
330*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L3_" + dt + "GEMM_A_mk", fo);
331*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, b, "L3_" + dt + "GEMM_B_kn", fo);
332*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, c, "L3_" + dt + "GEMM_C_mn", fo);
333*b7c941bbSAndroid Build Coastguard Worker
334*b7c941bbSAndroid Build Coastguard Worker        d = alpha * a * b + beta * c;
335*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L3_" + dt + "GEMM_o_NN", fo);
336*b7c941bbSAndroid Build Coastguard Worker
337*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, k, m);
338*b7c941bbSAndroid Build Coastguard Worker        b = matrixCreate(dt, n, k);
339*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L3_" + dt + "GEMM_A_km", fo);
340*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, b, "L3_" + dt + "GEMM_B_nk", fo);
341*b7c941bbSAndroid Build Coastguard Worker
342*b7c941bbSAndroid Build Coastguard Worker        d = alpha * a.T * b.T + beta * c;
343*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L3_" + dt + "GEMM_o_TT", fo);
344*b7c941bbSAndroid Build Coastguard Worker        d = alpha * a.H * b.H + beta * c;
345*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L3_" + dt + "GEMM_o_HH", fo);
346*b7c941bbSAndroid Build Coastguard Worker
347*b7c941bbSAndroid Build Coastguard Workerdef L3_xSYMM(fo, alpha, beta, m, n):
348*b7c941bbSAndroid Build Coastguard Worker    dataType = ['s', 'd', 'c', 'z'];
349*b7c941bbSAndroid Build Coastguard Worker
350*b7c941bbSAndroid Build Coastguard Worker    for dt in dataType:
351*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, m, m);
352*b7c941bbSAndroid Build Coastguard Worker        symm(a);
353*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L3_" + dt + "SYMM_A_mm", fo);
354*b7c941bbSAndroid Build Coastguard Worker
355*b7c941bbSAndroid Build Coastguard Worker        b = matrixCreate(dt, m, n);
356*b7c941bbSAndroid Build Coastguard Worker        c = matrixCreate(dt, m, n);
357*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, b, "L3_" + dt + "SYMM_B_mn", fo);
358*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, c, "L3_" + dt + "SYMM_C_mn", fo);
359*b7c941bbSAndroid Build Coastguard Worker
360*b7c941bbSAndroid Build Coastguard Worker        d = alpha * a * b + beta * c;
361*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L3_" + dt + "SYMM_o_L", fo);
362*b7c941bbSAndroid Build Coastguard Worker
363*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, n, n);
364*b7c941bbSAndroid Build Coastguard Worker        symm(a);
365*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L3_" + dt + "SYMM_A_nn", fo);
366*b7c941bbSAndroid Build Coastguard Worker        d = alpha * b * a + beta * c;
367*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L3_" + dt + "SYMM_o_R", fo);
368*b7c941bbSAndroid Build Coastguard Worker
369*b7c941bbSAndroid Build Coastguard Workerdef L3_xHEMM(fo, alpha, beta, m, n):
370*b7c941bbSAndroid Build Coastguard Worker    dataType = ['c', 'z'];
371*b7c941bbSAndroid Build Coastguard Worker
372*b7c941bbSAndroid Build Coastguard Worker    for dt in dataType:
373*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, m, m);
374*b7c941bbSAndroid Build Coastguard Worker        herm(a);
375*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L3_" + dt + "HEMM_A_mm", fo);
376*b7c941bbSAndroid Build Coastguard Worker
377*b7c941bbSAndroid Build Coastguard Worker        b = matrixCreate(dt, m, n);
378*b7c941bbSAndroid Build Coastguard Worker        c = matrixCreate(dt, m, n);
379*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, b, "L3_" + dt + "HEMM_B_mn", fo);
380*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, c, "L3_" + dt + "HEMM_C_mn", fo);
381*b7c941bbSAndroid Build Coastguard Worker
382*b7c941bbSAndroid Build Coastguard Worker        d = alpha * a * b + beta * c;
383*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L3_" + dt + "HEMM_o_L", fo);
384*b7c941bbSAndroid Build Coastguard Worker
385*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, n, n);
386*b7c941bbSAndroid Build Coastguard Worker        herm(a);
387*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L3_" + dt + "HEMM_A_nn", fo);
388*b7c941bbSAndroid Build Coastguard Worker        d = alpha * b * a + beta * c;
389*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L3_" + dt + "HEMM_o_R", fo);
390*b7c941bbSAndroid Build Coastguard Worker
391*b7c941bbSAndroid Build Coastguard Workerdef L3_xSYRK(fo, alpha, beta, n, k):
392*b7c941bbSAndroid Build Coastguard Worker    dataType = ['s', 'd', 'c', 'z'];
393*b7c941bbSAndroid Build Coastguard Worker
394*b7c941bbSAndroid Build Coastguard Worker    for dt in dataType:
395*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, n, k);
396*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L3_" + dt + "SYRK_A_nk", fo);
397*b7c941bbSAndroid Build Coastguard Worker        c = matrixCreate(dt, n, n);
398*b7c941bbSAndroid Build Coastguard Worker        symm(c);
399*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, c, "L3_" + dt + "SYRK_C_nn", fo);
400*b7c941bbSAndroid Build Coastguard Worker        d = alpha * a * a.T + beta * c;
401*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L3_" + dt + "SYRK_o_N", fo);
402*b7c941bbSAndroid Build Coastguard Worker
403*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, k, n);
404*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L3_" + dt + "SYRK_A_kn", fo);
405*b7c941bbSAndroid Build Coastguard Worker        d = alpha * a.T * a + beta * c;
406*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L3_" + dt + "SYRK_o_T", fo);
407*b7c941bbSAndroid Build Coastguard Worker
408*b7c941bbSAndroid Build Coastguard Workerdef L3_xHERK(fo, alpha, beta, n, k):
409*b7c941bbSAndroid Build Coastguard Worker    dataType = ['c', 'z'];
410*b7c941bbSAndroid Build Coastguard Worker
411*b7c941bbSAndroid Build Coastguard Worker    for dt in dataType:
412*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, n, k);
413*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L3_" + dt + "HERK_A_nk", fo);
414*b7c941bbSAndroid Build Coastguard Worker        c = matrixCreate(dt, n, n);
415*b7c941bbSAndroid Build Coastguard Worker        herm(c);
416*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, c, "L3_" + dt + "HERK_C_nn", fo);
417*b7c941bbSAndroid Build Coastguard Worker        d = alpha * a * a.H + beta * c;
418*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L3_" + dt + "HERK_o_N", fo);
419*b7c941bbSAndroid Build Coastguard Worker
420*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, k, n);
421*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L3_" + dt + "HERK_A_kn", fo);
422*b7c941bbSAndroid Build Coastguard Worker        d = alpha * a.H * a + beta * c;
423*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L3_" + dt + "HERK_o_H", fo);
424*b7c941bbSAndroid Build Coastguard Worker
425*b7c941bbSAndroid Build Coastguard Workerdef L3_xSYR2K(fo, alpha, beta, n, k):
426*b7c941bbSAndroid Build Coastguard Worker    dataType = ['s', 'd', 'c', 'z'];
427*b7c941bbSAndroid Build Coastguard Worker
428*b7c941bbSAndroid Build Coastguard Worker    for dt in dataType:
429*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, n, k);
430*b7c941bbSAndroid Build Coastguard Worker        b = matrixCreate(dt, n, k);
431*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L3_" + dt + "SYR2K_A_nk", fo);
432*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, b, "L3_" + dt + "SYR2K_B_nk", fo);
433*b7c941bbSAndroid Build Coastguard Worker        c = matrixCreate(dt, n, n);
434*b7c941bbSAndroid Build Coastguard Worker        symm(c);
435*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, c, "L3_" + dt + "SYR2K_C_nn", fo);
436*b7c941bbSAndroid Build Coastguard Worker        d = alpha * (a * b.T + b * a.T) + beta * c;
437*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L3_" + dt + "SYR2K_o_N", fo);
438*b7c941bbSAndroid Build Coastguard Worker
439*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, k, n);
440*b7c941bbSAndroid Build Coastguard Worker        b = matrixCreate(dt, k, n);
441*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L3_" + dt + "SYR2K_A_kn", fo);
442*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, b, "L3_" + dt + "SYR2K_B_kn", fo);
443*b7c941bbSAndroid Build Coastguard Worker        d = alpha * (a.T * b + b.T * a) + beta * c;
444*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L3_" + dt + "SYR2K_o_T", fo);
445*b7c941bbSAndroid Build Coastguard Worker
446*b7c941bbSAndroid Build Coastguard Workerdef L3_xHER2K(fo, alpha, beta, n, k):
447*b7c941bbSAndroid Build Coastguard Worker    dataType = ['c', 'z'];
448*b7c941bbSAndroid Build Coastguard Worker
449*b7c941bbSAndroid Build Coastguard Worker    for dt in dataType:
450*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, n, k);
451*b7c941bbSAndroid Build Coastguard Worker        b = matrixCreate(dt, n, k);
452*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L3_" + dt + "HER2K_A_nk", fo);
453*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, b, "L3_" + dt + "HER2K_B_nk", fo);
454*b7c941bbSAndroid Build Coastguard Worker        c = matrixCreate(dt, n, n);
455*b7c941bbSAndroid Build Coastguard Worker        herm(c);
456*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, c, "L3_" + dt + "HER2K_C_nn", fo);
457*b7c941bbSAndroid Build Coastguard Worker        d = alpha * (a * b.H + b * a.H) + beta * c;
458*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L3_" + dt + "HER2K_o_N", fo);
459*b7c941bbSAndroid Build Coastguard Worker
460*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, k, n);
461*b7c941bbSAndroid Build Coastguard Worker        b = matrixCreate(dt, k, n);
462*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L3_" + dt + "HER2K_A_kn", fo);
463*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, b, "L3_" + dt + "HER2K_B_kn", fo);
464*b7c941bbSAndroid Build Coastguard Worker        d = alpha * (a.H * b + b.H * a) + beta * c;
465*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L3_" + dt + "HER2K_o_H", fo);
466*b7c941bbSAndroid Build Coastguard Worker
467*b7c941bbSAndroid Build Coastguard Worker
468*b7c941bbSAndroid Build Coastguard Workerdef L3_xTRMM(fo, alpha, m, n):
469*b7c941bbSAndroid Build Coastguard Worker    dataType = ['s', 'd', 'c', 'z'];
470*b7c941bbSAndroid Build Coastguard Worker
471*b7c941bbSAndroid Build Coastguard Worker    for dt in dataType:
472*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, m, m);
473*b7c941bbSAndroid Build Coastguard Worker        triangularMatrixGen(a, 'u');
474*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L3_" + dt + "TRMM_A_mm", fo);
475*b7c941bbSAndroid Build Coastguard Worker        b = matrixCreate(dt, m, n);
476*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, b, "L3_" + dt + "TRMM_B_mn", fo);
477*b7c941bbSAndroid Build Coastguard Worker        d = alpha * a * b;
478*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L3_" + dt + "TRMM_o_LUN", fo);
479*b7c941bbSAndroid Build Coastguard Worker
480*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, n, n);
481*b7c941bbSAndroid Build Coastguard Worker        triangularMatrixGen(a, 'l');
482*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L3_" + dt + "TRMM_A_nn", fo);
483*b7c941bbSAndroid Build Coastguard Worker        d = alpha * b * a.T;
484*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L3_" + dt + "TRMM_o_RLT", fo);
485*b7c941bbSAndroid Build Coastguard Worker
486*b7c941bbSAndroid Build Coastguard Workerdef L3_xTRSM(fo, alpha, m, n):
487*b7c941bbSAndroid Build Coastguard Worker    dataType = ['s', 'd', 'c', 'z'];
488*b7c941bbSAndroid Build Coastguard Worker
489*b7c941bbSAndroid Build Coastguard Worker    for dt in dataType:
490*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreateScale(dt, m, m, 1);
491*b7c941bbSAndroid Build Coastguard Worker        triangularMatrixGen(a, 'u');
492*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L3_" + dt + "TRSM_A_mm", fo);
493*b7c941bbSAndroid Build Coastguard Worker        b = matrixCreate(dt, m, n);
494*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, b, "L3_" + dt + "TRSM_B_mn", fo);
495*b7c941bbSAndroid Build Coastguard Worker
496*b7c941bbSAndroid Build Coastguard Worker        d = alpha * (a.I * b);
497*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L3_" + dt + "TRSM_o_LUN", fo);
498*b7c941bbSAndroid Build Coastguard Worker
499*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, n, n);
500*b7c941bbSAndroid Build Coastguard Worker        triangularMatrixGen(a, 'l');
501*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L3_" + dt + "TRSM_A_nn", fo);
502*b7c941bbSAndroid Build Coastguard Worker
503*b7c941bbSAndroid Build Coastguard Worker        d = alpha * (b * a.I.T);
504*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L3_" + dt + "TRSM_o_RLT", fo);
505*b7c941bbSAndroid Build Coastguard Worker
506*b7c941bbSAndroid Build Coastguard Worker#L2 Functions, generate input and output matrices to file.
507*b7c941bbSAndroid Build Coastguard Workerdef L2_xGEMV(fo, alpha, beta, m, n):
508*b7c941bbSAndroid Build Coastguard Worker    dataType = ['s', 'd', 'c', 'z'];
509*b7c941bbSAndroid Build Coastguard Worker    for dt in dataType:
510*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, m, n);
511*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L2_" + dt + "GEMV_A_mn", fo);
512*b7c941bbSAndroid Build Coastguard Worker
513*b7c941bbSAndroid Build Coastguard Worker        x = matrixCreate(dt, n, 1);
514*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, x, "L2_" + dt + "GEMV_x_n1", fo);
515*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, x, "L2_" + dt + "GEMV_x_n2", 1, fo);
516*b7c941bbSAndroid Build Coastguard Worker
517*b7c941bbSAndroid Build Coastguard Worker        y = matrixCreate(dt, m, 1);
518*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, y, "L2_" + dt + "GEMV_y_m1", fo);
519*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, y, "L2_" + dt + "GEMV_y_m2", 2, fo);
520*b7c941bbSAndroid Build Coastguard Worker
521*b7c941bbSAndroid Build Coastguard Worker        d = alpha * a * x + beta * y;
522*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "GEMV_o_N", fo);
523*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, d, "L2_" + dt + "GEMV_o_N2", 2, fo);
524*b7c941bbSAndroid Build Coastguard Worker
525*b7c941bbSAndroid Build Coastguard Worker        d = alpha * a.T * y + beta * x;
526*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "GEMV_o_T", fo);
527*b7c941bbSAndroid Build Coastguard Worker
528*b7c941bbSAndroid Build Coastguard Worker        d = alpha * a.H * y + beta * x;
529*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "GEMV_o_H", fo);
530*b7c941bbSAndroid Build Coastguard Worker
531*b7c941bbSAndroid Build Coastguard Workerdef L2_xGBMV(fo, alpha, beta, m, n, kl, ku):
532*b7c941bbSAndroid Build Coastguard Worker    dataType = ['s', 'd', 'c', 'z'];
533*b7c941bbSAndroid Build Coastguard Worker    for dt in dataType:
534*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, m, n);
535*b7c941bbSAndroid Build Coastguard Worker        writeGeneralBandedMatrix(dt, a, kl, ku, "L2_" + dt + "GBMV_A_mn", fo);
536*b7c941bbSAndroid Build Coastguard Worker
537*b7c941bbSAndroid Build Coastguard Worker        x = matrixCreate(dt, n, 1);
538*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, x, "L2_" + dt + "GBMV_x_n1", fo);
539*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, x, "L2_" + dt + "GBMV_x_n2", 1, fo);
540*b7c941bbSAndroid Build Coastguard Worker
541*b7c941bbSAndroid Build Coastguard Worker        y = matrixCreate(dt, m, 1);
542*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, y, "L2_" + dt + "GBMV_y_m1", fo);
543*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, y, "L2_" + dt + "GBMV_y_m2", 2, fo);
544*b7c941bbSAndroid Build Coastguard Worker
545*b7c941bbSAndroid Build Coastguard Worker        d = alpha * a * x + beta * y;
546*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "GBMV_o_N", fo);
547*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, d, "L2_" + dt + "GBMV_o_N2", 2, fo);
548*b7c941bbSAndroid Build Coastguard Worker
549*b7c941bbSAndroid Build Coastguard Worker        d = alpha * a.T * y + beta * x;
550*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "GBMV_o_T", fo);
551*b7c941bbSAndroid Build Coastguard Worker
552*b7c941bbSAndroid Build Coastguard Worker        d = alpha * a.H * y + beta * x;
553*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "GBMV_o_H", fo);
554*b7c941bbSAndroid Build Coastguard Worker
555*b7c941bbSAndroid Build Coastguard Workerdef L2_xHEMV(fo, alpha, beta, n):
556*b7c941bbSAndroid Build Coastguard Worker    dataType = ['c', 'z'];
557*b7c941bbSAndroid Build Coastguard Worker    for dt in dataType:
558*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, n, n);
559*b7c941bbSAndroid Build Coastguard Worker        herm(a);
560*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L2_" + dt + "HEMV_A_nn", fo);
561*b7c941bbSAndroid Build Coastguard Worker        writePackedMatrix(dt, a, "L2_" + dt + "HEMV_A_nn_pu", fo);
562*b7c941bbSAndroid Build Coastguard Worker
563*b7c941bbSAndroid Build Coastguard Worker        x = matrixCreate(dt, n, 1);
564*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, x, "L2_" + dt + "HEMV_x_n1", fo);
565*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, x, "L2_" + dt + "HEMV_x_n2", 1, fo);
566*b7c941bbSAndroid Build Coastguard Worker
567*b7c941bbSAndroid Build Coastguard Worker        y = matrixCreate(dt, n, 1);
568*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, y, "L2_" + dt + "HEMV_y_n1", fo);
569*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, y, "L2_" + dt + "HEMV_y_n2", 2, fo);
570*b7c941bbSAndroid Build Coastguard Worker
571*b7c941bbSAndroid Build Coastguard Worker        d = alpha * a * x + beta * y;
572*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "HEMV_o_N", fo);
573*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, d, "L2_" + dt + "HEMV_o_N2", 2, fo);
574*b7c941bbSAndroid Build Coastguard Worker
575*b7c941bbSAndroid Build Coastguard Workerdef L2_xHBMV(fo, alpha, beta, n, k):
576*b7c941bbSAndroid Build Coastguard Worker    dataType = ['c', 'z'];
577*b7c941bbSAndroid Build Coastguard Worker    for dt in dataType:
578*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, n, n);
579*b7c941bbSAndroid Build Coastguard Worker        herm(a);
580*b7c941bbSAndroid Build Coastguard Worker        writeSymmBandedMatrix(dt, a, k, "L2_" + dt + "HBMV_A_nn", fo);
581*b7c941bbSAndroid Build Coastguard Worker        herm(a);
582*b7c941bbSAndroid Build Coastguard Worker
583*b7c941bbSAndroid Build Coastguard Worker        x = matrixCreate(dt, n, 1);
584*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, x, "L2_" + dt + "HBMV_x_n1", fo);
585*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, x, "L2_" + dt + "HBMV_x_n2", 1, fo);
586*b7c941bbSAndroid Build Coastguard Worker
587*b7c941bbSAndroid Build Coastguard Worker        y = matrixCreate(dt, n, 1);
588*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, y, "L2_" + dt + "HBMV_y_n1", fo);
589*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, y, "L2_" + dt + "HBMV_y_n2", 2, fo);
590*b7c941bbSAndroid Build Coastguard Worker
591*b7c941bbSAndroid Build Coastguard Worker        d = alpha * a * x + beta * y;
592*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "HBMV_o_N", fo);
593*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, d, "L2_" + dt + "HBMV_o_N2", 2, fo);
594*b7c941bbSAndroid Build Coastguard Worker
595*b7c941bbSAndroid Build Coastguard Worker
596*b7c941bbSAndroid Build Coastguard Workerdef L2_xSYMV(fo, alpha, beta, n):
597*b7c941bbSAndroid Build Coastguard Worker    dataType = ['s', 'd'];
598*b7c941bbSAndroid Build Coastguard Worker    for dt in dataType:
599*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, n, n);
600*b7c941bbSAndroid Build Coastguard Worker        symm(a);
601*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L2_" + dt + "SYMV_A_nn", fo);
602*b7c941bbSAndroid Build Coastguard Worker        writePackedMatrix(dt, a, "L2_" + dt + "SYMV_A_nn_pu", fo);
603*b7c941bbSAndroid Build Coastguard Worker
604*b7c941bbSAndroid Build Coastguard Worker        x = matrixCreate(dt, n, 1);
605*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, x, "L2_" + dt + "SYMV_x_n1", fo);
606*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, x, "L2_" + dt + "SYMV_x_n2", 1, fo);
607*b7c941bbSAndroid Build Coastguard Worker
608*b7c941bbSAndroid Build Coastguard Worker        y = matrixCreate(dt, n, 1);
609*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, y, "L2_" + dt + "SYMV_y_n1", fo);
610*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, y, "L2_" + dt + "SYMV_y_n2", 2, fo);
611*b7c941bbSAndroid Build Coastguard Worker
612*b7c941bbSAndroid Build Coastguard Worker        d = alpha * a * x + beta * y;
613*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "SYMV_o_N", fo);
614*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, d, "L2_" + dt + "SYMV_o_N2", 2, fo);
615*b7c941bbSAndroid Build Coastguard Worker
616*b7c941bbSAndroid Build Coastguard Workerdef L2_xSBMV(fo, alpha, beta, n, k):
617*b7c941bbSAndroid Build Coastguard Worker    dataType = ['s', 'd'];
618*b7c941bbSAndroid Build Coastguard Worker    for dt in dataType:
619*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, n, n);
620*b7c941bbSAndroid Build Coastguard Worker        symm(a);
621*b7c941bbSAndroid Build Coastguard Worker        writeSymmBandedMatrix(dt, a, k, "L2_" + dt + "SBMV_A_nn", fo);
622*b7c941bbSAndroid Build Coastguard Worker        symm(a);
623*b7c941bbSAndroid Build Coastguard Worker
624*b7c941bbSAndroid Build Coastguard Worker        x = matrixCreate(dt, n, 1);
625*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, x, "L2_" + dt + "SBMV_x_n1", fo);
626*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, x, "L2_" + dt + "SBMV_x_n2", 1, fo);
627*b7c941bbSAndroid Build Coastguard Worker
628*b7c941bbSAndroid Build Coastguard Worker        y = matrixCreate(dt, n, 1);
629*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, y, "L2_" + dt + "SBMV_y_n1", fo);
630*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, y, "L2_" + dt + "SBMV_y_n2", 2, fo);
631*b7c941bbSAndroid Build Coastguard Worker
632*b7c941bbSAndroid Build Coastguard Worker        d = alpha * a * x + beta * y;
633*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "SBMV_o_N", fo);
634*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, d, "L2_" + dt + "SBMV_o_N2", 2, fo);
635*b7c941bbSAndroid Build Coastguard Worker
636*b7c941bbSAndroid Build Coastguard Worker
637*b7c941bbSAndroid Build Coastguard Workerdef L2_xTRMV(fo, n):
638*b7c941bbSAndroid Build Coastguard Worker    dataType = ['s', 'd', 'c', 'z'];
639*b7c941bbSAndroid Build Coastguard Worker    for dt in dataType:
640*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, n, n);
641*b7c941bbSAndroid Build Coastguard Worker        triangularMatrixGen(a, 'u');
642*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L2_" + dt + "TRMV_A_nn", fo);
643*b7c941bbSAndroid Build Coastguard Worker        writePackedMatrix(dt, a, "L2_" + dt + "TRMV_A_nn_pu", fo);
644*b7c941bbSAndroid Build Coastguard Worker
645*b7c941bbSAndroid Build Coastguard Worker        x = matrixCreate(dt, n, 1);
646*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, x, "L2_" + dt + "TRMV_x_n1", fo);
647*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, x, "L2_" + dt + "TRMV_x_n2", 1, fo);
648*b7c941bbSAndroid Build Coastguard Worker
649*b7c941bbSAndroid Build Coastguard Worker        d = a * x;
650*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "TRMV_o_UN", fo);
651*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, d, "L2_" + dt + "TRMV_o_UN2", 1, fo);
652*b7c941bbSAndroid Build Coastguard Worker
653*b7c941bbSAndroid Build Coastguard Worker        d = a.T * x;
654*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "TRMV_o_UT", fo);
655*b7c941bbSAndroid Build Coastguard Worker
656*b7c941bbSAndroid Build Coastguard Worker        d = a.H * x;
657*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "TRMV_o_UH", fo);
658*b7c941bbSAndroid Build Coastguard Worker
659*b7c941bbSAndroid Build Coastguard Workerdef L2_xTBMV(fo, n, k):
660*b7c941bbSAndroid Build Coastguard Worker    dataType = ['s', 'd', 'c', 'z'];
661*b7c941bbSAndroid Build Coastguard Worker    for dt in dataType:
662*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, n, n);
663*b7c941bbSAndroid Build Coastguard Worker        writeSymmBandedMatrix(dt, a, k, "L2_" + dt + "TBMV_A_nn", fo);
664*b7c941bbSAndroid Build Coastguard Worker
665*b7c941bbSAndroid Build Coastguard Worker        x = matrixCreate(dt, n, 1);
666*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, x, "L2_" + dt + "TBMV_x_n1", fo);
667*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, x, "L2_" + dt + "TBMV_x_n2", 1, fo);
668*b7c941bbSAndroid Build Coastguard Worker
669*b7c941bbSAndroid Build Coastguard Worker        d = a * x;
670*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "TBMV_o_UN", fo);
671*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, d, "L2_" + dt + "TBMV_o_UN2", 1, fo);
672*b7c941bbSAndroid Build Coastguard Worker
673*b7c941bbSAndroid Build Coastguard Worker        d = a.T * x;
674*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "TBMV_o_UT", fo);
675*b7c941bbSAndroid Build Coastguard Worker
676*b7c941bbSAndroid Build Coastguard Worker        d = a.H * x;
677*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "TBMV_o_UH", fo);
678*b7c941bbSAndroid Build Coastguard Worker
679*b7c941bbSAndroid Build Coastguard Worker
680*b7c941bbSAndroid Build Coastguard Workerdef L2_xTRSV(fo, n):
681*b7c941bbSAndroid Build Coastguard Worker    dataType = ['s', 'd', 'c', 'z'];
682*b7c941bbSAndroid Build Coastguard Worker    for dt in dataType:
683*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreateScale(dt, n, n, 0.25);
684*b7c941bbSAndroid Build Coastguard Worker        triangularMatrixGen(a, 'u');
685*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L2_" + dt + "TRSV_A_nn", fo);
686*b7c941bbSAndroid Build Coastguard Worker        writePackedMatrix(dt, a, "L2_" + dt + "TRSV_A_nn_pu", fo);
687*b7c941bbSAndroid Build Coastguard Worker
688*b7c941bbSAndroid Build Coastguard Worker        x = matrixCreate(dt, n, 1);
689*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, x, "L2_" + dt + "TRSV_x_n1", fo);
690*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, x, "L2_" + dt + "TRSV_x_n2", 1, fo);
691*b7c941bbSAndroid Build Coastguard Worker
692*b7c941bbSAndroid Build Coastguard Worker        d = a.I * x;
693*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "TRSV_o_UN", fo);
694*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, d, "L2_" + dt + "TRSV_o_UN2", 1, fo);
695*b7c941bbSAndroid Build Coastguard Worker
696*b7c941bbSAndroid Build Coastguard Worker        d = a.I.T * x;
697*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "TRSV_o_UT", fo);
698*b7c941bbSAndroid Build Coastguard Worker
699*b7c941bbSAndroid Build Coastguard Worker        d = a.I.H * x;
700*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "TRSV_o_UH", fo);
701*b7c941bbSAndroid Build Coastguard Worker
702*b7c941bbSAndroid Build Coastguard Workerdef L2_xTBSV(fo, n, k):
703*b7c941bbSAndroid Build Coastguard Worker    dataType = ['s', 'd', 'c', 'z'];
704*b7c941bbSAndroid Build Coastguard Worker    for dt in dataType:
705*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreateScale(dt, n, n, 0.25);
706*b7c941bbSAndroid Build Coastguard Worker        writeSymmBandedMatrix(dt, a, k, "L2_" + dt + "TBSV_A_nn", fo);
707*b7c941bbSAndroid Build Coastguard Worker
708*b7c941bbSAndroid Build Coastguard Worker        x = matrixCreate(dt, n, 1);
709*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, x, "L2_" + dt + "TBSV_x_n1", fo);
710*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, x, "L2_" + dt + "TBSV_x_n2", 1, fo);
711*b7c941bbSAndroid Build Coastguard Worker
712*b7c941bbSAndroid Build Coastguard Worker        d = a.I * x;
713*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "TBSV_o_UN", fo);
714*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, d, "L2_" + dt + "TBSV_o_UN2", 1, fo);
715*b7c941bbSAndroid Build Coastguard Worker
716*b7c941bbSAndroid Build Coastguard Worker        d = a.I.T * x;
717*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "TBSV_o_UT", fo);
718*b7c941bbSAndroid Build Coastguard Worker
719*b7c941bbSAndroid Build Coastguard Worker        d = a.I.H * x;
720*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "TBSV_o_UH", fo);
721*b7c941bbSAndroid Build Coastguard Worker
722*b7c941bbSAndroid Build Coastguard Worker
723*b7c941bbSAndroid Build Coastguard Workerdef L2_xGER(fo, alpha, m, n):
724*b7c941bbSAndroid Build Coastguard Worker    dataType = ['s', 'd'];
725*b7c941bbSAndroid Build Coastguard Worker    for dt in dataType:
726*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, m, n);
727*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L2_" + dt + "GER_A_mn", fo);
728*b7c941bbSAndroid Build Coastguard Worker
729*b7c941bbSAndroid Build Coastguard Worker        x = matrixCreate(dt, m, 1);
730*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, x, "L2_" + dt + "GER_x_m1", fo);
731*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, x, "L2_" + dt + "GER_x_m2", 1, fo);
732*b7c941bbSAndroid Build Coastguard Worker
733*b7c941bbSAndroid Build Coastguard Worker        y = matrixCreate(dt, n, 1);
734*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, y, "L2_" + dt + "GER_y_n1", fo);
735*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, y, "L2_" + dt + "GER_y_n2", 2, fo);
736*b7c941bbSAndroid Build Coastguard Worker
737*b7c941bbSAndroid Build Coastguard Worker        d = alpha * x * y.T + a;
738*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "GER_o_N", fo);
739*b7c941bbSAndroid Build Coastguard Worker
740*b7c941bbSAndroid Build Coastguard Workerdef L2_xGERU(fo, alpha, m, n):
741*b7c941bbSAndroid Build Coastguard Worker    dataType = ['c', 'z'];
742*b7c941bbSAndroid Build Coastguard Worker    for dt in dataType:
743*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, m, n);
744*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L2_" + dt + "GERU_A_mn", fo);
745*b7c941bbSAndroid Build Coastguard Worker
746*b7c941bbSAndroid Build Coastguard Worker        x = matrixCreate(dt, m, 1);
747*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, x, "L2_" + dt + "GERU_x_m1", fo);
748*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, x, "L2_" + dt + "GERU_x_m2", 1, fo);
749*b7c941bbSAndroid Build Coastguard Worker
750*b7c941bbSAndroid Build Coastguard Worker        y = matrixCreate(dt, n, 1);
751*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, y, "L2_" + dt + "GERU_y_n1", fo);
752*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, y, "L2_" + dt + "GERU_y_n2", 2, fo);
753*b7c941bbSAndroid Build Coastguard Worker
754*b7c941bbSAndroid Build Coastguard Worker        d = alpha * x * y.T + a;
755*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "GERU_o_N", fo);
756*b7c941bbSAndroid Build Coastguard Worker
757*b7c941bbSAndroid Build Coastguard Workerdef L2_xGERC(fo, alpha, m, n):
758*b7c941bbSAndroid Build Coastguard Worker    dataType = ['c', 'z'];
759*b7c941bbSAndroid Build Coastguard Worker    for dt in dataType:
760*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, m, n);
761*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L2_" + dt + "GERC_A_mn", fo);
762*b7c941bbSAndroid Build Coastguard Worker
763*b7c941bbSAndroid Build Coastguard Worker        x = matrixCreate(dt, m, 1);
764*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, x, "L2_" + dt + "GERC_x_m1", fo);
765*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, x, "L2_" + dt + "GERC_x_m2", 1, fo);
766*b7c941bbSAndroid Build Coastguard Worker
767*b7c941bbSAndroid Build Coastguard Worker        y = matrixCreate(dt, n, 1);
768*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, y, "L2_" + dt + "GERC_y_n1", fo);
769*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, y, "L2_" + dt + "GERC_y_n2", 2, fo);
770*b7c941bbSAndroid Build Coastguard Worker
771*b7c941bbSAndroid Build Coastguard Worker        d = alpha * x * y.H + a;
772*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "GERC_o_N", fo);
773*b7c941bbSAndroid Build Coastguard Worker
774*b7c941bbSAndroid Build Coastguard Workerdef L2_xHER(fo, alpha, n):
775*b7c941bbSAndroid Build Coastguard Worker    dataType = ['c', 'z'];
776*b7c941bbSAndroid Build Coastguard Worker    for dt in dataType:
777*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, n, n);
778*b7c941bbSAndroid Build Coastguard Worker        herm(a);
779*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L2_" + dt + "HER_A_nn", fo);
780*b7c941bbSAndroid Build Coastguard Worker        writePackedMatrix(dt, a, "L2_" + dt + "HER_A_nn_pu", fo);
781*b7c941bbSAndroid Build Coastguard Worker
782*b7c941bbSAndroid Build Coastguard Worker        x = matrixCreate(dt, n, 1);
783*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, x, "L2_" + dt + "HER_x_n1", fo);
784*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, x, "L2_" + dt + "HER_x_n2", 1, fo);
785*b7c941bbSAndroid Build Coastguard Worker
786*b7c941bbSAndroid Build Coastguard Worker        d = alpha * x * x.H + a;
787*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "HER_o_N", fo);
788*b7c941bbSAndroid Build Coastguard Worker        writePackedMatrix(dt, d, "L2_" + dt + "HER_o_N_pu", fo);
789*b7c941bbSAndroid Build Coastguard Worker
790*b7c941bbSAndroid Build Coastguard Worker
791*b7c941bbSAndroid Build Coastguard Workerdef L2_xHER2(fo, alpha, n):
792*b7c941bbSAndroid Build Coastguard Worker    dataType = ['c', 'z'];
793*b7c941bbSAndroid Build Coastguard Worker    for dt in dataType:
794*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, n, n);
795*b7c941bbSAndroid Build Coastguard Worker        herm(a);
796*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L2_" + dt + "HER2_A_nn", fo);
797*b7c941bbSAndroid Build Coastguard Worker        writePackedMatrix(dt, a, "L2_" + dt + "HER2_A_nn_pu", fo);
798*b7c941bbSAndroid Build Coastguard Worker
799*b7c941bbSAndroid Build Coastguard Worker        x = matrixCreate(dt, n, 1);
800*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, x, "L2_" + dt + "HER2_x_n1", fo);
801*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, x, "L2_" + dt + "HER2_x_n2", 1, fo);
802*b7c941bbSAndroid Build Coastguard Worker
803*b7c941bbSAndroid Build Coastguard Worker        y = matrixCreate(dt, n, 1);
804*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, y, "L2_" + dt + "HER2_y_n1", fo);
805*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, y, "L2_" + dt + "HER2_y_n2", 2, fo);
806*b7c941bbSAndroid Build Coastguard Worker
807*b7c941bbSAndroid Build Coastguard Worker        d = alpha * x * y.H + y * (alpha * x.H) + a;
808*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "HER2_o_N", fo);
809*b7c941bbSAndroid Build Coastguard Worker        writePackedMatrix(dt, d, "L2_" + dt + "HER2_o_N_pu", fo);
810*b7c941bbSAndroid Build Coastguard Worker
811*b7c941bbSAndroid Build Coastguard Workerdef L2_xSYR(fo, alpha, n):
812*b7c941bbSAndroid Build Coastguard Worker    dataType = ['s', 'd'];
813*b7c941bbSAndroid Build Coastguard Worker    for dt in dataType:
814*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, n, n);
815*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L2_" + dt + "SYR_A_nn", fo);
816*b7c941bbSAndroid Build Coastguard Worker        writePackedMatrix(dt, a, "L2_" + dt + "SYR_A_nn_pu", fo);
817*b7c941bbSAndroid Build Coastguard Worker
818*b7c941bbSAndroid Build Coastguard Worker        x = matrixCreate(dt, n, 1);
819*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, x, "L2_" + dt + "SYR_x_n1", fo);
820*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, x, "L2_" + dt + "SYR_x_n2", 1, fo);
821*b7c941bbSAndroid Build Coastguard Worker
822*b7c941bbSAndroid Build Coastguard Worker        d = alpha * x * x.T + a;
823*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "SYR_o_N", fo);
824*b7c941bbSAndroid Build Coastguard Worker        writePackedMatrix(dt, d, "L2_" + dt + "SYR_o_N_pu", fo);
825*b7c941bbSAndroid Build Coastguard Worker
826*b7c941bbSAndroid Build Coastguard Workerdef L2_xSYR2(fo, alpha, n):
827*b7c941bbSAndroid Build Coastguard Worker    dataType = ['s', 'd'];
828*b7c941bbSAndroid Build Coastguard Worker    for dt in dataType:
829*b7c941bbSAndroid Build Coastguard Worker        a = matrixCreate(dt, n, n);
830*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, a, "L2_" + dt + "SYR2_A_nn", fo);
831*b7c941bbSAndroid Build Coastguard Worker        writePackedMatrix(dt, a, "L2_" + dt + "SYR2_A_nn_pu", fo);
832*b7c941bbSAndroid Build Coastguard Worker
833*b7c941bbSAndroid Build Coastguard Worker        x = matrixCreate(dt, n, 1);
834*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, x, "L2_" + dt + "SYR2_x_n1", fo);
835*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, x, "L2_" + dt + "SYR2_x_n2", 1, fo);
836*b7c941bbSAndroid Build Coastguard Worker
837*b7c941bbSAndroid Build Coastguard Worker        y = matrixCreate(dt, n, 1);
838*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, y, "L2_" + dt + "SYR2_y_n1", fo);
839*b7c941bbSAndroid Build Coastguard Worker        writeMatrixWithIncrements(dt, y, "L2_" + dt + "SYR2_y_n2", 2, fo);
840*b7c941bbSAndroid Build Coastguard Worker
841*b7c941bbSAndroid Build Coastguard Worker        d = alpha * x * y.T + y * (alpha * x.T) + a;
842*b7c941bbSAndroid Build Coastguard Worker        writeMatrix(dt, d, "L2_" + dt + "SYR2_o_N", fo);
843*b7c941bbSAndroid Build Coastguard Worker        writePackedMatrix(dt, d, "L2_" + dt + "SYR2_o_N_pu", fo);
844*b7c941bbSAndroid Build Coastguard Worker
845*b7c941bbSAndroid Build Coastguard Worker
846*b7c941bbSAndroid Build Coastguard Workerdef testBLASL2L3(fo):
847*b7c941bbSAndroid Build Coastguard Worker    m = random.randint(10, 20);
848*b7c941bbSAndroid Build Coastguard Worker    n = random.randint(10, 20);
849*b7c941bbSAndroid Build Coastguard Worker    k = random.randint(10, 20);
850*b7c941bbSAndroid Build Coastguard Worker    kl = random.randint(1, 5);
851*b7c941bbSAndroid Build Coastguard Worker    ku = random.randint(1, 5);
852*b7c941bbSAndroid Build Coastguard Worker
853*b7c941bbSAndroid Build Coastguard Worker    alpha = 1.0;
854*b7c941bbSAndroid Build Coastguard Worker    beta = 1.0;
855*b7c941bbSAndroid Build Coastguard Worker
856*b7c941bbSAndroid Build Coastguard Worker    fo.write("M, N, K, KL, KU" + ';\n');
857*b7c941bbSAndroid Build Coastguard Worker    fo.write(str(m) + " " + str(n) + " " + str(k) + " " + str(kl) + " " + str(ku) + '\n');
858*b7c941bbSAndroid Build Coastguard Worker    fo.write('\n');
859*b7c941bbSAndroid Build Coastguard Worker
860*b7c941bbSAndroid Build Coastguard Worker    L2_xGEMV(fo, alpha, beta, m, n);
861*b7c941bbSAndroid Build Coastguard Worker    L2_xGBMV(fo, alpha, beta, m, n, kl, ku);
862*b7c941bbSAndroid Build Coastguard Worker    L2_xHEMV(fo, alpha, beta, n);
863*b7c941bbSAndroid Build Coastguard Worker    L2_xHBMV(fo, alpha, beta, n, kl);
864*b7c941bbSAndroid Build Coastguard Worker    L2_xSYMV(fo, alpha, beta, n);
865*b7c941bbSAndroid Build Coastguard Worker    L2_xSBMV(fo, alpha, beta, n, kl);
866*b7c941bbSAndroid Build Coastguard Worker    L2_xTRMV(fo, n);
867*b7c941bbSAndroid Build Coastguard Worker    L2_xTBMV(fo, n, kl);
868*b7c941bbSAndroid Build Coastguard Worker    L2_xTRSV(fo, n);
869*b7c941bbSAndroid Build Coastguard Worker    L2_xTBSV(fo, n, kl);
870*b7c941bbSAndroid Build Coastguard Worker    L2_xGER(fo, alpha, m, n);
871*b7c941bbSAndroid Build Coastguard Worker    L2_xGERU(fo, alpha, m, n);
872*b7c941bbSAndroid Build Coastguard Worker    L2_xGERC(fo, alpha, m, n);
873*b7c941bbSAndroid Build Coastguard Worker    L2_xHER(fo, alpha, n);
874*b7c941bbSAndroid Build Coastguard Worker    L2_xHER2(fo, alpha, n);
875*b7c941bbSAndroid Build Coastguard Worker    L2_xSYR(fo, alpha, n);
876*b7c941bbSAndroid Build Coastguard Worker    L2_xSYR2(fo, alpha, n);
877*b7c941bbSAndroid Build Coastguard Worker
878*b7c941bbSAndroid Build Coastguard Worker    L3_xGEMM(fo, alpha, beta, m, n, k);
879*b7c941bbSAndroid Build Coastguard Worker    L3_xSYMM(fo, alpha, beta, m, n);
880*b7c941bbSAndroid Build Coastguard Worker    L3_xHEMM(fo, alpha, beta, m, n);
881*b7c941bbSAndroid Build Coastguard Worker    L3_xSYRK(fo, alpha, beta, n, k);
882*b7c941bbSAndroid Build Coastguard Worker    L3_xHERK(fo, alpha, beta, n, k);
883*b7c941bbSAndroid Build Coastguard Worker    L3_xSYR2K(fo, alpha, beta, n, k);
884*b7c941bbSAndroid Build Coastguard Worker    L3_xHER2K(fo, alpha, beta, n, k);
885*b7c941bbSAndroid Build Coastguard Worker    L3_xTRMM(fo, alpha, m, n);
886*b7c941bbSAndroid Build Coastguard Worker    L3_xTRSM(fo, alpha, m, n);
887*b7c941bbSAndroid Build Coastguard Worker
888*b7c941bbSAndroid Build Coastguard Worker    return;
889*b7c941bbSAndroid Build Coastguard Worker
890*b7c941bbSAndroid Build Coastguard Workerdef javaDataGen():
891*b7c941bbSAndroid Build Coastguard Worker    fo = open("BLASData.txt", "w+")
892*b7c941bbSAndroid Build Coastguard Worker    fo.write("/* Don't edit this file!  It is auto-generated by blas_gen.py. */\n");
893*b7c941bbSAndroid Build Coastguard Worker    fo.write("\n");
894*b7c941bbSAndroid Build Coastguard Worker
895*b7c941bbSAndroid Build Coastguard Worker    #data body
896*b7c941bbSAndroid Build Coastguard Worker    testBLASL2L3(fo);
897*b7c941bbSAndroid Build Coastguard Worker    fo.close()
898*b7c941bbSAndroid Build Coastguard Worker    return;
899*b7c941bbSAndroid Build Coastguard Worker
900*b7c941bbSAndroid Build Coastguard WorkerjavaDataGen();
901*b7c941bbSAndroid Build Coastguard Worker
902