Skip to content

Commit

Permalink
New release.
Browse files Browse the repository at this point in the history
  • Loading branch information
RalphAS committed Mar 17, 2020
1 parent 01da71f commit 523a7af
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 9 deletions.
11 changes: 11 additions & 0 deletions .github/workflows/TagBot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
name: TagBot
on:
schedule:
- cron: 0 * * * *
jobs:
TagBot:
runs-on: ubuntu-latest
steps:
- uses: JuliaRegistries/TagBot@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name = "GenericSchur"
uuid = "c145ed77-6b09-5dd9-b285-bf645a82121e"
version = "0.4.0-DEV"
version = "0.4.0"

[deps]
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
Expand Down
7 changes: 5 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,8 +120,11 @@ Corresponding functions for reordering and condition
estimation are included. Tests to date suggest that behavior is analogous
to LAPACK.

Generalized eigenvectors are not yet provided.

Right eigenvectors of generalized problems are available with
`V = eigvecs(S::GeneralizedSchur{<:Complex})`. Column `j` of `V` satisfies
`S.beta[j] * A * v ≈ S.alpha[j] * B * v`.
These currently have a peculiar norm intended to be compatible with LAPACK
conventions.

## Acknowledgements

Expand Down
14 changes: 8 additions & 6 deletions src/generalized.jl
Original file line number Diff line number Diff line change
Expand Up @@ -417,7 +417,10 @@ end

function eigvecs(S::GeneralizedSchur, left=false)
left && throw(ArgumentError("not implemented"))
return _geigvecs(S.S, S.T, S.Z)
v = _geigvecs(S.S, S.T, S.Z)
# CHECKME: Euclidean norm differs from LAPACK, so wait for upstream.
# _enormalize!(v)
return v
end


Expand All @@ -436,7 +439,7 @@ function _geigvecs(S::StridedMatrix{T}, P::StridedMatrix{T},
ulp = eps(RT)
safmin = safemin(RT)
smallnum = safmin * (n / ulp)
big = one(RT) / smallnum
bigx = one(RT) / smallnum
bignum = one(RT) / (n * safmin)

vectors = Matrix{T}(undef,n,n)
Expand All @@ -445,7 +448,7 @@ function _geigvecs(S::StridedMatrix{T}, P::StridedMatrix{T},
v2 = zeros(T,n)
end

# We use the 1-norms of the strictly upper part of S columns
# We use the 1-norms of the strictly upper part of S, P columns
# to avoid overflow
anorm = abs1(S[1,1])
bnorm = abs1(P[1,1])
Expand Down Expand Up @@ -483,10 +486,10 @@ function _geigvecs(S::StridedMatrix{T}, P::StridedMatrix{T},
lsb = abs1(sα) >= safmin && abs1(bcoeff) < smallnum
s = one(RT)
if lsa
s = (smallnum / abs(sβ)) * min(anorm, big)
s = (smallnum / abs(sβ)) * min(anorm, bigx)
end
if lsb
s = max(s, (smallnum / abs1(sα)) * min(bnorm, big))
s = max(s, (smallnum / abs1(sα)) * min(bnorm, bigx))
end
if lsa || lsb
s = min(s, 1 / (safmin * max( one(RT), abs(acoeff),
Expand All @@ -506,7 +509,6 @@ function _geigvecs(S::StridedMatrix{T}, P::StridedMatrix{T},
acb = abs1(bcoeff)
xmax = one(RT)
v .= zero(T)
v[ki] = one(T)
dmin = max(ulp * aca * anorm, ulp * acb * bnorm, safmin)

# triangular solve of (a A - b B) x = 0, columnwise
Expand Down

2 comments on commit 523a7af

@RalphAS
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JuliaRegistrator
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Registration pull request created: JuliaRegistries/General/11065

After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.

This will be done automatically if Julia TagBot is installed, or can be done manually through the github interface, or via:

git tag -a v0.4.0 -m "<description of version>" 523a7afe02015c7a55f74d487335dcb5242184f1
git push origin v0.4.0

Please sign in to comment.