Science Score: 59.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 6 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
✓Committers with academic emails
3 of 7 committers (42.9%) from academic institutions -
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (15.0%) to scientific vocabulary
Keywords from Contributors
Repository
Embedded algebraic number fields
Basic Info
- Host: GitHub
- Owner: flatsurf
- License: lgpl-3.0
- Language: C
- Default Branch: master
- Homepage: https://flatsurf.github.io/e-antic/
- Size: 12 MB
Statistics
- Stars: 13
- Watchers: 4
- Forks: 12
- Open Issues: 17
- Releases: 30
Metadata Files
README.md
e-antic
(Real Embedded) Algebraic Number Theory
e-antic is a C/C++/Python library to deal with real embedded number fields built on top of ANTIC. It aims to provide the fastest possible exact arithmetic operations and comparisons.
Source tarballs can be downloaded at https://github.com/flatsurf/e-antic/releases.
This repository contains two related projects:
- libeantic a C/C++ library
- pyeantic a Python wrapper for libeantic
The dependencies are:
- either FLINT 2.6, 2.7, 2.8, or 2.9, Arb, and ANTIC,
- or FLINT 3.x;
- Boost for the C++ library
- cppyy for the Python wrapper
Usage
We compute $a^2 - 2$ in the C++ interface where $a$ is a root of $x^3 - 3x + 1$.
cpp
auto K = eantic::renf_class::make("x^3 - 3*x + 1", "x", "0.34 +/- .01");
auto a = K->gen();
auto b = a.pow(2) - 2;
Our documentation has more details about this example and also shows you how to do the same computation with the C interface and the Python interface.
Build and Develop e-antic with pixi
If you have cloned the source repository, make sure to pull in all the third-party header-only libraries by running:
git submodule update --init
If you are distributing e-antic or you are a purist who only wants to interact with autotools directly, then you should skip to the next section. Otherwise, we strongly recommend that you install pixi and then use the following commands:
pixi run testbuild e-antic and run the libeantic and pyeantic test suitespixi run sagebuild e-antic and spawn SageMath with the local libeantic and pyeantic installedpixi run docto build and preview the documentationpixi run compile-commandsto generate acompile_commands.jsonthat your IDE might be able to use to make sense of this project
What is pixi?
pixi is a tool based on [conda](https://en.wikipedia.org/wiki/Conda_(package_manager)) & [conda-forge](https://conda-forge.org) for developers so that we can all use the same workflows in the same defined environments. pixi allows us to ship a very opinionated setup to developers of e-antic, namely a number of opinionated scripts with corresponding tested (and opinionated) dependencies. This makes the whole development experience much more reliable and reproducible, e.g., the CI on GitHub Pull Requests runs with the exact same setup, so if something fails there, you can just run the CI command to hopefully get exactly the same behavior locally.How do I use pixi?
If you have not used pixi before, the most relevant pixi command is: ```sh pixi run TASK ``` Run `pixi task list` to see the available tasks. All tasks are defined in the `pixi.toml` file and most are used somewhere in our GitHub Continuous Integration setup, see .github/workflows/.Why don't we add all things to the Makefiles but use pixi tasks?
Packagers do prefer a system that is as minimalistic as possible. Any opinionated bit in the build system, such as setting compiler flags, usually needs to be patched out by software distributions. That's why our Makefiles are trying to follow the autoconfiscated standards as closely as possible. And essentially all that pixi does is to call these Makefiles without you having to figure out how everything works in detail.Can I use configure & make with pixi?
More experienced developers may not want to use these tasks. You can also just use the curated list of dependencies that pixi provides and drop into a shell with these dependencies installed. For example, to run the libeantic test suite directly, you could do: ```sh pixi shell -e dev ./bootstrap cd libeantic ./configure make check ``` Note that the following section contains more details about this `configure && make` workflow that might be of interest to you.Build from the Source Code Repository or a Tarball
If you have cloned the source directory and you decided not to use pixi, you will need to setup the configure script and Makefile using autotools. That is
git submodule update --init
./bootstrap
If you obtained a tarball of the sources or if the preceding step worked, you can now run
./configure
make
make check # to run our test suite
make install # to install into /usr/local
If you happen to have any of FLINT, Arb, or ANTIC installed in a non standard
directory, you will have to specify the CPPFLAGS and LDFLAGS variables for
the configure script
./configure CPPFLAGS=-I/my/path/include LDFLAGS=-L/my/path/lib
For best performance run CFLAGS="-O3" CXXFLAGS="-O3" ./configure instead of
./configure. You might want to add -g3 to CFLAGS and CXXFLAGS which
does not hurt performance but gives a better debugging experience. For the best
debugging experience, you might want to replace -O3 with -Og or even -O0
but the latter results in poor performance.
If your compiler supports it, you can try to add -fvisibility=hidden
-fvisibility-inlines-hidden to your CXXFLAGS. This hides internal bits in
the resulting library which have lead to crashes in the past due to conflicting
header-only libraries.
If your linker supports it, you should use ./configure --with-version-script
to shrink the resulting shared library to an exact curated list of versioned
symbols.
perf works well to profile when you make sure that CFLAGS and CXXFLAGS
contain -fno-omit-framepointer. You can then for example run our test suite
with perf record --call-graph dwarf make check. Apart from perf itself there
are several ways to analyze the output,
hotspot might be the most convenient one at
the time of this writing.
For more detailed but generic instructions please refer to the INSTALL file.
Feedback and Contributions
If you have tried out e-antic, we are thrilled to learn about your experiences. If you ran into any problems or have suggestions for improvement, please create an issue.
If you want to contribute to e-antic, pull requests are always welcome :heart:
We are also happy to walk you through the process personally if you are unsure how to get started. Feel free to reach out in the #flatsurf stream on Zulip in any case.
License
e-antic is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License (LGPL) as published by the Free Software Foundation; either version 3.0 of the License, or (at your option) any later version. See https://www.gnu.org/licenses/.
How to Cite this Project
If you have used this project in the preparation of a publication, please cite it as described on our zenodo page.
Acknowledgements
- Julian Rüth's contributions to this project have been supported by the Simons Foundation Investigator grant of Alex Eskin.
Maintainers
Owner
- Name: flatsurf
- Login: flatsurf
- Kind: organization
- Email: contact@flatsurf.org
- Website: flatsurf.github.io
- Repositories: 21
- Profile: https://github.com/flatsurf
GitHub Events
Total
- Create event: 6
- Release event: 1
- Issues event: 6
- Watch event: 1
- Delete event: 4
- Issue comment event: 27
- Push event: 21
- Pull request review event: 1
- Pull request event: 22
- Fork event: 2
Last Year
- Create event: 6
- Release event: 1
- Issues event: 6
- Watch event: 1
- Delete event: 4
- Issue comment event: 27
- Push event: 21
- Pull request review event: 1
- Pull request event: 22
- Fork event: 2
Committers
Last synced: almost 3 years ago
Top Committers
| Name | Commits | |
|---|---|---|
| Julian Rüth | j****h@f****g | 590 |
| Vincent Delecroix | v****x@u****r | 242 |
| Matthias Koeppe | m****e@m****u | 14 |
| Jerome Benoit | q****r@r****t | 2 |
| Antonio Rojas | a****s@a****g | 1 |
| Sebastian Gutsche | g****e@m****e | 1 |
| Alejandra Robles Sosa | a****a@g****m | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 46
- Total pull requests: 79
- Average time to close issues: 6 months
- Average time to close pull requests: about 1 month
- Total issue authors: 11
- Total pull request authors: 7
- Average comments per issue: 2.59
- Average comments per pull request: 1.99
- Merged pull requests: 63
- Bot issues: 0
- Bot pull requests: 4
Past Year
- Issues: 3
- Pull requests: 9
- Average time to close issues: 15 days
- Average time to close pull requests: about 1 month
- Issue authors: 3
- Pull request authors: 3
- Average comments per issue: 1.0
- Average comments per pull request: 1.33
- Merged pull requests: 3
- Bot issues: 0
- Bot pull requests: 4
Top Authors
Issue Authors
- saraedum (20)
- videlec (12)
- w-bruns (3)
- mkoeppe (3)
- jamesjer (2)
- strophy (1)
- mahrud (1)
- thierry-FreeBSD (1)
- jgmbenoit (1)
- antonio-rojas (1)
- isuruf (1)
Pull Request Authors
- saraedum (72)
- dependabot[bot] (6)
- mkoeppe (4)
- videlec (2)
- jgmbenoit (1)
- jamesjer (1)
- jengelh (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 4
- Total downloads: unknown
-
Total dependent packages: 5
(may contain duplicates) -
Total dependent repositories: 11
(may contain duplicates) - Total versions: 34
- Total maintainers: 1
alpine-edge: libeantic-dev
Embedded algebraic number fields (development files)
- Homepage: https://github.com/flatsurf/e-antic
- License: LGPL-3.0-or-later
-
Latest release: 2.1.0-r1
published 9 months ago
Rankings
Maintainers (1)
alpine-edge: libeantic
Embedded algebraic number fields
- Homepage: https://github.com/flatsurf/e-antic
- License: LGPL-3.0-or-later
-
Latest release: 2.1.0-r1
published 9 months ago
Rankings
Maintainers (1)
conda-forge.org: libeantic
e-antic is a C/C++/Python library to deal with real embedded number fields built on top of ANTIC. It aims to provide the fastest possible exact arithmetic operations and comparisons.
- Homepage: https://github.com/flatsurf/e-antic
- License: LGPL-3.0-or-later
-
Latest release: 1.2.2
published over 3 years ago
Rankings
conda-forge.org: pyeantic
e-antic is a C/C++/Python library to deal with real embedded number fields built on top of ANTIC. It aims to provide the fastest possible exact arithmetic operations and comparisons.
- Homepage: https://github.com/flatsurf/e-antic
- License: LGPL-3.0-or-later
-
Latest release: 1.2.2
published over 3 years ago
Rankings
Dependencies
- ipywidgets
- libeantic
- notebook
- pyeantic
- xeus-cling
- antic
- arb
- automake
- benchmark
- boost-cpp
- byexample >=10.4,<10.5
- c-compiler
- coreutils
- cppyy >=2.1.0,<3
- cxx-compiler
- gmp
- libflint
- libtool
- py
- actions/checkout v2 composite
- actions/upload-artifact v2 composite
- flatsurf/actions/anaconda-upload main composite
- flatsurf/actions/conda-forge-build main composite
- actions/checkout v2 composite
- conda-incubator/setup-miniconda v2 composite
- flatsurf/actions/show-logs main composite
- JamesIves/github-pages-deploy-action 3.7.1 composite
- actions/checkout v2 composite
- conda-incubator/setup-miniconda v2 composite
- actions/checkout v2 composite
- conda-incubator/setup-miniconda v2 composite
- flatsurf/actions/show-logs main composite
- actions/checkout v2 composite
- conda-incubator/setup-miniconda v2 composite
- actions/checkout v2 composite
- conda-incubator/setup-miniconda v2 composite
- flatsurf/actions/show-logs main composite
- linkchecker
- mkdocs >=1.1.0
- sphinx
- sphinx_rtd_theme
- standardese >=0.6.0
- antic
- arb
- automake
- benchmark
- boost-cpp
- coreutils
- cppyy >=2.1.0,<3
- cppyythonizations
- cxx-compiler
- fontconfig 2.13.96=*_1|<2.13.96
- gmpxxyy
- ipywidgets
- libflint
- libiconv
- libtool
- pytest
- realalg
- sagelib
- sympy