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