declare smobs in alloc.c
[bpt/emacs.git] / etc / CALC-NEWS
1 Copyright (C) 2001-2014 Free Software Foundation, Inc.
2 See the end of the file for license conditions.
3
4 Calc is an advanced desk calculator for GNU Emacs.
5
6 Originally written by:
7 Dave Gillespie
8 c/o Synaptics, Inc.
9 2698 Orchard Parkway
10 San Jose CA 95134
11 daveg@synaptics.com, uunet!synaptx!daveg
12
13 Currently maintained by:
14 Jay Belanger <jay.p.belanger@gmail.com>
15
16 I am anxious to hear about your experiences using Calc. Send mail to
17 "jay.p.belanger@gmail.com". A bug report is most useful if you include the
18 exact input and output that occurred, any modes in effect (such as the
19 current precision), and so on. If you find Calc is difficult to operate
20 in any way, or if you have other suggestions, don't hesitate to let me
21 know. If you find errors (including simple typos) in the manual, let me
22 know. Even if you find no bugs at all I would love to hear your opinions.
23
24
25 Summary of changes to "Calc"
26 ------- -- ------- -- ----
27
28 For changes in Emacs 23.1 and later, see the main Emacs NEWS file.
29
30 * Version 2.1:
31
32 ** New matrix mode for square matrices. Improved handling of
33 non-commutative products.
34
35 ** New functions: powerexpand and ldiv.
36
37 ** Added new functions: sec, csc, cot, sech, csch, coth.
38
39 ** 0^0 now evaluates to 1.
40
41 ** Added a new language mode for LaTeX.
42
43 ** Calc now tries to use an appropriate language mode in embedded mode.
44
45 ** Calc now restores original modes when leaving embedded mode.
46
47 ** User settable variables which are not set with keystrokes are now
48 customizable.
49
50 ** Made ~/.calc.el the default Calc settings file.
51
52 ** Miscellaneous updates and bugfixes.
53
54 \f
55 * Version 2.02f:
56
57 ** Fixed a bug which broke `I', `H', `K' prefix keys in recent Emacs.
58
59 ** Fixed a bug in calc.texinfo which prevented "make tex2" from working.
60
61 ** Updated `C-y' (calc-yank) to understand Emacs 19 generalized kill ring.
62
63 ** Added a copy of "calccard.tex", the Calc quick reference card.
64
65 \f
66 * Version 2.02e:
67
68 ** Fixed an installation bug caused by recent changes to `write-region'.
69
70 \f
71 * Version 2.02d:
72
73 ** Fixed a minor installation problem with a Emacs 19.29 byte-compiler bug.
74
75 ** Removed archaic "macedit" package (superseded by "edmacro").
76
77 \f
78 * Version 2.02c:
79
80 ** Patch to port Calc to Lucid Emacs 19; still works with GNU 18 and GNU 19.
81
82 ** Fixed a bug that broke `C-x C-c' after Calc graphics had been used.
83
84 \f
85 * Version 2.02b:
86
87 ** Minor patch to port Calc to GNU Emacs 19. Will be superseded by Calc 3.00.
88
89 \f
90 * Version 2.02:
91
92 ** Revamped the manual a bit; rearranged some sections.
93
94 ** Added marginal notes for Key/Function Index refs in printed manual.
95
96 ** Changed `M-# r' to deal more gracefully with blank lines.
97
98 ** Made reductions like `V R +' and `M-# :' considerably faster.
99
100 ** Improved parsing and display of cases like "[a + b]".
101
102 ** Added `t +' and `t -' for doing business date arithmetic.
103
104 ** Added "syntax tables," the opposite of compositions.
105
106 ** Added another Rewrites Tutorial exercise.
107
108 ** Added the "vmatches" function.
109
110 ** Added the `Modes' variable and `m g' command.
111
112 ** Improved `u s' to cancel, e.g., "11 mph hr / yd" to get a number.
113
114 ** Added "quick units" commands "u 0" through "u 9".
115
116 ** Moved `M-%' to calc.el to avoid autoloading problems.
117
118 ** Added `M-=' during algebraic entry, acts like `RET ='.
119
120 ** Made `LFD' prevent evaluation when finishing a calc-edit command.
121
122 ** Changed calc-store commands to use `t .' mode for trail display.
123
124 ** Improved integrator to understand forms involving "erf".
125
126 ** Fixed parser to make sense of "[1....1e2]" input.
127
128 ** Fixed FORTRAN parser to treat a(i,j) as a_i_j if a is declared matrix.
129
130 ** Got rid of some version number stamps to reduce size of patches.
131
132 ** Fixed a bug in defmath treating "<=" and ">=" predicates.
133
134 ** Fixed a bug in which Calc crashed multiplying two date forms.
135
136 ** Fixed a bug in line breaker that crashed for large, nested formulas.
137
138 ** Fixed a bug using ` to edit string("foo").
139
140 ** Fixed a bug where `M-# y' in Big mode copied stack level number.
141
142 ** Fixed a bug where `g O' used wrong default directory, no completion.
143
144 ** Fixed a bug where "foo_bar(i)" parsed in C mode but showed as foo#bar.
145
146 ** Fixed several bugs where large calculations got "computation too long."
147
148 \f
149 * Version 2.01:
150
151 ** Added percentage commands `M-%', `b %', and `c %'.
152
153 ** Changed Big mode to force radix-10 in superscripts.
154
155 ** Improved display of fractions in various language modes.
156
157 ** Changed `a n' to work properly with equations and inequalities.
158
159 ** The problem with cross references to Index nodes in TeX has been fixed.
160
161 ** Fixed a bug where recursive esc-maps make calc-ext/-aent unloadable.
162
163 ** Fixed a bug in `M-# k', then `OFF' right away, with fresh Emacs.
164
165 ** Fixed a bug in which "S_i_j" was formatted wrong after `j s'.
166
167 ** Fixed a bug in which `h k u c' positioned cursor on wrong line.
168
169 ** Fixed a bug where `z ?' crashed if `z %' was defined.
170
171 ** Fixed a bug in `j O' (calc-select-once-maybe).
172
173 ** Fixed "make private" not to ask "Delete excess versions" and crash.
174
175 \f
176 * Version 2.00:
177
178 ** First complete posting of Calc since 1.01.
179
180 ** Most parts of Calc have seen changes since version 1.07. See
181 section "New for Calc 2.00" in the manual for a summary.
182
183 ** Changed to compile calc-macs/-maint, to allow "cp *.elc new-dir".
184
185 ** Improved calc-describe-bindings to avoid showing redundant ESC maps.
186
187 \f
188 * Version 2.00 beta 3:
189
190 ** Removed version numbers from most .el files to reduce size of patches.
191
192 ** Added a "calc-version" command.
193
194 ** Changed `M-# ? ?' to allow for modified describe-function.
195
196 ** Changed date parser to accept "Sept" as an alternative for "Sep".
197
198 ** Inhibited answers to exercise from showing up in table of contents.
199
200 ** Changed Makefile to say "texindex calc.[cfkptv]?" to avoid "calc.el".
201
202 ** Fixed up the Makefile in various other ways.
203
204 ** Rearranged banner at top of `h h' command's output.
205
206 ** Changed "make summary" to print "Calc Summary" on the title page.
207
208 ** Added "IntegSimpRules".
209
210 ** Added `M-# :', `M-# _', and `M-# Z' options.
211
212 ** Changed `^' to evaluate "[-3..-1]^-2" properly.
213
214 ** Improved `f g' to give symbolic answers for, e.g., 101:2 and -3:2.
215
216 ** Fixed a bug where `h k RET' didn't find the right place on the page.
217
218 ** Fixed a bug that formatted "x*(y ? a : b)" as "x y ? a : b".
219
220 ** Fixed a bug where defmath translated (< x 0) as (math-posp x)!
221
222 ** Fixed a bug that prevented quick-calc from working sometimes.
223
224 ** Fixed the `z ?' bug again (maybe this time for good?).
225
226 ** Fixed a bug in which `V ^' (vint) was just plain wrong, wrong, wrong!
227
228 ** Scanned for and fixed remaining bugs relating to autoloading.
229
230 \f
231 * Version 2.00 beta 2:
232
233 ** Changed "make info" to try "make texinfo" if "makeinfo" not found.
234
235 ** Changed to "New for Calc 2.00"; texinfo.tex chokes on apostrophes.
236
237 ** Added List Tutorial Exercise 14 (just in case there weren't enough!).
238
239 ** Added a discussion of the `Z F' command to the Programming Tutorial.
240
241 ** Improved `H a f' not to lose info if input is partially pre-factored.
242
243 ** Improved simplification of expressions like sqrt(3) + 3^3:2.
244
245 ** Changed Big mode to omit "*" in expressions like 2 sqrt(3) 5^3:4.
246
247 ** Replaced European date format D/M/Y with D.M.Y.
248
249 ** Changed `a N' and `a X' to consider the endpoints of the interval.
250
251 ** Fixed a bug where TeX mode made c*(1+a/b) look like a function call.
252
253 ** Fixed a bug formatting top-level evalto's while using selections.
254
255 ** Fixed a bug that caused `z ?' to crash.
256
257 ** Fixed a bug where `Z F' broke for argument names "t" and "nil".
258
259 ** Fixed several bugs relating to autoloading.
260
261 \f
262 * Version 2.00 beta 1:
263
264 ** Added "What's new in Calc 2.00" to the manual (summary of info below).
265
266 ** Added support for many GNUPLOT 3.0 features.
267
268 ** Tweaked the Makefile and calc-compile a bit more.
269
270 ** Modified to work with Zawinski's/Furuseth's optimizing byte compiler.
271
272 ** Modified Calc to garbage-collect less often (raised gc-cons-threshold).
273
274 ** Changed quick-calc to avoid autoloading so many parts of Calc.
275
276 ** Changed Calc subfiles to work properly if not byte-compiled.
277
278 ** Renamed `M-# s' to `M-# j', made `M-# s' be equivalent to `h s'.
279
280 ** Changed calc-quit to avoid reapportioning space among other windows.
281
282 ** Added `M-DEL' (calc-pop-above) key, to DEL as LFD is to RET.
283
284 ** Added `{' and `}' to scroll vertically, analogous to `<' and `>'.
285
286 ** Added `m t' for "total" algebraic mode.
287
288 ** Added `d , \' option to group digits with "\,".
289
290 ** Improved support of "prime" accent in "eqn" language mode.
291
292 ** Changed macedit's read-kbd-macro to accept a string argument in Lisp.
293
294 ** Changed calc-check-defines to use a more concise run-hooks linkage.
295
296 ** Changed auto-why mode not to say [w=more] if next msg is not urgent.
297
298 ** Made `a d' able to differentiate "a?b:c" and "a_i" formulas.
299
300 ** Changed probability dist. functions to work with `a f' and `a d'.
301
302 ** Added special constants "phi" and "gamma".
303
304 ** Added "poly" function, simpler cousin of "gpoly".
305
306 ** Added "pdeg", "plead", "pcont", "pprim"; cleaned up "pdiv" and "pgcd".
307
308 ** Added `a p' command for polynomial interpolation.
309
310 ** Added `a I' command for numerical integration; made IntegLimit variable.
311
312 ** Added `a f' to factor polynomials; moved old `a f' to `a "'.
313
314 ** Added `a a' to do partial fraction decompositions.
315
316 ** Improved `a i' to integrate many more kinds of formulas.
317
318 ** Modified `a P' to find numerical roots of high-degree polynomials.
319
320 ** Modified `c 0' through `c 9' to convert int-valued floats to integers.
321
322 ** Made sinh, arctanh, etc., expandable into exps/logs by `a f'.
323
324 ** Added more algebraic simplifications having to do with logs and exps.
325
326 ** Changed `s s', `s t', `s x', `s l' to accept an equation at prompt.
327
328 ** Changed `s i' not to store Decls if its value is the default, [].
329
330 ** Changed `s i' to store in `d O' language mode if in Normal or Big mode.
331
332 ** Rearranged `V M'/`V R' matrix mapping modes.
333
334 ** Added <#1+#2> notation for lambda expressions.
335
336 ** Extended `b l' and other binary shifts to have a 2-argument version.
337
338 ** Changed `u c' and `u t' to give unitless result for unitless input.
339
340 ** Changed sqrt(1-cos(x)^2)-to-sin(x) to be an unsafe simplification.
341
342 ** Improved simplification of sqrts, e.g., sqrt(a^2 x + a^2 y).
343
344 ** Changed solver to treat (x-a)(x-b)(x-c) more intelligently.
345
346 ** Changed Pascal language mode to use "$FFFF" for hexadecimal numbers.
347
348 ** Added support for non-decimal display of floats.
349
350 ** Changed `p' to refresh stack display if current float format uses it.
351
352 ** Changed Big mode to use subscript notation for log10(x), log(x,b), r#nnn.
353
354 ** Changed Big mode to format deriv(u,x) and tderiv(u,x) as du/dx.
355
356 ** Changed Big mode to format integ(1/x,x) as "dx/x" instead of "1/x dx".
357
358 ** Added "tty" output type for graphics commands.
359
360 ** Documented Calc's random number generation algorithm in the manual.
361
362 ** Fixed a bug involving having "(setq calc-timing t)" in .emacs.
363
364 ** Fixed a bug that incorrectly parsed "|x| - 1" in TeX mode.
365
366 ** Fixed bugs and made improvements in `a R' when widening the guess.
367
368 ** Fixed a bug that where `a S' didn't solve (x - a)^2 = (x - b)^2.
369
370 ** Fixed a bug that sometimes crashed `a P' on systems of equations.
371
372 ** Fixed a bug that prevented `b p' (calc-pack-bits) from working.
373
374 ** Fixed some bugs in which certain functions didn't get autoloaded.
375
376 ** Fixed a bug in which the date <1/1/13> was incorrectly parsed.
377
378 ** Fixed a bug which prevented `j D' from expanding (a+b)/c.
379
380 ** Fixed a bug in solver: bad inverses for sinh and cosh.
381
382 ** Fixed a bug in math-possible-signs that failed for x*0.
383
384 ** Fixed a bug where sqrt(-a) was rewritten sqrt(a)*i even if a<0.
385
386 ** Fixed a bug in line breaker when first "word" of line was too long.
387
388 ** Worked around a makeinfo bug that handled @end group/@group badly.
389
390 \f
391 * Version 2.00 alpha 3:
392
393 ** Changed logic for locating component .elc files to be even smarter.
394
395 ** Changed "make install" to "make compile"; added different "make install".
396
397 ** Improved "make compile" to check file dates and compile only when needed.
398
399 ** Made output of "make compile" in batch mode more compact and readable.
400
401 ** Replaced "Quick Overview" in manual with "Demonstration of Calc".
402
403 ** Changed to use keymaps for dispatching M-# and h prefix keys.
404
405 ** Added TAGS target to the Calc Makefile.
406
407 ** Removed most doc strings from functions; new help commands are better.
408
409 ** Got rid of some crufty "fset" calls that were cluttering the code.
410
411 ** Split calc-grab-region into two functions, calc-grab-region/-rectangle.
412
413 ** Swapped positions of stack and trail in full-calc-keypad display.
414
415 ** Improved line-breaking algorithm for displaying long formulas.
416
417 ** Improved display of control characters in vectors shown as strings.
418
419 ** Changed `d o' to allow fraction format to specify desired denominator.
420
421 ** Changed `M-# y' to respect overwrite mode in target buffer.
422
423 ** Added `H' prefix to display-mode commands to suppress stack refresh.
424
425 ** Changed "calc-why" mechanism to display urgent messages automatically.
426
427 ** Handled taking derivatives of symbolic integrals and vice-versa.
428
429 ** Handled integrating vectors of formulas.
430
431 ** Incorporated Ewerlid's polynomial division and GCD functions into Calc.
432
433 ** Improved algebraic operations on "mod" forms, esp. polynomials.
434
435 ** Added some more financial functions (sln, syd, ddb).
436
437 ** Added nest, anest, fixp, and afixp (`H V R' and `H V U') functions.
438
439 ** Added `a .' (calc-remove-equal) command to take apart equations.
440
441 ** Generalized dfact to work for negative odd integers; added !! syntax.
442
443 ** Changed `k f' to factor 1, 0, and negative integers.
444
445 ** Changed `u M', etc., to accept +/- and [ .. ] forms as distributions.
446
447 ** Changed `g q' to remove *Gnuplot Commands/Trail* window if present.
448
449 ** Added support for Francois Pinard's "dumb terminal" driver for GNUPLOT.
450
451 ** Added ":: remember" feature for rewrite rules.
452
453 ** Changed rewrites to let pattern "a*b" match "x/2" with a=x, b=1/2.
454
455 ** Added ability to put function names like "simplify" in rewrite schedule.
456
457 ** Added "Rewrites Tutorial" to the manual.
458
459 ** Changed ` to bind RET as newline instead of finish if editing a vector.
460
461 ** Added some new exercises to the List Tutorial.
462
463 ** Changed `Z F', `V M', etc. not to remove stored vars from def arg list.
464
465 ** Added parsing for /1, 2, 3/ notation for Fortran mode vectors.
466
467 ** Added a "%%" syntax for comments in formulas being read.
468
469 ** Fixed a bug in which failing `h k' removed an existing Info window.
470
471 ** Fixed a bug in `j /' operating on subformulas like "a + b".
472
473 ** Fixed a bug in which "inf = inf" undesirably evaluated to 1.
474
475 ** Fixed a bug that simplified "0 = 1 + a + 2" to "0 = a".
476
477 ** Fixed a bug that failed for rewrite patterns like "fib(1 ||| 2)".
478
479 ** Fixed a bug that arose because rewrite programs are non-reentrant.
480
481 \f
482 * Version 2.00 alpha 2:
483
484 ** Changed LFD terminating algebraic entry to push in no-simplify mode.
485
486 ** Changed so that `K -' interprets `-' as calc-minus, not neg prefix arg.
487
488 ** Improved `h c' command to understand all Calc key sequences.
489
490 ** Fixed problems with DistribRules, NegateRules, and FitRules.
491
492 ** Fixed several bad node pointers in the manual.
493
494 ** Fixed a bug in `h C-w' when used with makeinfo-formatted manuals.
495
496 ** Fixed a bug in sqrt(-1) when Polar and HMS modes are enabled.
497
498 ** Fixed/improved dscalar and deven functions; added dodd.
499
500 ** Fixed a bug in polynomial handling that also affected sum(sin(k),k,1,n).
501
502 ** Fixed various other glitches in the manual.
503
504 \f
505 * Version 2.00 alpha 1:
506
507 ** Calc's tar file now creates a calc-(version) directory to unpack into.
508
509 ** Calc now comes with a Makefile; install with "make install".
510
511 ** Calc now comes already split into many files; installation is much simpler.
512
513 ** Changed base file name of the manual from "calc-info" to "calc.info".
514
515 ** Key binding for `M-# w' was documented but not implemented.
516
517 ** Bound M-# ' to be synonymous with `M-# f' (used to be `M-# q').
518
519 ** Changed M-# M-# to use last interface of C or K; E no longer counts.
520
521 ** Changed `i' (and `M-# i') not to return to Top node unnecessarily.
522
523 ** Changed `h' to be a prefix key with various help commands.
524
525 ** Changed `s' to be a prefix key with various store and recall commands.
526
527 ** Keys `i', `r', and `l' are obsolete (moved to `h' and `s' prefixes).
528
529 ** Rearranged `K', `X', and `M-RET' keys; `K' is now calc-keep-args.
530
531 ** Changed quick-calc to display input formula as well as output if room.
532
533 ** Changed quick-calc to interact with the editing buffer and kill ring.
534
535 ** Created pack, unpack, unpackt function equivalents of `v p', `v u'.
536
537 ** Changed to expand (a/b)^x to a^x/b^x only if b > 0 (not if a > 0).
538
539 ** Changed math-possible-signs to understand sqrt function.
540
541 ** Changed Z [, rewrites to consider any provably non-zero value as true.
542
543 ** Changed normal language modes to accept ** as a synonym for ^.
544
545 ** Added "maple" language mode.
546
547 ** Changed, e.g., Mathematica "(2 + 3 I)^(1.23*10^20)" to include parens.
548
549 ** Generalized math-compose-big properties for all language modes.
550
551 ** Introduced "string" and other function for composing expressions.
552
553 ** Changed many recursive vector routines to use loops instead.
554
555 ** Added evalv, evalvn function equivalents to `=', `N'.
556
557 ** Changed "expr =>" not to evaluate at all if in no-simplify mode.
558
559 ** Redesigned user interface of `a F' (calc-curve-fit) command.
560
561 ** Added "phase" feature to the rewrite rule system.
562
563 ** Added "&&&", "|||", "!!!" to the rewrite rule system.
564
565 ** Introduced a new notation for rewrites: LHS := RHS :: COND.
566
567 ** Changed `a r' (but not `j r') to repeat 100 times by default.
568
569 ** Integrated EvalRules more cleanly into the default simplifications.
570
571 ** Added `H v l' [mdims] to measure the dimensions of a matrix.
572
573 ** Changed `u c' to interpret "/units" as "1/units".
574
575 ** Added `u a' to adjust unit prefix letters automatically.
576
577 ** Changed `u s' to enable scalar mode while simplifying.
578
579 ** Changed `c f' [pfloat] not to float integer powers or subscripts.
580
581 ** Added a three-argument form for the "hms" function.
582
583 ** Changed, e.g., sin(90) degrees to produce 1 instead of 1.0.
584
585 ** Changed symbolic mode to prefer sqrt(int): abs([1 2 3]) => sqrt(14).
586
587 ** Enhanced solver to handle, e.g., x + 1/x = a; exp(x) + exp(-x) = a.
588
589 ** Enhanced simplifier to handle, e.g., exp(a+2) / e^a => e^2.
590
591 ** Enhanced `a s' to simplify sqrt(x) - x^1:2 and exp(x) - e^x to 0.
592
593 ** Added -(a + b) to -a - b as a default simplification.
594
595 ** Added rules for differentiating sum() and prod() functions.
596
597 ** Added a few more energy units (due to Przemek Klosowski).
598
599 ** Added overflow/underflow checking for all floating-point arithmetic.
600
601 ** Extended error forms to work with complex numbers.
602
603 ** Generalized GCD to handle fractional arguments.
604
605 ** Changed graphics routines to evaluate "x" values, e.g., [-pi .. pi].
606
607 ** Added `g q', like `g K' but without viewing the Gnuplot Trail.
608
609 ** Changed `g p' and `V M' to display better "Working..." messages.
610
611 ** Modified `M-# g' to be more robust about grabbing formulas.
612
613 ** Added `Y' prefix key reserved for user-written extensions.
614
615 ** Added calc-load-hook and calc-ext-load-hook.
616
617 ** Prevented calc-install from leaving large ~ files behind.
618
619 ** Changed @bullet to @bullet{} in manual to conform to texinfo spec.
620
621 ** Rearranged some chapters in the manual to be a bit more logical.
622
623 ** Added calc-split-summary command.
624
625 ** Fixed several bugs in embedded mode.
626
627 ** Fixed a bug in calc-vector-covariance that required a prefix arg.
628
629 ** Fixed a bug that prevented parsing "a=>" with no right-hand side.
630
631 ** Fixed a bug which allowed incorrectly dividing a vector by a vector.
632
633 ** Fixed a bug formatting sum(...)^2 in Big mode.
634
635 ** Fixed a bug that prevented Calc from deleting old graphics temp files.
636
637 ** Fixed some typos calling calc-inverse-func instead of calc-invert-func.
638
639 ** Fixed bugs in the derivatives of conj, deg, and rad; added re, im.
640
641 ** Fixed a bug where (r;theta) parsed as r exp(theta i) even in Deg mode.
642
643 ** Fixed a bug which gave wrong answer for exp of a polar complex number.
644
645 ** Fixed a bug in `Z F' that failed if formula used non-arg variables.
646
647 ** Fixed a bad pointer to Info node "Assignments in Embedded Mode".
648
649 ** Fixed several errors in the Calc Summary.
650
651 \f
652 * Version 1.08 beta 1:
653
654 ** Calc's copyright has been assigned to FSF, for inclusion in Emacs 19!
655
656 ** Changed M-# to be a two-key sequence; use M-# M-# to start Calc now.
657
658 ** Rewrote and expanded the introductory chapter of the manual.
659
660 ** Added a key and function summary to the manual.
661
662 ** Changed the manual to take better advantage of TeX's math formatting.
663
664 ** Changed manual to be printable in @smallbook format.
665
666 ** Added "calc-embedded" mode.
667
668 ** Added "=>" [evalto] operator.
669
670 ** Added facilities for date and date/time arithmetic.
671
672 ** Added a set of financial functions (pv, fv, etc.).
673
674 ** Added infinite quantities inf, uinf, and nan (plus infinite intervals).
675
676 ** Added "EvalRules", "SimpRules", and "ExtSimpRules" variables.
677
678 ** Added sum and product commands `a +', `a -', `a *', `a T'.
679
680 ** Enhanced `a S' and `a P' to solve systems of equations.
681
682 ** Enhanced solver to handle eqns like sin(x) = cos(2 x), sqrt(x) + x = 1.
683
684 ** Added `a M' (calc-map-equation) command.
685
686 ** Added new statistical functions: mean, standard deviation, etc.
687
688 ** Added line, polynomial, and curve fitting commands (`a L' and `a F').
689
690 ** Added support for composite units, e.g., "mi+ft+in".
691
692 ** Enhanced "Big" mode to format square roots, choose, and powers better.
693
694 ** Enhanced "Big" mode to display fractions in large notation.
695
696 ** Added several alternate formats for matrix display.
697
698 ** Changed TeX mode to write "(1 + x^2)" instead of "\left(1 + x^2\right)".
699
700 ** Added support for relational operators in TeX and FORTRAN modes.
701
702 ** Added recognition of accents like \dot, \tilde, \underline in TeX mode.
703
704 ** Added "eqn" language mode.
705
706 ** Added extra control over display justification with `d <', `d =', `d >'.
707
708 ** Added calc-left-label and calc-right-label (`d {', `d }').
709
710 ** Added "nn%" syntax for algebraic formulas; equivalent to "nn * .01".
711
712 ** Added input syntaxes like a = b = c, a != b != c, a <= b < c.
713
714 ** Changed "_" to mean subscripts; old use of "_" in vars is now "#".
715
716 ** Introduced "matrix mode" and "scalar mode" (`m v').
717
718 ** Introduced generic identity matrices (idn(1)).
719
720 ** Added a method for declaring variables to be real, integer, > 0, etc.
721
722 ** Added `Z S' command for editing stored value of a variable.
723
724 ** Added "subst" algebraic function equivalent to the `a b' command.
725
726 ** Added `a f' command, changed deriv/integ/solve-for to use it.
727
728 ** Improved `a s' to simplify (x + y) (y + x) to (x + y)^2.
729
730 ** Improved `a s' to simplify i^2 to -1.
731
732 ** Improved `a s' to simplify, e.g., sin(pi/3) in Symbolic mode.
733
734 ** Improved `a s' to simplify sqrt(8) to 2 sqrt(2), 1/sqrt(2) to sqrt(2)/2.
735
736 ** Moved sin(arccos(x)) from `a e' to `a s'; not unsafe after all!
737
738 ** Changed (x y)^z => x^z y^z to be a usually-unsafe simplification.
739
740 ** Added thorough documentation of `a s' and `a e' to the manual.
741
742 ** Improved `a c' to collect "f(a)" even if "a" also appears elsewhere.
743
744 ** Introduced lin, linnt, islin, islinnt functions for linearity testing.
745
746 ** Improved `a x' to use binomial theorem to give simpler answers.
747
748 ** Improved `j D' to distribute powers of sums: (a + b)^n.
749
750 ** Improved `j M' to merge products of powers (may need no-simplify mode).
751
752 ** Changed to use defvar for DistribRules etc. so `Z V' works with them.
753
754 ** Improved `j *' and `j /' to work properly in a few more cases.
755
756 ** Improved `V R' to use identity value when reducing empty vectors.
757
758 ** Improved `v p' and `v u' to support more complex packing operations.
759
760 ** Disabled automatic simplification of sqrt(2)/2 to 1/sqrt(2).
761
762 ** Bound SPC and RET to press, TAB to next-menu in *Calc Keypad* buffer.
763
764 ** Added C-u ' to do algebraic entry with language mode forced to normal.
765
766 ** Added "$1", "$2", etc. input notation for algebraic entry.
767
768 ** Changed unary operators like `n', `&' to treat neg prefix args like RET.
769
770 ** Changed ` (calc-edit) to show full precision regardless of float format.
771
772 ** Enhanced quick-calc to display integers in several formats.
773
774 ** Documented `g H' (calc-graph-hide) command (had been left from manual).
775
776 ** Enhanced floor/ceil/trunc/round in several ways.
777
778 ** Added rounde and roundu functions.
779
780 ** Changed `c 1' through `c 9' to change small floats to 0.0; added `c 0'.
781
782 ** Enhanced set operations to work on sets of intervals.
783
784 ** Fixed erf(0), utpn(x,x,y), and arccosh(-1) to work properly.
785
786 ** Changed complex arctan and arctanh to follow Steele 2nd edition.
787
788 ** Expanded "Branch Cuts" section of the manual with some useful tables.
789
790 ** Rearranged order of words in mode line to be a bit more logical.
791
792 ** Changed `m N' (num-simplify) mode to evaluate constant vectors, too.
793
794 ** Changed `a r'/`j r' to prompt twice for separate LHS/RHS if necessary.
795
796 ** Enhanced `let(v,x)' in rewrites by allowing arbitrary patterns for v.
797
798 ** Changed cursor positioning in second prompt for `a b' (calc-substitute).
799
800 ** Changed `y' to omit line numbers more consistently.
801
802 ** Changed `o' (calc-realign) to reset horizontal scrolling to zero, also.
803
804 ** Added "pred" mode for calc-eval.
805
806 ** Added "calc-report-bug" as an alias for "report-calc-bug".
807
808 ** Added `Z T' and "calc-pass-errors" to aid debugging Calc-related code.
809
810 ** Added "calc-load-everything" (`m X' or `M-# L') command.
811
812 ** Enhanced calc-install to pre-build units table, CommuteRules, etc.
813
814 ** Changed Calc to interact more gracefully with load-path.
815
816 ** Changed Lisp Variable Index in manual to include user variables, too.
817
818 ** Fixed a bug that prevented calc-install from working under VMS.
819
820 ** Fixed a bug that sometimes crashed rewrites dealing with subtractions.
821
822 ** Fixed a bug that prevented `a S' from solving "3 - x = 1 + x"!
823
824 ** Fixed a bug in solver that crashed for certain cubics and quartics.
825
826 ** Fixed a bug in calc-simplify that crashed for equations and ineqs.
827
828 ** Fixed a bug which placed the "[" oddly in `d B' + `v /' mode.
829
830 ** Fixed a bug where finishing calc-edit improperly obeyed language mode.
831
832 ** Fixed a bug formatting (-1)^n in Big mode after selection commands.
833
834 ** Fixed a bug that got ">=" and "<=" backwards in rewrite conditions.
835
836 ** Fixed a bug that broke the `"x"' key in calc-keypad mode.
837
838 ** Fixed a bug in which `MAP$' in calc-keypad didn't display "Working...".
839
840 ** Fixed a bug where matrix division gave bad result for singular matrix.
841
842 ** Fixed a bug which closed Calc window if calc-grab-region got an error.
843
844 ** Fixed a bug where `a s' failed on formulas containing dimension errors.
845
846 ** Fixed a bug that caused `m F' to hang.
847
848 ** Fixed a bug in complex arithmetic that caused problems with solver.
849
850 ** Fixed a bug which raised intervals to interval powers incorrectly.
851
852 ** Fixed a bug in utpp/ltpp (order of arguments did not match the manual).
853
854 ** Fixed a bug in which `t y' rounded yanked data with old precision.
855
856 ** Fixed a bug in which "in(3, [3 .. 3))" returned true.
857
858 ** Fixed a bug which simplified abs(abs(x)) incorrectly.
859
860 ** Fixed a bug in which (a^2)^1:3 was unsafely simplified to a^2:3.
861
862 ** Fixed a bug in rewrite system which missed pattern "2 sin(x) cos(x)".
863
864 ** Fixed a bug in rewrite system which missed pattern "a - a cos(x)^2".
865
866 ** Fixed obsolete trail tags gsmp, gneg, ginv to jsmp, jneg, jinv.
867
868 ** Fixed some errors and made improvements in units table [Ulrich Mueller].
869
870 \f
871 * Version 1.07:
872
873 ** Added `m F' (calc-settings-file-name) command.
874
875 ** Added calc-autoload-directory variable.
876
877 ** Extended Z ` to accept a prefix argument.
878
879 ** Added keystrokes (v h, v k) for head, tail, cons.
880
881 ** Extended `v e' to accept a vector as the filler.
882
883 ** Changed `V M', `V R' to accept mapping-mode keys in uppercase, too.
884
885 ** Changed V M ' etc. to accept $, $$, ... as argument indicators.
886
887 ** Changed `t y' to accept a prefix argument.
888
889 ** Put in a cleaner and safer random number generator for `k r' et al.
890
891 ** Fixed a bug which completely broke `a r' command!
892
893 ** Fixed "0 * matrix" to generate a zero matrix instead of 0.
894
895 ** Fixed a bug in `a R' which sometimes caused it to crash.
896
897 ** Fixed a fatal typo in the TeX version of the manual.
898
899 ** Fixed a bug that prevented C-k, C-w, M-w from working in Trail buffer.
900
901 ** Fixed another bug in `Z P' command.
902
903 ** Fixed a bug in `u s' which incorrectly simplified subtractions.
904
905 ** Fixed an argument-name aliasing bug evaluating lambda( ) formulas.
906
907 ** Fixed overfull hboxes in the manual.
908
909 ** Fixed various other bugs in the manual.
910
911 \f
912 * Version 1.06:
913
914 ** Added "calc-keypad" mode for X window system users (try it!).
915
916 ** Improved "calc-eval" for calling/operating Calc from user-written Lisp.
917
918 ** Moved vector accumulate command to `V U' (old `H V R' still supported).
919
920 ** Added right-to-left reductions: `I V R' and `I V U'.
921
922 ** Added set operations on vectors: intersect, union, diff, xor.
923
924 ** Added `I v s' to remove a subvector from a vector.
925
926 ** Introduced `H |' to append two vectors with no magical special cases.
927
928 ** Introduced rhead, rtail, and rcons for isolating last vector element.
929
930 ** Changed `g p' to keep temp files around until data actually change.
931
932 ** Improved `a S' to solve many higher-order polynomial equations.
933
934 ** Added `a P' to produce a vector of all solutions to an equation.
935
936 ** Enhanced `a v' and `j v' to allow top-level-only evaluation.
937
938 ** Changed `j DEL' to delete a side of an eqn or ineq, leaving other side.
939
940 ** Fixed binding for keys `j 1' through `j 9'.
941
942 ** Introduced "let" marker in rewrite rules.
943
944 ** Enhanced the "sign" function to provide a two-argument version.
945
946 ** Changed "max-specpdl-size exceeded" error message to be user-friendly.
947
948 ** Put "<Aborted>" in the trail in above case and when user presses C-g.
949
950 ** Changed TeX mode to generate \ldots instead of \dots, recognize both.
951
952 ** Changed "sin(0)" etc. (for integer 0) to generate "0" instead of "0.".
953
954 ** Enhanced Programming Tutorial exercise 2.
955
956 ** Fixed an error in the answer to Types Tutorial exercise 3.
957
958 ** Fixed several bugs relating to head, tail, and cons functions.
959
960 ** Fixed some other minor typos in the manual.
961
962 ** Fixed several bugs in `Z P' (calc-user-define-permanent).
963
964 ** Fixed several bugs that broke the `g P' command.
965
966 \f
967 * Version 1.05:
968
969 ** Created a calc-install command to ease installation.
970
971 ** Added lots of exercises to the Tutorial section of the manual.
972
973 ** Added ability to select and operate on sub-formulas.
974
975 ** Substantially improved the algebraic rewrite-rule system.
976
977 ** Added a set of graphing commands that use GNUPLOT.
978
979 ** Added a command (`a R') for finding numerical roots to equations.
980
981 ** Added several new math functions, such as erf and Bessel functions.
982
983 ** Added key bindings for miscellaneous commands using the "f" prefix key.
984
985 ** Added lots of new vector operations, many of them in the spirit of APL.
986
987 ** Added more control over vector display, including an abbreviated mode.
988
989 ** Improved keyboard macro editing; added read-kbd-macro to macedit.el.
990
991 ** Introduced the `m S' (calc-shift-prefix) command.
992
993 ** Enhanced the calc-edit command in several ways.
994
995 ** Made it possible to hit ` (calc-edit) during numeric/algebraic entry.
996
997 ** Enhanced the calc-solve-for command to handle inequalities.
998
999 ** Enhanced calc-simplify to handle equations and inequalities.
1000
1001 ** Taught log10 and log to look for exact integer or rational results.
1002
1003 ** Added ability to take Nth roots directly.
1004
1005 ** Added "increment" and "decrement" commands for integers and floats.
1006
1007 ** Added "full-help" command, changed "h" key to invoke it.
1008
1009 ** Added special help for Inverse and Hyperbolic prefixes.
1010
1011 ** Added an optional prefix argument to `o' (calc-realign).
1012
1013 ** Changed `t s' and `t r' to use RET as the search exit key.
1014
1015 ** Made handling of operator keys for V M, V R, etc. more regular.
1016
1017 ** Improved TeX mode; added support for \matrix format.
1018
1019 ** Added a variant of `m a' mode that only affects ( and [ keys.
1020
1021 ** Fixed "Mismatch" message for algebraic entry of semi-open intervals.
1022
1023 ** Trimmed fat from calc.el to speed loading, moved more to calc-ext.el.
1024
1025 ** Fixed a bug in which minibuffer entry rounded to out-of-date precision.
1026
1027 ** Fixed a bug which crashed Calc 1.04 under Epoch.
1028
1029 ** Fixed a bug which messed up Calc Trail's mode line, among other things.
1030
1031 ** Fixed a bug which caused trail ">" to show only when in Trail buffer.
1032
1033 ** Fixed a bug in which "calc" called "calc-grab-region" with too few args.
1034
1035 ** Fixed bugs in both implementation and documentation of calc-perm.
1036
1037 ** Fixed a bug in which calc-simplify-extended always used radians.
1038
1039 ** Fixed a bug where calc-comma failed to override "polar" mode.
1040
1041 ** Fixed a bug doing mixed arithmetic on rectangular+polar complex numbers.
1042
1043 ** Fixed several bugs in transcendental functions with complex arguments.
1044
1045 ** Fixed a bug in which `a s' simplified "x / .5" to ".5 x".
1046
1047 ** Fixed numerous other bugs in various parts of Calc.
1048
1049 ** Completed the "Hooks" section of the "Internals" chapter of the manual.
1050
1051 \f
1052 * Version 1.04:
1053
1054 ** Included a copy of revision history (from README) in calc.el.
1055
1056 ** Added the "calc-split" feature to split calc-ext.el into smaller bits.
1057
1058 ** Changed calc-unpack to unpack floats and fractions, too.
1059
1060 ** Added "mant", "xpon", and "scf" functions for decomposing floats.
1061
1062 ** Fixed a bug in the "y" command with positive prefix arguments.
1063
1064 ** Rearranged binary shift/rotate command keys to be a bit more convenient.
1065
1066 ** Fixed a bug in which simplifying "(0/0) * 2" crashed with a Lisp error.
1067
1068 ** Made `H F' [ffloor] and friends faster for very large arguments.
1069
1070 ** Made calc-define-del more robust.
1071
1072 ** Handled pasting of data into the Calculator using the mouse under X.
1073
1074 ** Made overlay-arrow variables buffer-local to avoid interference.
1075
1076 ** Fixed a problem in which Calc Trail buffer got stuck after a C-x C-w.
1077
1078 \f
1079 * Version 1.03:
1080
1081 ** Changed math-choose to compute n-choose-m faster when m is large.
1082
1083 ** Fixed some problems with TeX mode.
1084
1085 ** Fixed a bug that prevented `b s' from working without a prefix argument.
1086
1087 ** Added "calc-eval" function.
1088
1089 ** Improved calc-grab-region.
1090
1091 \f
1092 * Version 1.02:
1093
1094 ** Fixed a bug in Tutorial: telephone pole height/distance were switched!
1095
1096 ** Fixed a few other things in the manual.
1097
1098 ** Added "full-calc" command.
1099
1100 ** Added "calc-insert-variables" (`Z I') command.
1101
1102 ** Quick Calc now works even if you are already in the minibuffer.
1103
1104 ** Fixed a bug in math-mul-bignum-digit which affected math-and, etc.
1105
1106 ** Definition of "Hectares" was wrong in units table.
1107
1108 ** Fixed a bug in calc-execute-kbd-macro concerning undo and refresh.
1109
1110 ** Bound "calc-undo" to `C-x u' as well as `C-_' and `U'.
1111 \f
1112 * Version 1.01:
1113
1114 ** Added a tutorial section to the manual.
1115
1116 ** Next and Prev for node Strings in the manual were reversed; fixed.
1117
1118 ** Changed "'bignum" in calc-isqrt-bignum-iter to "'bigpos".
1119
1120 ** Fixed a bug that prevented "$" from working during algebraic entry.
1121
1122 ** Fixed a bug caused by an X (last-X) command following a K (macro) cmd.
1123
1124 ** Fixed a bug in which K command incorrectly formatted stack in Big mode.
1125
1126 ** Added space between unary operators and non-flat compositions.
1127 (Otherwise, "-(a/b)" in Big mode blended the minus sign into the rule!)
1128
1129 ** Fixed formatting of (-1)^n in Big mode.
1130
1131 ** Fixed some problems relating to "not" operator in Pascal language mode.
1132
1133 ** Fixed several bugs relating to V M ' and V M $ sequences.
1134
1135 ** Fixed matrix-vector multiplication to produce a vector.
1136
1137 ** Introduced Z ` ... Z ' commands; renamed old Z ' to Z #.
1138
1139 ** Fixed various other bugs.
1140
1141 ** Added calc-settings-file variable suggested by C. Witty.
1142
1143 \f
1144 * Version 1.00:
1145
1146 ** First official release of Calc.
1147
1148 ** If you used the Beta test version (0.01), you will find that this
1149 version of Calc is over 50% larger than the original release.
1150 General areas of improvement include much better algebra features;
1151 operations on units; language modes; simplification modes; interval
1152 arithmetic; vector mapping and reduction. Other new commands include
1153 calc-fraction and calc-grab-region. The program has been split into
1154 two parts for faster loading, and the manual is more complete.
1155
1156 \f
1157 This file is part of GNU Emacs.
1158
1159 GNU Emacs is free software: you can redistribute it and/or modify
1160 it under the terms of the GNU General Public License as published by
1161 the Free Software Foundation, either version 3 of the License, or
1162 (at your option) any later version.
1163
1164 GNU Emacs is distributed in the hope that it will be useful,
1165 but WITHOUT ANY WARRANTY; without even the implied warranty of
1166 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1167 GNU General Public License for more details.
1168
1169 You should have received a copy of the GNU General Public License
1170 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
1171
1172 \f
1173 Local variables:
1174 mode: outline
1175 end: