<HTML> <BODY BGCOLOR="ffffff"> <FONT face="Helvetica" size="3"> <h1>Release of version 1.0.48 (??? 2001)</h1> <ul> <li> small improvement to Arg(...) working on real numbers. <li> improved 'make test', no need to install before test any more. <li> VarList can now accept a second argument, a filter predicate. <li> Pattern matcher now allows extended prototypes, like PP(list_Contains("a")) <-- ... etcetera. <li> c-style tokenizer using CTokenizer() (DefaultTokenizer() switches back to the default tokenizer). <li> Great speed-up of function Assoc. <li> Christian Obrecht implemented the Rabin-Miller primality testing algorithm, which greatly improves the speed of IsPrime. <li> Orthogonal polynomials OrthoP, OrthoP,OrthoG,OrthoH,OrthoL, OrthoT,OrthoU implemented by Serge Winitzki. <li> various speedups, and a new memory manager, optimized for allocating many small blocks (which is the case in Yacas). <li> Changed the directory structure for the script files <li> Greatly improved Simplify function. </ul> <h1>Release of version 1.0.47 (May 20th 2001)</h1> <ul> <li> initial texmacs support. <li> Jitse Niesen greatly improved the parts of the manual on variables and on input/output. <li> Bug fix in localrules (didn't work on more complex input, because it didn't check the leading function type!) <li> Bug fix : loading of files on Windows was broken. The Windows client didn't handle Unix-style end-of-lines too well. <li> Renamed TryRetract to Retract (Suggested by Jitse). <li> Put NewLine and Space in the scripts as opposed to in the Yacas kernel (Suggested by Jitse). <li> Jitse added one-liner descriptions for functions in the documentation. <li> latex form in texmacs. <li> Greatly improved CanProve, thanks to Vladimir. <li> Initial version of Berlekamp factoring. <li> changed all the scripts so they have the extension .ys. <li> proteusdebugger: an initial version of a debugger for yacas. <li> Change to configure script to support compiling under cygwin, with plugin support. <li> Bug fix to multiplying complex numbers with lists. <li> Made Content and PrimitivePart respond more nicely to polynomials with rational coefficients. <li> Small improvement to the debugger: it now also steps to non-expandable lines when you use the step buttons. <li> numbers with a minus sign now parsed into negative numbers, as opposed to a function -(number) <li> configurable simplification of inequalities in the logic code. <li> Split out the tests into many test scripts in directory tests/ </ul> <h1>Release of version 1.0.46 (April 10th 2001)</h1> <ul> <li> Bug fix: N(Sin(a)) returning 0 (also a problem with Cos). The problem was due to the system trying to do a SinMap, where Pi becomes a number, and the converting to a univariate polynomial in Pi screws up. <li> better support for mapping numeric arguments of Cos back to the 0 to Pi range. <li> made rules that are always true a little faster. <li> fixed bug with Gcd when passing floating point numbers. Reported by Fredrik Noring. <li> Small change to proteus (Mark). <li> Added example "MinimumSpanningTree". <li> Bug fix: interpreter crashed if a function refers to another function which gets redefined. <li> Bug fix: Limit(x,Infinity) going wrong on -Infinity/Infinity. <li> added Integrate(var)(function) which returns the antiderivative of a function. Suggested by Christian Obrecht. <li> Fixed "gnuplot" (broken due to the changed functionality of N(..) ). <li> Fixed bug: CanProve(P Or (Not P And Not Q)) returned the wrong answer. Reported by Vladimir Livshits. <li> Fixed bug: Cos(0) wasn't evaluating to 0 any more. <li> improvements to documentation. <li> Derivatives now better threaded. <li> fixed compiler warnings: anumber.cpp under Windows compilation (reported by Vladimir), Proteus warnings under Debian (Reported by Gopal). <li> removed -g option for compilation. Made executable seriously smaller. <li> Much improved Limit, thanks to Christian Obrecht. <li> Small improvements to Proteus. <li> pretty printing of vectors and matrices. <li> Limits can now deal with direction (limit from Left or Right). <li> PSolve for 3rd degree fixed by Robert. <li> Added operators /: and /:: . <li> Incorporated the changes for complex numbers Christian sent in. Arg now implemented correctly. <li> better numeric Ln and ArcTan. <li> functions that are not defined yet are now returned with their arguments evaluated. Eg f(2+3) returns f(5) in stead of f(2+3). </ul> <h1>Release of version 1.0.45 (Februari 22nd 2001)</h1> <ul> <li> Fixed bug: Floor or Ceil working on 0.5 would result in an infinite loop. <li> Started work on solving differential equations (scripts/odesolver). <li> Some bug fixes thanks to Robert V Schipper. <li> Some bug fixes on limits involving infinity, due to Mark Arrasmith. <li> Bug fix: Decimal didn't work correctly on negative numbers. Reported by Gopal Narayanan (Debian Yacas package maintainer). <li> Fix sent in by Gopal Narayanan so Yacas works with libgmp3. <li> Added Proteus, the user interface for Yacas using the fltk widget set, to the distribution, in directory proteus/ </ul> <h1>Release of version 1.0.44 (December 30th 2000)</h1> <ul> <li> Unfenced the if and else operators. <li> Implemented first installment of RadSimp <li> Yacas can now do 39 of the Wester benchmark calculations (up from 25). <li> Updated Psion organizer version (EPOC32). <li> Added derivatives and antiderivatives of Sign,Abs and if .. .. else .. constructs. <li> fixed two bugs that caused Div(x+1,x) to not work immediately after startup. <li> Integrating (a*x)^(fraction) not working, but (a*x)^(integer) did. <li> improved some complex number functionality, Sin/Cos calculations. <li> gcd, div, mod fix for rational numbers. <li> Continued fraction expansion of polynomials, DivPoly which does an efficient division of polynomials, returning a polynomial. <li> small cleanup of the code <li> added functions: Pslq, Floor, Ceil, Round, IsHermitean, IsUnitary </ul> <h1>Release of version 1.0.43 (November 18th 2000)</h1> <ul> <li> Added the YacasNotebook directory with the emacs shell to the repository. <li> We have support for BeOS! Thanks to Eugenia Loli. <li> Serious bugfix: the ^ operator wasn't working like it should. It was mapped to BitXor, and its precedence was wrong. </ul> <h1>Release of version 1.0.42 (November 12th 2000)</h1> <ul> <li> Allowed CForm to accept if (predicate) body; and if (predicate) body else other; These routines need to be written still, however, for them to also work in Yacas itself. <li> cleaned up some code. <li> Speedup of 40% of general Yacas execution. <li> Some improvements to the logic theorem prover so it can handle (a>b)-type epressions. <li> added support for annotating expressions, with GetExtraInfo and SetExtraInfo. <li> Initial checkin into sourceforge CVS. Thanks to Vladimir Livshits! <li> Fixed some windows compilation problems. ElfDll being explicitly mentioned in mathcommands3.cc, and explicitly including elfdll.h. <li> added initial versions for the c-like &, | % and ^ operators, and if (...) ... else ... . This will probably make it possible in the future to write code that is a lot more readable than If(..., ..., ...). The else clause binds to the last if, just like in c. So this means you can now enter expressions like: if(3 < 3) a else if (3 > 3) b else c; </ul> <h1>Release of version 1.0.41 (September 8th 2000)</h1> <ul> <li> made expressions like a[2][3] return unevaluated if a is not a matrix (just like a[1] in case a is not a vector). <li> GnuPlot can now plot multiple functions (pass a list of functions on to GnuPlot to achieve this). <li> For some reason PrettyForm didn't evaluate its argument any more. This has been changed back, so PrettyForm(%) works again. </ul> <h1>Release of version 1.0.40 (August 21st 2000)</h1> <ul> <li> made some changes to make it compile on IRIX again. Thanks to Daniel Richard G. <li> Added the Sign function. <li> improved Solve, Sqrt in order for EigenVectors to work better. <li> separate section: configuring yacas through .yacasrc: HistorySize, Help, PrettyPrinter,DefaultDirectory, <li> Apart now works correctly on rational numbers <li> verbose mode: V(expression) can now show internal results that might be useful to the user. Solve uses this. <li> We can now run Yacas from within emacs! Thanks to Jay Belanger. See the file yacas.el for more information. </ul> <h1>Release of version 1.0.39 (august 10th 2000)</h1> <ul> <li> added support for dealing with structs in the plugin system. Also, the stub generator now automatically generates documentation on the interface it is generating. <li> started on opengl/glut plugin <li> the Windows version now also supports plugins! Thanks go to James Gilbertson. <li> started on forth interpreter plugin. This will allow on-the-fly compilation to forth code that can immediately be executed. <li> Mod(2,0) gave the wrong error. <li> ^c now cancels the current calculation (if calculating), or quits yacas if currently on the command line. <li> enable automatically deleting CArrayGrower : CDeletingArrayGrower <li> added tensors experimental to inprogress/, and moved norm there too <li> BUGFIX: plugin support for integers didn't allow returning negative integers. <li> install .so files in plugins/ dir, and be able to load from there. <li> factoring polynomials has been fixed. Factor((x^2+1)*(x^2+4)) will now return a correct factorization. <li> Implemented HistorySize(depth), which specifies the number of lines that should be stored in the ~/.yacas_history file. <li> fixed partial fraction expansion! It turned out to be a bug in the function Monic, which didn't return the correct result if the lowest order term was non-constant. Monic(x^3+x^2), Apart(1/(x^2+1)), Integrate(x,a,b)1/(x^2) now thus work. This was found with Apart((x^3+4*x^2-x-2)/(x^4-x^2),x) <li> better bracketing of expressions containing minus signs. <li> changed #YB# and #YE# to <? and ?> for better cooperation with html. </ul> <h1>Release of version 1.0.38 (July 9th 2000)</h1> <ul> <li> intro.html generated again. <li> Precision(n) generates an error if n isn't a positive integer. <li> A:=B:=1 now works as required (A and B get assigned 1) <li> prefix operators can now be defined with a precedence. This is used with for instance "-". -x^2 is now treated as -(x^2) and not as (-x)^2 <li> The "Not" command is now treated as a prefix operator. <li> The And, Not and Or operators now return unevaluated if they encounter an argument that is neither True nor False. <li> Implemented a TraceStack, which shows the call stack just before the limit is reached. This has to be documented still! <li> changed the operators in the logic prover from ~, |, etc. to And, Or and Not. <li> new target in the make file in the src/ directory: 'depend'. make depend builds a file depend.dep using the -MM flag of gcc. <li> changed the system so when you type '??' it calls Help(), and if you type ?f it calls Help(f). Help() and Help(f) are defined in yacasinit, and can be overridden in ~/.yacasrc <li> Implemented TraceStack(expression), which shows the top of the stack, just before an error occurred. <li> Improved error reporting: for internal functions the function generating the error is now also shown. <li> implemented PatchLoad, which does a php-style load of a file. The contents of the file are read in and printed to screen, except everything between #YB# and #YE#, which gets evaluated. So print statements can be put there to put generic content. <li> Implemented PatchString (which does the same as PatchLoad, but for strings). <li> moved manicon.html to the distro. <li> Initial release of a plugin interface. <li> implemented DllLoad and SetHelpBrowser. <li> documented PatchLoad, PatchString, SetHelpBrowser, TraceStack, and the plugin structure (preliminary), which can be found in the programmers reference. </ul> <h1>Release of version 1.0.37 (June 4th 2000)</h1> <ul> <li> Speedup in manual generation. <li> fix for enumerations in the manual <li> Fix for compilation under egcs 2.95.2 </ul> <h1>Release of version 1.0.36 (June 4th 2000)</h1> <ul> <li> Greatly improved the coding.book. And some improvements in intro.book too. Note these are not finished versions yet! Just great improvements. <li> Fixed the bug where sometimes the files in the addons/ directory weren't loaded. <li> the history file now is ~/.yacas_history <li> Yacas now tries to load ~/.yacasrc <li> fixed small bug : cos*tan = sin <li> new texform 0.4 with more functions and vector and matrix support. <li> Initial version of yacas_client. It allows to run persistent Yacas sessions locally or via remote shell (rsh/ssh) from another program. <li> New example in the introduction manual. <li> Added an advanced example on how to create a non-commutative algebra. <li> Added new flags: p for plain command line (no readline functionality), and c for not showing the prompts. So 'yacas -pc' will be a minimal console interaction application with no fancy in- and output. added flag -t for roll-through command line. <li> Added EigenVectors and IsConstant (described in the manual). <li> small changes to the reference manual: indices at the top, and some expanded descriptions for certain functions. <li> Moved IsBoolean from texform to predicates <li> implemented UnFlatten <li> Initial version of c_form <li> support for numbers of form 1E-3 etc. when using gmp. This will be supported in the built-in arbitrary precision math module soon. <li> Read() from standard input now works again. <li> Implemented TruncRadian(r) which calculates r mod 2*Pi, with arbitrary precision. This is then used in the trigonometric functions to speed up calculation. So, for instance, Sin(1000000) can be calculated quickly now, even without gmp. <li> GarbageCollect(), which removes unused text strings from internal storage. garbage collection on lispstrings in the hashtable. <li> Implemented LazyGlobal. This allows for lazy evaluation of a variable it is bound to (evaluation the first time it is called). <li> % now re-evaluates the previous result. <li> Usage of imaginary unit "I" will now invoke full "complex" package functionality. <li> more strict requirements on parsing of numbers. They cannot be of the form 1.0.2 any more. <li> Version() now returns a string. <li> the symbol ' is now a text symbol, so you can write things like 'a' and x' . <li> A small propositional logic theorem prover was built. it can be used by invoking <a href="ref.html#CanProve">CanProve</a> </ul> <h1>Release of version 1.0.35 (May 16 2000)</h1> <ul> <li> Made improvements to the tensor package. <li> started on the unixtools addons. Vi and GnuPlot. <li> Implemented LessThan and GreaterThan that do a lexical compare in stead of just comparing numbers. You can now compare any type of atomic. <li> fixed c++ wrapper to gmp. <li> Serge Winitzki fixed some bugs with complex arithmetic. <li> Some more improvements to the introduction manual by Serge Winitzky. <li> changed lexical analyzer so % is a separate token. You can now type a:=%; in stead of having to type a:= %; <li> Print Bodied with correct precedence. <li> Implement "quit" (together with, "Exit()") <li> Implement Version() to return 1.0.34 </ul> <h1>Release of version 1.0.34 (May 4 2000)</h1> <ul> <li> Implemented ExpandBrackets <li> Added a -f command line flag that inputs an expression from the command line, prints the result and exits. <li> Serge Winitzki greatly enhanced the introduction manual! <li> Some bugfixes to the complex arithmetic code. <li> changed the [[ ]] way of accessing arrays into [ ]. <li> ?function didn't work on functions explained in the programmers reference. <li> Changed the licence to GNU GPL. </ul> <h1>Release of version 1.0.33 (April 30 2000)</h1> <ul> <li> Made an ApplyPure that works with string operators. <li> Implemented PrettyPrinter. So now you can have Yacas automatically print results in the desired form. Try it with PrettyPrinter("PrettyForm"). It can be reset with PrettyPrinter() <li> Implemented Bodied("op",precedence), so now bodied operators can have a precedence too. <li> An example reference "print" implementation in script code. <li> Implemented Lcm(a,b) (Least common multiple) of two numbers. <li> some small bug fixes <li> Implemented Coef where the 'order' argument can be a list. This then returns a list of coefficients. <li> BigOh: drops last terms from a polynom. <li> ReversePoly: inverts a polynomial. <li> replaced InverseTaylor with a better version. <li> changed the '=' to '==' for Solve. This in order to assure the equals sign will not be automatically evaluated. <li> Implemented Eliminate, SuchThat, WithValue <li> Solve can now solve systems of 'simple' equations, eg. sets of equations where for each variable to solve for there is at least one equation where the variable occurs only once. <li> Removed Lambda, in favour of the {{},} pure functions, since they are ten times faster. Juan: hope you don't mind? ;-) <li> Some test code for Simplify, written by Serge Winitzki. </ul> <h1>Release of version 1.0.32 (April 25 2000)</h1> <ul> <li> The history now keeps track of the last unmodified line, so you can enter through a previous list of commands. <li> Pressing escape twice now clears the line. <li> Initial installment of a tensor package. <li> Bugfix: sometimes 0/n returned a random number! <LI> Bugfix: relating to the above 0/n bug. MathDivide(0.00001,10) sometimes returned a random result. So did some of the other numeric calculations. The mistake was with converting the number from internal format to ascii (probably broken after it had been optimized). It was with a SetNrItems on a number that initially had less digits than the one I set it to. So the added items contained garbage. <LI> Greatly improved Simplify. <LI> the command line now accepts multiple lines that terminate with \. <LI> 3/2*2 is now interpreted as 3. <LI> typing restart on the command line restarts yacas. <LI> Changed all the (Is)InFix/PreFix/PostFix to (Is)Infix/Prefix/Postfix <LI> Started on scripts/examples/benchmark. This file contains some of the calculations specified in the Wester benchmark. <LI> Infinity wasn't handled every where (arithmetic) <LI> Implemented ContFrac, which makes a continued fraction expansion of a number. <LI> Implemented Decimal. Decimal calculates an infinite decimal representation of a number. <LI> Implemented LagrangeInterpolant, a way to create a polynomial that goes through certain points. <LI> Implemented Select, which can select certain elements from a list based on a predicate test function. <LI> Half-integer factorials (sent in by Serge Winitzki) <LI> TeXForm version 0.2 (initial release), sent in by Serge Winitzki. <LI> Improved the documentation. <LI> The web site was changed, thanks to Doreen Pinkus. <LI> Fixed the segfault following an error on the command line. <LI> Documented LagrangeInterpolant, PAdicExpand, LocalSymbols, PrettyForm, RandomIntegerVector, RandomPoly, Monic, LeadingCoef, Select, MakeVector, Decimal, ContFrac, Abs </ul> <h1>Release of version 1.0.31 (April 9th 2000)</h1> <ul> <li> Added "Until" which repeats a statement until a predicate becomes true. The difference with While is that the statement is evaluated at least once, as opposed to While where the body statement is evaluated zero or more times. <li> Univariate polynom building extended a little to deal properly with division by constants. <li> implemented PAdicExpand PAdicExpandInternal that do a p-adic expansion, for integers and univariate polynomials. <li> Added GetPrimeFactors. <li> Implemented RandomIntegerVector, RandomPoly. <li> LeadingCoef for univariate polynomials <li> fixed bug in Gcd for polynomials. <li> Allow {x,y}:={1,2}, which sets x to 1 and y to 2. <li> You can now call f(x):=Eval(g), where g is evaluated before it is assigned to f(x). This makes it easy to define a function that is a taylor series of some other function, etc. <li> Monic(poly): return poly/LeadingCoef(poly), which essentially makes the leading coefficient 1. <li> Added Rem. <li> Implemented an initial version of factoring polynoms! Factors(n) should factorize n, which can be an integer or polynom. It returns a list with sublists(factor,power). Use FW(Factors(n)) to show a nice human-readable form of the factorization. Try FW(Factors(1233)) as an example. Note that factoring polynomials can sometimes become slow, when fractions grow exponentially inbetween calculations. <li> speedup of n!. <li> Roots(polynom) calculates the roots of a polynomial. <li> implemented EigenValues(matrix) . <li> Apart, Together, GcdReduce <li> integrating functions of the form 1/(a*x+b) <li> integrating rational functions (very preliminary) <li> integrating Sin(f(x))*Cos(g(x))-like forms <li> integrating expressions of the form Ln(a*x) <li> support for n_IsNumber < Infinity etc. <li> fixed bug in pretty-printing formulas <li> some more speedups. <li> extended the documentation. <li> some more optimizations. Queens(8) now takes 10 seconds just like Hugs. This just means Hugs isn't very efficient, since more optimizations are possible. <li> Speed-up of applying pure functions. </ul> <h1>Release of version 1.0.30 (March 5 2000)</h1> <ul> <li> Dan McMahill made a NetBSD distribution for Yacas. It can be found at ftp://ftp.netbsd.org/pub/NetBSD/packages/pkgsrc/math/yacas/README.html <li> changed the infix printer so that expressions like "a And b" and "a+ -b" are printed as such (with spaces). <li> removed IsVector in favor of IsList, which is MUCH faster. <li> optimized the code here and there. Queens(8) now takes 15 seconds, where it used to take 35 on my machine. <li> Replaced "Table" with the implementation Juan Pablo Romero supplied. <li> Added two command line options: -v and -d. -v returns the version number, and -d the directory the scripts are stored in. <li> Added the $(scriptdir)addons/ directory as suggested by Juan Pablo Romero. If you copy your files over there, the .def files will automatically be loaded at startup. You will see the line 'Adding package[...]' on screen. <li> fixed parsing bug for numbers ending with a dot (2.). Reported by Juan Romero. <li> Added rules for <,> operations on rationals. You can now request 1<= 2/3 . <li> fixed bug: l:={t,t^2,t^3}; D(t)l; the Deriv rule didn't do lists! Reported by Juan Romero. <li> Subst has become an internal function (implemented in the engine). <li> implemented LocalSymbols as suggested by Juan Romero. Try LocalSymbols(a,b)[a+b;] <li> Implemented TemplateFunction and HoldArgNr, so that the parameters to a function are also local symbols. As an example, see the definition of Table in the file "lists". The LocalSymbols will thus be done during loading, and not during execution, so there is no runtime overhead in using TemplateFunction. <li> Apply now evaluates both of its arguments. op:="+"; Apply(op,{2,3}); should now return 5; You can now remove all Apply("Apply",{oper,args}) constructs in your code, in favour of Apply(oper,args); <li> Added "Lambda" as suggested by Juan Romero. </ul> <h1>Release of version 1.0.29 (27 Februari 2000)</h1> <ul> <li> added a directory colorcode with code to htmlize the scripts. it also color-highlights the code. Try it out by typing './colorcode' in that directory, and then 'netscape scriptsmain.html' <li> Pattern matching code optimized a little. <li> SylvesterMatrix, code supplied by James Gilbertson. <li> MatrixRow, MatrixColumn, and GenMatrix supplied by James Gilbertson. <li> changed Intersection and Difference, so they handle lists with multiple identical elements correctly. <li> Fixed the D(x)x+y bug reported by Fred Bacon. <li> Fixed the Gcd(x,x) bug reported by Scott. <li> added Factorize({list}). Factorize(1 .. 4) should now return the same as 4! for instance. <li> Added Content and PrimitivePart to the univariate polynomial code. See the manual for an explanation of these functions. </ul> <h1>Release of version 1.0.28 (10 Februari 2000)</h1> <ul> <LI> Improved Windows client code (using the command line code). Code kindly contributed by James Gilbertson. <LI> KARATSUBA multiplication??? Again thanks to James Gilbertson. Seems to almost work ;-) <li> Added Pi, which evaluates to itself, unless N() is used. <li> Patterns defined with no arguments could crash, if there is a postpredicate. This was actually a problem with user-defined functions with no arguments. It is a miracle that Yacas worked at all. <li> Added support for accurate results to Sin((1/2)*Pi) etc. Only whole and half Pi are supported currently. <li> Added a new make target, 'make test', which runs the test script. <li> Added an example, scripts/examples/findsum. See the file for more details. <li> the command line now supports command line completion. When you type in a few letters, and press tab, yacas will try to auto-complete by searching the history. <li> Added another example, queens, in the examples directory. This queens implementation took 35 seconds on my machine to do Queens(8), where hugs (a Haskell interpreter) takes 10 seconds. <li> added the fltk-based user interface code back into the distribution. It still needs some serious work. </ul> <h1>Release of version 1.0.27 (16 Januari 2000)</h1> <ul> <LI> You can now define simplification rules using pattern matching. <li> small compilation problems with the newest gcc (Fixed by Fred Bacon). <li> more numeric: Ln(2), Sin(2) and Sqrt(2) should only eval if N(...) </ul> <h1>Release of version 1.0.26 (12 Januari 2000)</h1> <ul> <li> added a small lisp interpreter to triage. triage is now ready to be used as a graphing engine. <li> many improvements to speed up the engine. It should now be almost three times as fast. The most time is currently spent in the predicate clauses of the rules (deciding which rule applies). <li> Length will now also return a length of a string and array. <li> Implemented StringMid and SetStringMid, which can manipulate strings. <li> Min and Max now also working on lists. <li> Gcd now working on list. <li> Gcd, Div and Mod will now try to find out if an expression is a polynomial. <li> Implemented OpLeftPrecedence, OpRightPrecedence. <li> PrettyForm, EvalFormula. These allow nice rendering of formulas in ascii form. <li> IsFreeOf will now also accept a list of variables. <li> Speed improvements. <LI> made readline.cpp platform-independent. It is now in commandline.cc and unixcommandline.cc <li> enhanced simplification of rationals and complex numbers. </ul> <h1>Release of version 1.0.25 (26 December 1999)</h1> <ul> <li> added links to other relevant free software. <li> implemented LispRead, which reads expressions in lisp syntax. <li> implemented the Example() command, which generates a new example each time you call it. This solves the problem (I hope) of confronting a new user with a prompt and no indication as to what can be typed in. Just keep typing Example(), and all sorts of examples pop up. <li> Implemented TraceRule. This allows you to selectively trace single functions. It shows what the arguments evaluate to, and then what the function evaluates to. Try it out with TraceRule(x+y)2+3*5+4 <li> TrigSimp has now been changed to TrigSimpCombine, and is now part of the regular distribution. Also, there was still a small bug in TrigSimp. <li> Added a section on debugging in the manual. </ul> <h1>Release of version 1.0.24 (25 December 1999)</h1> <ul> <li> implemented TraceExp. <li> improved substitution rules for simple arithmetic. <li> IsFreeOf can now handle extended expressions: IsFreeOf(Cos(a),Cos(a)) will now return False. <li> A new module: "inprogress/trigsimp". This file defines a function TrigSimp that changes Cos(...)*Sin(...) expressions into Cos(...)+Sin(...) </ul> <h1>Release of version 1.0.23 (19 December 1999)</h1> <ul> <li> changed the format for argument passing to Taylor and inversetaylor. It is now "Taylor(var,at,degree) function" and "InverseTaylor(var,degree) function" <li> Subst implemented. Subst(x,y)x+x should return y+y. <li> Introduced the concept of a 'generic object'. Next to atoms and lists, there can now be objects Yacas can deal with. <li> implemented the first generic object: an array class. This greatly speeds up random access to large lists (if treated as an array). Array acces is O(1) whereas list access is O(n). <li> updated the documentation to reflect the most recent additions: Assoc, AssocIndices, Drop, Take, Partition, LeftPrecedence, RightPrecedence, ToString, Secure, FindFile, Subst, IsGeneric, GenericTypeName, ArrayCreate, ArraySize, ArrayGet, ArraySet, ArrayCreateFromList, ListFromArray </ul> <h1>Release of version 1.0.22 (13 December 1999)</h1> <ul> <li> enabled logging through a dedicated singlethreaded server. see launchserver for details. <li> Added makefile code to autogenerate the manual. Code supplied by Juan Pablo Romero. So 'make install' will now also build the online manuals. <li> Added a very preliminary interface to MySQL. This is done by invoking the default mysql client, passing in a file for stdin, and then reading the result and casting it into a list that Yacas can read. tools/mysqlstubs does this. You don't have to have mysql installed to build Yacas, which is a nice thing. <li> FindFile, which scans the default directories for a file. <li> made a tools directory, /usr/local/share/yacas/tools. Yacas can launch executables from there using SystemCall and FindFile. This directory should contain some loose exes to connect to other programs. For now the http servers and the mysql stubs are there. In the future such things as a stubs for superficie and for gnuplot should also be there. <li> The documentation is now built when you type 'make', in stead of when 'make install' is invoked. </ul> <h1>Release of version 1.0.21 (11 December 1999)</h1> <ul> <li> Removed warnings during compilation <li> Server returns a slightly better page on error. <li> Implemented a maximum time the server will take for a calculation (default 30 secs) <li> Implemented a configuration file scheme for the server. <li> fixed printing bug, where a-(b-c) was printed as a-b-c. <li> Implemented a 'Secure' keyword. This disallows reading from and writing to files, as well as system calls, from Yacas. Useful when used within the server. <li> Added "Examples" button functionality to the forms. </ul> <h1>Release of version 1.0.20 (5 December 1999)</h1> <ul> <li> Improved error reporting due to James Gilbertson. <li> a Windows executable is now on the net, winyacas.zip, due to James Gilbertson. <li> ?keyword will now give you help on that keyword. Try it with '?Apply' or so. <li> Slight improvements to the server code. </ul> <h1>Release of version 1.0.19 (29 November 1999)</h1> <ul> <li> Improved windows version. </ul> <h1>Release of version 1.0.18 (28 November 1999)</h1> <ul> <li> Improved server code <li> implemented a simple database <li> improved error reporting. Errors now show the file and line the error occurred. </UL> <h1>Release of version 1.0.17 (27 November 1999)</h1> <ul> <li> removed the const from LispString (some compilers fell over it) <li> improved the server to also serve html pages, and allow for password authentication. <li> Fixed online manual building. You can now type './mkmanual', and then when in yacas, type '??', and help should pop up again. </ul> <h1>Release of version 1.0.16 (22 November 1999)</h1> <ul> <li> The : operator now also accepts strings. "a" : "b" should now return "ab" <li> The manual is now completely generated using Yacas as a document processing language, much like LaTeX. </UL> <h1>Release of version 1.0.15 (20 November 1999)</h1> <ul> <li> Drop, Take, Partition incorporated in the distribution (as supplied by Juan Pablo Romero). <li> Assoc lists are now implemented. <li> Fixes to make yacas work on a Dec Alpha. <li> improvements to the autoconf/automake scripts </ul> <h1>Release of version 1.0.14 (12 November 1999)</h1> <ul> <li> %d numbering in server input/output <li> DestructiveReplace, Replace <li> change CanBeUni to support f(x)/const constructions. Expand(Taylor(Sin(a*x),x,0,3)) will now work correctly. <li> Expand a little on integration. <ul> <li> Integrate standard analytic functions like Sin, Cos, Exp. <li> partial integration: first step could be integrating polynomial*function. </ul> <li> Make a LispString derived class that can use a const string, copied, and thus not freed. <li> files IN the executable. <ul> <li> allow loading from exe. <li> a mechanism to put scripts in the executable (preliminary). </ul> </ul> <h1>Release of version 1.0.13 (12 November 1999)</h1> <ul> <li> moved to autoconf/automake scripts. <li> many many many changes to clean up the source distribution, thanks to Daniel Richard G. </ul> <h1>Release of version 1.0.12rev1 (11 November 1999)</h1> <ul> <li> Changes to allow compilation under Sun/SGI. <li> Improved the www server. Check cgiserver02. <li> added FromString command. <li> slight change to license. It should now at least be compatible with GPL licenses. </ul> <h1>Release of version 1.0.12 (7 November 1999)</h1> <ul> <li> There is now a mini www server in the server/ directory! Read the readme file for its usage. </UL> <h1>Release of version 1.0.11</h1> <ul> <li> Added code to support Windows, supplied by James Gilbertson <li> Added fix to support GMP again. Supplied by Igor Khavkine. <li> Added Sum({list}) and Average({list}). Examples: Sum({1,2,3}) evaluates to 6, and Average({1,2,3}) evaluates to 2. </UL> <h1>Release of version 1.0.10</h1> <ul> <li> Fixed bug in BubbleSort <li> Added 'Diverge', 'Curl' and 'FillList', and threaded derivatives as supplied by Igor Khavkine. Example: D({x,y,z})Sin(x*y). </ul> <h1>Release of version 1.0.9</h1> <h3>DOCUMENTATION </h3> <ul> <li> IsInFix, IsPreFix, IsPostFix, OpPrecedence, GetPrecision <li> BitAnd, BitOr, BitXor <li> functional operators :, .., @, /@ <li> Find, Simplify, Conjugate, Rationalize </ul> <h3>ENGINE</h3> <ul> <li> additional debug code: count number of defined functions: built-ins, RuleBases. <li> binarysearch in some places, in stead of linear search. <li> split mathenvironment into that plus commands.cpp/h <li> Add support for access to some engine information: <ul> <li> GetPrecision() <li> IsInFix, IsPreFix, IsPostFix, OpPrecedence. </ul> <li> BitAnd, BitOr, BitXor </ul> <h3>MATH</h3> <ul> <li> Added the functional operators, .., :, @ and /@, to the standard loaded functions. <li> implemented list[[{index}]]. So now you can do list[[2 .. 4]], which will return a list with the elements 2, 3 and 4 of the original list. <li> Change syntax for Limit: Limit(var,value) function </ul> <h1>Release of version 1.0.8</h1> <UL> <li> Access to help from the console version, by typing ??. This uses lynx. <li> Experimented a little with a calculator approach. See fltkcalc for the results. <li> Home page redesigned. </ul> <h1>Release of version 1.0.7</h1> Another bug fix release. Rule base code has been cleaned up. A precedence scheme for rules is now in place. This should avoid bugs due to rules interacting in unforeseen ways. Speedups in the code where lists were built: Concat replaced by DestructiveInsert. Reverse changed into DestructiveReverse. <h1>Release of version 1.0.6</h1> Bug fix release. Implemented InverseTaylor. Extended manual some. <h1>Release of version 1.0.5</h1> Changed form of manual on home page. It now uses frames. Added Polynomial support, preliminary symbolic integration. Several bug fixes. Created a mailing list yacas@onelist.com <h1>Release of version 1.0.4</h1> Added just-in-time loading. Spreaded the rules database over many small files, so application startup should be a lot faster. Added support for threaded functions. Assorted bug fixes. <h1>Release of version 1.0.3</h1> Added MathNth (in place of Nth, which is now implemented in 'standard' package). Added an fltk-based application (yacasnotepad). <H1>Release of version 1.0.2</h1> Implementation of a native arbitrary precision arithmetic module. The source is now more platform-independent. Some bugs were fixed, and new commands added. <H1>Release of version 1.0.1</h1> Improved math rules database. Implemented the most important linear algebra algorithms. Added yaglviewer, a small interactive 3d viewer based on OpenGL and glut. yaglviewer is basically a standalone application, reading a very simple scripting language with commands similar to opengl's, and then showing the result. <H1>Release of version 1.0 (initial release).</H1> This is the first fully working version of Yacas that is released as free source. <P> The language specification has been finalized, so future releases should be backward-compatible. <P> This distribution contains a small library with mathematical algorithms. </FONT> </BODY> </HTML>