## Developer Reference

• 2020.2
• 07/15/2020
• Public Content
Contents

# BLAS Code Examples

Example.
Using BLAS Level 1 Function
The following example illustrates a call to the BLAS Level 1 function
sdot
. This function performs a vector-vector operation of computing a scalar product of two single-precision real vectors
x
and
y
.
Parameters

n
Specifies the number of elements in vectors
x
and
y
.
incx
Specifies the increment for the elements of
x
.
incy
Specifies the increment for the elements of
y
.
```

program dot_main

real x(10), y(10), sdot, res

integer n, incx, incy, i

external sdot

n = 5

incx = 2

incy = 1

do i = 1, 10

x(i) = 2.0e0

y(i) = 1.0e0

end do

res = sdot (n, x, incx, y, incy)

print*, `SDOT = `, res

end```
As a result of this program execution, the following line is printed:
SDOT = 10.000
Example.
Using BLAS Level 1 Routine
The following example illustrates a call to the BLAS Level 1 routine
scopy
. This routine performs a vector-vector operation of copying a single-precision real vector
x
to a vector
y
.
Parameters

n
Specifies the number of elements in vectors
x
and
y
.
incx
Specifies the increment for the elements of
x
.
incy
Specifies the increment for the elements of
y
.
```

program copy_main

real x(10), y(10)

integer n, incx, incy, i

n = 3

incx = 3

incy = 1

do i = 1, 10

x(i) = i

end do

call scopy (n, x, incx, y, incy)

print*, `Y = `, (y(i), i = 1, n)

end```
As a result of this program execution, the following line is printed:
Y = 1.00000 4.00000 7.00000
Example.
Using BLAS Level 2 Routine
The following example illustrates a call to the BLAS Level 2 routine
sger
. This routine performs a matrix-vector operation
```

a

:=

alpha

*

x

*

y

' +

a

.```
Parameters

alpha
Specifies a scalar
alpha
.
x
m
-element vector.
y
n
-element vector.
a
m
-by-
n
matrix.
```

program ger_main

real a(5,3), x(10), y(10), alpha

integer m, n, incx, incy, i, j, lda

m = 2

n = 3

lda = 5

incx = 2

incy = 1

alpha = 0.5

do i = 1, 10

x(i) = 1.0

y(i) = 1.0

end do

do i = 1, m

do j = 1, n

a(i,j) = j

end do

end do

call sger (m, n, alpha, x, incx, y, incy, a, lda)

print*, `Matrix A: `

do i = 1, m

print*, (a(i,j), j = 1, n)

end do

end```
As a result of this program execution, matrix
a
is printed as follows:
Matrix A:
1.50000 2.50000 3.50000
1.50000 2.50000 3.50000
Example.
Using BLAS Level 3 Routine
The following example illustrates a call to the BLAS Level 3 routine
ssymm
. This routine performs a matrix-matrix operation
```

c

:=

alpha

*

a

*

b

' +

beta

*

c

.```
Parameters

alpha
Specifies a scalar
alpha
.
beta
Specifies a scalar
beta
.
a
Symmetric matrix
b
m
-by-
n
matrix
c
m
-by-
n
matrix
```

program symm_main

real a(3,3), b(3,2), c(3,3), alpha, beta

integer m, n, lda, ldb, ldc, i, j

character uplo, side

uplo = 'u'

side = 'l'

m = 3

n = 2

lda = 3

ldb = 3

ldc = 3

alpha = 0.5

beta = 2.0

do i = 1, m

do j = 1, m

a(i,j) = 1.0

end do

end do

do i = 1, m

do j = 1, n

c(i,j) = 1.0

b(i,j) = 2.0

end do

end do

call ssymm (side, uplo, m, n, alpha,

a, lda, b, ldb, beta, c, ldc)

print*, `Matrix C: `

do i = 1, m

print*, (c(i,j), j = 1, n)

end do

end```
As a result of this program execution, matrix
c
is printed as follows:
Matrix C:
5.00000 5.00000
5.00000 5.00000
5.00000 5.00000
The following example illustrates a call from a C program to the Fortran version of the complex BLAS Level 1 function
zdotc()
. This function computes the dot product of two double-precision complex vectors.

1

Intel&