From 8479c4bebf08ed3bb1e6722a7d6ea780720d310d Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 21 Jun 2019 11:53:57 -0600 Subject: [PATCH] print positive flonum exponents with "+" original commit: bcf4dd26d268e25a89f24edc4ae7c75c97411c6d --- mats/5_3.ms | 4 ++-- mats/ieee.ms | 4 ++-- mats/patch-compile-0-t-f-f | 12 ++++++------ mats/patch-compile-2-t-f-f | 12 ++++++------ mats/root-experr-compile-0-f-f-f | 8 ++++---- mats/root-experr-compile-2-f-f-f | 8 ++++---- s/print.ss | 1 + 7 files changed, 25 insertions(+), 24 deletions(-) diff --git a/mats/5_3.ms b/mats/5_3.ms index 9b59e6ccca..d8205f1b71 100644 --- a/mats/5_3.ms +++ b/mats/5_3.ms @@ -790,7 +790,7 @@ (equal? (number->string 3.024) "3.024") (eqv? (string->number (number->string #i2/3)) #i2/3) (equal? (number->string 3.000) "3.0") - (equal? (number->string 3.2e20) "3.2e20") + (equal? (number->string 3.2e20) "3.2e+20") (equal? (number->string 3.2e2) "320.0") (equal? (number->string 3200000) "3200000") (equal? (number->string 320000) "320000") @@ -848,7 +848,7 @@ (equal? (r6rs:number->string 3.024) "3.024") (eqv? (string->number (r6rs:number->string #i2/3)) #i2/3) (equal? (r6rs:number->string 3.000) "3.0") - (equal? (r6rs:number->string 3.2e20) "3.2e20") + (equal? (r6rs:number->string 3.2e20) "3.2e+20") (equal? (r6rs:number->string 3.2e2) "320.0") (equal? (r6rs:number->string 3200000) "3200000") (equal? (r6rs:number->string 320000) "320000") diff --git a/mats/ieee.ms b/mats/ieee.ms index 38b22565e6..f623fdd5e0 100644 --- a/mats/ieee.ms +++ b/mats/ieee.ms @@ -709,12 +709,12 @@ ) (mat fp-output - (equal? (number->string 1e23) "1e23") + (equal? (number->string 1e23) "1e+23") (equal? (number->string 4.450147717014403e-308) "4.450147717014403e-308") (equal? (number->string 1.1665795231290236e-302) "1.1665795231290236e-302") ; fp printing algorithm always rounds up on ties (equal? (number->string 3.6954879760742188e-6) "3.6954879760742188e-6") - (equal? (number->string 5.629499534213123e14) "5.629499534213123e14") + (equal? (number->string 5.629499534213123e14) "5.629499534213123e+14") ) (mat string->number diff --git a/mats/patch-compile-0-t-f-f b/mats/patch-compile-0-t-f-f index e4c03d0adb..6c3769fadf 100644 --- a/mats/patch-compile-0-t-f-f +++ b/mats/patch-compile-0-t-f-f @@ -2242,7 +2242,7 @@ *************** *** 2175,2204 **** bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value -500". - bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value 1e100". + bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value 1e+100". bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000". ! bytevector.mo:Expected error in mat bytevector-length: "incorrect argument count in call (bytevector-length)". ! bytevector.mo:Expected error in mat bytevector-length: "incorrect argument count in call (bytevector-length #vu8() #vu8())". @@ -2273,7 +2273,7 @@ bytevector.mo:Expected error in mat bytevector-s8-set!: "bytevector-s8-set!: 3 is not a valid index for #vu8(3 4 5)". --- 2175,2204 ---- bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value -500". - bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value 1e100". + bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value 1e+100". bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000". ! bytevector.mo:Expected error in mat bytevector-length: "incorrect number of arguments 0 to #". ! bytevector.mo:Expected error in mat bytevector-length: "incorrect number of arguments 2 to #". @@ -3184,7 +3184,7 @@ *** 2892,2901 **** bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: unrecognized endianness (quote bonkers)". bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: unrecognized endianness get-real". - bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: unrecognized endianness 1e23". + bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: unrecognized endianness 1e+23". ! bytevector.mo:Expected error in mat bytevector-u64-ref: "incorrect argument count in call (bytevector-u64-ref)". ! bytevector.mo:Expected error in mat bytevector-u64-ref: "incorrect argument count in call (bytevector-u64-ref $v1)". ! bytevector.mo:Expected error in mat bytevector-u64-ref: "incorrect argument count in call (bytevector-u64-ref $v1 0)". @@ -3195,7 +3195,7 @@ --- 2892,2901 ---- bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: unrecognized endianness (quote bonkers)". bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: unrecognized endianness get-real". - bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: unrecognized endianness 1e23". + bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: unrecognized endianness 1e+23". ! bytevector.mo:Expected error in mat bytevector-u64-ref: "incorrect number of arguments 0 to #". ! bytevector.mo:Expected error in mat bytevector-u64-ref: "incorrect number of arguments 1 to #". ! bytevector.mo:Expected error in mat bytevector-u64-ref: "incorrect number of arguments 2 to #". @@ -3207,7 +3207,7 @@ *** 2911,2921 **** bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: unrecognized endianness (quote bonkers)". bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: unrecognized endianness get-real". - bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: unrecognized endianness 1e23". + bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: unrecognized endianness 1e+23". ! bytevector.mo:Expected error in mat bytevector-s64-set!: "incorrect argument count in call (bytevector-s64-set!)". ! bytevector.mo:Expected error in mat bytevector-s64-set!: "incorrect argument count in call (bytevector-s64-set! $v1)". ! bytevector.mo:Expected error in mat bytevector-s64-set!: "incorrect argument count in call (bytevector-s64-set! $v1 0)". @@ -3219,7 +3219,7 @@ --- 2911,2921 ---- bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: unrecognized endianness (quote bonkers)". bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: unrecognized endianness get-real". - bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: unrecognized endianness 1e23". + bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: unrecognized endianness 1e+23". ! bytevector.mo:Expected error in mat bytevector-s64-set!: "incorrect number of arguments 0 to #". ! bytevector.mo:Expected error in mat bytevector-s64-set!: "incorrect number of arguments 1 to #". ! bytevector.mo:Expected error in mat bytevector-s64-set!: "incorrect number of arguments 2 to #". diff --git a/mats/patch-compile-2-t-f-f b/mats/patch-compile-2-t-f-f index 0fc9d7f694..f951012ca0 100644 --- a/mats/patch-compile-2-t-f-f +++ b/mats/patch-compile-2-t-f-f @@ -2186,7 +2186,7 @@ *************** *** 2098,2127 **** bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value -500". - bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value 1e100". + bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value 1e+100". bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000". ! bytevector.mo:Expected error in mat bytevector-length: "incorrect argument count in call (bytevector-length)". ! bytevector.mo:Expected error in mat bytevector-length: "incorrect argument count in call (bytevector-length #vu8() #vu8())". @@ -2217,7 +2217,7 @@ bytevector.mo:Expected error in mat bytevector-s8-set!: "bytevector-s8-set!: 3 is not a valid index for #vu8(3 4 5)". --- 2098,2127 ---- bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value -500". - bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value 1e100". + bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value 1e+100". bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000". ! bytevector.mo:Expected error in mat bytevector-length: "incorrect number of arguments to #". ! bytevector.mo:Expected error in mat bytevector-length: "incorrect number of arguments to #". @@ -3128,7 +3128,7 @@ *** 2815,2824 **** bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: unrecognized endianness (quote bonkers)". bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: unrecognized endianness get-real". - bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: unrecognized endianness 1e23". + bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: unrecognized endianness 1e+23". ! bytevector.mo:Expected error in mat bytevector-u64-ref: "incorrect argument count in call (bytevector-u64-ref)". ! bytevector.mo:Expected error in mat bytevector-u64-ref: "incorrect argument count in call (bytevector-u64-ref $v1)". ! bytevector.mo:Expected error in mat bytevector-u64-ref: "incorrect argument count in call (bytevector-u64-ref $v1 0)". @@ -3139,7 +3139,7 @@ --- 2815,2824 ---- bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: unrecognized endianness (quote bonkers)". bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: unrecognized endianness get-real". - bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: unrecognized endianness 1e23". + bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: unrecognized endianness 1e+23". ! bytevector.mo:Expected error in mat bytevector-u64-ref: "incorrect number of arguments to #". ! bytevector.mo:Expected error in mat bytevector-u64-ref: "incorrect number of arguments to #". ! bytevector.mo:Expected error in mat bytevector-u64-ref: "incorrect number of arguments to #". @@ -3151,7 +3151,7 @@ *** 2834,2844 **** bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: unrecognized endianness (quote bonkers)". bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: unrecognized endianness get-real". - bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: unrecognized endianness 1e23". + bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: unrecognized endianness 1e+23". ! bytevector.mo:Expected error in mat bytevector-s64-set!: "incorrect argument count in call (bytevector-s64-set!)". ! bytevector.mo:Expected error in mat bytevector-s64-set!: "incorrect argument count in call (bytevector-s64-set! $v1)". ! bytevector.mo:Expected error in mat bytevector-s64-set!: "incorrect argument count in call (bytevector-s64-set! $v1 0)". @@ -3163,7 +3163,7 @@ --- 2834,2844 ---- bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: unrecognized endianness (quote bonkers)". bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: unrecognized endianness get-real". - bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: unrecognized endianness 1e23". + bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: unrecognized endianness 1e+23". ! bytevector.mo:Expected error in mat bytevector-s64-set!: "incorrect number of arguments to #". ! bytevector.mo:Expected error in mat bytevector-s64-set!: "incorrect number of arguments to #". ! bytevector.mo:Expected error in mat bytevector-s64-set!: "incorrect number of arguments to #". diff --git a/mats/root-experr-compile-0-f-f-f b/mats/root-experr-compile-0-f-f-f index ce5c6e3135..2f4142a703 100644 --- a/mats/root-experr-compile-0-f-f-f +++ b/mats/root-experr-compile-0-f-f-f @@ -2173,7 +2173,7 @@ bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value 256". bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value -129". bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value 500". bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value -500". -bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value 1e100". +bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value 1e+100". bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000". bytevector.mo:Expected error in mat bytevector-length: "incorrect argument count in call (bytevector-length)". bytevector.mo:Expected error in mat bytevector-length: "incorrect argument count in call (bytevector-length #vu8() #vu8())". @@ -2891,7 +2891,7 @@ bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: inv bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: invalid index 4.0 for bytevector #vu8(0 0 0 0 0 0 ...)". bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: unrecognized endianness (quote bonkers)". bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: unrecognized endianness get-real". -bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: unrecognized endianness 1e23". +bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: unrecognized endianness 1e+23". bytevector.mo:Expected error in mat bytevector-u64-ref: "incorrect argument count in call (bytevector-u64-ref)". bytevector.mo:Expected error in mat bytevector-u64-ref: "incorrect argument count in call (bytevector-u64-ref $v1)". bytevector.mo:Expected error in mat bytevector-u64-ref: "incorrect argument count in call (bytevector-u64-ref $v1 0)". @@ -2910,7 +2910,7 @@ bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: inv bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: invalid index 4.0 for bytevector #vu8(0 0 0 0 0 0 ...)". bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: unrecognized endianness (quote bonkers)". bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: unrecognized endianness get-real". -bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: unrecognized endianness 1e23". +bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: unrecognized endianness 1e+23". bytevector.mo:Expected error in mat bytevector-s64-set!: "incorrect argument count in call (bytevector-s64-set!)". bytevector.mo:Expected error in mat bytevector-s64-set!: "incorrect argument count in call (bytevector-s64-set! $v1)". bytevector.mo:Expected error in mat bytevector-s64-set!: "incorrect argument count in call (bytevector-s64-set! $v1 0)". @@ -8818,7 +8818,7 @@ fx.mo:Expected error in mat fxsll: "fxsll: fixnum overflow with arguments -4097 fx.mo:Expected error in mat fxsll: "fxsll: fixnum overflow with arguments <-int> and 1". fx.mo:Expected error in mat fxarithmetic-shift-left: "fxarithmetic-shift-left: invalid shift count ". fx.mo:Expected error in mat fxarithmetic-shift-left: "fxarithmetic-shift-left: a is not a fixnum". -fx.mo:Expected error in mat fxarithmetic-shift-left: "fxarithmetic-shift-left: 1e23 is not a fixnum". +fx.mo:Expected error in mat fxarithmetic-shift-left: "fxarithmetic-shift-left: 1e+23 is not a fixnum". fx.mo:Expected error in mat fxarithmetic-shift-left: "fxarithmetic-shift-left: is not a fixnum". fx.mo:Expected error in mat fxarithmetic-shift-left: "fxarithmetic-shift-left: invalid shift count -1". fx.mo:Expected error in mat fxarithmetic-shift-left: "fxarithmetic-shift-left: fixnum overflow with arguments 1 and ". diff --git a/mats/root-experr-compile-2-f-f-f b/mats/root-experr-compile-2-f-f-f index 9503fe5f07..b1008832dd 100644 --- a/mats/root-experr-compile-2-f-f-f +++ b/mats/root-experr-compile-2-f-f-f @@ -2143,7 +2143,7 @@ bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value 256". bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value -129". bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value 500". bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value -500". -bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value 1e100". +bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value 1e+100". bytevector.mo:Expected error in mat bytevector: "bytevector: invalid value 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000". bytevector.mo:Expected error in mat bytevector-length: "incorrect argument count in call (bytevector-length)". bytevector.mo:Expected error in mat bytevector-length: "incorrect argument count in call (bytevector-length #vu8() #vu8())". @@ -2861,7 +2861,7 @@ bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: inv bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: invalid index 4.0 for bytevector #vu8(0 0 0 0 0 0 ...)". bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: unrecognized endianness (quote bonkers)". bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: unrecognized endianness get-real". -bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: unrecognized endianness 1e23". +bytevector.mo:Expected error in mat bytevector-s64-ref: "bytevector-s64-ref: unrecognized endianness 1e+23". bytevector.mo:Expected error in mat bytevector-u64-ref: "incorrect argument count in call (bytevector-u64-ref)". bytevector.mo:Expected error in mat bytevector-u64-ref: "incorrect argument count in call (bytevector-u64-ref $v1)". bytevector.mo:Expected error in mat bytevector-u64-ref: "incorrect argument count in call (bytevector-u64-ref $v1 0)". @@ -2880,7 +2880,7 @@ bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: inv bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: invalid index 4.0 for bytevector #vu8(0 0 0 0 0 0 ...)". bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: unrecognized endianness (quote bonkers)". bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: unrecognized endianness get-real". -bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: unrecognized endianness 1e23". +bytevector.mo:Expected error in mat bytevector-u64-ref: "bytevector-u64-ref: unrecognized endianness 1e+23". bytevector.mo:Expected error in mat bytevector-s64-set!: "incorrect argument count in call (bytevector-s64-set!)". bytevector.mo:Expected error in mat bytevector-s64-set!: "incorrect argument count in call (bytevector-s64-set! $v1)". bytevector.mo:Expected error in mat bytevector-s64-set!: "incorrect argument count in call (bytevector-s64-set! $v1 0)". @@ -8766,7 +8766,7 @@ fx.mo:Expected error in mat fxsll: "fxsll: fixnum overflow with arguments -4097 fx.mo:Expected error in mat fxsll: "fxsll: fixnum overflow with arguments <-int> and 1". fx.mo:Expected error in mat fxarithmetic-shift-left: "fxarithmetic-shift-left: invalid shift count ". fx.mo:Expected error in mat fxarithmetic-shift-left: "fxarithmetic-shift-left: a is not a fixnum". -fx.mo:Expected error in mat fxarithmetic-shift-left: "fxarithmetic-shift-left: 1e23 is not a fixnum". +fx.mo:Expected error in mat fxarithmetic-shift-left: "fxarithmetic-shift-left: 1e+23 is not a fixnum". fx.mo:Expected error in mat fxarithmetic-shift-left: "fxarithmetic-shift-left: is not a fixnum". fx.mo:Expected error in mat fxarithmetic-shift-left: "fxarithmetic-shift-left: invalid shift count -1". fx.mo:Expected error in mat fxarithmetic-shift-left: "fxarithmetic-shift-left: fixnum overflow with arguments 1 and ". diff --git a/s/print.ss b/s/print.ss index 2d7958f4c0..3299764de3 100644 --- a/s/print.ss +++ b/s/print.ss @@ -1008,6 +1008,7 @@ floating point returns with (1 0 -1 ...). (write-char (flonum-digit->char u) p) (loop (cdr s)))))) (write-char #\e p) + (when (fxpositive? e) (write-char #\+ p)) (wrfixnum e r #t p))) (define display-precision