Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 11/07/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

?hptri

Computes the inverse of a complex Hermitian matrix using U*D*UH or L*D*LH Bunch-Kaufman factorization of matrix in packed storage.

Syntax

lapack_int LAPACKE_chptri (int matrix_layout , char uplo , lapack_int n , lapack_complex_float * ap , const lapack_int * ipiv );

lapack_int LAPACKE_zhptri (int matrix_layout , char uplo , lapack_int n , lapack_complex_double * ap , const lapack_int * ipiv );

Include Files

  • mkl.h

Description

The routine computes the inverse inv(A) of a complex Hermitian matrix A using packed storage. Before calling this routine, call ?hptrf to factorize A.

Input Parameters

matrix_layout

Specifies whether matrix storage layout is row major (LAPACK_ROW_MAJOR) or column major (LAPACK_COL_MAJOR).

uplo

Must be 'U' or 'L'.

Indicates how the input matrix A has been factored:

If uplo = 'U', the array ap stores the packed Bunch-Kaufman factorization A = U*D*UH.

If uplo = 'L', the array ap stores the packed Bunch-Kaufman factorization A = L*D*LH.

n

The order of the matrix A; n 0.

ap

Array ap (size max(1,n(n+1)/2)) contains the factorization of the matrix A, as returned by ?hptrf.

ipiv

Array, size at least max(1, n).

The ipiv array, as returned by ?hptrf.

Output Parameters

ap

Overwritten by the matrix inv(A).

Return Values

This function returns a value info.

If info = 0, the execution is successful.

If info = -i, parameter i had an illegal value.

If info = i, the i-th diagonal element of D is zero, D is singular, and the inversion could not be completed.

Application Notes

The computed inverse X satisfies the following error bounds:

|D*UH*PT*X*P*U - I|  c(n)ε(|D||UH|PT|X|P|U| + |D||D-1|)

for uplo = 'U', and

|D*LH*PT*X*PL - I|  c(n)ε(|D||LH|PT|X|P|L| + |D||D-1|)

for uplo = 'L'. Here c(n) is a modest linear function of n, and ε is the machine precision; I denotes the identity matrix.

The total number of floating-point operations is approximately (8/3)n3.

The real counterpart of this routine is ?sptri.