{"action":"created","issue":{"url":"https://api.github.com/repos/JuliaLang/julia/issues/5840","repository_url":"https://api.github.com/repos/JuliaLang/julia","labels_url":"https://api.github.com/repos/JuliaLang/julia/issues/5840/labels{/name}","comments_url":"https://api.github.com/repos/JuliaLang/julia/issues/5840/comments","events_url":"https://api.github.com/repos/JuliaLang/julia/issues/5840/events","html_url":"https://github.com/JuliaLang/julia/issues/5840","id":27756687,"number":5840,"title":"Implement more matrix functions","user":{"login":"jiahao","id":1732,"avatar_url":"https://avatars3.githubusercontent.com/u/1732?v=4","gravatar_id":"","url":"https://api.github.com/users/jiahao","html_url":"https://github.com/jiahao","followers_url":"https://api.github.com/users/jiahao/followers","following_url":"https://api.github.com/users/jiahao/following{/other_user}","gists_url":"https://api.github.com/users/jiahao/gists{/gist_id}","starred_url":"https://api.github.com/users/jiahao/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jiahao/subscriptions","organizations_url":"https://api.github.com/users/jiahao/orgs","repos_url":"https://api.github.com/users/jiahao/repos","events_url":"https://api.github.com/users/jiahao/events{/privacy}","received_events_url":"https://api.github.com/users/jiahao/received_events","type":"User","site_admin":false},"labels":[{"id":232418,"url":"https://api.github.com/repos/JuliaLang/julia/labels/help%20wanted","name":"help wanted","color":"0b02e1","default":true},{"id":61807486,"url":"https://api.github.com/repos/JuliaLang/julia/labels/linear%20algebra","name":"linear algebra","color":"f2b3db","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":42,"created_at":"2014-02-17T23:31:50Z","updated_at":"2018-03-04T10:17:07Z","closed_at":null,"author_association":"MEMBER","body":"Higham and Deadman have published a [list of software](http://eprints.ma.man.ac.uk/2102/) implementing algorithms for matrix functions, showing that Julia's library for these functions could be improved greatly relative to the state of the art.\r\n\r\nThe purpose of this issue is to discuss and track the implementation of matrix functions.\r\n## From Higham and Deadman's list:\r\n### General function evaluations\r\n- [ ] General matrix function with derivatives of the underlying scalar function available: Schur–Parlett algorithm (Davies and Higham, 2003)\r\n- [ ] Function of a symmetric or Hermitian matrix by diagonalization\r\n- [ ] Condition number estimate for general functions: `cond(f,A)`\r\n- [ ] matrix function - vector product evaluation: `f(A) * b` \r\n### Specific functions\r\n- [x] `expm`: scaling and squaring algorithm (Al-Mohy and Higham, 2009) \r\n- [x] `logm`: inverse scaling and squaring algorithm (Al-Mohy, Higham, and Relton, 2012,\r\n  2013)\r\n- [ ] `sqrtm`:\r\n  - [x] Schur algorithm (Björck and Hammarling, 1983)\r\n  - [ ] real version for real matrices (Higham, 1987)\r\n  - [ ] blocking algorithm for performance improvements (Deadman, Higham, and Ralha, 2013)\r\n- [x] `A^t` for real matrix powers: Schur– Padé algorithm (Higham and Lin, 2013) (#21184)\r\n- [ ] Matrix [unwinding function](http://eprints.ma.man.ac.uk/2094/)\r\n### [Fréchet derivatives](http://en.wikipedia.org/wiki/Fr%C3%A9chet_derivative)\r\n- [ ] Exponential: scaling and squaring algorithm (Al-Mohy and Higham, 2009)\r\n- [ ] Logarithm: inverse scaling and squaring algorithm (Al-Mohy, Higham, and Relton, 2013)\r\n- [ ] General matrix function: complex step algorithm (Al-Mohy and Higham, 2010) or using block 2 × 2 matrix formula.\r\n- [ ] `A^t` for real matrix powers: Schur– Padé algorithm (Higham and Lin, 2013)\r\n## Miscellaneous functions\r\n- [x] `inv` and `det` for `Tridiagonal` and `SymTridiagonal` matrices (Usmani, 1994) (#5358)\r\n"},"comment":{"url":"https://api.github.com/repos/JuliaLang/julia/issues/comments/370217533","html_url":"https://github.com/JuliaLang/julia/issues/5840#issuecomment-370217533","issue_url":"https://api.github.com/repos/JuliaLang/julia/issues/5840","id":370217533,"user":{"login":"dlfivefifty","id":1229737,"avatar_url":"https://avatars3.githubusercontent.com/u/1229737?v=4","gravatar_id":"","url":"https://api.github.com/users/dlfivefifty","html_url":"https://github.com/dlfivefifty","followers_url":"https://api.github.com/users/dlfivefifty/followers","following_url":"https://api.github.com/users/dlfivefifty/following{/other_user}","gists_url":"https://api.github.com/users/dlfivefifty/gists{/gist_id}","starred_url":"https://api.github.com/users/dlfivefifty/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dlfivefifty/subscriptions","organizations_url":"https://api.github.com/users/dlfivefifty/orgs","repos_url":"https://api.github.com/users/dlfivefifty/repos","events_url":"https://api.github.com/users/dlfivefifty/events{/privacy}","received_events_url":"https://api.github.com/users/dlfivefifty/received_events","type":"User","site_admin":false},"created_at":"2018-03-04T10:17:07Z","updated_at":"2018-03-04T10:17:07Z","author_association":"CONTRIBUTOR","body":"we could do something like this:\r\n```Julia\r\nfor f in (:sqrt, ...)\r\n   @eval $f(A::AbstractArray) = matrixfunction($f, A)\r\nend\r\nmatrixfunction(f, A) = error(“Install MatrixFunctions.jl”)\r\nend\r\n```\r\n\r\nThen MatrixFunctions.jl can safely override ` Base.matrixfunction(::typeof(sqrt), A)` "}}
{"actor":{"display_login":"dlfivefifty"}}