File: example_qr_space.f90

package info (click to toggle)
fortran-stdlib 0.8.1-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 34,008 kB
  • sloc: f90: 24,178; ansic: 1,244; cpp: 623; python: 119; makefile: 13
file content (25 lines) | stat: -rw-r--r-- 648 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
! QR example with pre-allocated storage
program example_qr_space
  use stdlib_linalg_constants, only: ilp
  use stdlib_linalg, only: qr, qr_space, linalg_state_type
  implicit none
  real :: A(104, 32), Q(104,32), R(32,32)
  real, allocatable :: work(:)
  integer(ilp) :: lwork
  type(linalg_state_type) :: err
  
  ! Create a random matrix
  call random_number(A)

  ! Prepare QR workspace
  call qr_space(A,lwork)
  allocate(work(lwork))

  ! Compute its QR factorization (reduced)
  call qr(A,Q,R,storage=work,err=err)

  ! Test factorization: Q*R = A 
  print *, maxval(abs(matmul(Q,R)-A))
  print *, err%print() 

end program example_qr_space