Changeset 12018


Ignore:
Timestamp:
06/16/09 20:46:06 (14 years ago)
Author:
ehuelsmann
Message:

Reconstruct NaNs? upon reading, if readable output is requested.

Location:
trunk/abcl/src/org/armedbear/lisp
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/src/org/armedbear/lisp/DoubleFloat.java

    r11955 r12018  
    592592            return sb.toString();
    593593        }
    594         if (value != value)
    595             return "#<DOUBLE-FLOAT NaN>";
     594
     595        LispThread thread = LispThread.currentThread();
     596        boolean printReadably = Symbol.PRINT_READABLY.symbolValue(thread) != NIL;
     597
     598        if (value != value) {
     599            if (printReadably)
     600                return "#.(progn \"Comment: create a NaN.\" (/ 0.0d0 0.0d0))";
     601            else
     602                return "#<DOUBLE-FLOAT NaN>";
     603        }
    596604        String s1 = String.valueOf(value);
    597         LispThread thread = LispThread.currentThread();
    598         if (Symbol.PRINT_READABLY.symbolValue(thread) != NIL ||
     605        if (printReadably ||
    599606            !memq(Symbol.READ_DEFAULT_FLOAT_FORMAT.symbolValue(thread),
    600607                  list(Symbol.DOUBLE_FLOAT, Symbol.LONG_FLOAT)))
  • trunk/abcl/src/org/armedbear/lisp/SingleFloat.java

    r11955 r12018  
    581581            return sb.toString();
    582582        }
    583         if (value != value)
    584             return "#<SINGLE-FLOAT NaN>";
     583
     584        LispThread thread = LispThread.currentThread();
     585        boolean printReadably = Symbol.PRINT_READABLY.symbolValue(thread) != NIL;
     586
     587        if (value != value) {
     588            if (printReadably)
     589                return "#.(progn \"Comment: create a NaN.\" (/ 0.0s0 0.0s0))";
     590            else
     591                return "#<SINGLE-FLOAT NaN>";
     592        }
    585593        String s1 = String.valueOf(value);
    586         LispThread thread = LispThread.currentThread();
    587         if (Symbol.PRINT_READABLY.symbolValue(thread) != NIL ||
     594        if (printReadably ||
    588595            !memq(Symbol.READ_DEFAULT_FLOAT_FORMAT.symbolValue(thread),
    589596                  list(Symbol.SINGLE_FLOAT, Symbol.SHORT_FLOAT)))
Note: See TracChangeset for help on using the changeset viewer.