HP Forums

Full Version: HP71B RES bug?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I had assumed RES = result of last expression (or last DISP expression)

However, RES may be affected by user defined function.

>10 DEF FNK(K,X) = K*X
>20 DEF FNR(X) = FNROOT(1,2,FVAR*FVAR-X)
>RUN

>1 + 0
  1
>FNK(2,RES) + FNK(3,RES) + FNK(4,RES)         ; expected 2*1 + 3*1 + 4*1 = 9
  32                                                                 ; got 2*1 + 3*2*1 + 4*3*2*1 = 32
>FNR(RES*2) + FNR(RES/2)                             ; expected √64+ √16 = 12
  10                                                                 ; got √64 + √4 = 10

Is this a bug ?
The reference manual says:
Code:
The HP-71 stores the result of each numeric assignment and calculator statement in a register re-
served for use by RES. This occurs prior to any rounding that may take place due to a SHORT or 
INTEGER destination variable. RES recalls the value currently stored in this register. RES can be 
particularly useful in iterative computations because it is much faster than variable references.

So I would assume that the equal of the user defined function fit the above description and it matches you're "got" values.

Step 1 : 1 + 0
Code:
1 + 0          // RES is set to 1

Step 2 : FNK(2,RES) + FNK(3,RES) + FNK(4,RES)
Code:
               // RES has 1
FNK(2,1)       // RES is set to 2
+              // push 2 to stack
FNK(3,2)       // RES is set to 6
+              // push 6 to stack
FNK(4,6)       // RES is set to 24
2 + 6 + 24     // do calculation on latest value and on pushed values
32             // value displayed, RES is set to 32

Step 3 : FNR(RES*2) + FNR(RES/2)
Code:
               // RES has 32
FNR(32*2)      // RES is set to 8
+              // push result to stack
FNR(8/2)       // RES is set to 2
8 + 2          // do calculation on latest value and on pushed values
10             // value displayed, RES is set to 10
Reference URL's