From git at ginac.de Fri Jan 1 19:15:36 2021 From: git at ginac.de (Richard B. Kreckel) Date: Fri, 1 Jan 2021 19:15:36 +0100 (CET) Subject: [GiNaC-devel] [SCM] GiNaC -- a C++ library for symbolic computations branch, master, updated. release_1-4-0-705-g38129d5d Message-ID: <20210101181536.AACBCD81BC9@cebix.net> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GiNaC -- a C++ library for symbolic computations". The branch, master has been updated via 38129d5d3880156f6f217f94855553bf4549a960 (commit) from c1083aea35fbc2c75baeec1286818f9c73a1f037 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 38129d5d3880156f6f217f94855553bf4549a960 Author: Richard Kreckel Date: Fri Jan 1 19:14:38 2021 +0100 Happy New Year! ----------------------------------------------------------------------- Summary of changes: check/check_cra.cpp | 2 +- check/check_inifcns.cpp | 2 +- check/check_lsolve.cpp | 2 +- check/check_matrices.cpp | 2 +- check/check_numeric.cpp | 2 +- check/error_report.h | 2 +- check/exam_archive.cpp | 2 +- check/exam_chinrem_gcd.cpp | 2 +- check/exam_clifford.cpp | 2 +- check/exam_color.cpp | 2 +- check/exam_differentiation.cpp | 2 +- check/exam_factor.cpp | 2 +- check/exam_heur_gcd.cpp | 2 +- check/exam_indexed.cpp | 2 +- check/exam_inifcns.cpp | 2 +- check/exam_inifcns_elliptic.cpp | 2 +- check/exam_inifcns_nstdsums.cpp | 2 +- check/exam_inifcns_nstdsums.h | 2 +- check/exam_lsolve.cpp | 2 +- check/exam_match.cpp | 2 +- check/exam_matrices.cpp | 2 +- check/exam_misc.cpp | 2 +- check/exam_mod_gcd.cpp | 2 +- check/exam_normalization.cpp | 2 +- check/exam_numeric.cpp | 2 +- check/exam_paranoia.cpp | 2 +- check/exam_parser.cpp | 2 +- check/exam_polygcd.cpp | 2 +- check/exam_powerlaws.cpp | 2 +- check/exam_pseries.cpp | 2 +- check/exam_real_imag.cpp | 2 +- check/exam_sqrfree.cpp | 2 +- check/exam_structure.cpp | 2 +- check/genex.cpp | 2 +- check/randomize_serials.cpp | 2 +- check/test_runner.h | 2 +- check/time_antipode.cpp | 2 +- check/time_dennyfliegner.cpp | 2 +- check/time_fateman_expand.cpp | 2 +- check/time_gammaseries.cpp | 2 +- check/time_lw_A.cpp | 2 +- check/time_lw_B.cpp | 2 +- check/time_lw_C.cpp | 2 +- check/time_lw_D.cpp | 2 +- check/time_lw_E.cpp | 2 +- check/time_lw_F.cpp | 2 +- check/time_lw_G.cpp | 2 +- check/time_lw_H.cpp | 2 +- check/time_lw_IJKL.cpp | 2 +- check/time_lw_M1.cpp | 2 +- check/time_lw_M2.cpp | 2 +- check/time_lw_N.cpp | 2 +- check/time_lw_O.cpp | 2 +- check/time_lw_P.cpp | 2 +- check/time_lw_Pprime.cpp | 2 +- check/time_lw_Q.cpp | 2 +- check/time_lw_Qprime.cpp | 2 +- check/time_parser.cpp | 2 +- check/time_toeplitz.cpp | 2 +- check/time_uvar_gcd.cpp | 2 +- check/time_vandermonde.cpp | 2 +- check/timer.cpp | 2 +- check/timer.h | 2 +- doc/tutorial/ginac.texi | 6 +++--- ginac/add.cpp | 2 +- ginac/add.h | 2 +- ginac/archive.cpp | 2 +- ginac/archive.h | 2 +- ginac/assertion.h | 2 +- ginac/basic.cpp | 2 +- ginac/basic.h | 2 +- ginac/class_info.h | 2 +- ginac/clifford.cpp | 2 +- ginac/clifford.h | 2 +- ginac/color.cpp | 2 +- ginac/color.h | 2 +- ginac/compiler.h | 2 +- ginac/constant.cpp | 2 +- ginac/constant.h | 2 +- ginac/container.h | 2 +- ginac/ex.cpp | 2 +- ginac/ex.h | 2 +- ginac/excompiler.cpp | 2 +- ginac/excompiler.h | 2 +- ginac/expair.cpp | 2 +- ginac/expair.h | 2 +- ginac/expairseq.cpp | 2 +- ginac/expairseq.h | 2 +- ginac/exprseq.cpp | 2 +- ginac/exprseq.h | 2 +- ginac/factor.cpp | 2 +- ginac/factor.h | 2 +- ginac/fail.cpp | 2 +- ginac/fail.h | 2 +- ginac/fderivative.cpp | 2 +- ginac/fderivative.h | 2 +- ginac/flags.h | 2 +- ginac/function.cppy | 2 +- ginac/function.hppy | 2 +- ginac/ginac.h | 2 +- ginac/hash_map.h | 2 +- ginac/idx.cpp | 2 +- ginac/idx.h | 2 +- ginac/indexed.cpp | 2 +- ginac/indexed.h | 2 +- ginac/inifcns.cpp | 2 +- ginac/inifcns.h | 2 +- ginac/inifcns_elliptic.cpp | 2 +- ginac/inifcns_gamma.cpp | 2 +- ginac/inifcns_nstdsums.cpp | 2 +- ginac/inifcns_trans.cpp | 2 +- ginac/integral.cpp | 2 +- ginac/integral.h | 2 +- ginac/integration_kernel.cpp | 2 +- ginac/integration_kernel.h | 2 +- ginac/lst.cpp | 2 +- ginac/lst.h | 2 +- ginac/matrix.cpp | 2 +- ginac/matrix.h | 2 +- ginac/mul.cpp | 2 +- ginac/mul.h | 2 +- ginac/ncmul.cpp | 2 +- ginac/ncmul.h | 2 +- ginac/normal.cpp | 2 +- ginac/normal.h | 2 +- ginac/numeric.cpp | 2 +- ginac/numeric.h | 2 +- ginac/operators.cpp | 2 +- ginac/operators.h | 2 +- ginac/parser/debug.h | 2 +- ginac/parser/default_reader.cpp | 2 +- ginac/parser/lexer.cpp | 2 +- ginac/parser/lexer.h | 2 +- ginac/parser/parse_binop_rhs.cpp | 2 +- ginac/parser/parse_context.cpp | 2 +- ginac/parser/parse_context.h | 2 +- ginac/parser/parser.cpp | 2 +- ginac/parser/parser.h | 2 +- ginac/parser/parser_compat.cpp | 2 +- ginac/polynomial/chinrem_gcd.cpp | 2 +- ginac/polynomial/chinrem_gcd.h | 2 +- ginac/polynomial/collect_vargs.cpp | 2 +- ginac/polynomial/collect_vargs.h | 2 +- ginac/polynomial/cra_garner.cpp | 2 +- ginac/polynomial/cra_garner.h | 2 +- ginac/polynomial/debug.h | 2 +- ginac/polynomial/divide_in_z_p.cpp | 2 +- ginac/polynomial/divide_in_z_p.h | 2 +- ginac/polynomial/euclid_gcd_wrap.h | 2 +- ginac/polynomial/eval_point_finder.h | 2 +- ginac/polynomial/eval_uvar.h | 2 +- ginac/polynomial/gcd_euclid.h | 2 +- ginac/polynomial/gcd_uvar.cpp | 2 +- ginac/polynomial/heur_gcd_uvar.h | 2 +- ginac/polynomial/interpolate_padic_uvar.h | 2 +- ginac/polynomial/mgcd.cpp | 2 +- ginac/polynomial/mod_gcd.cpp | 2 +- ginac/polynomial/mod_gcd.h | 2 +- ginac/polynomial/newton_interpolate.h | 2 +- ginac/polynomial/normalize.cpp | 2 +- ginac/polynomial/normalize.h | 2 +- ginac/polynomial/optimal_vars_finder.cpp | 2 +- ginac/polynomial/optimal_vars_finder.h | 2 +- ginac/polynomial/pgcd.cpp | 2 +- ginac/polynomial/pgcd.h | 2 +- ginac/polynomial/poly_cra.h | 2 +- ginac/polynomial/prem_uvar.h | 2 +- ginac/polynomial/primes_factory.h | 2 +- ginac/polynomial/primpart_content.cpp | 2 +- ginac/polynomial/remainder.cpp | 2 +- ginac/polynomial/remainder.h | 2 +- ginac/polynomial/ring_traits.h | 2 +- ginac/polynomial/smod_helpers.h | 2 +- ginac/polynomial/sr_gcd_uvar.h | 2 +- ginac/polynomial/upoly.h | 2 +- ginac/polynomial/upoly_io.cpp | 2 +- ginac/polynomial/upoly_io.h | 2 +- ginac/power.cpp | 2 +- ginac/power.h | 2 +- ginac/print.cpp | 2 +- ginac/print.h | 2 +- ginac/pseries.cpp | 2 +- ginac/pseries.h | 2 +- ginac/ptr.h | 2 +- ginac/registrar.cpp | 2 +- ginac/registrar.h | 2 +- ginac/relational.cpp | 2 +- ginac/relational.h | 2 +- ginac/remember.cpp | 2 +- ginac/remember.h | 2 +- ginac/structure.h | 2 +- ginac/symbol.cpp | 2 +- ginac/symbol.h | 2 +- ginac/symmetry.cpp | 2 +- ginac/symmetry.h | 2 +- ginac/tensor.cpp | 2 +- ginac/tensor.h | 2 +- ginac/utils.cpp | 2 +- ginac/utils.h | 2 +- ginac/utils_multi_iterator.h | 2 +- ginac/version.h | 2 +- ginac/wildcard.cpp | 2 +- ginac/wildcard.h | 2 +- ginsh/ginsh.1.in | 2 +- ginsh/ginsh.h | 2 +- ginsh/ginsh_extensions.h | 2 +- ginsh/ginsh_lexer.lpp | 2 +- ginsh/ginsh_parser.ypp | 4 ++-- tools/viewgar.1.in | 2 +- tools/viewgar.cpp | 2 +- 210 files changed, 213 insertions(+), 213 deletions(-) hooks/post-receive -- GiNaC -- a C++ library for symbolic computations From git at ginac.de Fri Jan 1 20:34:25 2021 From: git at ginac.de (Richard B. Kreckel) Date: Fri, 1 Jan 2021 20:34:25 +0100 (CET) Subject: [GiNaC-devel] [SCM] GiNaC -- a C++ library for symbolic computations branch, master, updated. release_1-4-0-706-g79f30c33 Message-ID: <20210101193425.4DFFCD81BCD@cebix.net> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GiNaC -- a C++ library for symbolic computations". The branch, master has been updated via 79f30c335f1ddbd3c76dfee5d76128b992b6b19c (commit) from 38129d5d3880156f6f217f94855553bf4549a960 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 79f30c335f1ddbd3c76dfee5d76128b992b6b19c Author: Richard Kreckel Date: Fri Jan 1 20:33:09 2021 +0100 Fix minimum CLN version for pkg-config. ----------------------------------------------------------------------- Summary of changes: ginac.pc.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- GiNaC -- a C++ library for symbolic computations From asheplyakov at yandex.ru Wed Jan 6 14:55:05 2021 From: asheplyakov at yandex.ru (Alexey Sheplyakov) Date: Wed, 6 Jan 2021 17:55:05 +0400 Subject: [GiNaC-devel] A few bugfixes (function::evalf, MinGW) Message-ID: <3f62ae15-78d1-6792-bc72-586e0fb1211f@yandex.ru> Dear Richard, could you please pull from git://github.com/asheplyakov/ginac.git bugfixes-20210106 There are two fixes: 1) MinGW compile fix (avoid multiple definitions of lst::info) 2) function::evalf fix (pass evalf'ed parameters to evalf_func which takes arguments as an exvector) Best regards, Alexey From git at ginac.de Wed Jan 6 16:45:14 2021 From: git at ginac.de (Richard B. Kreckel) Date: Wed, 6 Jan 2021 16:45:14 +0100 (CET) Subject: [GiNaC-devel] [SCM] GiNaC -- a C++ library for symbolic computations branch, master, updated. release_1-4-0-708-ga569b474 Message-ID: <20210106154514.41429D81BD1@cebix.net> This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "GiNaC -- a C++ library for symbolic computations". The branch, master has been updated via a569b4748e266ce318602e7b6a9c1f19a8c75bdf (commit) via c3195f0b5a7ac9fdbfdd04e5f4acf6a836063de0 (commit) from 79f30c335f1ddbd3c76dfee5d76128b992b6b19c (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit a569b4748e266ce318602e7b6a9c1f19a8c75bdf Author: Alexey Sheplyakov Date: Fri Jan 1 20:09:47 2021 +0400 bugfix: function: always pass evalf'ed arguments to evalf_funcp GiNaC passes unevaluted arguments to a function with evalf_funcp taking an exvector. Fixed that, and added a test case commit c3195f0b5a7ac9fdbfdd04e5f4acf6a836063de0 Author: Alexey Sheplyakov Date: Wed Jan 6 11:20:46 2021 +0400 Avoid multiple definitions of `lst::info` (MinGW compile fix) [55/59] Linking CXX shared library bin/libginac.dll FAILED: bin/libginac.dll ginac/libginac.dll.a [skipped long list of object files] /usr/bin/x86_64-w64-mingw32-ld: ginac/CMakeFiles/ginac.dir/lst.cpp.obj: in function `GiNaC::ptr::~ptr()': /home/asheplyakov/work/sw/ginac/_build_w64/../ginac/container.h:150: multiple definition of `GiNaC::container::info(unsigned int) const'; ginac/CMakeFiles/ginac.dir/integration_kernel.cpp.obj:/home/asheplyakov/work/sw/ginac/_build_w64/../ginac/container.h:116: first defined here integration_kernel.cpp makes use of GiNaC::lst without including the `lst.h` header. That's possible since there's a typedef in `registrar.h` (included by virtually all GiNaC sources) and a defintion in `container.h` (included via `add.h` -> `expairseq.h` -> `indexed.h` -> `exprseq.h`), so the compiler can instantiate container. However the explicit specialization of `lst::info` is not available (in integration_kernel.cpp). This violates 17.8.3.6 [templ.expl.spec] which demands If a template, a member template or a member of a class template is explicitly specialized then that specialization shall be declared before the first use of that specialization that would cause an implicit instantiation to take place, in every translation unit in which such a use occurs; no diagnostic is required. If the program does not provide a definition for an explicit specialization and either the specialization is used ina way that would cause an implicit instantiation to take place or the member is a virtual member function, the program is ill-formed, no diagnostic required. On ELF platforms libginac appears to link just fine despite having two instantiations of `lst::info` since the of them (in `integration_kernel.o`) is a weak symbol: $ find ginac -type f -name '*.o' | xargs -n 1 nm --print-file-name --defined | c++filt | grep -e 'list>::info(' ginac/CMakeFiles/ginac.dir/integration_kernel.cpp.o:0000000000000000 W GiNaC::container::info(unsigned int) const ginac/CMakeFiles/ginac.dir/lst.cpp.o:0000000000000000 T GiNaC::container::info(unsigned int) const so the linker discards the wrong instantiation of `lst::info` method. However on MinGW there are no weak symbols (in ELF sense): $ find ginac -type f -name '*.obj' | xargs -n 1 x86_64-w64-mingw32-nm --print-file-name --defined | c++filt | grep -e 'list>::info(' ginac/CMakeFiles/ginac.dir/lst.cpp.obj:0000000000000010 T GiNaC::container::info(unsigned int) const ginac/CMakeFiles/ginac.dir/integration_kernel.cpp.obj:0000000000000000 T GiNaC::container::info(unsigned int) const Hence the above multiple definition error. To avoid the problem #include "lst.h" (so explicit specialization is available). While at it explicitly instantiate lst::info method in lst.cpp A better solution would be to remove declaration of lst from registrar.h, but that's too disruptive since GiNaC uses lst a lot: subs, unarchive, etc. ----------------------------------------------------------------------- Summary of changes: check/CMakeLists.txt | 4 +- check/Makefile.am | 4 ++ check/exam_function_exvector.cpp | 116 +++++++++++++++++++++++++++++++++++++++ ginac/function.cppy | 2 +- ginac/integration_kernel.h | 1 + ginac/lst.cpp | 1 + ginac/lst.h | 1 + 7 files changed, 127 insertions(+), 2 deletions(-) create mode 100644 check/exam_function_exvector.cpp hooks/post-receive -- GiNaC -- a C++ library for symbolic computations