Dear Developers of GiNaC,
[0] Thank you very much for developing continuously GiNaC,
which is a very nice C++ library to write programs for symbolic computation.
I recently built ginac-1.8.10 from source code on my MacBook Pro.
The compilation stage was successful but the check stage failed.
To pass the check stage, I needed several modifications of the source file
ginac-1.8.10/check/exam_Gt.cpp. I will explain these modifications below.
My environment is the following:
OS: macOS Tahoe 26.3
C++ compiler:
g++ --version
-->
Apple clang version 17.0.0 (clang-1700.6.3.2)
Target: arm64-apple-darwin25.3.0
Thread model: posix
InstalledDir:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
[1] The build from the original source code of ginac-1.8.10 produced
the following result:
mkdir /tmp/AAA
/tmp/AAA
bzcat /usr/local/src/SymbolicComputation/GiNaC/ginac-1.8.10.tar.bz2 | tar
xvf -
cd ginac-1.8.10
./configure
make
make check
-->
...
...
/bin/sh ../libtool --tag=CXX --mode=link g++ -g -O2 -o
exam_inifcns_elliptic exam_inifcns_elliptic.o ../ginac/libginac.la
-L/usr/local/lib -lcln
libtool: link: g++ -g -O2 -o .libs/exam_inifcns_elliptic
exam_inifcns_elliptic.o -Wl,-bind_at_load ../ginac/.libs/libginac.dylib
-ldl -L/usr/local/lib /usr/local/lib/libcln.dylib
/usr/local/lib/libgmp.dylib
ld: warning: -bind_at_load is deprecated on macOS
depbase=`echo exam_Gt.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
g++ -DHAVE_CONFIG_H -I. -I../config -I./../ginac -I../ginac -DIN_GINAC
-I/usr/local/include -g -O2 -MT exam_Gt.o -MD -MP -MF $depbase.Tpo -c -o
exam_Gt.o exam_Gt.cpp &&\
mv -f $depbase.Tpo $depbase.Po
exam_Gt.cpp:1891:17: error: call to 'pow' is ambiguous
1891 | const ex eps = pow(10,-30);
| ^~~
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/__math/exponential_functions.h:161:65:
note: candidate function [with _A1 = int, _A2 = int, $2 = 0]
161 | inline _LIBCPP_HIDE_FROM_ABI typename __promote<_A1, _A2>::type
pow(_A1 __x, _A2 __y) _NOEXCEPT {
| ^
./../ginac/power.h:120:11: note: candidate function [with T1 = int, T2 =
int]
120 | inline ex pow(const T1 & b, const T2 & e)
| ^
1 error generated.
[2] The above error indicates that pow() in GiNaC and pow() in MacOS
conflict
as having the same name. Accordingly, I modified exam_Gt.cpp as follows:
cd /tmp/AAA/ginac-1.8.10/check
mv exam_Gt.cpp exam_Gt.cpp.org
cat exam_Gt.cpp.org | sed -e 's/pow(10,-30)/GiNaC::pow(10,-30)/' >
exam_Gt.cpp
diff -u exam_Gt.cpp.org exam_Gt.cpp
-->
------------------------------------------------------------------------------
--- exam_Gt.cpp.org 2026-02-10 01:49:00
+++ exam_Gt.cpp 2026-02-17 07:54:20
@@ -1888,7 +1888,7 @@
};
Digits = 40;
- const ex eps = pow(10,-30);
+ const ex eps = GiNaC::pow(10,-30);
auto evaluate = [&](const ex& points) {
for (int deform = -1; deform <= +1; deform += 1) {
------------------------------------------------------------------------------
[3] Then the check stage proceeded as follows
make check
-->
...
...
PASS: exam_paranoia
PASS: exam_heur_gcd
PASS: exam_match
PASS: exam_parser
PASS: exam_numeric
PASS: exam_relational
PASS: exam_powerlaws
PASS: exam_collect
PASS: exam_inifcns
PASS: exam_inifcns_nstdsums
PASS: exam_inifcns_elliptic
../config/test-driver: line 112: 73792 Abort trap: 6 "$@" >>
"$log_file" 2>&1
FAIL: exam_Gt
PASS: exam_differentiation
PASS: exam_polygcd
PASS: exam_collect_common_factors
PASS: exam_normalization
PASS: exam_sqrfree
PASS: exam_factor
PASS: exam_pseries
PASS: exam_matrices
PASS: exam_lsolve
PASS: exam_indexed
PASS: exam_color
PASS: exam_clifford
PASS: exam_archive
PASS: exam_structure
PASS: exam_misc
PASS: exam_pgcd
PASS: exam_mod_gcd
PASS: exam_chinrem_gcd
PASS: exam_function_exvector
PASS: exam_real_imag
PASS: check_numeric
PASS: check_inifcns
PASS: check_matrices
PASS: check_lsolve
PASS: check_cra
PASS: time_dennyfliegner
PASS: time_gammaseries
PASS: time_vandermonde
PASS: time_toeplitz
PASS: time_lw_A
PASS: time_lw_B
PASS: time_lw_C
PASS: time_lw_D
PASS: time_lw_E
PASS: time_lw_F
PASS: time_lw_G
PASS: time_lw_H
PASS: time_lw_IJKL
PASS: time_lw_M1
PASS: time_lw_M2
PASS: time_lw_N
PASS: time_lw_O
PASS: time_lw_P
PASS: time_lw_Pprime
PASS: time_lw_Q
PASS: time_lw_Qprime
PASS: time_antipode
PASS: time_fateman_expand
PASS: time_uvar_gcd
PASS: time_Gt
PASS: time_parser
============================================================================
Testsuite summary for GiNaC 1.8.10
============================================================================
# TOTAL: 63
# PASS: 62
# SKIP: 0
# XFAIL: 0
# FAIL: 1
# XPASS: 0
# ERROR: 0
============================================================================
See check/test-suite.log for debugging.
Some test(s) failed. Please report this to ginac-list(a)ginac.de,
together with the test-suite.log file (gzipped) and your system
information. Thanks.
============================================================================
[3] I have investigated the above failure of exam_Gt and found that
in exam_Gt.cpp the code fragment lst{lst{A,B}} is expected to produce
{ { A, B } } but actually produces { A, B } when g++ on my MacOS is used.
Namely, the outside constructor lst in lst{lst{A,B}} is interpreted as
the copy constructor.
Accordingly, I modify lst{lst{A,B}} to lst().append(lst{A,B}) as follows:
cat exam_Gt.cpp.org | sed -e 's/lst{\(lst{[^}]*}\)}/lst().append(\1)/' -e
's/pow(10,-30)/GiNaC::pow(10,-30)/' > exam_Gt.cpp
[4] Now, the check stage becomes successful as follows:
make check
-->
...
...
e_lw_M2
PASS: time_lw_N
PASS: time_lw_O
PASS: time_lw_P
PASS: time_lw_Pprime
PASS: time_lw_Q
PASS: time_lw_Qprime
PASS: time_antipode
PASS: time_fateman_expand
PASS: time_uvar_gcd
PASS: time_Gt
PASS: time_parser
============================================================================
Testsuite summary for GiNaC 1.8.10
============================================================================
# TOTAL: 63
# PASS: 63
# SKIP: 0
# XFAIL: 0
# FAIL: 0
# XPASS: 0
# ERROR: 0
============================================================================
Now, everything is fine.
I do not know what is the most appropriate way to fix the code fragment
lst{lst{A,B}} to produce { { A, B } } and please take the above modification
as just a reference.
Again, thank you very much for developing and maintaining GiNaC
to help us write programs for symbolic commutation.
Sincerely yours,
Satoshi Adachi
Hi!
TL;DR: If you have cloned the GiNaC git repository, please do:
$ git remote set-url origin https://codeberg.org/ginac/ginac.git
So it's been decided to modernize the environment a bit...
Several people have expressed interest in doing things with GiNaC and
kindly suggested that it would be easier to have a fashionable
forge-based workflow where they can clone the repository, make changes,
send pull requests, etc.
Another consideration was the ongoing surge of distributed AI scrapers
aggressively crawling our Gitweb instance in millisecond intervals,
blatantly ignoring robots.txt, and repeatedly overwhelming the poor
server with web traffic.
After having looked at several forge platforms, we (i.e. Bruno Haible
and myself) have decided to move the primary repo of both GiNaC and CLN
to Codeberg.org: <https://codeberg.org/ginac/ginac>
Codeberg e.V. is a Berlin-based non-profit organization dedicated to
build and maintain supporting infrastructure for the creation,
collection, dissemination, and archiving of Free and Open Source
Software. Their Forgejo software is a free git-based hosting platform
with most of the bells and whistles known from GitHub, GitLab, etc.
Modern hip hackers will feel right at home there! ;-)
I've set us up as an Organization <https://codeberg.org/ginac/> hosting
both the CLN and GiNaC repos. It should be pretty transparent. If you
need something special, don't hesitate to contact me!
Along the way, this acquits us from having to come up with lame excuses
to the pesky question where our issue tracker is. It is now here:
<https://codeberg.org/ginac/ginac/issues>
For now, the web site <https://www.ginac.de/> and the mailing lists will
remain as they are.
Happy hacking!
-richy.
--
Richard B. Kreckel
<https://in.terlu.de/~kreckel/>
Hi,
GiNaC 1.8.10 has been released.
It includes a new class Gt for evaluating elliptic multiple
polylogarithms with arbitrary arguments. (This is work by Claude Duhr,
Florian Lorkowski, Robin Marzucca, Sofia Mauch, and Stefan Weinzierl.)
The minimum C++ language standard level has been raised to C++14.
This version is ABI-compatible to the previous version 1.8.9.
Happy hacking!
-richy.
--
Richard B. Kreckel
<https://in.terlu.de/~kreckel/>