HP Solve generico mediante l'utilizzo del registro I

Con la HP 34C è possibile utilizzare il registro I (indiretto) per simulare il meccanismo di risoluzione delle equazioni indipendente dalle variabili e presente nelle calcolatrici successive alla HP 32S.

Il registro indiretto I è una funzione molto potente che allora era presente solo in calcolatrici molto avanzate. In pratica una istruzione può utilizzare contenuto del registro indiretto per svolgere la propria funzione non conoscendo a priori l'oggetto su cui si vuole lavorare. Ad esempio STO (i) memorizza il valore del registro x dello stack nel registro di memoria indicato dal contenuto di I. In altri termini se I contiene 3 l'istruzione equivale a STO 3.

Detto questo, supponiamo di voler risolvere l'equazione X^2+3*Y^3-4=0 prima rispetto alla incognita X e poi rispetto alla incognita Y. Per prima cosa si scrive il programma B che realizza la funzione decidendo di usare il registro 0 per i valori di X e il registro 1 per i valori di Y. Poi si scrive il programma A che chiama il programma B memorizzando il valore della variabile scelta utilizzando il registro indiretto.

LBL A
STO (i)
GSB B
RTN
LBL B
RCL 0
x2
RCL 1
3
yX
3
*
+
4
-
RTN

Per risolvere l'equazione utilizzando X (cioè il registro 0) come incognita e Y come costante occorre dare il comando 0 STO I, caricare il valore nel registro 1 che corrisponde alla variabile Y e poi utilizzare la funzione SOLVE A. Il comando SOLVE chiama la routine A che prende il valore nel registro x della catasta e lo memorizza nel registro che contiene i valori della variabile dell'equazione X utilizzano il registro indiretto. Siccome I contiene 0, l'istruzione STO (i) equivale a STO 0.

Analogamente per risolvere l'equazione utilizzando Y (cioè il registro 1) come incognita e X come costante, occorre dare il comando 1 STO I , caricare il valore costante nel registro 0 che corrisponde alla variabile X e poi utilizzare la funzione SOLVE A. Stavolta il valore presente nel registro x dello stack verrà memorizzato nel registro 1.