The Museum of HP Calculators


Complex Operations for the HP-67

This program is Copyright © 1976 by Hewlett-Packard and is used here by permission. This program was originally published in the HP-67 Math Pac 1.

This program is supplied without representation or warranty of any kind. Hewlett-Packard Company and The Museum of HP Calculators therefore assume no responsibility and shall have no liability, consequential or otherwise, of any kind arising from the use of this program material or any part thereof.

Card Labels

Complex Operations

Shift

->|z| 

->1/z

n->zn

n->z1/n

->ez

Label

a^b

+

-

x

÷

Key

A

B

C

D

E

Overview

This program allows for chained calculations involving complex numbers. The four operations of complex arithmetic ( +, - , x, ÷ ) are provided, as well as several of the most used functions of a complex variable z (|z|, 1/z, zn, z1/n and ez). Functions and operations may be mixed in the course of a calculation to allow evaluation of expressions like z3/(z1 + z2), e^z1z2, |z1 + z2| + |z2 ÷ z3|, etc., where z1, z2, z3 are complex numbers of the form a + ib.

Keying in a complex number

A complex number is input to the program by keying in its real part, pressing ENTER, keying in its imaginary part, and pressing A. For example, the complex number z1 = 2 + 3i is input as 2 ENTER 3 A. This number is then stored by the program. There is room in the program to remember up to two complex numbers at a time. A second complex number z2 = 5 - i could be input as 5 ENTER 1 CHS A. The program would now contain both the first and the second complex number.

Functions

The complex functions in this program act on just one number. Thus to perform a function, you need simply to input a complex number z and then perform the appropriate function. For example, to find the reciprocal of (2 + 3i), press 2 ENTER 3 A f B. The result is calculated as a + ib = 0.15 - 0.23i. This result is now stored in place of the original number, and further calculations will operate on this result. All complex functions operate in this same manner, with one exception: since the function |z| returns a real number, its result is not stored.

Arithmetic Operations

An arithmetic operation needs two numbers to operate on. Both numbers must be input before the operation can be performed. Suppose that z1 = 2 + 3i, z2 = 5 - i, and we wish to find z1 - z2. This can be calculated by the keystrokes 2 ENTER 3 A 5 ENTER 1 CHS A C. The result z3 = a + ib is found to be -3 + 4i. This result is now stored by the program in place of the second complex number z2. A further calculation z3 x z4 could be performed by inputting z4 and pressing D for multiplication. This type of chaining can be continued indefinitely, and functions can be interspersed with arithmetic operations.

Equations

Let

    zk = ak + ibk = rke^(ithetak)  ,  k = 1   2

    z = a + ib = re^itheta

Let the result in each case be u + iv.

    z1 + z2 = (al + a2) + i(b1 + b2)

    z1 - z2 = (al - a2) + i(b1 - b2)

    z1z2 = r1r2e^i(theta1 + theta2)

    z1/z2 = (r1/r2)e^i(theta1 - theta2)

    |z| = sqrt(a2+b2)

    1/z =a/r2 - ib/r2

    zn = rne^(intheta)

    z1/n = r1/ne^(i(theta/n + 360k/n)) ,  k=0,1,....n-1

(All n roots will be output and temporarily stored, k = 0, 1, ... n-1; at the end of the calculation the final root will be stored.)

       ez = ea(cos b + i sin b),  where b is in radians.

Remarks

The logic system for this program may be thought of as a kind of Reverse Polish Notation (RPN) with a stack whose capacity is two complex numbers. Let the bottom register of the complex stack be XC and the top register TC. These are analogous to the X- and T-registers in the calculator's own four-register stack.* A complex number z1 is input to the XC-register by the keystrokes a1 ENTER b1 A. Upon input of a second complex number z2 (as a2 ENTER b2 A) z1 is moved to TC and z2 is placed in XC. The previous contents of TC are lost.

*Each register of the complex stack must actually hold two real numbers: the real and the imaginary part of its complex contents. Thus it takes two of the calculator's registers to represent one register in the complex stack. We will speak of the complex stack registers as though they were each just one register.

Functions operate on the XC-register, and the result (except for |z|) is left in XC; TC is unchanged. Arithmetic operations involve both the XC- and TC- registers; the result of the operation is left in XC and TC is unchanged.

Instructions

Step

Instructions

Input Data/Units

Keys

Output Data/Units

1

Load side 1 and side 2.

     

2

Key in first complex number (a1 + i b1).

a1

ENTER

 

   

b1

A

 

3

For a function go to step 7; for arithmetic, go to step 4. A complex result is u + iv.

 

 

 

  ARITHMETIC      

4

Key in second complex number (a2 + i b2).

a2

ENTER

 

   

b2

A

 

5

Select one of four operations:

 

 

 

      Add (+)

 

B

u

       

v

      Subtract (-)  

C

u

       

v

      Multiply (x)  

D

u

       

v

      Divide (÷)  

E

u

       

v

6

The result of the operation has been stored; go to step 7 for a function or to step 4 for further arithmetic.

 

 

 

  FUNCTIONS      

7

Select one of five functions:

 

 

 

     Magnitude (|z|)  

f A

|z|

     Reciprocal (1/z)  

f B

u

       

v

     Raise z to an integer power (zn)

n

f C

u

       

v

     Find the nth root of z (z1/n)
   Note: n roots (u+iv) will be found.

n

f D

u

     

 

v

    Raise e to the power z (ez)  

f E

u

       

v

8

The result, if complex, has been stored; go to step 4 for arithmetic or to step 7 for another function.

 

 

 

Example 1

Evaluate the expression

          z1
       ---------
        z2 + z3

where z1 = 23 + 13i, z2 = -2 + i, z3 = 4 - 3i. (Suggestion: since the program can remember only two numbers at a time, perform the calculation as

        z1 x [l/(z2 + z3)].)
Keystrokes                     Outputs
2 CHS ENTER 1 A 4 ENTER 3       
CHS A B                         2.00 *** real(z2 + z3)
                               -2.00 *** imag(z2 + z3) 

f B                             0.25 *** 1/(z2 + z3)
                                0.25 ***

23 Enter 13 A D                 2.50 *** z1/(z2 + z3)
                                9.00 ***

Example 2

Find the 3 cube roots of 8.

Keystrokes                     Outputs
8 ENTER 0 A 3 f D               2.00 ***
                                0.00 ***

                               -1.00 ***
                                1.73 ***

                               -1.00 ***
                               -1.73 ***

Example 3

Evaluate e^(z-2), where z = (1 + i)

Keystrokes                     Outputs
1 ENTER 1 A 2 f C               0.00 *** (z2)
                                2.00 ***

f B                             0.00 *** (z-2)
                               -0.50 ***

f E                             0.88 *** e^(z-2)
                               -0.48 ***

The Program

LINE  KEYS
001  *LBL A     Input A, B
002   RCL D
003   STO B     Last b->RB(b1)
004   roll dn
005   STO D     Present b->RD(b2)
006   roll dn
007   RCL E     Last a->RC(a1)
008   STO C
009   roll dn   Presnt a->RE(a2)
010   STO E
011   RTN
012  *LBL B     Add (+)
013   RCL C
014   RCL E
015   +
016   STO E     a2<-a1+a2
017   PRTX
018   RCL B
019   RCL D
020   +
021   STO D     b2<-b1+b2
022   PRTX
023   PRT SPC  
024   RTN
025  *LBL C     sub (-)
026   RCL C
027   RCL E
028   -
029   STO E     a2<-a1-a2
030   PRTX
031   RCL B
032   RCL D
033   -
034   STO D     b2<-b1-b2
035   PRTX
036   PRT SPC  
037   RTN
038  *LBL D
039   RCL B     Multiply (x)
040   RCL C
041   ->P
042   RCL D     r1, theta1
043   RCL E
044   ->P
045  *LBL 9     r2, theta2, r1, theta1
046   X<>Y
047   roll up
048   +
049   X<>Y
050   roll up
051   x
052  *LBL 8
053   ->R       r1r2 (theta1 + theta2)
054   STO E     Output routine.
055   PRTX
056   X<>Y
057   STO D
058   PRTX
059   PRT SPC  
060   RTN
061  *LBL E     Divide (÷)
062   RCL B
063   RCL C     r1 theta1
064   ->P
065   RCL D
066   RCL E
067   ->P       r2 theta2 r2 theta1
068   X<>Y
069   CHS
070   X<>Y      1/r2 -theta2 r1 theta1
071   1/X
072   GTO 9
073  *LBL a     |a|
074   RCL D
075   RCL E
076   ->P       r = Sqrt(a^2+b^2)
077   PRTX
078   PRT SPC  
079   RTN
080  *LBL b     1/z
081   RCL D
082   RCL E
083   ->P       r theta
084   X<>Y
085   CHS
086   X<>Y
087   1/X       1/r -theta
088   GTO 8
089  *LBL c     z^n
090   STO I     n->I
091   RCL D
092   RCL E
093   ->P       r theta
094   RCL I
095   YX
096   X<>Y
097   RCL I
098   x
099   X<>Y
100   GTO 8
101  *LBL d     r^n ntheta
102   STO I     z^(1/n)
103   3
104   6         n->I
105   0
106   X<>Y
107   ÷
108   STO A
109   RCL D     360/n->RA
110   RCL E
111   ->P       r theta
112   RCL I
113   1/X
114   YX
115   X<>Y
116   RCL I
117   ÷
118   X<>Y      r^(1/n) theta/n
119  *LBL 7
120   GSB 8     Convert->R and print
121   DSZ I
122   GTO 0     Loop n times.
123   RTN
124  *LBL 0
125   X<>Y
126   ->P       Back->P(r^(1/n), theta/n)
127   X<>Y
128   RCL A
129   +         theta/n + *360/n)k
130   X<>Y
131   GTO 7
132  *LBL e     e^z
133   RAD
134   RCL D
135   RCL E
136   eX       e^a b
137   ->R
138   PRTX
139   STO E     e^a cos b
140   X<>Y
141   PRTX
142   PRT SPC  
143   STO D
144   DEG       e^a sin b
145   RTN

Register Use

A   360/n
B   b1
C   a1
D   b2
E   a2
I   n

Go back to the software library
Go back to the main exhibit hall