Post Reply 
Cadillac Quadratic Solver behaving like an Edsel - Problem solved!!
09-16-2014, 11:26 AM
Post: #17
RE: Cadillac Quadratic Solver behaving like an Edsel - Problem solved!!
(09-16-2014 02:49 AM)Paul Dale Wrote:  This subroutine should substitute for SGN, change register Z to something you're happy to lose.

Code:
        LBL S
        x=0?
        x^2             Get Last X correct for a zero input
        x=0?
        RTN             Finished with zero input
        R^
        STO Z           Save T in a register
        Rv
        ABS             |x| / x is SGN(x) for x not zero
        Last X
        /
        R^              Now restore T from the register
        CLx             Disable stack lift
        RCL Z
        Rv
        RTN             Finished

A little shorter, using a user flag instead of register Z, same stack & Last X management:

Code:
S01   LBL S
S02   CF 4    Clear flag 4
S03   x<0?
S04   SF 4    Set flag 4 if X < 0
S05   ABS     Set lastX
S06   x=0?
S07   RTN     If X = 0 stop there, SGN(0)=0
S08   CLx     Disable stack lift
S09   1       Prepare answer SGN(X) = 1
S10   FS? 4   
S11   +/-     If X was negative, SGN(X) = -1
S12   CF 4    Clear flag 4
S13   RTN
Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
RE: Cadillac Quadratic Solver behaving like an Edsel - Problem solved!! - Didier Lachieze - 09-16-2014 11:26 AM



User(s) browsing this thread: 1 Guest(s)