I've encountered a problem with some code that has been working for over 10 years when I tried upgrading to a newer version of FORM. I've boiled down the issue to the following minimal example:
S N,j1;
CF cfun1,cfun2;
V p;
L test = cfun1(cfun2(-p,-3 - j1 + N)*cfun2(p,j1)) * cfun2(p,j1);
multiply replace_(N,3);
Print;
.end
Running with the latest version from github (087a772) compiled with gcc 7.3.0-27ubuntu1~18.04 on amd64 yields
FORM 4.2.1 (Feb 6 2019, v4.2.1-2-g087a772) 64-bits Run: Mon Feb 11 08:02:59 2019
S N,j1;
CF cfun1,cfun2;
V p;
L test = cfun1(cfun2(-p,-3 - j1 + N)*cfun2(p,j1)) * cfun2(p,j1);
multiply replace_(N,3);
Print;
.end
!!!This $ variation has not been implemented yet!!!
!!!This $ variation has not been implemented yet!!!
Called from TestSub
Program terminating at rep3.frm Line 9 -->
0.00 sec out of 0.00 sec
I've used git bisect to find the first commit where this program fails and I found that something happens at commit 29e608e. Beginning with it I simply get the message Program terminating at rep3.frm Line 9 --> but no further messages.
The exact message ("This $ variation ...") first appears with commit 2e409bc.
Interestingly, a small modification of the above program, i.e., replacing the expression by
L test = cfun1(j1,0, - 3 + N,cfun2(-p, - 3 - j1 + N)*cfun2(p,j1));
Yields the result (note the non-sensical rational prefactor):
18446744078004518933/2803905099190966943747*cfun1(j1,0,0,cfun2(-p, - j1)*cfun2(p,j1));
Other modifications lead to programs that seem to run forever (longer than I cared to wait).
Valgrind's memcheck outputs several messages along the lines of
Conditional jump or move depends on uninitialised value(s), but I haven't compiled form with debug symbols yet so I cannot give exact line numbers.
I've encountered a problem with some code that has been working for over 10 years when I tried upgrading to a newer version of FORM. I've boiled down the issue to the following minimal example:
Running with the latest version from github (087a772) compiled with gcc 7.3.0-27ubuntu1~18.04 on amd64 yields
I've used git bisect to find the first commit where this program fails and I found that something happens at commit 29e608e. Beginning with it I simply get the message
Program terminating at rep3.frm Line 9 -->but no further messages.The exact message ("This $ variation ...") first appears with commit 2e409bc.
Interestingly, a small modification of the above program, i.e., replacing the expression by
Yields the result (note the non-sensical rational prefactor):
Other modifications lead to programs that seem to run forever (longer than I cared to wait).
Valgrind's memcheck outputs several messages along the lines of
Conditional jump or move depends on uninitialised value(s), but I haven't compiled form with debug symbols yet so I cannot give exact line numbers.