HP 33s programming


I'm having a hard time preparing the HP 33s for the Civil PE exam in April. I'm hoping to get some help...

The PE exam involves perhaps hundreds of possible formulas, maybe not all of which will be used on a given exam, but I'd like to be prepared.

HP's SOLVE feature is fantastic for solving equations, but I have yet found no way to index the equations, i.e. I will have to scroll through a long list of equations until I find the one I want, then press SOLVE and the variable name I'd like to solve for. With hundreds of equations, the scrolling could take a long time, and speed is key at the exam.

So, I've looked into programming an index structure, using one routine (label A) to ask for a "subject" and "equation" number (i.e. an index), and then directing the program using the GTO (label) command to other labeled routines that I would like to contain all the equations for the subject covered by that routine.

But, I'm having a hell of a time finding a way to have more than one equation within a routine AND at the same time solving any one of those equations for any specified variable...

HP's examples in the manual seem to suggest you can have only one equation per program. Any ideas??



Since programs can also keep equations I suggest you do it yourself.

At least you could have them sorted from labels A...Z, which is less scrolling.

I'm sorry I couldn't offer any better help for you.



As a Civil PE candidate that uses the 33S, I question the value of storing hundreds of equations in your calculator. Most Civil PE exam questions do not involve particularly complicated equations. In most cases, I just look up the relevant equations in the reference book or in my notes, and solve them manually on the calculator.

Note that the 33S only allows simple 1-letter variables (A, B, X, etc.), with no Greek letters or subscripts allowed. Even if you do store hundreds of equations, you are going to have to "translate" all of the variables into simple 1-letter form. Will you really be able to remember what variables "D" and "I" represent in Equation 236, or will you have to look up the equation anyway?

I do store some unusually complex equations on the 33S, but I don't expect to have more than a few dozen. Since the 33S has a 2-line display, I use 2 lines for each equation. The first line is a "dummy" equation with a number and a brief title; the actual equation is on the second line. I put a brief description of each equation in my notes, along with the equation number so I can scroll to it easily, and a list of the variables.


I passed the October 2004 civil PE and used my 33S. I DID NOT program any formulas other than a nifty quadratic equation solver and an interpolation program (labeled "I" - slick, eh?).

Here is my advice: don't worry about programming formulas into the calculator (yes, not enough labels; yes, can't index equations, etc.). Bring Lindberg's Civil Engineering Reference Manual and its quick formula reference guide - as well as the other other references you will use for your specialty in the afternoon. You might want to print out a list of your programs and equations and glue it to the inside cover of the quick reference guide, though, if you have lots of formulas. Alexander's method "I put a brief description of each equation in my notes, along with the equation number so I can scroll to it easily, and a list of the variables." is brilliant, mind you - and I'm going to steal it!

The key to passing the PE exam is to be ready for tricky questions: the answer requested is usually a tiny piece of a bigger problem (like "the safety factor against X is..." and you'll have to go through the entire design problem in order to find the answer). If you have 'em, the old exams sold by ppi and NCEES are what you'll see in April.

Study hard and ace it!



Thanks for the suggestions. Yes, I have the reference materials you suggested and I've been working on studying the material at the same time as this programming option. And, yes, I am considering dropping the whole notion of programming the calculator to solve equations.

Maybe instead of programming, I'll have a list of the most important equations, especially the ones with the multiple variables. That way, I can use the SOLVE key to solve for the needed variable...

Seems to me, in theory, though, if it could be worked out, that programming the equations might be of great use to candidates for the PE exam in general....


<< Seems to me, in theory, though, if it could be worked out, that programming the equations might be of great use to candidates for the PE exam in general.... >>

I don't think it's such a big plus. I speak from experience, having used the HP48GX on both the EIT exam (when it was legal) and on California state-specific Civil PE exams (where it is still legal).

There are obviously a lot of equations on these exams, but the hard part is recognizing which equations and assumptions are appropriate. In most cases, crunching the numbers is the easy part.

This became particularly apparent to me on the California Special Seismic PE exam. This exam is widely dreaded by civil engineers, yet the actual equations rarely involve anything more than multiplication and division of a few variables. It's the concepts that are difficult.

I stored a lot of equations in the 48GX prior to the EIT exam. But they were not as helpful as I had expected (and note that the Multiple Equation Solver of the 48GX is *much* more powerful than the Solver of the 33S). I think the primary benefit was that all the programming and debugging helped to familiarize me with the equations. In effect, it was a form of studying.

I do miss the units capability of the 48GX. Automatic unit conversions was a plus.



Of course, you are correct. The vast majority of the problems will not require complex solutions or math.

I was just so enamored with the 33s ability to solve for a particular variable that I thought, HEY, maybe this could make things faster on the exam.

I think what I'll do is enter in some of the most frequently used equations, especially those with multiple variables, and then as you suggest work out the others in my head or on paper...

Thanks for your thoughtful input.



Thanks for your constructive criticism. Yes, I have been aware of the fact that if I programmed hundreds of equations that I would have to recall whether "G" represented "gamma" or the "gravitational constant".

Generally, what I was thinking was that I WOULD look up the equation in the quick reference, where I would write the equation number, and then maybe program a dummy label which would show me the variables that I chose to use in programming the equation (or, as you suggested, having the variables written down in the quick reference, or on some other piece of paper). The key, for me, would be to have the ability to SOLVE the equation for any one variable, without having to rewrite the equation on paper for the variable I wish to solve for.

In reality, I'm thinking that I won't program 200 equations, but that I'd like to have the ability to program more than 26, or 31, as the case might be - say, 75? of the most important, and especially multiple variable equations...

In your message of APR 4 2004, you suggested a method to program say 10 different programs using only one LABEL. The trick was the "GTO.A0100, followed by R/S" suggestion.

If I used this methodology, do you know whether I could program an "FN=" and "SOLVE" combination within that subset routine?? Or is there another method such as putting the "FN=" at the calling routine...??


Your problem, as I understand it, is like this. You want to store lots of equations. You want to (1) be able to jump quickly to a particular equation, and then (2) make it accessible to SOLVE.

There are two ways to store multiple equations on the 33S. Unfortunately, neither one has both of the qualities that you want.

If you store multiple equations in the equation list, then they are accessible to SOLVE. However, there is no way to jump directly to a particular equation; you have to scroll up or down through the list.

If you store multiple equations in programs, then you can jump directly to a particular one using GTO.Axxxx (assuming you know the line number). However, the "selected" equation will not be accessible to SOLVE.

I suspect you are out of luck. The only workarounds that I can see are:

(1) Group related equations together in the equation list (e.g. water resources, geotechnical, etc.). This should minimize the amount of scrolling that you need to do, especially if you keep the total number of equations to a manageable size.

(2) Programs can solve equations in the y=f(x) format, when y is the desired variable, without SOLVE. So enter all possible forms of each equation in this format. For example, the area of a rectangle is A=BxH. You could enter “A=BxH”, and “B=A/H”, and “H=A/B” as separate equations, then use GTO.Axxxx to jump directly to the particular form of the equation needed for the particular variable (A, B, or H) that you want. This should work in theory, but seems impractical.

My best advice is: practice rearranging equations in your head, or on paper if necessary.


You hit the nail on the head in terms of describing what I am after, and maybe I'm out of luck.

However, I'll share what I've been working on. It involves user INPUT in the main routine of "subject number" S, "equation number" E, and "variable number" V, and utilizes the indirect address (i) to call the appropriate subroutine:

A0001 LBL A
A0002 INPUT S (pick one of 17 subjects)
A0003 INPUT E (choose equation no. - predefined)
A0004 RCL S
A0005 1
A0006 +
A0007 STO i
A0008 FN=(i) (defines label within which the SOLVE will occur)
A0009 INPUT V (here, V is a number which corresponds to the letter of the variable to be solved for...A=1, B=2, and so on)
A0010 STO i
A0011 SOLVE(i)
A0012 VIEW(i)

The main routine above works great in terms of calling the subroutine and beginning the SOLVE process. If the subject no. 1 subroutine had only one equation (the area of a circle), it might look like this:

B0001 LBL B
B0002 SF 11
B0003 A=(PI)x(R)x(R)
B0004 RTN

in which case it would work great with the main routine.

But what I'm trying to do is use variable E defined in the main routine (equation number) to call out one of a series of equations all within the same "label".

I was hoping the format of this might be as simple as:

B0001 LBL B
B0002 SF 11
B0003 1
B0004 RCL E
B0005 x=y?
B0006 A=(PI)x(R)x(R)
B0007 2
B0008 RCL E
B0009 x=y?
B0010 V=4/3x(PI)xRxRxR (volume of a sphere)
B0011 3
B0012 RCL E
B0013 x=y?

and so on.

EXCEPT that it doesn't seem to work. Apparently, there needs to be an RTN statement after each equation, once solved, to go back to the main routine. But, unfortunately, I can't simply place an RTN statement after each equation, as the program would then never get past equation number 1...I've tried making the RTN statement conditional upon comparing variable E with the equation number following the SOLVE, but it gets botched up...I don't know why, but I can't figure out how to do it.

I'm not sure exactly the syntax involved in the SOLVE routine, but I'm guessing that the result is that it stores the answer in the variable that is solved for. Maybe it also enters this value in the x-register?

Anyway, I think I'm done trying to make this work - I'd better get back to studying instead of getting distracted by this unfruitful programming....unless of course someone could think of a way, and would be willing to share it...

Thanks for all the help, everyone!


How many HP33s are you allowed to take to the exam? Several folks have already claimed that they would take at least two (one for "backup"), so apparently the number is more than one.

If you are willing to buy a few of them, then you could put equations (different ones!) in each of them, perhaps grouped by subject.


Hey now there's an interesting idea!



Hello, I think this is your lifebelt :) The program is expandable, limited by mem, and you can categorized eqs via alphabet, but solve/integrate not working.

The prg is NOT!!! perfectly, but the main IDEA is usable. You've got many time to April ;) to make a perfect routine.

I think this idea is deserve a pdf copy of HP15C Advanced Functions Handbook, isn't it!!??!!?? (YES, YES, YES!!! :) )

So, the routine:

SF 11 #eq prompt on
0 #stack_x setup
SF 10 #eq is text
EQ:"1GRAV 2GAMMA" #first and second menu items
CF 10 #eq is equation
X=0? #menu_item_1 selected?
EQ:"M*9.81" #yes
PSE #no (inperfection here!!!)
X=0? #menu_item_2 selected?
EQ:"x!(X" #yes
PSE #no (again...)
SF 11 #like above, just 3 and 4
SF 10
CF 10
3 #!!! not -1 here, because
- #its item_3 and _4 !!!
... and so on ...

Menu items: 1:Weight in gravitation, 2:Gamma function, 3:Standardised Gauss distribution, 4:Table for graphing sin(x)/x

The MAIN ERROR: what happen, when the stack_x is equal 0 after calculation?! How it checkable (selection or calculation gives that result)?

The PSEs is importants, but disturbs the reading results on display...




Do you think the solve/integrate function could be brought to life within the structure of what you offer?

Also, I'm not sure where you would place INPUT commands, or did you not really intend to have input?

I realize it's not perfect, and the idea is a good one, but I'm not yet understanding how it would work for me.

Sorry to be so slow...


I'm not sure where you would place INPUT commands, or did you not really intend to have input?
If you SET the Flag_11, the calc will prompting for variables. See the User Manual...

how it would work for me
Are you want a program, what categorized equations by alphabet and more eqs/one label. This program CAN do it. Type it and try it. It's works fine, but PSEs disturbs.

Usage: XEQ letter_of_group then when the MENU is appear (1st and 2nd items), simply press the number what you want to use, then R/S. If you want to use another ones, press R/S, then other MENU will appear (3rd and 4th item), and so on...

It's works what like you want it.

My opinion: With this method store the eqs, what you don't want to solve/integrate. The others store in the calc's EQN LIST.



Tizedes Csaba:

Thank you for putting your program on the web for me to view. I typed it in, and I agree that YES the idea is good. But the devil is in the details, as they say.

I've come up with a revision to your program, as follows, which you or others might be interested in:

A0001 LBL A
SF 10
SF 11
CF 1
A0016 RTN

B0001 LBL B
x=0? if x=0, displays list of subjects
GTO C goes to next subject area
CF 1
CF 10
SF 1
FS? 1
EQN: "(PI)*R^2"
FS? 1
SF 1
FS? 1
FS? 1
SF 1
FS? 1

and so on for each eqn within subject 1 (label b)....

C0001 LBL C
C0002 EQN: "2 FLUID"
C0003 PSE
C0005 PSE
C0007 PSE

and so on for each subject area. A final return
at the Nth label brings the program back to label A,
where the user can select another subject.

Each equation block returns to the main calling routine and displays the answer as "i=(value)"

It works even better than yours. The problem is that it would take lots of time to program the calculator in this way. Far more time than I have right now. Others have suggested that I should be using this time to study the ideas, and not get hung up with this idea of programming the formulas. Because in the end, its not the formulas that are going to take the test. It's me taking the test, and I need to know HOW to use the formulas.

I still might use the program for certain commonly used equations where one variable is the most used answer, area of circle for example. I agree that multiple variable equations that I want to solve would be better handled by the equation solver.

Thanks for the input, and I'd be glad to continue with this more if there are some that are interested.

By the way, is there a way to receive an email if there is a response to this message?


Thanks for your code, I'll try it soon. Sorry for my delaying, and sorry for that, I don't understand really complicated(?) grammatical structures in English, so I don't understand exactly your last sentences. I know, this is my fault... :( I'm better in math and engineering, than languages... ;)


Possibly Related Threads...
Thread Author Replies Views Last Post
  33s - programming question Frank Rottgardt 4 590 05-15-2008, 08:27 PM
Last Post: Don Shepherd
  HP 33S programming Antonio Maschio (Italy) 10 994 04-07-2006, 10:35 PM
Last Post: James M. Prange (Michigan)
  Help with Programming a HP 33S Eric 5 578 04-07-2006, 10:48 AM
Last Post: Vense Phonesouphan
  Integration Times "Old" 33s vs "New" 33s John Smitherman 21 1,847 12-14-2005, 12:04 AM
Last Post: Karl Schneider
  Custom Programming vs. Pre-packaged programming Eddie Shore 3 588 01-24-2005, 03:42 AM
Last Post: Karl Schneider
  HP-33s variable programming Michel 5 590 10-25-2004, 09:33 AM
Last Post: bill platt
  33S: new programming strategy kc 3 472 05-15-2004, 12:23 PM
Last Post: bill platt
  hp 33s programming marcus channell 4 493 04-04-2004, 06:06 PM
Last Post: Norris
  Programming help and the 33S rob 8 880 03-03-2004, 08:40 AM
Last Post: bill platt

Forum Jump: