Developer Reference for Intel® oneAPI Math Kernel Library for Fortran
A newer version of this document is available. Customers should click here to go to the newest version.
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.