Citizen SRP-145

Datasheet legend
Ab/c: Fractions calculation
AC: Alternating current
BaseN: Number base calculations
Card: Magnetic card storage
Cmem: Continuous memory
Cond: Conditional execution
Const: Scientific constants
Cplx: Complex number arithmetic
DC: Direct current
Eqlib: Equation library
Exp: Exponential/logarithmic functions
Fin: Financial functions
Grph: Graphing capability
Hyp: Hyperbolic functions
Intg: Numerical integration
Jump: Unconditional jump (GOTO)
Lbl: Program labels
LCD: Liquid Crystal Display
LED: Light-Emitting Diode
Li-ion: Lithium-ion rechargeable battery
Lreg: Linear regression (2-variable statistics)
mA: Milliamperes of current
Mtrx: Matrix support
NiMH: Nickel-metal-hydrite rechargeable battery
Prnt: Printer
RTC: Real-time clock
Sdev: Standard deviation (1-variable statistics)
Solv: Equation solver
Subr: Subroutine call capability
Symb: Symbolic computing
Tape: Magnetic tape storage
Trig: Trigonometric functions
Units: Unit conversions
VAC: Volts AC
VDC: Volts DC
 Years of production: Display type: Numeric display New price: Display color: Black Display technology: Liquid crystal display Size: 5½"×3"×¼" Display size: 10(8+2) digits Weight: Entry method: Algebraic with precedence Batteries: 2×"V389" button cell Advanced functions: Trig Exp Hyp Sdev Cmem External power: Memory functions: + I/O: Programming model: Partially merged keystroke Precision: 11 digits Program functions: Memories: 3 numbers Program display: Program memory: 40 program steps Program editing: Chipset: Sharp LI3301A Forensic result: 9.0000156204

Having worked with several Citizen calculators lately that all had a reasonably sophisticated programming model (namely, a programming model that allowed for conditional execution), I was somewhat disappointed when I got my hands on an SRP-145. This calculator belongs to the "barely programmable" category; a limited 40-step program memory, no conditional execution, and that blasted "feature" of erasing the X-register when entering program mode characterize that operation.

About this "feature": the sample programs presented here must have made obvious my preference for programming solutions that accept the number on the display as an input argument, as opposed to requiring the user to enter the argument separately. Unfortunately, there are many algorithms (including most solutions for the Gamma function) that do not accept a null argument. On calculators like this SRP-145, it is therefore necessary to employ extra tricks, in order to simply be able to enter a program.

By way of example, let's say you want to write a program that computes the 2-base logarithm of a number. This is most easily computed by taking the natural logarithm of said number, and dividing it by the natural logarithm of true. But if you think you can enter the program, LN, ÷, 2, LN, you are sadly mistaken. As soon as you switch to program mode, the displayed result is erased, and the LN operation fails. It is therefore never entered into program memory. This doesn't happen when you're running programs, so this simple 4-step program would actually work fine, but there's absolutely no way that I know of that would let you enter it into the calculator's program memory.

Sometimes, I really wonder: are designers of calculator chips intentionally trying to make their machines hard to use?

Oh well. It is still possible to create a moderately accurate implementation of my favorite calculator exercise, the Gamma function. Or rather, to be precise, the generalized factorial; as the Gamma function itself is not defined at zero, it is not possible to enter a program for it into this machine.

```x-M
1
M+
÷
MR
÷
1
2
-
3
6
0
1/x
/
MR
/
MR
x^2
+
1
=
×
MR
xy
MR
÷
MR
ex
×
(
2
×
π
÷
MR
)
√
=```