Yacas 1.0.62 review

by rbytes.net on

Yacas is project is a Yet Another Computer Algebra System. Yacas is a general purpose, easy to use Computer Algebra System (a CAS

License: GPL (GNU General Public License)
File size: 2044K
Developer: Yacas Team
0 stars award from rbytes.net

Yacas is project is a Yet Another Computer Algebra System.

Yacas is a general purpose, easy to use Computer Algebra System (a CAS is a program that can be used to do symbolic manipulation of mathematical expressions).

It is built on top of its own programming language designed for this purpose, in which new algorithms can easily be implemented.

In addition, it comes with extensive documentation on the functionality implemented and methods used to implement them.

What's New in This Release:
FlatCopy and DestructiveReverse segfaulted when not passed a list.
polishings for the random number generator (fixes for mistakes in the comments and documentation).
plugin stub generator now takes C tokens with underscores and changes the underscores to single quotes (').
Added YacasInterpreter.java, which makes using Yacas from a command line console Java application a little easier (provided by qwert2003, alias Adrian V.).
Various improvements to OpenMath support.
Added the ability to Solve and Where to handle expressions more complex than just variables. One can now Solve for say x[1], or Sin(x) (it only uses a simple comparison for now though). One can now for instance enter Solve({x[1]-4*x[2]+x[3]==0},{x[2]}).
Change to CForm: made it so that integers stay integers. You can force a number to be real-valued by appending a dot, (eg 1. instead of 1). It used to be so that Yacas would coerce a float to integer if there were only zeroes after the decimal. Nowadays the number stays float (a dot in the string representation).
Also show output on screen if there was an error later on (up until now you would have to pass --read-eval-print "" on the command line to get this to happen).
Introduced Lambda macro for pure functions. This function returns itself unevaluated, and can be passed in to the Apply function. The older method of defining pure functions was with lists, but because lists are evaluated this sometimes caused unwanted behaviour (premature evaluation of expressions in the body of the pure function).
Made Solve a little bit more powerful so that it can for instance solve systems of equations like Solve({mean==(A/(A+B)),variance==((A*B)/(((A+B)^2) * (A+B+1)))},{A,B}).
Added a flag --single-user-server that allows the user to start the server mode in single-user mode (see documentation on the details).
Merged in Peter Gilberts changes, with some fixes.
Fix bug found by Stephen Dolan: CanProve((X Or (Not Y)) And (Y Or (Not X))) returned True but should evidently return False. The problem was a flaw in the algorithm. It should find expressions of the form (p Or Y) And (Not p Or Z) and then look at whether (Y Or Z) is False. If so then the entire expression is false. However that does not mean that if (Y Or Z) is true that the original expression is true. The bug was that the former was replaced by the latter. The algorithm shouldn't replace expressions, just look to see if combining results in a situation where both Y and Z are false. Then the entire expression is false. See the book "Prolog" written by Ivan Bratko.
Change handling of key presses in the Java applet from KEY_PRESSED to KEY_TYPED (it would not accept certain keys otherwise on certain keyboards).

Yacas 1.0.62 search tags