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