You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
184 lines
9.0 KiB
184 lines
9.0 KiB
15 years ago
|
abakus, by Michael Pyne <michael.pyne@kdemail.net>
|
||
|
Version: 0.91
|
||
|
|
||
|
This is my attempt at creating a light-calculator based on Roberto Alsina's
|
||
|
initial usability suggestions, and based on the ideas of a few other KDE
|
||
|
hackers.
|
||
|
|
||
|
This software is distributed under the terms of the GNU GPL v2.
|
||
|
|
||
|
Synopsis:
|
||
|
$ tar xvjf abakus-0.91.tar.bz2
|
||
|
$ cd abakus-0.91
|
||
|
$ ./configure && make && make install
|
||
|
$ abakus
|
||
|
|
||
|
Type away, and press Enter to see the result.
|
||
|
|
||
|
Changes since 0.90:
|
||
|
* Add ability to remove all functions and variables to the context menus of
|
||
|
their respective list boxes.
|
||
|
* Convert out-of-range numbers to NaN.
|
||
|
* Accept "," as a decimal separator for the benefit of European users.
|
||
|
* Use correct decimal separator (per KLocale settings) in output.
|
||
|
* For long results, show the beginning instead of the end of the result,
|
||
|
since the beginning is the most significant part of the result.
|
||
|
|
||
|
Changes since 0.85:
|
||
|
* You now have the option of using the GNU Multiple Precision library for
|
||
|
high-precision mathematics. It requires the MPFR library to also be
|
||
|
installed (normally comes with GNU MP 4.x). It is used automatically if
|
||
|
detected.
|
||
|
* Jes Hall has contributed DocBook documentation to make Abakus integrate into
|
||
|
KDE even more tightly. Thanks, Jes!
|
||
|
* User defined functions can now be defined over.
|
||
|
* Error handling with deriv() function improved.
|
||
|
* Ariya Hidayat's name was misspelled everywhere in Abakus. Sorry, Ariya. :(
|
||
|
* Speaking of Ariya, Abakus now uses the impressive user interface code from
|
||
|
his SpeedCrunch calculator (http://speedcrunch.berlios.de/). This includes
|
||
|
the Calc-as-you-Type tooltip, the function and variable dropdown, and
|
||
|
syntax highlighting. It's not configurable at this point, expect that in
|
||
|
the next release.
|
||
|
* You can use the F6 key to select the expression editor if you're a big fan
|
||
|
of the keyboard.
|
||
|
* Raising negative numbers to integral powers should work with the internal
|
||
|
high-precision library now.
|
||
|
* You can no longer deselect the current precision menu item.
|
||
|
* Fix crash bug when a user-defined function refers to another user-defined
|
||
|
function, and then you remove or edit the function it referred to.
|
||
|
* Add exact numerical derivatives for all functions supported.
|
||
|
* Added the asinh, acosh, and atanh functions.
|
||
|
* Fixed bug with loading of prior compact mode status.
|
||
|
* Fixed bug where result text had wrong precision when you changed the
|
||
|
precision and tried drag-and-drop.
|
||
|
* Drag-and-drop improvements.
|
||
|
* Fixed bug where Custom Precision menu entry was checked even if you canceled
|
||
|
the dialog.
|
||
|
* Made hyperbolic functions consistently ignore trigonometric mode. (Both
|
||
|
Degrees and Radians make no sense for hyperbolic trig).
|
||
|
* Whew! :)
|
||
|
|
||
|
v0.85 adds a lot:
|
||
|
* Improvements to the configure script. Since I didn't end up using libCLN it
|
||
|
was mostly for naught, but the changes will be useful for the future.
|
||
|
* abakus now uses the high-precision math routines from Ariya Hidayat's
|
||
|
SpeedCrunch program. Thanks, Ariya!
|
||
|
* High precision arithmetic can have between 0 and 75 digits of precision.
|
||
|
* Support for approximate derivatives. For most functions the derivatives will
|
||
|
be numerically accurate. For those functions where I didn't feel like typing
|
||
|
in the exact form of the derivative an approximation is used instead.
|
||
|
* Implicit multiplication has been added to the parser. That means you can
|
||
|
type stuff like "3 sin pi" without having to manually add the * in between
|
||
|
3 and sin. This also works with numbers and variables, and numbers and
|
||
|
parenthesized expressions.
|
||
|
* GUI changes. The main result view now uses KListView, so it gains tooltip
|
||
|
support for long answers for free, along with a bevy of other improvements.
|
||
|
* You can right-click on an answer and copy it to the clipboard.
|
||
|
* Corrected information in the about box.
|
||
|
* Restarting abakus with compact mode enabled should is much improved.
|
||
|
|
||
|
v0.80.2 fixed an issue with the configure script for people who don't have
|
||
|
exactly the same version of Python I do, and forcibly prevents flex/bison
|
||
|
errors.
|
||
|
|
||
|
v0.80.1 fixed an issue with the configure script for people who don't already
|
||
|
have scons installed.
|
||
|
|
||
|
Major changes since 0.76:
|
||
|
* There is no more C code to interface between the parser and program.
|
||
|
* RPN mode is improved. Now the stack is retained between calls, and there
|
||
|
are a few commands only in RPN mode:
|
||
|
1. pop - Return the top of the stack.
|
||
|
2. clear - Clear the stack.
|
||
|
* bksys is used instead of the custom Makefiles.
|
||
|
* Lots of code cleanups, including license headers.
|
||
|
* The nifty drag-and-drop image looks more rectangular, and is used with the
|
||
|
two listviews on the right as well.
|
||
|
* Improved error checking, with messages that should hopefully be more
|
||
|
descriptive.
|
||
|
|
||
|
Major changes since 0.75:
|
||
|
* Reorder internal macro so that functions are declared *before* they're
|
||
|
referenced, which helps build the program on systems with math.h files that
|
||
|
don't export the long double version of their math functions.
|
||
|
* Hitting a number or letter key right after evaluating an expression in RPN
|
||
|
mode automatically prepends the 'ans' variable, which was a feature of the
|
||
|
Normal mode.
|
||
|
|
||
|
Major changes since 0.70:
|
||
|
* Build system switched (somehow) to using qmake. The parser and lexer are
|
||
|
still included, so bison and flex are still not required. Hopefully this
|
||
|
will improve the ease of building. Of course, this means no more colored
|
||
|
make output.
|
||
|
* Changed most of the keyboard shortcuts to use Shift + Alt + foo instead of
|
||
|
Alt + foo since that was interfering with the menu bar.
|
||
|
* RPN mode!! If you enable RPN mode, then your expressions will be evaluated
|
||
|
using the Reverse Polish Notation popular with users of HP calculators. Note
|
||
|
that although you can use values and functions while in RPN mode, you cannot
|
||
|
set or remove them from the expression editor like you can in normal mode.
|
||
|
* abakus will display a small token starting with a dollar sign ($) in italics
|
||
|
next to results. You can use these tokens to quickly reference a result in
|
||
|
your expression. The most recent result is always $0, with the number
|
||
|
increasing from most recent to least recent result. For example, typing
|
||
|
2 <Enter> 3 <Enter> $0 ^ $1 <Enter> would give a result of 9.
|
||
|
* You can right click on functions and values in the list views to remove them
|
||
|
from the GUI.
|
||
|
* Changed the result items to use word wrapping when needed to fit all the
|
||
|
text.
|
||
|
* Very small DCOP interface.
|
||
|
* More code cleanup.
|
||
|
* Added a .desktop file.
|
||
|
* Test client removed again.
|
||
|
* Double-clicking on an error message (or OK message) no longer inserts them
|
||
|
into the edit box.
|
||
|
|
||
|
Major changes since 0.61:
|
||
|
* User defined Functions.
|
||
|
* Save state of program between runs.
|
||
|
* Miscellaneous fun stuff.
|
||
|
|
||
|
Currently implemented features:
|
||
|
* Parser built using flex and bison. The generated files are included so it
|
||
|
should compile fine for you.
|
||
|
* Fully C++. The parser and lexer code require C++ to compile.
|
||
|
* Supports several built-in functions:
|
||
|
- sin, cos, tan, sinh, cosh, tanh, asin, acos, atan in either radian or
|
||
|
degree mode.
|
||
|
abs, exp (e raised to the given power), ln, log (base 10),
|
||
|
sqrt, ceil, floor
|
||
|
* Supported operators: +, -, *, /, ^ (or **).
|
||
|
* Includes a window showing the values and user-defined functions you have.
|
||
|
* Predefined constants: pi, and e (Euler' constant).
|
||
|
* You can assign to variables by using an expression of the form:
|
||
|
identifier = expression. You can then reuse these variables later.
|
||
|
* You can create user-defined functions of one variable using the syntax
|
||
|
set foo(var) = <expr>, where <expr> calculates the value in terms of var.
|
||
|
* You can delete user-defined variables by doing: remove var
|
||
|
* You can delete user-defined functions by doing: remove foo(). Notice that
|
||
|
the variable is NOT included in that expression.
|
||
|
* Functions and variables are saved on exit, and then loaded when abakus is
|
||
|
started again.
|
||
|
* The ans variable contains the result of the last computation.
|
||
|
* Pressing +, -, *, or / immediately after your last computation automatically
|
||
|
inserts ans for you, saving you typing.
|
||
|
* A compact mode for the program.
|
||
|
* Operator precedence should be correct, including the right association of
|
||
|
the power operator. So, 2 ^ 3 ^ 2 == 512, just as it does when you write
|
||
|
it out. You can use parentheses to force precedence.
|
||
|
* Parentheses are not required around functions. So, sin 3 is a valid
|
||
|
expression. Note that sin 3 + cos 4 translates internally as (sin 3) +
|
||
|
(cos 4), not as sin (3 + cos (4)).
|
||
|
* I took some pains to try to make things like 3 + -2 work right.
|
||
|
* inf and nan are accepted as numeric input for completeness.
|
||
|
* abakus will automatically add ) characters to the end of the expression as
|
||
|
needed to balance your expression. This means that expressions like
|
||
|
sin (cos (2 + 3 will evaluate with no error.
|
||
|
* A rudimentary RPN mode is included. Most everything works, except for
|
||
|
derivatives and creating functions or new variables.
|
||
|
|
||
|
Bugs:
|
||
|
* More functions would be nice.
|
||
|
* The lexer assumes that the decimal marker is a period. (.) I'm not exactly
|
||
|
sure how to cleanly solve this problem with flex. :-(
|
||
|
* Documentation could be better.
|