[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Why dosen't SIGNUM preserve a few exponent and fraction bits while it's at it?



(cc:bug-lispm@scrc,lisp-designers@scrc)
In Symbolics 3600 System 242.355, Mailer 41.3, Print 34.3,
Macsyma 23.103, microcode TMC5-MIC 297, on Russian:

For what my opinion is worth, it was massively wrong for SIGNUM to try to
preserve the floatingness of its argument.  The whole purpose of the
function is to reduce the information content of its arg to the minimum.
Can anyone recall the rationale?  Was it any better than the "contagious
floating" creeping braindamage?  When you get an exact answer, it is
idiotic to cast it into the one grubby datatype that fosters inexact
computation.  Maybe what you're trying to say is "this SIGNUM was
of a datum so wretched that even its sign was probably wrong"?

>>Error: Page fault on unallocated VMA 206060064
While in the function SYS:%LEXPR-AREF  AREF  TRIANGLE-WINDING-OF-ORIGIN

SYS:%LEXPR-AREF:  (P.C. = 271)
   Arg 0 (ARRAY): #<ART-Q-3-3-3 22060054>
   Arg 1 (INDICES): (2.0 2.0 2.0)
   Local 2 (NDIMS): 3
   Local 3 (DATA-POINTER): #<DTP-LOCATIVE 22060064>
   Local 4 (LINEAR-INDEX): 26.0
   Local 5 (TYPE): 5
   Local 6 (BITS-PER-ELEM): NIL
   Local 7 (ELEMS-PER-Q): 1

AREF:  (P.C. = 10)
   Arg 0 (ARRAY): #<ART-Q-3-3-3 22060054>
   Rest arg (SUBSCRIPTS): (2.0 2.0 2.0)

TRIANGLE-WINDING-OF-ORIGIN:  (P.C. = 42)
   Arg 0 (X0): -1
   Arg 1 (Y0): -0.9999
   Arg 2 (X1): 0
   Arg 3 (Y1): -0.9999
   Arg 4 (X2): 1
   Arg 5 (Y2): 1.0001

TRIANGLE-WINDING-OF-ORIGIN:  (encapsulated for TRACE)
   Rest arg (ARGLIST): (-1 -0.9999 0 -0.9999 1 1.0001)

POLYGON-WINDING-NUMBER:  (P.C. = 42)
   Arg 0 (PX): 1
   Arg 1 (PY): 0.9999
   Arg 2 (FIRST-X): 0
   Arg 3 (FIRST-Y): 0
   Rest arg (COORDS): (1 0 2 2 0 1)

SI:*EVAL:  (P.C. = 370)
   Arg 0 (FORM): (POLYGON-WINDING-NUMBER 1 0.9999 0 0 1 0 2 2 0 ...)

SI:LISP-COMMAND-LOOP-INTERNAL:  (P.C. = 200)
   Rest arg: (:NAME "Lisp Top Level in Lisp Listener 1" :ABORTED-FUNCTION NIL :BEFORE-PROMPT-FUNCTION NIL :READ-FUNCTION NIL :EVAL-FUNCTION NIL ...)

SI:LISP-COMMAND-LOOP:  (P.C. = 115)
   Arg 0 (STREAM): #<LISP-LISTENER Lisp Listener 1 23600000 exposed>
   Rest arg: (:NAME "Lisp Top Level in Lisp Listener 1")

Rest of stack:
SI:LISP-TOP-LEVEL1:  (P.C. = 22)
SI:LISP-TOP-LEVEL:  (P.C. = 7)