Skip to content

Implement more matrix functions #5840

Closed

Description

Higham and Deadman have published a list of software implementing algorithms for matrix functions, showing that Julia's library for these functions could be improved greatly relative to the state of the art.

The purpose of this issue is to discuss and track the implementation of matrix functions.

From Higham and Deadman's list:

General function evaluations

  • General matrix function with derivatives of the underlying scalar function available: Schur–Parlett algorithm (Davies and Higham, 2003)
  • Function of a symmetric or Hermitian matrix by diagonalization
  • Condition number estimate for general functions: cond(f,A)
  • matrix function - vector product evaluation: f(A) * b

Specific functions

  • expm: scaling and squaring algorithm (Al-Mohy and Higham, 2009)
  • logm: inverse scaling and squaring algorithm (Al-Mohy, Higham, and Relton, 2012,
    2013)
  • sqrtm:
    • Schur algorithm (Björck and Hammarling, 1983)
    • real version for real matrices (Higham, 1987)
    • blocking algorithm for performance improvements (Deadman, Higham, and Ralha, 2013)
  • A^t for real matrix powers: Schur– Padé algorithm (Higham and Lin, 2013) (Fixed the algorithm for powers of a matrix. #21184)
  • Matrix unwinding function

Fréchet derivatives

  • Exponential: scaling and squaring algorithm (Al-Mohy and Higham, 2009)
  • Logarithm: inverse scaling and squaring algorithm (Al-Mohy, Higham, and Relton, 2013)
  • General matrix function: complex step algorithm (Al-Mohy and Higham, 2010) or using block 2 × 2 matrix formula.
  • A^t for real matrix powers: Schur– Padé algorithm (Higham and Lin, 2013)

Miscellaneous functions

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    help wantedIndicates that a maintainer wants help on an issue or pull requestlinear algebraLinear algebrastdlibJulia's standard library

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions