Git Product home page Git Product logo

brial's Introduction

Build Status

BRiAl is the legacy version of PolyBoRi maintained by sagemath developers.

libBRiAl is the C/C++ library part of BRiAl.

The building requisite for libBRiAl are

  • A modern C compiler supporting the C99 standard
  • A modern C++ compiler supporting C++11
  • A recent Boost release (1.58.0 or over)
  • The m4ri library

Also included but to be installed separately is sage-brial. sage-brial offers a python interface to libbrial through the sage bindings to libbrial.

brial's People

Contributors

alexanderdreyer avatar brickenstein avatar cbouilla avatar embray avatar fchapoton avatar heiderich avatar jamesjer avatar jdemeyer avatar jengelh avatar kiwifb avatar ohanar avatar rusydi avatar saraedum avatar sgouezel avatar timokau avatar vbraun avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

brial's Issues

Update ax_boost_base.m4

ax_boost_base.m4 as shipped by brial does not recognize riscv64. As a result, it looks in the wrong directory and cannot find boost_test_framework.so. Please update ax_boost_base.m4 with a new version from the autoconf-archive.

[PATCH - one-liner] Remove superfluous import of removed function

Bastian Germann added the following to the Debian package for BRiAl:

diff --git a/sage-brial/brial/gbcore.py b/sage-brial/brial/gbcore.py
index fd3c3d0c..9006e8d6 100644
--- a/sage-brial/brial/gbcore.py
+++ b/sage-brial/brial/gbcore.py
@@ -7,7 +7,6 @@ from .ll import eliminate, ll_encode
 from time import time
 from copy import copy
 from itertools import chain
-from inspect import getargspec
 from .statistics import used_vars, used_vars_set
 from .heuristics import dense_system, gauss_on_linear
 from .easy_polynomials import easy_linear_polynomials

gcc 12 deprecation warnings

In file included from ../../libbrial/include/polybori/BooleSet.h:23,
                 from BooleSet.cc:19:
../../libbrial/include/polybori/routines/pbori_func.h:114:15: warning: ‘template<class _Arg1, class _Arg2, class _Result> struct std::binary_function’ is deprecated [-Wdeprecated-declarations]
  114 |   public std::binary_function<RhsType&, const LhsType&, RhsType&> {
      |               ^~~~~~~~~~~~~~~
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/include/g++-v12/string:48,
                 from /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/include/g++-v12/bits/locale_classes.h:40,
                 from /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/include/g++-v12/bits/ios_base.h:41,
                 from /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/include/g++-v12/ios:42,
                 from /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/include/g++-v12/ostream:38,
                 from /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/include/g++-v12/iostream:39,
                 from ../../libbrial/include/polybori/pbori_defs.h:24,
                 from ../../libbrial/include/polybori/BooleSet.h:20:
/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/include/g++-v12/bits/stl_function.h:131:12: note: declared here
  131 |     struct binary_function
      |            ^~~~~~~~~~~~~~~

clang++ warning

When compiling with clang++ the following warnings are emitted

../../BRiAl/groebner/include/polybori/groebner/minimal_elements.h:83:28: warning: comparison of unsigned expression >= 0 is always true [-Wtautological-compare]
        for(z=cv.size()-1;z>=0;z--){
                          ~^ ~
../../BRiAl/groebner/include/polybori/groebner/minimal_elements.h:171:58: warning: comparison of unsigned expression >= 0 is always true [-Wtautological-compare]
        for(MonomialSet::size_type i=exponents.size()-1;i>=0;i--){
                                                        ~^ ~
../../BRiAl/groebner/include/polybori/groebner/minimal_elements.h:176:58: warning: comparison of unsigned expression >= 0 is always true [-Wtautological-compare]
        for(MonomialSet::size_type i=exponents.size()-1;i>=0;i--){

There is clearly an issue here, this may indicate a serious bug.

Expose debugging macros at build time (and disable by default?)

Nothing super important here, but while I was troubleshooting a crash I noticed that some debug macros are enabled by default, e.g.

#if defined(PBORI_NDEBUG)
#define PBORI_ASSERT(arg) (static_cast<void>(0))
#else
#define PBORI_ASSERT(arg) assert(arg)
#endif

in include/polybori/pbori_defs.h. It might make sense to disable these in release builds, but make them available as a configure flag? My issue was solved by rebuilding brial and turned out not to be related.

Status of gui, ipbori and docs

Hi,

I started packaging brial for Debian to replace polybori. I am wondering what is the current status of the gui, ipbori and docs. The are still in the git repo, but apparently have not been touched since the renaming of the project. They are also not in the release tarballs and not built/installed by the makefiles.

Are these components still supported? Do you plan to keep them up to date, and let the makefiles install them? The gui and ipbori are useful when brial is used as a standalone package and the documentation is even more important, in any case.

Best,
Tobias

VERSION in polybori/config.h ?

In Debian (brial 1.2.4) and Fedora (1.2.5) there is a handy macro VERSION, e.g.

/* Version number of package */
#define VERSION "1.2.5"

But not e.g. in Gentoo. Does it need another way to generate polybori/config.h ?

Tighter config.h.in

In version 1.2.6, libbrial/include/polybori/config.h.in is provided by autoheader and contains many definitions, most of which are just useless.

The Debian tools detect some of those definitions as potentially clashing with other files named config.h on a system and complain, so I'm going to write a tighter version, with only what's needed.

I'll post my patch here when it will look correct.

Just a thank you

Hi All,

Just a thank you for all of the developers who are maintaining this: thanks a ton. A lot of interesting work is still coming out of PolyBori/BRiAl, so it's incredibly important to maintain it. Thanks so much for your efforts!

Mate

PBORI_HAVE_M4RI, PBORI_HAVE_NTL and bad API

I noticed missing symbols on Debian (faugereStepDense in GroebnerStrategy), and set out to find out what the problem was. It turns out there where three of them.

The function is defined in GroebnerStrategy.cc, but protected by #defined PBORI_HAVE_NTL or PBORI_HAVE_M4RI ; but its declaration is unconditional in GroebnerStrategy.h, so that's a problem with the api, and should be fixed. First problem.

And then, I thought perhaps Debian was building without NTL & M4RI -- but when I checked : we do have M4RI. So I tried to find where PBORI_HAVE_M4RI is supposed to be defined : config.h! So it looked like my recent patch was the culprit. Until I checked with the autoheader-generated file : it doesn't have that either! So that makes a second thing to fix, by adding to config.h.in:

/* has m4ri */
#undef PBORI_HAVE_M4RI

Second problem.

Finally PBORI_HAVE_NTL is used in a few places, but never actually defined, so either it should be handled in configure.ac, or dropped. Third problem.

Cheers!

Test failures with boost 1.81

BRiAl 1.21.11
boost 1.81.0
gcc 12.2.0

./configure --prefix=/usr --enable-shared
make
make check

tests/test-suite.log

========================================
   BRiAl 1.2.11: tests/test-suite.log
========================================

# TOTAL: 1
# PASS:  0
# SKIP:  0
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0

.. contents:: :depth: 2

FAIL: unittests
===============

Running 122 test cases...
BoolePolynomialTest.cc(352): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_independent": check poly_type(1, ring).stableHash() == 16982317933699389295u has failed [6643957975231536490 != 16982317933699389295][0;39;49m
BoolePolynomialTest.cc(353): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_independent": check poly_type(x).stableHash() == 14511566905035657723u has failed [14305226453458947074 != 14511566905035657723][0;39;49m
BoolePolynomialTest.cc(354): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_independent": check poly_type(x*y).stableHash() == 1160268684422367443 has failed [7488647634487918362 != 1160268684422367443][0;39;49m
BoolePolynomialTest.cc(355): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_independent": check poly_type(x*y + z).stableHash() == 15553547522801749128u has failed [15080868938440987258 != 15553547522801749128][0;39;49m
BoolePolynomialTest.cc(356): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_independent": check poly_type(x*y + z + 1).stableHash() == 14746308500923705671u has failed [4046934837422409843 != 14746308500923705671][0;39;49m
BoolePolynomialTest.cc(357): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_independent": check poly_type(x*y + x + z).stableHash() == 6609543853578108291 has failed [17287305169241640544 != 6609543853578108291][0;39;49m
BoolePolynomialTest.cc(358): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_independent": check poly_type(x*y + x + z + 1).stableHash() == 13745298887294022704u has failed [15334652091369486486 != 13745298887294022704][0;39;49m
BoolePolynomialTest.cc(605): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_lp": check poly_type(1, ring).leadStableHash() == 16982317933699389295u has failed [6643957975231536490 != 16982317933699389295][0;39;49m
BoolePolynomialTest.cc(606): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_lp": check poly_type(a).leadStableHash() == 14511566905035657723u has failed [14305226453458947074 != 14511566905035657723][0;39;49m
BoolePolynomialTest.cc(607): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_lp": check poly_type(a*b).leadStableHash() == 1160268684422367443 has failed [7488647634487918362 != 1160268684422367443][0;39;49m
BoolePolynomialTest.cc(608): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_lp": check poly_type(c*d +c + e + 1).leadStableHash() == 994909422134781907 has failed [8683732623732266773 != 994909422134781907][0;39;49m
BoolePolynomialTest.cc(610): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_lp": check poly1.leadStableHash() == 14511566905035657723u has failed [14305226453458947074 != 14511566905035657723][0;39;49m
BoolePolynomialTest.cc(611): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_lp": check poly2.leadStableHash() == 14511566905035657723u has failed [14305226453458947074 != 14511566905035657723][0;39;49m
BoolePolynomialTest.cc(725): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_dlex": check poly_type(1, ring).leadStableHash() == 16982317933699389295u has failed [6643957975231536490 != 16982317933699389295][0;39;49m
BoolePolynomialTest.cc(726): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_dlex": check poly_type(a).leadStableHash() == 14511566905035657723u has failed [14305226453458947074 != 14511566905035657723][0;39;49m
BoolePolynomialTest.cc(727): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_dlex": check poly_type(a*b).leadStableHash() == 1160268684422367443 has failed [7488647634487918362 != 1160268684422367443][0;39;49m
BoolePolynomialTest.cc(728): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_dlex": check poly_type(c*d +c + e + 1).leadStableHash() == 994909422134781907 has failed [8683732623732266773 != 994909422134781907][0;39;49m
BoolePolynomialTest.cc(730): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_dlex": check poly1.leadStableHash() == 13332077148710286618u has failed [14792830888691653104 != 13332077148710286618][0;39;49m
BoolePolynomialTest.cc(731): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_dlex": check poly2.leadStableHash() == 994909422134781907 has failed [8683732623732266773 != 994909422134781907][0;39;49m
BoolePolynomialTest.cc(838): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_dp_asc": check poly_type(1, ring).leadStableHash() == 16982317933699389295u has failed [6643957975231536490 != 16982317933699389295][0;39;49m
BoolePolynomialTest.cc(839): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_dp_asc": check poly_type(a).leadStableHash() == 14511566905035657723u has failed [14305226453458947074 != 14511566905035657723][0;39;49m
BoolePolynomialTest.cc(840): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_dp_asc": check poly_type(a*b).leadStableHash() == 1160268684422367443 has failed [7488647634487918362 != 1160268684422367443][0;39;49m
BoolePolynomialTest.cc(841): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_dp_asc": check poly_type(c*d +c + e + 1).leadStableHash() == 994909422134781907 has failed [8683732623732266773 != 994909422134781907][0;39;49m
BoolePolynomialTest.cc(843): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_dp_asc": check poly1.leadStableHash() == 16171595639562729641u has failed [16452769785566003032 != 16171595639562729641][0;39;49m
BoolePolynomialTest.cc(844): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_dp_asc": check poly2.leadStableHash() == 298249910754104916 has failed [7788958613296501621 != 298249910754104916][0;39;49m
BoolePolynomialTest.cc(953): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_block_dlex": check poly_type(1,ring).leadStableHash() == 16982317933699389295u has failed [6643957975231536490 != 16982317933699389295][0;39;49m
BoolePolynomialTest.cc(954): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_block_dlex": check poly_type(a).leadStableHash() == 14511566905035657723u has failed [14305226453458947074 != 14511566905035657723][0;39;49m
BoolePolynomialTest.cc(955): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_block_dlex": check poly_type(a*b).leadStableHash() == 1160268684422367443 has failed [7488647634487918362 != 1160268684422367443][0;39;49m
BoolePolynomialTest.cc(956): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_block_dlex": check poly_type(c*d +c + e + 1).leadStableHash() == 994909422134781907 has failed [8683732623732266773 != 994909422134781907][0;39;49m
BoolePolynomialTest.cc(958): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_block_dlex": check poly1.leadStableHash() == 14511566905035657723u has failed [14305226453458947074 != 14511566905035657723][0;39;49m
BoolePolynomialTest.cc(959): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_block_dlex": check poly2.leadStableHash() == 14511566905035657723u has failed [14305226453458947074 != 14511566905035657723][0;39;49m
BoolePolynomialTest.cc(1068): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_block_dp_asc": check poly_type(1, ring).leadStableHash() == 16982317933699389295u has failed [6643957975231536490 != 16982317933699389295][0;39;49m
BoolePolynomialTest.cc(1069): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_block_dp_asc": check poly_type(a).leadStableHash() == 14511566905035657723u has failed [14305226453458947074 != 14511566905035657723][0;39;49m
BoolePolynomialTest.cc(1070): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_block_dp_asc": check poly_type(a*b).leadStableHash() == 1160268684422367443 has failed [7488647634487918362 != 1160268684422367443][0;39;49m
BoolePolynomialTest.cc(1071): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_block_dp_asc": check poly_type(c*d +c + e + 1).leadStableHash() == 994909422134781907 has failed [8683732623732266773 != 994909422134781907][0;39;49m
BoolePolynomialTest.cc(1073): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_block_dp_asc": check poly1.leadStableHash() == 16171595639562729641u has failed [16452769785566003032 != 16171595639562729641][0;39;49m
BoolePolynomialTest.cc(1074): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_block_dp_asc": check poly2.leadStableHash() == 994909422134781907 has failed [8683732623732266773 != 994909422134781907][0;39;49m

[1;31;49m*** 37 failures are detected in the test module "UnitTests"
[0;39;49mFAIL unittests (exit status: 201)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.