# Should better error messages be added to \`inv\`?

**URL:** <https://discourse.julialang.org/t/should-better-error-messages-be-added-to-inv/23065>\
**Category:** Internals & Design\
**Tags:** linearalgebra\
**Created:** [April 12, 2019, 5:39am UTC](https://discourse.julialang.org/t/should-better-error-messages-be-added-to-inv/23065 "2019-04-12T05:39:33Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![singularitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/singularitti/32/17678_2.png) [@singularitti](https://discourse.julialang.org/u/singularitti)\
**Post date:** [April 12, 2019, 5:39am UTC](https://discourse.julialang.org/t/should-better-error-messages-be-added-to-inv/23065/1 "2019-04-12T05:39:33Z")

</div>

When I am using `LinearAlgebra.inv`, I found that the error message of it could be very primitive

```julia
julia> inv(zeros(3,3))
ERROR: LAPACKException(1)
Stacktrace:
 [1] chklapackerror at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/LinearAlgebra/src/lapack.jl:38 [inlined]
 [2] trtrs!(::Char, ::Char, ::Char, ::Array{Float64,2}, ::Array{Float64,2}) at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/LinearAlgebra/src/lapack.jl:3348
 [3] inv at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/LinearAlgebra/src/triangular.jl:583 [inlined]
 [4] inv(::Array{Float64,2}) at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/LinearAlgebra/src/dense.jl:728
 [5] top-level scope at none:0

julia> inv(A)
ERROR: SingularException(3)
Stacktrace:
 [1] checknonsingular at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/LinearAlgebra/src/factorization.jl:12 [inlined]
 [2] #lu!#103(::Bool, ::Function, ::Array{Float64,2}, ::Val{true}) at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/LinearAlgebra/src/lu.jl:41
 [3] #lu! at ./none:0 [inlined]
 [4] #lu#107 at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/LinearAlgebra/src/lu.jl:142 [inlined]
 [5] lu at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/LinearAlgebra/src/lu.jl:142 [inlined] (repeats 2 times)
 [6] inv(::Array{Int64,2}) at /Users/osx/buildbot/slave/package_osx64/build/usr/share/julia/stdlib/v1.1/LinearAlgebra/src/dense.jl:732
 [7] top-level scope at none:0

```

Of course, the examples I gave are straightforward and can be pinpointed quickly. But if such error occurs at the midpoint of a calculation, wouldn’t it let users try hard to debug?

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [April 12, 2019, 6:35am UTC](https://discourse.julialang.org/t/should-better-error-messages-be-added-to-inv/23065/2 "2019-04-12T06:35:31Z")

</div>

Something related was discussed in

> <https://github.com/JuliaLang/julia/issues/24043>
>
> Some days ago I generated a list of \`Exception\`s without inline documentation. H…ere it is:
> \`\`\`
> Base.DNSError
> Base.Distributed.BatchProcessingError
> Base.LibGit2.Error.GitError
> Base.LinAlg.ARPACKException
> Base.LinAlg.LAPACKException
> Base.LinAlg.PosDefException
> Base.LinAlg.RankDeficientException
> Base.LinAlg.SingularException
> Base.Pkg.Entry.PkgTestError
> Base.Pkg.PkgError
> Base.Pkg.Resolve.MaxSum.UnsatError
> Base.PrecompilableError
> Base.SimdLoop.SimdError
> Base.SparseArrays.CHOLMOD.CHOLMODException
> Base.SparseArrays.UMFPACK.MatrixIllConditionedException
> Base.Test.FallbackTestSetException
> Base.UVError                                                          
> ~Base.WrappedException~   
> InvalidStateException
> SegmentationFault
> UnicodeError
> \`\`\`
> Some of those are quite prominent, e.g. \`PosDefException\`.

and adding nice `Base.showerror` methods would surely help. Please make a PR if you can.
