closing CSL reduce window with button result in segfault
On the recuce homepage, www.reduce-algebra.com, there is a symbolic mode primer, and share is in the section "Communication between algebraic and symbolic modes". I think the problem with your solution to reverse a string here is that with explode you convert it to a list of characters, and try to return that to algebraic mode. If you compress it back, it works: symbolic procedure rev(a); begin; return compress(reverse(explode(a))); end; symbolic operator rev; rev("hello");
On the recuce homepage, www.reduce-algebra.com, there is a symbolic mode primer, and share is in the section "Communication between algebraic and symbolic modes". I think the problem with your solution to reverse a string here is that with explode you convert it to a list of characters, and try to return that to algebraic mode. If you compress it back, it works: symbolic procedure rev(a); begin; return compress(reverse(explode(a))); end; symbolic operator rev; rec("hello");
On the recuce homepage, www.reduce-algebra.com, there is a symbolic mode primer, and share is in the section "Communication between algebraic and symbolic modes". I think the problem with your solution to reverse a string here is that with explode you convert it to a list of characters, and try to return that to algebraic mode. If you compress it back, it works: symbolic procedure rev(a); begin; return concat(reverse(explode(a))); end; symbolic operator rev; rec("hello");
You're absolutely right, sorry. I have a second try here: symbolic procedure joinstr(a, b); begin; return concat(a, b); end; symbolic operator joinstr; s:=joinstr("Hello", " world!"); s; You could also just use concat in symbolic mode: a:="Hello"; b:=" world!"; share a, b; symbolic; c:=concat(a, b); share c; algebraic; c;
You're absolutely right, sorry. I have a second try here: symbolic procedure joinstr(a, b); begin; return concat(a, b); end; symbolic operator joinstr; s:=joinstr("Hello", " world!"); s;
Joining strings: procedure joinstring(a, b); begin; write a, b; end; joinstring("Hello", " world!");
This might be the same as bug #82 . There a solution was given: add the option -w+.
This might be the same as bug #82 . There a solution was given: add the option -w+.
I can confirm that I get the error message using Reduce CSL rev 6339 on Ubuntu, installed from the .deb package downloaded from Sourceforge. Only with the GUI version, in the command line it works. The error message is printed not when entering the expression, but when entering g; on a new command line. If I "build up" g, i.e., I enter the first line of the expression into g, then add the remaining lines to it, as g := g + (next line stuff); then there is no error.
I can confirm that I get the error message using Reduce CSL rev 6339 on Ubuntu, installed from the .deb package downloaded from Sourceforge. Only with the GUI version, in the command line it works. The error message is printed not when entering the expression, but when entering g; on a new command line.
I have checked, and the bug is still present in 5.43.2.
Thank you, Rainer, for the clarification. I would also like to ask a question concerning the error messages: it shows that reduce always sets aqua or x11 as terminal type. I tried gnuplot(set, term, wxt); on linux, and it had no effect. Am I doing something wrong, or is it only possible to use x11?
I can confirm the same result on Linux (Ubuntu 20.04 LTS), with Reduce CSL rev. 5758. Same result after each command, except the exit, no plot window.
Thank you for your explanation. I think I understood that the problem was trying to differentiate w.r.t. a non-kernel, I just did not realise there's this ingenious way to put the right thing in the rule. I was looking for some way to "evaluate" the derivative, and put that formula in the rule, and did not find one.
Invalid simplification error message
Sorry. I did not know that the behaviour was not intentional. I did know about the license of libreadline, the fact that redfront has line editing, and just assumed that reduce does not.
I am using the deb package downloaded from sourceforge on ubuntu, previously on 18.04, now on 20.04, and also see control characters instead of cursor movement. If I remember correctly, it was the same on 18.04. Just for information, running ldd on /usr/share/reduce/cslbuild/csl/reduce does not list libedit as a shared library loaded by reduce.
I was wondering what is the reason that most of the contributed packages are documented in the manual (pdf and html), but not all (e.g., gentran isn't), while a tex documentation is available.
I agree with your calculation. For x <0, Ei(x) = gamma + log(-x)+x+x^2/4 + ... should be the beginning of the series.
I needed to evaluate an exponential integral . I am wondering if it documented somewhere what definition is used for it, when x<0, x real. As far as I know, Abramowitz and Stegun do not define it for these values (they define it for x>0, and use analytic continuation, with a cut along -inf...0), and the NIST Handbook defines it only for real arguments, and there Ei(-x)=-E1(x), which is real.
I am pretty sure this is a bug, you can open a ticket for it.
Yes, I am using version 5364, on 64 bit ubuntu. CSL version works fine, both with and without GUI, PSL version produces the above error. After Arthur Norman wrote that it works for him, I tried uninstalling and reinstalling Reduce, and I still get the same error message, for any input I have tried so far.
I have installed the package downloaded from sourceforge, on Ubuntu 18.04, 64 bit.
Reduce (Free PSL version, revision 5364), 14-Jun-2020 ... 1: operator f; 2: f(x):=sin(x); ***** Undefined function `mkhash' called from compiled code 3: df(f(x),x,137); ***** Undefined function `mkhash' called from compiled code
Thank you for your reply, Arthur. I've been thinking about it, and i think the problem is more general, not just with reduce. For single variable functions, it is more or less clear, there I would definitely use "d" for the total derivative, and \partial for a partial one, i.e., e.g. d/dx f(g(x),x) = \partial f(g(x),x) / \partial g g'(x) + \partial f(g(x),x) / \partial x, but if x is a vector, it becomes messy (see the usual notation for Euler-Lagrange equations in field theory), there a clear mathematical...
Thank You, Rainer, for your reply. I haven't looked at the DFPART package, but I should have, that's what I was looking for. I just found the notation of Reduce (X11 CSL version) a bit confusing, denoting the "total" derivative of f(x,g(x)) by a partial derivative sign. Thanks again.
I am wondering about the properties of the expanddf switch. Why is it, that if i type depend {g1,g2}, x; on expanddf; df(f(g1,g2),x); I get the expexted result. I find the behaviour somewhat weird, that depend g,x; on expanddf; df(f(g,x),x); is not expanded (and this is clearly stated in the manual). Is there a simple way to expand such forms? Also, if I type on expanddf; df(f(g1(x),g2(x)),x); it is also not expanded. Is there a simple way to expand these? Also, things like df(f(g1(x),x),x); Thanks...
It seem to me, that the license does not prohibit distributing the changes as a patch file, which one needs to apply fist, and then compile GRG. This method has been used some time ago with other projects (e.g., pine). The authors did not allow changed versions to be distributed, to protect their reputation. However, if one applies a patch oneself, that does not endanger the authors' reputation, the user always knows that they are running a patched version.
CSL Display command line help
reduce hangs on exit
Command line -o
Is there a way to use powers instead of surds? 2*sqrt(2) -> 2^(3/2) ?
When typing an expression with multiplication between numbers, Mathematica uses a grey multiplication sign (cross, like x).
There is a package called exptsimp in the reduce source tree, that can simplify this. For some reason, it is not part of the default installation. Exptsimp reduces 4/sqrt(2) to 2 sqrt(2).
It displays revision 5122 at startup, and I downloaded the file called snapshot_5129 (which is a bit weird).
Matrix display
I'm sorry, I have not checked it carefully enough, when I copied reduce output here. Multiplication and exponentiation were turned into formatting. I'll just attach a file.
catastrophic error
More precisely, it works correctly with rfcsl, and not with redcsl, run as redcsl -w- or redcsl -w+.
What is surprising is that the setting of the terminal line length affects the line length of a file written using gentran. I set gentranout. I do not know if linelength and clinelen!*:=150; also interacts in the console mode reduce.
Yes, i did so. However, now I tried text mode reduce, and it also worked. Not so in the X GUI of CSL Reduce.
gentran clinenen!* ignored
Thank you.
trying to load_pacgae(gentran) if it is already loaded fails
I think the "where" construct may be applicable, var2 := ( var1 where {rules} );
With the latest release (4956), the execution of phaseint 20; is reasonably fast. However, scrolling the result up and down (in the csl graphical version) resulted in a crash.
If I am not mistaken, the difference is the sign of the b^2 term in the first log(). If I change that, and evaluate the derivative minus the original function at some random points numerically, I get indeed zero. Also, it evaluates to zero now, if I use factor, then exponentialize, and then radcan.
If I am not mistaken, the difference is the sign of the b^2 term in the first log(). If I change that, and evaluate the derivative minus the original function at some random points numerically, I get indeed zero. However, I haven't managed to simplify it to zero (tried simplify, trigexpand, and radcan).
The bug is present in the Linux version 4859 too. When I edited the file per the bug report, reduce output was not shown. I also tried to update the fox toolkit used by reduce to the current stable, and it did not help.
The bug is present in the Linux version 4859 too.
diff of result of integral not the original function
I was wondering if there is any documentation (or possibility) to build the older (historic) versions of reduce. There are quite a number of packages published (e.g., in Computer Physics Communications) that do not work with the current Reduce versions (e.g., RicciR, Supercalc). With supercalc, for example, where Reduce gave an error message when trying to compile it, that I fixed easily just out of curiosity, but it still does not give correct results.
abs(x)^k not simplified for real x and even k
I think that a possible solution in such cases would be to upload a separate patch file, and instructions to use it. That way the licence is not violated (no changed file is distributed), rather, the changes are distributed separately, and the user can make them temselves (by running patch). I think this has been used in other cases where redistribution of some software was only allowed in an unchanged form (if i recall correctly, there used to be a large set of patches for the email program pine)....
Thanks, indeed that was the case. I did not want to change the system-wide reduce installation, just add a package to my current working directory. I should have read the csl manual.
Thank you, and I understand that. However, I tried compiling other packages (e.g., atensor.red) by: faslout "atensor1"; in "atensor.red"; faslend; and received the same error message (although only once).
I tried to compile the GRG package for Reduce CSL. However, at the end, I get the following error message: Failed to open "<no output="" file="" specified="">" repeated many times and no output files are generated. It seems to work with PSL. Am I doing something wrong? I just typed in "compile.grg";</no>
I am using CSL reduce. It would be quite convenient especially in the GUI version to use resetreduce, to make reduce forget calculations, but not the command line (e.g., load an edited version of the same file). PSL reduce at the moment does not have command line editing, so my use case is mostly pointless with that. Also, I tried resetreduce with PSL reduce. In that case, it did not clear variables I set (in a file loaded with the "in" command). So it seems, resetreduce removes too much in CSL,...
resetreduce clears too much
A short update: with "off nat;" it is just slightly slower than in text mode (2230 ms + 340 ms GC).
A shot update: with "off nat;" it is just slightly slower than in text mode (2230 ms + 340 ms GC).
redcls unresponsive in graphical mode for large output
Thank you. Your code works.
Dear All, I cannot find in the help how to access the values of switches. What I actually wanted to do, is to save the value of a switch at the start of an included file (e.g., echo), set it to something (off), do what that file does, and then set it back to its original value. All the stuff I wrote is in normal algebraic mode. Can someone point me in the right direction? Thank you.
Oh, sorry, I did not mean a detailed changelog, including all changes to the Reduce source, just something like that is at the end of some software manuals, e.g, in version x.y, we changed the behaviour of function z() to return... i.e., important changes an average user has to be warned about.
Thank you, now it is clear. I just had no idea what a "car" is. I learned about reduce from my diploma supervisor, and his convention was using two letter abbreviations for symbols, e.g., delta was de, and that's where I ran into this. Interestingly, the file used to work with older versions (3.5). Also it seems to me that the ordering of terms in factorize() changed. Is is possible to see the changes between reduce versions somewhere? I do not know if it was possible to come up with a warning message...
Thank you, now it is clear. I just had no idea what a "car" is. I learned about reduce from my diploma supervisor, and his convention was using two letter abbreviations for symbols, e.g., delta was de, and that's where I ran into this. Interestingly, the file used to work with older versions (3.5). Also it seems to me that the ordering of terms in factorize() changed. Is is possible to see the changes between reduce versions somewhere? I do not know if it was possible to come up with a warning message...
Dear All, Is there a way in reduce to query if a name is already defined, e.g., as an operator? Why I am asking is that I tried to run an old reduce file written by a late colleague, and it did not run. I localised the error to be a definition of an operator de, e.g., operator de; for all f let de(f)=df(f,r); and I get the rather cryptic error message +++ Error attempt to take car of an atom: nil Changing the name de to, e.g., den everywhere solves the problem. I am using the jan 20 snapshot on Linux....
Dear All, Is there a way in reduce to query if a name is already defined, e.g., as an operator? Why I am asking is that I tried to run an old reduce file written by a late colleague, and it did not run. I localised the error to be a definition of an operator de, e.g., operator de; for all f let de(f)=df(f,r); and I get the rather cryptic error message +++ Error attempt to take car of an atom: nil I am using the jan 20 snapshot on Linux. Thank you: Arpad
Yes, this works. Thank you.
I got the same result with /usr/lib/reduce/cslbuild/reduce. I also ubgraded to the Nov 23 build, and still the same result. Actually, what I have just noticed is that reduce is there, sleeping in the background in these cases, just does not open a window.
Sorry, I completely forgot that there's Windows. I am using binary .deb packages downloaded from sourceforge, on Kubuntu Linux 18.04 (Ubuntu Linux with the K Desktop Environment), 64 bit. The desktop icon points to /usr/bin/redcsl, and if I click it, nothing happens. If I tick "Run in terminal" under advanced options, then 2 windows are opened, Reduce and a terminal, and it works.
Reduce only runs in terminal
I could not find it in the help, but is lambda the name of a function or a special...