Casio fx-3600Pv

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
Ind: Indirect addressing
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
NiCd: Nickel-Cadmium rechargeable battery
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: 1989  Display type: Numeric display  
New price:   Display color: Black  
    Display technology: Liquid crystal display 
Size: 5½"×3"×½" Display size: 10+2 digits
Weight: 4 oz    
    Entry method: Algebraic with precedence 
Batteries: 1×"GR927" button cell Advanced functions: Trig Exp Hyp Lreg Intg Ab/c Cmem 
External power: Solar   Memory functions: +/-/×/÷ 
I/O:      
    Programming model: Fully-merged keystroke entry 
Precision: 11 digits Program functions: Cond  
Memories: 7 numbers Program display:  
Program memory: 38 program steps Program editing:  
Chipset:   Forensic result: 9.0001252458  

fx3600pv.jpg (24976 bytes)An interesting modern variant of Casio's venerable low-end programmable scientific calculator series, the fx-3600Pv also happens to be a machine with a curious bug, a bug not present in its predecessor, the fx-3600P. I encountered this as I was trying to create a program to compute the Gamma function, which of course is my favorite programming example for calculators. Take a look at this simple program:

+
ln
Kin+1
1
=
x<=M
0
x-K 1

This program should compute the logarithm of the products of numbers starting from the number in the display, up to and including the number in the calculator's independent memory. For instance, if the number on the display is 5, and the number in memory is 9, running this program should produce 9.62377..., i.e., the natural logarithm of 15120 (=5×6×7×8×9). What it does compute instead is something completely different: 13.57639..., which is the logarithm of 787320. It took me some time to figure out this riddle: 787320=9×18×27×36×5! I.e., while we're decrementing the single-digit argument in the display register, a phantom digit in the second position appears in the multiplication. The same effect is not reproduced if you perform this calculation by hand; nor is this effect present if the independent memory contains a number greater than, or equal to, 10.

Oh well, scratch one useful method for shortening my Gamma function program. Here is a program anyway, one that performs a somewhat lengthier calculation but avoids this bug.

Kin 2
ln
Kin+ 1
9
Min
Kout 2
+
1
=
x<=M
X
Min
ln
-
MR
+
(
2
*
π 
/
MR
)
√ 
ln
+
1
2
1/x
/
MR
-
0
x-K 1
=