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