Skip to content

Commit 428e940

Browse files
committed
Merge branch 'main' into pr/629
2 parents 5307984 + b201dcc commit 428e940

19 files changed

+680
-540
lines changed

.github/dependabot.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
2+
version: 2
3+
updates:
4+
- package-ecosystem: "github-actions"
5+
directory: "/" # Location of package manifests
6+
schedule:
7+
interval: "weekly"

.github/workflows/TagBot.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ on:
44
types:
55
- created
66
workflow_dispatch:
7+
inputs:
8+
lookback:
9+
default: 3
10+
permissions:
11+
contents: write
712
jobs:
813
TagBot:
914
if: github.event_name == 'workflow_dispatch' || github.actor == 'JuliaTagBot'

.github/workflows/documentation.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
docs:
1212
runs-on: ubuntu-latest
1313
steps:
14-
- uses: actions/checkout@v2
14+
- uses: actions/checkout@v4
1515
- uses: julia-actions/setup-julia@latest
1616
with:
1717
version: "^1.4"

.github/workflows/format_check.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
- uses: julia-actions/setup-julia@latest
1616
with:
1717
version: "^1.4"
18-
- uses: actions/checkout@v2
18+
- uses: actions/checkout@v4
1919
- name: Install JuliaFormatter and format
2020
run: |
2121
julia -e 'using Pkg; Pkg.add(PackageSpec(name="JuliaFormatter", version="1.0.33"))'

.github/workflows/run_tests.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@ jobs:
1919
julia-version: ["^1.10"]
2020
os: [ubuntu-latest]
2121
steps:
22-
- uses: actions/checkout@v2
22+
- uses: actions/checkout@v4
2323
- uses: julia-actions/setup-julia@latest
2424
with:
2525
version: ${{ matrix.julia-version }}
26+
- uses: julia-actions/cache@v2
2627
- uses: julia-actions/julia-buildpkg@latest
2728
- uses: julia-actions/julia-runtest@latest
28-
- uses: julia-actions/julia-uploadcodecov@latest
29+
- uses: codecov/codecov-action@v5
2930
env:
3031
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

.github/workflows/run_tests_modelkit.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,13 @@ jobs:
1818
julia-version: ["^1.6.0-0"]
1919
os: [ubuntu-latest]
2020
steps:
21-
- uses: actions/checkout@v2
21+
- uses: actions/checkout@v4
2222
- uses: julia-actions/setup-julia@latest
2323
with:
2424
version: ${{ matrix.julia-version }}
25+
- uses: julia-actions/cache@v2
2526
- uses: julia-actions/julia-buildpkg@latest
2627
- uses: julia-actions/julia-runtest@latest
27-
- uses: julia-actions/julia-uploadcodecov@latest
28+
- uses: codecov/codecov-action@v5
2829
env:
2930
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "HomotopyContinuation"
22
uuid = "f213a82b-91d6-5c5d-acf7-10f1c761b327"
33
authors = ["Sascha Timme <sascha@timme.xyz>", "Paul Breiding <pbrdng@gmail.com>"]
4-
version = "2.12.0"
4+
version = "2.14"
55

66
[deps]
77
Arblib = "fb37089c-8514-4489-9461-98f9c8763369"

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<img src="https://www.juliahomotopycontinuation.org/images/logo_transparent_bg.png" width="320px">
22

3-
[![][docs-stable-img]][docs-stable-url] ![Run tests](https://github.com/JuliaHomotopyContinuation/HomotopyContinuation.jl/workflows/Run%20tests/badge.svg?branch=main)
3+
[![][docs-stable-img]][docs-stable-url] [![Run tests](https://github.com/JuliaHomotopyContinuation/HomotopyContinuation.jl/actions/workflows/run_tests.yml/badge.svg)](https://github.com/JuliaHomotopyContinuation/HomotopyContinuation.jl/actions/workflows/run_tests.yml)
4+
45

56
**HomotopyContinuation.jl** is a Julia package for solving systems of polynomial equations by numerical homotopy continuation.
67

src/certification.jl

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,13 @@ abstract type AbstractSolutionCertificate end
4141
"""
4242
SolutionCertificate
4343
44-
Result of [`certify`](@ref) for a single solution. Contains the initial solutions
45-
and if the certification was successfull a vector of complex intervals where the true
46-
solution is contained in.
44+
Result of [`certify`](@ref) for a single solution. Contains the initial solutions and if the certification was successfull a vector of complex intervals where the true solution is contained in.
45+
The complex intervals are given as an `Arblib.AcbMatrix`.
46+
The `Arblib.AcbMatrix` is printed in the default format of `Arblib`. This means that, if the midpoint of an interval can't be represented with sufficiently many correct digits, `Arblib` will not print the midpoint. Instead, it will print an interval of the form `[+/- r]`, where `r` will be an upper bound for the absolute value of the ball. An enclosure of the correct interval can be printed as follows.
47+
```julia
48+
Base.show(certificate::SolutionCertificate; digits = 16, more = true)
49+
```
50+
This uses the [`ARB_STR_MORE`](https://flintlib.org/doc/arb.html#c.arb_get_str) functionality in `Flint` with `16` digits.
4751
"""
4852
Base.@kwdef struct SolutionCertificate <: AbstractSolutionCertificate
4953
solution_candidate::AbstractVector
@@ -145,8 +149,7 @@ end
145149
certified_solution_interval(certificate::AbstractSolutionCertificate)
146150
147151
Returns an `Arblib.AcbMatrix` representing a vector of complex intervals where a unique
148-
zero of the system is contained in.
149-
Returns `nothing` if `is_certified(certificate)` is `false`.
152+
zero of the system is contained in. Returns `nothing` if `is_certified(certificate)` is `false`.
150153
"""
151154
certified_solution_interval(certificate::AbstractSolutionCertificate) = certificate.I
152155
@deprecate certified_solution(certificate) certified_solution_interval(certificate)
@@ -156,8 +159,7 @@ certified_solution_interval(certificate::AbstractSolutionCertificate) = certific
156159
157160
Returns an `Arblib.AcbMatrix` representing a vector of complex intervals where a unique
158161
zero of the system is contained in.
159-
This is the result of applying the Krawczyk operator to `certified_solution_interval(certificate)`.
160-
Returns `nothing` if `is_certified(certificate)` is `false`.
162+
This is the result of applying the Krawczyk operator to `certified_solution_interval(certificate)`. Returns `nothing` if `is_certified(certificate)` is `false`.
161163
"""
162164
certified_solution_interval_after_krawczyk(certificate::ExtendedSolutionCertificate) =
163165
certificate.I′
@@ -193,7 +195,14 @@ Returns a `NamedTuple` `(x, Y)` with the parameters of the Krawczyk operator fol
193195
"""
194196
krawczyk_operator_parameters(cert::ExtendedSolutionCertificate) = (x = cert.x̃, Y = cert.Y)
195197

196-
function Base.show(f::IO, cert::AbstractSolutionCertificate)
198+
Base.show(cert::AbstractSolutionCertificate; digits::Int = 16, more::Bool = false) =
199+
Base.show(stdout, cert; digits = digits, more = more)
200+
function Base.show(
201+
f::IO,
202+
cert::AbstractSolutionCertificate;
203+
digits::Int = 16,
204+
more::Bool = false,
205+
)
197206
println(f, "SolutionCertificate:")
198207
println(f, "solution_candidate = [")
199208
for z in solution_candidate(cert)
@@ -208,7 +217,7 @@ function Base.show(f::IO, cert::AbstractSolutionCertificate)
208217
println(f, "certified_solution_interval = [")
209218
for z in certified_solution_interval(cert)
210219
print(f, " ")
211-
print(f, z)
220+
print(f, string(z; digits = digits, more = more))
212221
println(f, ",")
213222
end
214223
println(f, "]")
@@ -1397,6 +1406,7 @@ function certify(
13971406
p::Union{Nothing,AbstractArray} = nothing,
13981407
cache::CertificationCache = CertificationCache(F);
13991408
target_parameters = nothing,
1409+
max_precision::Int = 256,
14001410
kwargs...,
14011411
)
14021412
cert_params =
@@ -1410,6 +1420,7 @@ function certify(
14101420
p::Union{Nothing,AbstractArray} = nothing,
14111421
cache::CertificationCache = CertificationCache(F);
14121422
target_parameters = nothing,
1423+
max_precision::Int = 256,
14131424
kwargs...,
14141425
)
14151426
cert_params =
@@ -1423,6 +1434,7 @@ function certify(
14231434
p::Union{Nothing,AbstractArray} = nothing,
14241435
cache::CertificationCache = CertificationCache(F);
14251436
target_parameters = nothing,
1437+
max_precision::Int = 256,
14261438
kwargs...,
14271439
)
14281440
cert_params =

src/endgame_tracker.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,12 @@ These parameters control the behaviour during the endgame.
3535
endgame strategy is considered to be applied.
3636
* `min_coord_growth = 100`: The minimal relative growth of a coordinate necessary to
3737
to be considered going to infininity (resp. zero).
38+
* `singular_min_accuracy = 1e-6`: A solution can be treated with a singular endgame method only if its [`accuracy`](@ref) is below this threshold. Otherwise, the solution will either be refined or labeled as unsuccessfully terminated.
3839
* `val_at_infinity_tol = 1e-3`: Tolerance on the valuation which has to be
3940
satisfied before a path is considered to diverge / go to infinity.
4041
* `val_finite_tol = 1e-3`: Tolerance on the valuation which has to be satisfied before the endgame is started.
4142
* `sing_cond = 1e14`: value for the condition number above which a solution is considered singular.
42-
* `sing_accuracy = 1e-12`: value for the accuracy number above which a solution is considered singular.
43+
* `sing_accuracy = 1e-12`: value for the [`accuracy`](@ref) above which a solution is considered singular.
4344
* `scaling_threshold = -30.0`: Row scaling of matrices is only applied to rows with `e < scaling_threshold`, where is the norm of the row is estimated to be `2^e`. See [`skeel_row_scaling`](@skeel_row_scaling) for details.
4445
* `refine_steps = 3`: number of steps for refining solutions at the end.
4546
"""

0 commit comments

Comments
 (0)