[comp.sys.handhelds] DEC2FRAC problem

tim@nijinsky.ipac.caltech.edu (Tim Conrow) (04/03/91)

Joseph K. Horn's recent posting of DEC2FRAC was modified to more
closely emulate the capabilities of the \->Q function on the keyboard,
i.e. to operate on any (reasonable) object type (apologies for not
saving the modifier's name, I excitedly copied the code to my calculator
without saving references). I found one incompatability:

When fractions (quotients) and decimals are represented in the same
algebraic repeated calling of DO\->Q swaps the two representations,
but there is never a time when all are in quotient form. I.e.

2: '1/2 + .25'   produces    1: '.5 + 1/4'
1: 10
DO\->Q

Calling DO\->Q again reproduces the original input. \->Q on the otherhand
will produce quotients from decimals without evaluating already extant
quotients to decimals. I.e., the above example produces

1: '1/2 + 1/4'

The problem seems to be the code fragment "oper EVAL" after the START loop.
EVAL is not the inverse of OBJ\-> in this case:

1: '1/2'  produces    4: 1
OBJ\->                3: 2
                      2: 2
                      1: /
But

3: 1      produces    1: .5
2: 2
1: /
EVAL

So I guess the question is, what is the "correct" way to invert this 
operation of OBJ\->? How does one re-assemble an algebraic from the stack
without evaluating quotients to real numbers?

Surely there's a SYSEVAL for this, there always is :-) ???

Despite this tiny bug, the algorithm is wonderful. And the process is quite
educational. Thanks for the routines, guys!!

-- Tim Conrow
tim@ipac.caltech.edu

bson@rice-chex.ai.mit.edu (Jan Brittenson) (04/03/91)

In a posting of [3 Apr 91 01:12:09 GMT]
   tim@nijinsky.ipac.caltech.edu (Tim Conrow) writes:

 > The problem seems to be the code fragment "oper EVAL" after the START
 > loop.  EVAL is not the inverse of OBJ\-> ... Surely there's a SYSEVAL
 > for this, there always is :-) ???

Yeah, #546d puts together an Algebraic. Try replacing:

	oper EVAL

with:

	oper
	n 1 + # 18CEAh SYSEVAL		@ n+1 as system binary
	# 546Dh SYSEVAL			@ join as algebraic

Let's hope this works better!

						-- Jan Brittenson
						   bson@ai.mit.edu