Mentions légales du service

Skip to content
Snippets Groups Projects
Name Last commit Last update
data
src
tests
Cargo.toml
LICENSE
README.md
USAGE.md
build.rs

algpath

algpath is a proof-of-concept Rust package for the rigorous computation of the continuation of a regular zero of a polynomial when changing a parameter.

Compilation

This package only supports x86-64 CPUs with AVX2 extensions. By default, rust will compile for maximum binary compatibility and will not enable AVX2, even if your processor features it. So make sure to set the appropriate compilation flags, for example RUSTFLAGS="-Ctarget-cpu=native".

In bash, you can build the program with the following commands:

git clone https://gitlab.inria.fr/lairez/algpath.git
cd algpath
$RUSTFLAGS="-Ctarget-cpu=native" cargo build --release

Then you can try one of the example files:

./target/release/algpath data/3-3-3-3_1.json

Usage

Input format

The executable algpath accepts as argument a path to a JSON file. If the path is -, the data is read from the standard input.

Here is a self-documenting input example. There are many more in the data directory. Both I and im can be used to represent the imaginary unit.

{
  "system": [
    "(-0.932203744865119 + 0.552213152383314*I)*t*x0^2 + 12.0000000000000*t*x1^2 - t*x0 + (0.932203744865119 - 0.552213152383314*I)*x0^2 + 14.0000000000000*t*x1 + (-1.06779625513488 - 0.552213152383314*I)*t - 0.932203744865119 + 0.552213152383314*I",
    "(-2.00000000000000)*t*x0^2 + t*x0*x1 + (0.559594195166760 + 0.593167846399201*I)*t*x1^2 - t*x0 + 3.00000000000000*t*x1 + (-0.559594195166760 - 0.593167846399201*I)*x1^2 + (0.440405804833240 - 0.593167846399201*I)*t + 0.559594195166760 + 0.593167846399201*I"
  ],
  "variables": [
    "x0",
    "x1"
  ],
  "parameters": [
    "t"
  ],
  "path": [
    [
      "0.0"
    ],
    [
      "1.0"
    ]
  ],
  "fiber": [
    [
      "1.00000000000000",
      "1.00000000000000"
    ],
    [
      "-1.00000000000000 + 1.22464679914735e-16*I",
      "1.00000000000000"
    ],
    [
      "1.00000000000000",
      "-1.00000000000000 + 1.22464679914735e-16*I"
    ],
    [
      "-1.00000000000000 + 1.22464679914735e-16*I",
      "-1.00000000000000 + 1.22464679914735e-16*I"
    ]
  ]
}

Command line interface

Sveral options are available. See algpath --help or USAGE.md.

Output format

Currently the program is only proof-of-concept. At the moment we are less interested in the result than in how the calculation takes place. So the program does not output the result.

Authors

  • Alexandre Guillemot (theoretical foundations)
  • Pierre Lairez (theoretical foundations, implementation)

Acknowledgments

The interval arithmetic used in this package is derived from the inari, in particular the test suite.

Licensing

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.