Package: src:octave-symbolic
Version: 3.2.1-2
Severity: serious
Tags: ftbfs

Dear maintainer:

During a rebuild of all packages in unstable, your package failed to build:

--------------------------------------------------------------------------------
[...]
 debian/rules binary
dh binary --buildsystem=octave
   dh_update_autotools_config -O--buildsystem=octave
   dh_autoreconf -O--buildsystem=octave
   dh_octave_version -O--buildsystem=octave
Checking the Octave version... ok
   dh_auto_configure -O--buildsystem=octave
   dh_auto_build -O--buildsystem=octave
   dh_auto_test -O--buildsystem=octave
   create-stamp debian/debhelper-build-stamp
   dh_testroot -O--buildsystem=octave
   dh_prep -O--buildsystem=octave
   dh_auto_install --destdir=debian/octave-symbolic/ -O--buildsystem=octave
        octave --no-gui --no-history --silent --no-init-file --no-window-system 
/usr/share/dh-octave/install-pkg.m 
/<<PKGBUILDDIR>>/debian/octave-symbolic/usr/share/octave/packages 
/<<PKGBUILDDIR>>/debian/octave-symbolic/usr/lib/x86_64-linux-gnu/octave/packages

[... snipped ...]

 assert (isequal (potential(f, x, 0), F))
 assert (isequal (potential(f, x, 2), F - 8))
***** test
 F = x*exp(y) + (z-1)^2;
 f = gradient(F);
 G = potential(f, [x;y;z], [0;1;1]);
 assert (isAlways (G == F))
***** test
 F = x*exp(y);
 f = gradient(F);
 G = potential(f);
 assert (isAlways (G == F))
***** test
 % no potential exists
 syms x y
 a = [x; x*y^2];
 assert (isnan (potential (a)))
***** shared
***** xtest
 % fails b/c of sympy #8458 (piecewise expr that should simplify)
 syms x
 f = cos(x);
 assert (isequal (potential(f, x), sin(x)))
!!!!! known failure
assert (isequal (potential (f, x), sin (x))) failed
6 tests, 5 passed, 1 known failure, 0 skipped
[inst/@sym/laplace.m]
/<<PKGBUILDDIR>>/inst/@sym/laplace.m
***** test
 % basic
 syms t s u w
 assert(logical( laplace(cos(3*t)) == s/(s^2+9) ))
 assert(logical( laplace(t^3) == 6/s^4 ))
***** test
 % matlab SMT compat
 syms t s u w z
 assert(logical( laplace(exp(2*t)) == 1/(s-2) ))
 assert(logical( laplace(exp(2*s)) == 1/(z-2) ))
 assert(logical( laplace(exp(2*u),w) == 1/(w-2) ))
 assert(logical( laplace(exp(2*u),u,w) == 1/(w-2) ))
***** test
 syms x s t z
 % matlab SMT prefers t over x
 assert (isequal (laplace (x*exp (t), z), x/(z - 1)))
 % as usual, you can just specify:
 assert (isequal (laplace(x*exp(t), t, z), x/(z - 1)))  % SMT result
 assert (isequal (laplace(x*exp(t), x, z), exp(t)/z^2))
***** test
 syms x a s
 % if no t, use symvar: take x before a
 assert (isequal (laplace (a*exp (x)), a/(s - 1)))
***** error <more than one> laplace (sym('t')*sym('t', 'real'))
***** test
 % constant, issue #250
 syms s
 f = laplace(2, s);
 assert (isequal (f, 2/s))
***** test
 % Dirac delta and Heaviside tests
 syms t s
 assert (isequal (laplace(dirac(t-3)), exp(-3*s)))
 assert (isequal (laplace((t-3)*heaviside(t-3)), exp(-3*s)/s^2))
***** xtest
 % Differential operator to algebraic
 % SymPy cannot evaluate? (Issue #170)
 syms s f(t)
 assert(logical( laplace(diff(f(t),t),t,s) == s*laplace(f(t),t,s)-f(0) ))
***** test
 % https://github.com/gnu-octave/symbolic/issues/1295
 % fails on SymPy 1.10.* and 1.11.*
 if (pycall_sympy__ ('return Version(spver) >= Version("1.12")'))
   syms t s
   L = simplify (laplace (3*t*sin (4*t)));
   assert (isAlways (L == 24*s / (s^2 + 16)^2))
 end
9 tests, 9 passed, 0 known failure, 0 skipped
[inst/laguerreL.m]
/<<PKGBUILDDIR>>/inst/laguerreL.m
***** error laguerreL (1)
***** error laguerreL (1, 2, 3)
***** assert (isequal (laguerreL (0, rand), 1))
***** test
 x = rand;
 assert (isequal (laguerreL (1, x), 1 - x))
***** test
 x=rand;
 y1=laguerreL(2, x);
 p2=[.5 -2 1];
 y2=polyval(p2,x);
 assert(y1 - y2, 0, 10*eps);
***** test
 x=rand;
 y1=laguerreL(3, x);
 p3=[-1/6 9/6 -18/6 1];
 y2=polyval(p3,x);
 assert(y1 - y2, 0, 20*eps);
***** test
 x=rand;
 y1=laguerreL(4, x);
 p4=[1/24 -16/24 72/24 -96/24 1];
 y2=polyval(p4,x);
 assert(y1 - y2, 0, 30*eps)
***** error <positive integer> laguerreL(1.5, 10)
***** error <same size or scalar> laguerreL([0 1], [1 2 3])
***** error <same size or scalar> laguerreL([0 1], [1; 2])
***** test
 % numerically stable implementation (in n)
 L = laguerreL (10, 10);
 Lex = 1763/63;
 assert (L, Lex, -eps)
 L = laguerreL (20, 10);
 Lex = -177616901779/14849255421;  % e.g., laguerreL(sym(20),10)
 assert (L, Lex, -eps)
***** test
 % vectorized x
 L = laguerreL (2, [5 6 7]);
 Lex = [3.5 7 11.5];
 assert (L, Lex, eps)
***** test
 L = laguerreL (0, [4 5]);
 assert (L, [1 1], eps)
***** test
 % vector n
 L = laguerreL ([0 1 2 3], [4 5 6 9]);
 assert (L, [1 -4 7 -26], eps)
***** test
 % vector n, scalar x
 L = laguerreL ([0 1 2 3], 6);
 assert (L, [1 -5 7 1], eps)
***** assert (isa (laguerreL (0, single (1)), 'single'))
***** assert (isa (laguerreL (1, single ([1 2])), 'single'))
***** assert (isa (laguerreL ([1 2], single ([1 2])), 'single'))
18 tests, 18 passed, 0 known failure, 0 skipped
[inst/dirac.m]
/<<PKGBUILDDIR>>/inst/dirac.m
***** assert (isinf (dirac (0)))
***** assert (dirac (1) == 0)
***** assert (isnan (dirac (nan)))
***** assert (isequaln (dirac ([-1 1 0 eps inf -inf nan]), [0 0 inf 0 0 0 nan]))
***** error <complex values> dirac (1i)
***** assert (isa (dirac (single (0)), 'single'))
6 tests, 6 passed, 0 known failure, 0 skipped
[inst/fibonacci.m]
/<<PKGBUILDDIR>>/inst/fibonacci.m
***** assert (isequal ( fibonacci (sym(0)), 0))
***** assert (isequal ( fibonacci (sym(14)), sym(377)))
***** assert (isequal ( fibonacci (14), 377))
***** test syms x
 assert (isequal (fibonacci (5,x), x^4 + 3*x^2 + 1))
4 tests, 4 passed, 0 known failure, 0 skipped
[inst/lambertw.m]
/<<PKGBUILDDIR>>/inst/lambertw.m
***** assert (isequal (lambertw (0), 0))
***** assert (isequal (lambertw (0, 0), 0))
***** assert (lambertw (-1/exp(1)), -1, 2*eps)
***** assert (lambertw (0, -1/exp(1)), -1, 2*eps)
***** assert (lambertw (-1, -1/exp(1)), -1, 2*eps)
***** test
 x = [1 2 3 pi 10 100 1000 12345];
 W = lambertw (x);
 assert (W.*exp (W), x, -3*eps)
***** test
 x = [1 2 3 pi 10 100 1000 12345];
 k = [-3 -2 -1 0 1 2 3 4];
 W = lambertw (k, x);
 assert (W.*exp (W), x, -10*eps)
***** test
 % input shape preserved
 x = [0 1; 2 3];
 b = x;
 W = lambertw (b, x);
 assert (W.*exp (W), x, -10*eps)
***** test
 % input shape preserved
 x = [0 1; 2 3];
 b = 0;
 W = lambertw (b, x);
 assert (W.*exp (W), x, -10*eps)
***** test
 % input shape preserved
 x = 10;
 b = [0 1; 2 3];
 W = lambertw (b, x);
 assert (W.*exp (W), x*ones (size (b)), -10*eps)
***** assert (isnan (lambertw (nan)))
***** test
 % limiting behaviour as z large
 k = 3;
 A = lambertw (k, 1e100);
 assert (abs (imag (A) - 2*pi*k) < 0.1)
***** test
 % limiting behaviour as z large, up imag axis
 k = 1;
 A = lambertw (k, 1e100*1i);
 assert (abs (imag (A) - (2*k+0.5)*pi) < 0.1)
***** test
 % limiting behaviour as z large, down imag axis
 k = -2;
 A = lambertw (k, -1e100*1i);
 assert (abs (imag (A) - (2*k-0.5)*pi) < 0.1)
***** test
 % limiting behaviour as z large, near branch
 k = 3;
 A = lambertw (k, -1e100);
 B = lambertw (k, -1e100 + 1i);
 C = lambertw (k, -1e100 - 1i);
 assert (abs (imag (A) - (2*k+1)*pi) < 0.1)
 assert (abs (imag (B) - (2*k+1)*pi) < 0.1)
 assert (abs (imag (C) - (2*k-1)*pi) < 0.1)
***** test
 % infinities and nan
 A = lambertw ([inf exp(1) -inf nan]);
 B = [inf  1  inf + pi*1i nan];
 assert (isequaln (A, B))
***** test
 % infinities and nan
 A = lambertw (3, [inf 1 -inf nan]);
 B = [inf + 2*3*pi*1i  lambertw(3,1)  inf + (2*3+1)*pi*1i  nan];
 assert (isequaln (A, B))
***** test
 % infinities and nan
 A = lambertw ([0 1 2 0], [inf -inf nan exp(1)]);
 B = [inf  inf+3*pi*1i  nan  1];
 assert (isequaln (A, B))
***** test
 % scalar infinity z, vector b
 A = lambertw ([1 2 -3], inf);
 B = [lambertw(1, inf)  lambertw(2, inf)  lambertw(-3, inf)];
 assert (isequal (A, B))
***** test
 % scalar -infinity z, vector b
 A = lambertw ([1 2 -3], -inf);
 B = [lambertw(1, -inf)  lambertw(2, -inf)  lambertw(-3, -inf)];
 assert (isequal (A, B))
***** test
 % scalar z nan, vector b
 A = lambertw ([1 2 -3], nan);
 B = [nan nan nan];
 assert (isequaln (A, B))
21 tests, 21 passed, 0 known failure, 0 skipped
[inst/finiteset.m]
/<<PKGBUILDDIR>>/inst/finiteset.m
***** test
 s1 = finiteset(sym(1), 2, 2);
 s2 = finiteset(sym(1), 2, 2, 2);
 assert (isequal (s1, s2))
***** test
 s1 = finiteset(sym(0), 1);
 s2 = finiteset(sym(0), 2, 3);
 s = finiteset(sym(0), 1, 2, 3);
 assert (isequal (s1 + s2, s))
***** test
 e = finiteset();
 s = finiteset(sym(1));
 s2 = e + s;
 assert (isequal (s, s2))
3 tests, 3 passed, 0 known failure, 0 skipped
[inst/findsymbols.m]
/<<PKGBUILDDIR>>/inst/findsymbols.m
***** test
 syms x b y n a arlo
 z = a*x + b*pi*sin (n) + exp (y) + exp (sym (1)) + arlo;
 s = findsymbols (z);
 assert (isequal ([s{:}], [a,arlo,b,n,x,y]))
***** test
 syms x
 s = findsymbols (x);
 assert (isequal (s{1}, x))
***** test
 syms z x y a
 s = findsymbols ([x y; 1 a]);
 assert (isequal ([s{:}], [a x y]))
***** assert (isempty (findsymbols (sym (1))))
***** assert (isempty (findsymbols (sym ([1 2]))))
***** assert (isempty (findsymbols (sym (nan))))
***** assert (isempty (findsymbols (sym (inf))))
***** assert (isempty (findsymbols (exp (sym (2)))))
***** test
 % empty sym for findsymbols, findsym, and symvar
 assert (isempty (findsymbols (sym([]))))
 assert (isempty (findsym (sym([]))))
 assert (isempty (symvar (sym([]))))
***** test
 % diff. assumptions make diff. symbols
 x1 = sym('x');
 x2 = sym('x', 'positive');
 f = x1*x2;
 assert (length (findsymbols (f)) == 2)
***** test
 % symfun or sym
 syms x f(y)
 a = f*x;
 b = f(y)*x;
 assert (isequal (findsymbols(a), {x y}))
 assert (isequal (findsymbols(b), {x y}))
***** test
 % findsymbols on symfun does not find the argnames (unless they
 % are on the RHS of course, this matches SMT 2014a).
 syms a x y
 f(x, y) = a;  % const symfun
 assert (isequal (findsymbols(f), {a}))
 syms a x y
 f(x, y) = a*y;
 assert (isequal (findsymbols(f), {a y}))
***** test
 % sorts lexicographically, same as symvar *with single input*
 % (note symvar does something different with 2 inputs).
 syms A B a b x y X Y
 f = A*a*B*b*y*X*Y*x;
 assert (isequal (findsymbols(f), {A B X Y a b x y}))
 assert (isequal (symvar(f), [A B X Y a b x y]))
***** test
 % symbols in matpow
 syms x y
 syms n
 A = [sin(x) 2; y 1];
 B = A^n;
 L = findsymbols(B);
 assert (isequal (L, {n x y}))
***** test
 % array of eq
 syms x y
 assert (isequal (findsymbols (2 == [2 x y]), {x y}))
***** test
 % array of ineq
 syms x y
 A = [x < 1  2*x < y  x >= 2  3 <= x  x != y];
 assert (isequal (findsymbols (A), {x y}))
16 tests, 16 passed, 0 known failure, 0 skipped
[inst/assume.m]
/<<PKGBUILDDIR>>/inst/assume.m
***** error <if you want output>
 a = assume('a', 'real')
***** error <cannot have only assumptions>
 assume positive integer
***** error <no assumptions>
 assume x y
***** error <should be the final>
 assume x clear real
***** error <algebraic assumptions are not supported>
 assume a>0
***** error <only symbols>
 assume 'x/pi' integer
***** test
 syms x
 assume x positive
 a = assumptions(x);
 assert(strcmp(a, 'x: positive'))
 assume x even
 a = assumptions(x);
 assert(strcmp(a, 'x: even'))
***** test
 % multiple assumptions
 syms x
 assume x positive integer
 [tilde, a] = assumptions(x, 'dict');
 assert(a{1}.integer)
 assert(a{1}.positive)
***** test
 % does workspace
 syms x positive
 x2 = x;
 f = sin(x);
 assume x negative
 a = assumptions(x);
 assert(strcmp(a, 'x: negative'))
 a = assumptions(x2);
 assert(strcmp(a, 'x: negative'))
 a = assumptions(f);
 assert(strcmp(a, 'x: negative'))
***** error <undefined>
 % does not create new variable x
 clear x
 assume x real
***** error <undefined>
 % no explicit variable named x
 clear x
 f = 2*sym('x');
 assume x real
***** test
 % clear does workspace
 syms x positive
 f = 2*x;
 assume x clear
 assert (isempty (assumptions (f)));
 assert (isempty (assumptions ()));
***** test
 syms x y
 f = sin (2*x);
 assume x y real
 assert (strcmp (assumptions (x), 'x: real'))
 assert (strcmp (assumptions (y), 'y: real'))
 assert (strcmp (assumptions (f), 'x: real'))
***** test
 syms x y
 f = sin (2*x);
 assume x y positive even
 assert (strcmp (assumptions (x), 'x: positive, even') || strcmp (assumptions 
(x), 'x: even, positive'))
 assert (strcmp (assumptions (y), 'y: positive, even') || strcmp (assumptions 
(y), 'y: even, positive'))
 assert (strcmp (assumptions (f), 'x: positive, even') || strcmp (assumptions 
(f), 'x: even, positive'))
***** test
 % works from variable names not symbols
 syms x y
 a = [x y];
 assume a real
 assert (strcmp (assumptions (x), 'x: real'))
 assert (strcmp (assumptions (y), 'y: real'))
***** test
 % works from variable names not symbols
 y = sym('x');
 f = 2*y;
 assume y real
 assert (strcmp (assumptions (f), 'x: real'))
***** test
 % matrix of symbols
 syms a b c d
 A = [a b; c d];
 assume A real
 assert (strcmp (assumptions (a), 'a: real'))
 assert (strcmp (assumptions (b), 'b: real'))
 assert (strcmp (assumptions (c), 'c: real'))
 assert (strcmp (assumptions (d), 'd: real'))
***** test
 % assume after symfun
 clear x
 syms f(x)
 assume x real
 assert (~ isempty (assumptions (formula (f))))
 assert (~ isempty (assumptions (argnames (f))))
18 tests, 18 passed, 0 known failure, 0 skipped
[inst/digits.m]
/<<PKGBUILDDIR>>/inst/digits.m
***** test
 orig = digits(32);  % to reset later
 m = digits(64);
 p = vpa(sym(pi));
 assert (abs (double (sin(p))) < 1e-64)
 n = digits(m);
 assert (n == 64)
 p = vpa(sym(pi));
 assert (abs (double (sin(p))) < 1e-32)
 assert (abs (double (sin(p))) > 1e-40)
 digits(orig)
1 test, 1 passed, 0 known failure, 0 skipped
[inst/poly2sym.m]
/<<PKGBUILDDIR>>/inst/poly2sym.m
***** shared x,y,a,b,c,p
 syms x y a b c
 p = x^3 + 2*x^2 + 3*x + 4;
***** assert(isAlways(  poly2sym([1 2 3 4]) == p  ))
***** assert(isAlways(  poly2sym([1 2 3 4],x) == p  ))
***** assert(isAlways(  poly2sym([1 2 3 4],y) == subs(p,x,y) ))
***** assert(isAlways(  poly2sym([1 2 3 4],5) == subs(p,x,5) ))
***** assert(isequal(  poly2sym ([1]),  1  ))
***** assert(isequal(  poly2sym ([]),  0  ))
***** assert(isAlways(  poly2sym(sym([1 2 3 4]),x) == p  ))
***** assert(isAlways(  poly2sym([a b c],x) == a*x^2 + b*x + c  ))
***** assert(isAlways(  poly2sym([a b c]) == a*x^2 + b*x + c  ))
***** assert(isequal(  poly2sym(sym([])),  0  ))
***** assert(isAlways(  poly2sym({sym(1) sym(2)}, x) == x + 2  ))
***** assert(isequal(  poly2sym ({1}),  1  ))
***** assert(isequal(  poly2sym ({}),  0  ))
***** assert(isequal(  poly2sym ({1}, x),  1  ))
***** assert(isequal(  poly2sym ({}, x),  0  ))
***** assert(isAlways(  poly2sym([x x], x) == x^2 + x  ))
***** test
 % mixed cell array with doubles and syms
 assert (isequal (poly2sym ({2.0 sym(3) int64(4)}), 2*x^2 + 3*x + 4))
***** test
 % string for x
 p = poly2sym ([1 2], 's');
 syms s
 assert (isequal (p, s + 2))
18 tests, 18 passed, 0 known failure, 0 skipped
Checking C++ files ...

Done running the unit tests.
Summary: 2426 tests, 2394 passed, 31 known failures, 0 skipped
Some tests failed.  Giving up...
make: *** [debian/rules:5: binary] Error 1
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------

The above is just how the build ends and not necessarily the most relevant part.
If required, the full build log is available here:

https://people.debian.org/~sanvila/build-logs/202410/

About the archive rebuild: The build was made on virtual machines from AWS,
using sbuild and a reduced chroot with only build-essential packages.

If you could not reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.

If this is really a bug in one of the build-depends, please use
reassign and affects, so that this is still visible in the BTS web
page for this package.

Thanks.

Reply via email to