Bash Cures Cancer
Learn the UNIX/Linux command line

Home     Man Pages     SpamDefeator


XCALC(1)							     XCALC(1)



NAME
       xcalc - scientific calculator for X

SYNOPSIS
       xcalc [-stipple] [-rpn] [-toolkitoption...]

DESCRIPTION
       xcalc  is a scientific calculator desktop accessory that can emulate a
       TI-30 or an HP-10C.

OPTIONS
       xcalc accepts all of the standard toolkit command line  options	along
       with two additional options:


       -stipple
	       This  option  indicates	that the background of the calculator
	       should be drawn using a stipple of the  foreground  and	back-
	       ground  colors.	 On  monochrome displays improves the appear-
	       ance.


       -rpn    This option indicates that Reverse Polish Notation  should  be
	       used.   In  this mode the calculator will look and behave like
	       an HP-10C.  Without this flag, it will emulate a TI-30.

OPERATION
       Pointer Usage: Operations may be performed with pointer button  1,  or
       in  some	 cases, with the keyboard.  Many common calculator operations
       have keyboard accelerators.  To quit, press pointer button 3 on the AC
       key of the TI calculator, or the ON key of the HP calculator.

       Calculator  Key	Usage  (TI mode): The numbered keys, the +/- key, and
       the +, -, *, /, and = keys all do exactly what you would	 expect	 them
       to.   It should be noted that the operators obey the standard rules of
       precedence.  Thus, entering "3+4*5=" results in "23", not  "35".	  The
       parentheses   can   be	used   to   override   this.	For  example,
       "(1+2+3)*(4+5+6)=" results in "6*15=90".

       The entire number in the calculator display can be selected, in	order
       to paste the result of a calculation into text.

       The  action  procedures associated with each function are given below.
       These are useful if you are interested in defining a  custom  calcula-
       tor.   The  action used for all digit keys is digit(n), where n is the
       corresponding digit, 0..9.

       1/x	 Replaces the number in the display with its reciprocal.  The
		 corresponding action procedure is reciprocal().

       x^2	 Squares the number in the display.  The corresponding action
		 procedure is square().

       SQRT	 Takes the square root of the number  in  the  display.	  The
		 corresponding action procedure is squareRoot().

       CE/C	 When  pressed once, clears the number in the display without
		 clearing the state of the machine.  Allows you to re-enter a
		 number	 if you make a mistake.	 Pressing it twice clears the
		 state, also.  The corresponding action procedure for TI mode
		 is clear().

       AC	 Clears	 the display, the state, and the memory.  Pressing it
		 with the third pointer button turns off the  calculator,  in
		 that  it  exits  the program.	The action procedure to clear
		 the state is off(); to quit, quit().

       INV	 Invert function.   See	 the  individual  function  keys  for
		 details.  The corresponding action procedure is inverse().

       sin	 Computes  the	sine  of the number in the display, as inter-
		 preted by  the	 current  DRG  mode  (see  DRG,	 below).   If
		 inverted, it computes the arcsine.  The corresponding action
		 procedure is sine().

       cos	 Computes the cosine, or arccosine when inverted.  The corre-
		 sponding action procedure is cosine().

       tan	 Computes the tangent, or arctangent when inverted.  The cor-
		 responding action procedure is tangent().

       DRG	 Changes the DRG mode,	as  indicated  by  'DEG',  'RAD',  or
		 'GRAD' at the bottom of of the calculator ''liquid crystal''
		 display.  When in 'DEG' mode, numbers	in  the	 display  are
		 taken as being degrees.  In 'RAD' mode, numbers are in radi-
		 ans, and  in  'GRAD'  mode,  numbers  are  in	grads.	 When
		 inverted, the DRG key has a feature of converting degrees to
		 radians to grads and vice-versa.  Example:  put the calcula-
		 tor  into  'DEG'  mode, and enter "45 INV DRG".  The display
		 should now show something  along  the	lines  of  ".785398",
		 which is 45 degrees converted to radians.  The corresponding
		 action procedure is degree().

       e	 The constant 'e'.  (2.7182818...).  The corresponding action
		 procedure is e().

       EE	 Used  for entering exponential numbers.  For example, to get
		 "-2.3E-4" you'd enter "2 . 3 +/- EE 4 +/-".  The correspond-
		 ing action procedure is scientific().

       log	 Calculates  the  log (base 10) of the number in the display.
		 When inverted, it raises "10.0" to the number	in  the	 dis-
		 play.	 For  example,	entering "3 INV log" should result in
		 "1000".  The corresponding action procedure is	 logarithm().

       ln	 Calculates  the  log  (base e) of the number in the display.
		 When inverted, it raises "e" to the number in	the  display.
		 For example, entering "e ln" should result in "1".  The cor-
		 responding action procedure is naturalLog().

       y^x	 Raises the number on the left to the power of the number  on
		 the right.  For example "2 y^x 3 =" results in "8", which is
		 2^3.  For a further example, "(1+2+3) y^x (1+2) =" equals "6
		 y^x  3" which equals "216".  The corresponding action proce-
		 dure is power().

       PI	 The  constant	'pi'.	(3.1415927....)	  The	corresponding
		 action procedure is pi().

       x!	 Computes  the	factorial  of the number in the display.  The
		 number in the display must be an integer in the range 0-500,
		 though,  depending  on	 your math library, it might overflow
		 long before that.  The	 corresponding	action	procedure  is
		 factorial().

       (	 Left parenthesis.  The corresponding action procedure for TI
		 calculators is leftParen().

       )	 Right parenthesis.  The corresponding action  procedure  for
		 TI calculators is rightParen().

       /	 Division.  The corresponding action procedure is divide().

       *	 Multiplication.   The corresponding action procedure is mul-
		 tiply().

       -	 Subtraction.  The corresponding  action  procedure  is	 sub-
		 tract().

       +	 Addition.  The corresponding action procedure is add().

       =	 Perform  calculation.	 The  TI-specific action procedure is
		 equal().

       STO	 Copies the number in the display  to  the  memory  location.
		 The corresponding action procedure is store().

       RCL	 Copies	 the  number from the memory location to the display.
		 The corresponding action procedure is recall().

       SUM	 Adds the number in the display to the number in  the  memory
		 location.  The corresponding action procedure is sum().

       EXC	 Swaps	the number in the display with the number in the mem-
		 ory location.	The corresponding action procedure for the TI
		 calculator is exchange().

       +/-	 Negate;  change sign.	The corresponding action procedure is
		 negate().

       .	 Decimal point.	 The action procedure is decimal().


       Calculator Key Usage (RPN mode): The number keys, CHS  (change  sign),
       +, -, *, /, and ENTR keys all do exactly what you would expect them to
       do.  Many of the remaining keys are the same as in TI mode.  The	 dif-
       ferences are detailed below.  The action procedure for the ENTR key is
       enter().


       <-	 This is a backspace key that can be used if you make a	 mis-
		 take while entering a number.	It will erase digits from the
		 display.  (See BUGS).	Inverse backspace will	clear  the  X
		 register.  The corresponding action procedure is back().

       ON	 Clears	 the display, the state, and the memory.  Pressing it
		 with the third pointer button turns off the  calculator,  in
		 that  it exits the program.  To clear state, the action pro-
		 cedure is off; to quit, quit().

       INV	 Inverts the meaning of the function keys.  This would be the
		 f key on an HP calculator, but xcalc does not display multi-
		 ple legends on each key.  See the individual  function	 keys
		 for details.

       10^x	 Raises	 "10.0"	 to the number in the top of the stack.	 When
		 inverted, it calculates the log (base 10) of the  number  in
		 the  display.	 The  corresponding  action procedure is ten-
		 power().

       e^x	 Raises "e" to the number in the  top  of  the	stack.	 When
		 inverted,  it	calculates  the log (base e) of the number in
		 the display.  The action procedure is epower().

       STO	 Copies the number in the top of the stack to a memory	loca-
		 tion.	There are 10 memory locations.	The desired memory is
		 specified by following this key with a digit key.

       RCL	 Pushes the number from the specified  memory  location	 onto
		 the stack.

       SUM	 Adds  the  number  on	top of the stack to the number in the
		 specified memory location.

       x:y	 Exchanges the numbers in the top two stack positions, the  X
		 and Y registers.  The corresponding action procedure is Xex-
		 changeY().

       R v	 Rolls the stack downward.  When inverted, it rolls the stack
		 upward.  The corresponding action procedure is roll().

       blank	 These	keys  were  used  for  programming  functions  on the
		 HP-10C.  Their functionality  has  not	 been  duplicated  in
		 xcalc.

       Finally,	 there	are  two  additional action procedures: bell(), which
       rings the bell; and selection(), which performs a cut  on  the  entire
       number in the calculator's ''liquid crystal'' display.

ACCELERATORS
       Accelerators are shortcuts for entering commands.  xcalc provides some
       sample keyboard accelerators; also users can  customize	accelerators.
       The  numeric  keypad  accelerators  provided  by xcalc should be intu-
       itively correct.	 The accelerators defined by xcalc on the  main	 key-
       board are given below:

	    TI Key    HP Key	Keyboard Accelerator	 TI Function	HP Function

	    SQRT SQRT r		     squareRoot()   squareRoot()
	    AC	 ON   space		  clear()	 clear()
	    AC	 <-   Delete		  clear()	 back()
	    AC	 <-   Backspace	     clear()	    back()
	    AC	 <-   Control-H	     clear()	    back()
	    AC	      Clear		  clear()
	    AC	 ON   q		     quit()	    quit()
	    AC	 ON   Control-C	     quit()	    quit()

	    INV	 i    i		     inverse()	    inverse()
	    sin	 s    s		     sine()	    sine()
	    cos	 c    c		     cosine()	    cosine()
	    tan	 t    t		     tangent() tangent()
	    DRG	 DRG  d		     degree()	    degree()

	    e	      e		     e()
	    ln	 ln   l		     naturalLog()   naturalLog()
	    y^x	 y^x  ^		     power()	    power()

	    PI	 PI   p		     pi()      pi()
	    x!	 x!   !		     factorial()    factorial()
	    (	      (		     leftParen()
	    )	      )		     rightParen()

	    /	 /    /		     divide()	    divide()
	    *	 *    *		     multiply()	    multiply()
	    -	 -    -		     subtract()	    subtract()
	    +	 +    +		     add()	    add()
	    =	      =		     equal()

	    0..9 0..9 0..9	     digit()	    digit()
	    .	 .    .		     decimal() decimal()
	    +/-	 CHS  n		     negate()	    negate()

		 x:y  x			       XexchangeY()
		 ENTR Return			    enter()
		 ENTR Linefeed			    enter()


CUSTOMIZATION
       The application class name is XCalc.

       xcalc  has  an  enormous application defaults file which specifies the
       position, label, and function of each key on the calculator.  It	 also
       gives  translations  to serve as keyboard accelerators.	Because these
       resources are not specified in the source code, you can create a	 cus-
       tomized	calculator  by	writing	 a private application defaults file,
       using the Athena Command and Form widget resources to specify the size
       and  position  of buttons, the label for each button, and the function
       of each button.

       The foreground and background colors of each  calculator	 key  can  be
       individually  specified.	  For  the  TI	calculator, a classical color
       resource specification might be:

       XCalc.ti.Command.background:  gray50
       XCalc.ti.Command.foreground:  white

       For each of buttons 20, 25, 30, 35, and 40, specify:
       XCalc.ti.button20.background: black
       XCalc.ti.button20.foreground: white

       For each of buttons 22, 23, 24, 27, 28, 29, 32, 33, 34,	37,  38,  and
       39:
       XCalc.ti.button22.background: white
       XCalc.ti.button22.foreground: black

WIDGET HIERARCHY
       In  order  to specify resources, it is useful to know the hierarchy of
       the widgets which compose xcalc.	 In the notation  below,  indentation
       indicates  hierarchical	structure.   The  widget  class name is given
       first, followed by the widget instance name.

       XCalc xcalc
	    Form  ti  or  hp	(the name depends on the mode)
		 Form  bevel
		      Form  screen
			   Label  M
			   Toggle  LCD
			   Label  INV
			   Label  DEG
			   Label  RAD
			   Label  GRAD
			   Label  P
		 Command  button1
		 Command  button2
		 Command  button3
       and so on, ...
		 Command  button38
		 Command  button39
		 Command  button40

APPLICATION RESOURCES
       rpn (Class Rpn)
	       Specifies that the rpn mode should be used.  The default is TI
	       mode.

       stipple (Class Stipple)
	       Indicates that the background should be stippled.  The default
	       is ''on'' for  monochrome  displays,  and  ''off''  for	color
	       displays.

       cursor (Class Cursor)
	       The  name  of  the  symbol used to represent the pointer.  The
	       default is ''hand2''.

COLORS
       If you would like xcalc to use its ti colors, include the following in
       the #ifdef COLOR section of the file you read with xrdb:

       *customization:		       -color

       This  will cause xcalc to pick up the colors in the app-defaults color
       customization file: /usr/X11R6/lib/X11/app-defaults/XCalc-color.

SEE ALSO
       X(7x), xrdb(1), the Athena Widget Set

BUGS
       HP mode is not completely debugged.  In particular, the stack  is  not
       handled properly after errors.

COPYRIGHT
       Copyright 1994 X Consortium
       See X(7x) for a full statement of rights and permissions.

AUTHORS
       John Bradley, University of Pennsylvania
       Mark Rosenstein, MIT Project Athena
       Donna Converse, MIT X Consortium



								     XCALC(1)


UNIX/Linux commands referenced on this page:
  1. look
  2. display
  3. paste
  4. make
  5. as
  6. at
  7. which
  8. ln
  9. clear
  10. top
  11. cut
  12. users
  13. file