# Commands covered: expr
#
# This file contains a collection of tests for one or more of the Tcl
# built-in commands. Sourcing this file into Tcl runs the tests and
# generates output for errors.  No output means no errors were found.
#
# Copyright © 1996-1997 Sun Microsystems, Inc.
# Copyright © 1998-2000 Scriptics Corporation.
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.

if {"::tcltest" ni [namespace children]} {
    package require tcltest 2.5
    namespace import -force ::tcltest::*
}

::tcltest::loadTestedCommands

# Determine if "long int" type is a 32 bit number and if the wide
# type is a 64 bit number on this machine.

testConstraint longIs32bit [expr {$tcl_platform(wordSize) == 4}]
testConstraint wideIs64bit [expr {wide(0x8000000000000000) < 0}]

# Big test for correct ordering of data in [expr]

proc testIEEE {} {
    variable ieeeValues
    binary scan [binary format dd -1.0 1.0] c* c
    switch -exact -- $c {
	{0 0 0 0 0 0 -16 -65 0 0 0 0 0 0 -16 63} {
	    # little endian
	    binary scan \x00\x00\x00\x00\x00\x00\xF0\xFF d \
		ieeeValues(-Infinity)
	    binary scan \x00\x00\x00\x00\x00\x00\xF0\xBF d \
		ieeeValues(-Normal)
	    binary scan \x00\x00\x00\x00\x00\x00\x08\x80 d \
		ieeeValues(-Subnormal)
	    binary scan \x00\x00\x00\x00\x00\x00\x00\x80 d \
		ieeeValues(-0)
	    binary scan \x00\x00\x00\x00\x00\x00\x00\x00 d \
		ieeeValues(+0)
	    binary scan \x00\x00\x00\x00\x00\x00\x08\x00 d \
		ieeeValues(+Subnormal)
	    binary scan \x00\x00\x00\x00\x00\x00\xF0\x3F d \
		ieeeValues(+Normal)
	    binary scan \x00\x00\x00\x00\x00\x00\xF0\x7F d \
		ieeeValues(+Infinity)
	    binary scan \x00\x00\x00\x00\x00\x00\xF8\x7F d \
		ieeeValues(NaN)
	    binary scan \x00\x00\x00\x00\x00\x00\xF8\xFF d \
		ieeeValues(-NaN)
	    set ieeeValues(littleEndian) 1
	    return 1
	}
	{-65 -16 0 0 0 0 0 0 63 -16 0 0 0 0 0 0} {
	    binary scan \xFF\xF0\x00\x00\x00\x00\x00\x00 d \
		ieeeValues(-Infinity)
	    binary scan \xBF\xF0\x00\x00\x00\x00\x00\x00 d \
		ieeeValues(-Normal)
	    binary scan \x80\x08\x00\x00\x00\x00\x00\x00 d \
		ieeeValues(-Subnormal)
	    binary scan \x80\x00\x00\x00\x00\x00\x00\x00 d \
		ieeeValues(-0)
	    binary scan \x00\x00\x00\x00\x00\x00\x00\x00 d \
		ieeeValues(+0)
	    binary scan \x00\x08\x00\x00\x00\x00\x00\x00 d \
		ieeeValues(+Subnormal)
	    binary scan \x3F\xF0\x00\x00\x00\x00\x00\x00 d \
		ieeeValues(+Normal)
	    binary scan \x7F\xF0\x00\x00\x00\x00\x00\x00 d \
		ieeeValues(+Infinity)
	    binary scan \x7F\xF8\x00\x00\x00\x00\x00\x00 d \
		ieeeValues(NaN)
	    binary scan \xFF\xF8\x00\x00\x00\x00\x00\x00 d \
		ieeeValues(-NaN)
	    set ieeeValues(littleEndian) 0
	    return 1
	}
	default {
	    return 0
	}
    }
}

testConstraint ieeeFloatingPoint [testIEEE]
# procedures used below

proc put_hello_char {c} {
    global a
    append a [format %c $c]
    return $c
}
proc hello_world {} {
    global a
    set a ""
    set L1 [set l0 [set h_1 [set q 0]]]
    for {put_hello_char [expr [put_hello_char [expr [set h 7]*10+2]]+29]} {$l0?[put_hello_char $l0]
	:!$h_1} {put_hello_char $ll;expr {$L1==2?[set ll [expr 32+0-0+[set bar 0]]]:0}} {expr {[incr L1]==[expr 1+([string length "abc"]-[string length "abc"])]
	?[set ll [set l0 [expr 54<<1]]]:$ll==108&&$L1<3?
	[incr ll [expr 1|1<<1]; set ll $ll; set ll $ll; set ll $ll; set ll $ll; set l0 [expr ([string length "abc"]-[string length "abc"])+([string length "abc"]-[string length "abc"])-([string length "abc"]-[string length "abc"])+([string length "abc"]-[string length "abc"])]; set l0; set l0 $l0; set l0; set l0]:$L1==4&&$ll==32?[set ll [expr 19+$h1+([string length "abc"]-[string length "abc"])-([string length "abc"]-[string length "abc"])+([string length "abc"]-[string length "abc"])-([string length "abc"]-[string length "abc"])+[set foo [expr ([string length "abc"]-[string length "abc"])+([string length "abc"]-[string length "abc"])+([string length "abc"]-[string length "abc"])]]]]
	:[set q [expr $q-$h1+([string length "abc"]-[string length "abc"])-([string length "abc"]-[string length "abc"])]]};expr {$L1==5?[incr ll -8; set ll $ll; set ll]:$q&&$h1&&1};expr {$L1==4+2
	?[incr ll 3]:[expr ([string length "abc"]-[string length "abc"])+1]};expr {$ll==($h<<4)+2+0&&$L1!=6?[incr ll -6]:[set h1 [expr 100+([string length "abc"]-[string length "abc"])-([string length "abc"]-[string length "abc"])]]}
	expr {$L1!=1<<3?[incr q [expr ([string length "abc"]-[string length "abc"])-1]]:[set h_1 [set ll $h1]]}
    }
    set a
}

proc 12days {a b c} {
    global xxx
    expr {1<$a?[expr {$a<3?[12days -79 -13 [string range $c [12days -87 \
	[expr 1-$b] [string range $c [12days -86 0 [string range $c 1 end]] \
	end]] end]]:1};expr {$a<$b?[12days [expr $a+1] $b $c]:3};expr {[12days \
	-94 [expr $a-27] $c]&&$a==2?$b<13?[12days 2 [expr $b+1] "%s %d %d\n"]:9
	:16}]:$a<0?$a<-72?[12days $b $a "@n'+,#'/*\{\}w+/w#cdnr/+,\{\}r/*de\}+,/*\{*+,/w\{%+,/w#q#n+,/#\{l+,/n\{n+,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,\}\{w+K w'K:'+\}e#';dq#'l q#'+d'K#!/+k#;q#'r\}eKK#\}w'r\}eKK\{nl\]'/#;#q#n')\{)#\}w')\{)\{nl\]'/+#n';d\}rw' i;# )\{nl\]!/n\{n#'; r\{#w'r nc\{nl\]'/#\{l,+'K \{rw' iK\{;\[\{nl\]'/w#q#n'wk nw' iwk\{KK\{nl\]!/w\{%'l##w#' i; :\{nl\]'/*\{q#'ld;r'\}\{nlwb!/*de\}'c ;;\{nl'-\{\}rw\]'/+,\}##'*\}#nc,',#nw\]'/+kd'+e\}+;#'rdq#w! nr'/ ') \}+\}\{rl#'\{n' ')# \}'+\}##(!!/"]
	:$a<-50?[string compare [format %c $b] [string index $c 0]]==0?[append \
	xxx [string index $c 31];scan [string index $c 31] %c x;set x]
	:[12days -65 $b [string range $c 1 end]]:[12days [expr ([string compare \
	[string index $c 0] "/"]==0)+$a] $b [string range $c 1 end]]:0<$a
	?[12days 2 2 "%s"]:[string compare [string index $c 0] "/"]==0||
	[12days 0 [12days -61 [scan [string index $c 0] %c x; set x] \
	"!ek;dc i@bK'(q)-\[w\]*%n+r3#l,\{\}:\nuwloca-O;m .vpbks,fxntdCeghiry"] \
	[string range $c 1 end]]}
}
proc do_twelve_days {} {
    global xxx
    set xxx ""
    12days 1 1 1
    set result [string length $xxx]
    unset xxx
    return $result
}

# start of tests

catch {unset a b i x}

test expr-1.1 {TclCompileExprCmd: no expression} -body {
    expr
} -returnCodes error -result {wrong # args: should be "expr arg ?arg ...?"}
test expr-1.2 {TclCompileExprCmd: one expression word} {
    expr -25
} -25
test expr-1.3 {TclCompileExprCmd: two expression words} {
    expr -8.2   -6
} -14.2
test expr-1.4 {TclCompileExprCmd: five expression words} {
    expr 20 - 5 +10 -7
} 18
test expr-1.5 {TclCompileExprCmd: quoted expression word} {
    expr "0005"
} 5
test expr-1.6 {TclCompileExprCmd: quoted expression word} {
    catch {expr "0005"zxy} msg
    set msg
} {extra characters after close-quote}
test expr-1.7 {TclCompileExprCmd: expression word in braces} {
    expr {-0005}
} -5
test expr-1.8 {TclCompileExprCmd: expression word in braces} {
    expr {{-0x1234}}
} -4660
test expr-1.9 {TclCompileExprCmd: expression word in braces} {
    catch {expr {-0005}foo} msg
    set msg
} {extra characters after close-brace}
test expr-1.10 {TclCompileExprCmd: other expression word in braces} {
    expr 4*[llength "6 2"]
} 8
test expr-1.11 {TclCompileExprCmd: expression word terminated by ;} {
    expr 4*[llength "6 2"];
} 8
test expr-1.12 {TclCompileExprCmd: inlined expr (in "catch") inside other catch} {
    set a xxx
    catch {
	# Might not be a number
	set a [expr 10*$a]
    }
} 1
test expr-1.13 {TclCompileExprCmd: second level of substitutions in expr not in braces with single var reference} {
    set a xxx
    set x 27;  set bool {$x};  if $bool {set a foo}
    set a
} foo
test expr-1.14 {TclCompileExprCmd: second level of substitutions in expr with comparison as top-level operator} {
    set a xxx
    set x 2;  set b {$x};  set a [expr $b==2]
    set a
} 1
test expr-1.15 {TclCompileExprCmd: second level of substitutions in expr with comparison as top-level operator} {
    set a xxx
    set x 2;  set b {$x};  set a [expr "$b eq 2"]
    set a
} 1

test expr-2.1 {TclCompileExpr: are builtin functions registered?} {
    expr double(5*[llength "6 2"])
} 10.0
test expr-2.2 {TclCompileExpr: error in expr} -body {
    expr 2***3
} -returnCodes error -match glob -result *
test expr-2.3 {TclCompileExpr: junk after legal expr} -body {
    expr 7*[llength "a b"]foo
} -returnCodes error -match glob -result *
test expr-2.4 {TclCompileExpr: numeric expr string rep == formatted int rep} {
    expr {0001}
} 1

test expr-3.1 {CompileCondExpr: just lor expr} {expr 3||0} 1
test expr-3.2 {CompileCondExpr: error in lor expr} -body {
    expr x||3
} -returnCodes error -match glob -result *
test expr-3.3 {CompileCondExpr: test true arm} {expr 3>2?44:66} 44
test expr-3.4 {CompileCondExpr: error compiling true arm} -body {
    expr 3>2?2***3:66
} -returnCodes error -match glob -result *
test expr-3.5 {CompileCondExpr: test false arm} {expr 2>3?44:66} 66
test expr-3.6 {CompileCondExpr: error compiling false arm} -body {
    expr 2>3?44:2***3
} -returnCodes error -match glob -result *
test expr-3.7 {CompileCondExpr: long arms & nested cond exprs} {
    hello_world
} {Hello world}
test expr-3.8 {CompileCondExpr: long arms & nested cond exprs} unix {
    # Fails with a stack overflow on threaded Windows builds
    do_twelve_days
} 2358

test expr-4.1 {CompileLorExpr: just land expr} {expr 1.3&&3.3} 1
test expr-4.2 {CompileLorExpr: error in land expr} -body {
    expr x&&3
} -returnCodes error -match glob -result *
test expr-4.3 {CompileLorExpr: simple lor exprs} {expr 0||1.0} 1
test expr-4.4 {CompileLorExpr: simple lor exprs} {expr 3.0||0.0} 1
test expr-4.5 {CompileLorExpr: simple lor exprs} {expr 0||0||1} 1
test expr-4.6 {CompileLorExpr: error compiling lor arm} -body {
    expr 2***3||4.0
} -returnCodes error -match glob -result *
test expr-4.7 {CompileLorExpr: error compiling lor arm} -body {
    expr 1.3||2***3
} -returnCodes error -match glob -result *
test expr-4.8 {CompileLorExpr: error compiling lor arms} {
    list [catch {expr {"a"||"b"}} msg] $msg
} {1 {expected boolean value but got "a"}}
test expr-4.9 {CompileLorExpr: long lor arm} {
    set a "abcdefghijkl"
    set i 7
    expr {[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]] || [string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]] || [string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]] || [string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]&&[string compare [format %c $i] [string index $a $i]]}
} 1
test expr-4.10 {CompileLorExpr: error compiling ! operand} {
    list [catch {expr {!"a"}} msg] $msg
} {1 {cannot use non-numeric string "a" as operand of "!"}}
test expr-4.11 {CompileLorExpr: error compiling land arms} {
    list [catch {expr {"a"||0}} msg] $msg
} {1 {expected boolean value but got "a"}}
test expr-4.12 {CompileLorExpr: error compiling land arms} {
    list [catch {expr {0||"a"}} msg] $msg
} {1 {expected boolean value but got "a"}}

test expr-5.1 {CompileLandExpr: just bitor expr} {expr 7|0x13} 23
test expr-5.2 {CompileLandExpr: error in bitor expr} -body {
    expr x|3
} -returnCodes error -match glob -result *
test expr-5.3 {CompileLandExpr: simple land exprs} {expr 0&&1.0} 0
test expr-5.4 {CompileLandExpr: simple land exprs} {expr 0&&0} 0
test expr-5.5 {CompileLandExpr: simple land exprs} {expr 3.0&&1.2} 1
test expr-5.6 {CompileLandExpr: simple land exprs} {expr 1&&1&&2} 1
test expr-5.7 {CompileLandExpr: error compiling land arm} -body {
    expr 2***3&&4.0
} -returnCodes error -match glob -result *
test expr-5.8 {CompileLandExpr: error compiling land arm} -body {
    expr 1.3&&2***3
} -returnCodes error -match glob -result *
test expr-5.9 {CompileLandExpr: error compiling land arm} {
    list [catch {expr {"a"&&"b"}} msg] $msg
} {1 {expected boolean value but got "a"}}
test expr-5.10 {CompileLandExpr: long land arms} {
    set a "abcdefghijkl"
    set i 7
    expr {[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]] && [string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]] && [string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]] && [string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]^[string compare [format %c 103] [string index $a $i]]^[string compare [format %c 105] [string index $a $i]]}
} 1

test expr-6.1 {CompileBitXorExpr: just bitand expr} {expr 7&0x13} 3
test expr-6.2 {CompileBitXorExpr: error in bitand expr} -body {
    expr x|3
} -returnCodes error -match glob -result *
test expr-6.3 {CompileBitXorExpr: simple bitxor exprs} {expr 7^0x13} 20
test expr-6.4 {CompileBitXorExpr: simple bitxor exprs} {expr 3^0x10} 19
test expr-6.5 {CompileBitXorExpr: simple bitxor exprs} {expr 0^7} 7
test expr-6.6 {CompileBitXorExpr: simple bitxor exprs} {expr -1^7} -8
test expr-6.7 {CompileBitXorExpr: error compiling bitxor arm} -body {
    expr 2***3|6
} -returnCodes error -match glob -result *
test expr-6.8 {CompileBitXorExpr: error compiling bitxor arm} -body {
    expr 2^x
} -returnCodes error -match glob -result *
test expr-6.9 {CompileBitXorExpr: runtime error in bitxor arm} {
    list [catch {expr {24.0^3}} msg] $msg
} {1 {cannot use floating-point value "24.0" as left operand of "^"}}
test expr-6.10 {CompileBitXorExpr: runtime error in bitxor arm} {
    list [catch {expr {"a"^"b"}} msg] $msg
} {1 {cannot use non-numeric string "a" as left operand of "^"}}

test expr-7.1 {CompileBitAndExpr: just equality expr} {expr 3==2} 0
test expr-7.2 {CompileBitAndExpr: just equality expr} {expr 2.0==2} 1
test expr-7.3 {CompileBitAndExpr: just equality expr} {expr 3.2!=2.2} 1
test expr-7.4 {CompileBitAndExpr: just equality expr} {expr {"abc" == "abd"}} 0
test expr-7.5 {CompileBitAndExpr: error in equality expr} -body {
    expr x==3
} -returnCodes error -match glob -result *
test expr-7.6 {CompileBitAndExpr: simple bitand exprs} {expr 7&0x13} 3
test expr-7.7 {CompileBitAndExpr: simple bitand exprs} {expr 0xf2&0x53} 82
test expr-7.8 {CompileBitAndExpr: simple bitand exprs} {expr 3&6} 2
test expr-7.9 {CompileBitAndExpr: simple bitand exprs} {expr -1&-7} -7
test expr-7.10 {CompileBitAndExpr: error compiling bitand arm} -body {
    expr 2***3&6
} -returnCodes error -match glob -result *
test expr-7.11 {CompileBitAndExpr: error compiling bitand arm} -body {
    expr 2&x
} -returnCodes error -match glob -result *
test expr-7.12 {CompileBitAndExpr: runtime error in bitand arm} {
    list [catch {expr {24.0&3}} msg] $msg
} {1 {cannot use floating-point value "24.0" as left operand of "&"}}
test expr-7.13 {CompileBitAndExpr: runtime error in bitand arm} {
    list [catch {expr {"a"&"b"}} msg] $msg
} {1 {cannot use non-numeric string "a" as left operand of "&"}}
test expr-7.14 {CompileBitAndExpr: equality expr} {expr 3eq2} 0
test expr-7.18 {CompileBitAndExpr: equality expr} {expr {"abc" eq "abd"}} 0
test expr-7.20 {CompileBitAndExpr: error in equality expr} -body {
    expr xne3
} -returnCodes error -match glob -result *

test expr-8.1 {CompileEqualityExpr: just relational expr} {expr 3>=2} 1
test expr-8.2 {CompileEqualityExpr: just relational expr} {expr 2<=2.1} 1
test expr-8.3 {CompileEqualityExpr: just relational expr} {expr 3.2>"2.2"} 1
test expr-8.4 {CompileEqualityExpr: just relational expr} {expr {"0y"<"0x12"}} 0
test expr-8.5 {CompileEqualityExpr: error in relational expr} -body {
    expr x>3
} -returnCodes error -match glob -result *
test expr-8.6 {CompileEqualityExpr: simple equality exprs} {expr 7==0x13} 0
test expr-8.7 {CompileEqualityExpr: simple equality exprs} {expr -0xf2!=0x53} 1
test expr-8.8 {CompileEqualityExpr: simple equality exprs} {expr {"12398712938788234-1298379" != ""}} 1
test expr-8.9 {CompileEqualityExpr: simple equality exprs} {expr -1!="abc"} 1
test expr-8.10 {CompileEqualityExpr: error compiling equality arm} -body {
    expr 2***3==6
} -returnCodes error -match glob -result *
test expr-8.11 {CompileEqualityExpr: error compiling equality arm} -body {
    expr 2!=x
} -returnCodes error -match glob -result *
test expr-8.12 {CompileBitAndExpr: equality expr} {expr {"a"eq"a"}} 1
test expr-8.13 {CompileBitAndExpr: equality expr} {expr {"\374" eq [set s \xFC]}} 1
test expr-8.14 {CompileBitAndExpr: equality expr} {expr 3eq2} 0
test expr-8.15 {CompileBitAndExpr: equality expr} {expr 2.0eq2} 0
test expr-8.16 {CompileBitAndExpr: equality expr} {expr 3.2ne2.2} 1
test expr-8.17 {CompileBitAndExpr: equality expr} {expr 01eq1} 0
test expr-8.18 {CompileBitAndExpr: equality expr} {expr {"abc" eq "abd"}} 0
test expr-8.19 {CompileBitAndExpr: equality expr} {expr {"abc" ne "abd"}} 1
test expr-8.20 {CompileBitAndExpr: error in equality expr} -body {
    expr x ne3
} -returnCodes error -match glob -result *
test expr-8.21 {CompileBitAndExpr: error in equality expr} -body {
    # These should be ""ed to avoid the error
    expr a eq b
} -returnCodes error -match glob -result *
test expr-8.22 {CompileBitAndExpr: error in equality expr} -body {
    expr {false eqfalse}
} -returnCodes error -match glob -result *
test expr-8.23 {CompileBitAndExpr: error in equality expr} -body {
    expr {false nefalse}
} -returnCodes error -match glob -result *
test expr-8.24 {CompileEqualityExpr: simple equality exprs} {
    set x 12398712938788234
    expr {$x == 100}
} 0
test expr-8.25 {CompileEqualityExpr: simple equality exprs} {
    expr {"0x12 " == "0x12"}
} 1
test expr-8.26 {CompileEqualityExpr: simple equality exprs} {
    expr {"0x12 " eq "0x12"}
} 0
test expr-8.27 {CompileEqualityExpr: simple equality exprs} {
    expr {"1.0e100000000" == "0.0"}
} 0
test expr-8.28 {CompileEqualityExpr: just relational expr} {
    expr {"0y" == "0x0"}
} 0
test expr-8.29 {CompileEqualityExpr: just relational expr} {
    # Compare original strings from variables.
    set v1 "0y"
    set v2 "0x12"
    expr {$v1 < $v2}
} 0
test expr-8.30 {CompileEqualityExpr: simple equality exprs} {
    expr {"fake" != "bob"}
} 1
test expr-8.31 {expr edge cases} -body {
    expr {1e}
} -returnCodes error -match glob -result *
test expr-8.32 {expr edge cases} -body {
    expr {1E}
} -returnCodes error -match glob -result *
test expr-8.33 {expr edge cases} -body {
    expr {1e+}
} -returnCodes error -match glob -result *
test expr-8.34 {expr edge cases} -body {
    expr {1E+}
} -returnCodes error -match glob -result *
test expr-8.35 {expr edge cases} -body {
    expr {1ea}
} -returnCodes error -match glob -result *
test expr-8.36 {CompileEqualtyExpr: string comparison ops} {
    set x 012
    set y 0x0
    list [expr {$x < $y}] [expr {$x lt $y}] [expr {$x lt $x}]
} {0 1 0}
test expr-8.37 {CompileEqualtyExpr: string comparison ops} {
    set x 012
    set y 0x0
    list [expr {$x <= $y}] [expr {$x le $y}] [expr {$x le $x}]
} {0 1 1}
test expr-8.38 {CompileEqualtyExpr: string comparison ops} {
    set x 012
    set y 0x0
    list [expr {$x > $y}] [expr {$x gt $y}] [expr {$x gt $x}]
} {1 0 0}
test expr-8.39 {CompileEqualtyExpr: string comparison ops} {
    set x 012
    set y 0x0
    list [expr {$x >= $y}] [expr {$x ge $y}] [expr {$x ge $x}]
} {1 0 1}

test expr-9.1 {CompileRelationalExpr: just shift expr} {expr 3<<2} 12
test expr-9.2 {CompileRelationalExpr: just shift expr} {expr 0xff>>2} 63
test expr-9.3 {CompileRelationalExpr: just shift expr} {expr -1>>2} -1
test expr-9.4 {CompileRelationalExpr: just shift expr} {expr {1<<3}} 8
test expr-9.5 {CompileRelationalExpr: shift expr producing LONG_MIN} {
    expr {int(1<<63)}
} 9223372036854775808
test expr-9.6 {CompileRelationalExpr: error in shift expr} -body {
    expr x>>3
} -returnCodes error -match glob -result *
test expr-9.7 {CompileRelationalExpr: simple relational exprs} {expr 0xff>=+0x3} 1
test expr-9.8 {CompileRelationalExpr: simple relational exprs} {expr -0xf2<0x3} 1
test expr-9.9 {CompileRelationalExpr: error compiling relational arm} -body {
    expr 2***3>6
} -returnCodes error -match glob -result *
test expr-9.10 {CompileRelationalExpr: error compiling relational arm} -body {
    expr 2<x
} -returnCodes error -match glob -result *

test expr-10.1 {CompileShiftExpr: just add expr} {expr 4+-2} 2
test expr-10.2 {CompileShiftExpr: just add expr} {expr 0xff-2} 253
test expr-10.3 {CompileShiftExpr: just add expr} {expr -1--2} 1
test expr-10.4 {CompileShiftExpr: just add expr} {expr 1-0o123} -82
test expr-10.5 {CompileShiftExpr: error in add expr} -body {
    expr x+3
} -returnCodes error -match glob -result *
test expr-10.6 {CompileShiftExpr: simple shift exprs} {expr 0xff>>0x3} 31
test expr-10.7 {CompileShiftExpr: simple shift exprs} {expr -0xf2<<0x3} -1936
test expr-10.8 {CompileShiftExpr: error compiling shift arm} -body {
    expr 2***3>>6
} -returnCodes error -match glob -result *
test expr-10.9 {CompileShiftExpr: error compiling shift arm} -body {
    expr 2<<x
} -returnCodes error -match glob -result *
test expr-10.10 {CompileShiftExpr: runtime error} {
    list [catch {expr {24.0>>43}} msg] $msg
} {1 {cannot use floating-point value "24.0" as left operand of ">>"}}
test expr-10.11 {CompileShiftExpr: runtime error} {
    list [catch {expr {"a"<<"b"}} msg] $msg
} {1 {cannot use non-numeric string "a" as left operand of "<<"}}

test expr-11.1 {CompileAddExpr: just multiply expr} {expr 4*-2} -8
test expr-11.2 {CompileAddExpr: just multiply expr} {expr 0xff%2} 1
test expr-11.3 {CompileAddExpr: just multiply expr} {expr -1/2} -1
test expr-11.4 {CompileAddExpr: just multiply expr} {expr 7891%0o123} 6
test expr-11.5 {CompileAddExpr: error in multiply expr} -body {
    expr x*3
} -returnCodes error -match glob -result *
test expr-11.6 {CompileAddExpr: simple add exprs} {expr 0xff++0x3} 258
test expr-11.7 {CompileAddExpr: simple add exprs} {expr -0xf2--0x3} -239
test expr-11.8 {CompileAddExpr: error compiling add arm} -body {
    expr 2***3+6
} -returnCodes error -match glob -result *
test expr-11.9 {CompileAddExpr: error compiling add arm} -body {
    expr 2-x
} -returnCodes error -match glob -result *
test expr-11.10 {CompileAddExpr: runtime error} {
    list [catch {expr {24.0+"xx"}} msg] $msg
} {1 {cannot use non-numeric string "xx" as right operand of "+"}}
test expr-11.11 {CompileAddExpr: runtime error} {
    list [catch {expr {"a"-"b"}} msg] $msg
} {1 {cannot use non-numeric string "a" as left operand of "-"}}
test expr-11.12 {CompileAddExpr: runtime error} {
    list [catch {expr {3/0}} msg] $msg
} {1 {divide by zero}}
test expr-11.13a {CompileAddExpr: runtime error} !ieeeFloatingPoint {
    list [catch {expr {2.3/0.0}} msg] $msg
} {1 {divide by zero}}
test expr-11.13b {CompileAddExpr: runtime error} ieeeFloatingPoint {
    list [catch {expr {2.3/0.0}} msg] $msg
} {0 Inf}
test expr-11.14 {CompileAddExpr: runtime error} {
    list [catch {expr {24.0+[lseq 2 4]}} msg] $msg
} {1 {cannot use a list as right operand of "+"}}
test expr-11.15 {CompileAddExpr: runtime error} {
    list [catch {expr {{1 2 "}+24.0}} msg] $msg
} {1 {cannot use non-numeric string "1 2 "" as left operand of "+"}}
test expr-11.16 {CompileAddExpr: runtime error} {
    list [catch {expr {~[dict create foo bar]}} msg] $msg
} {1 {cannot use a list as operand of "~"}}

test expr-12.1 {CompileMultiplyExpr: just unary expr} {expr ~4} -5
test expr-12.2 {CompileMultiplyExpr: just unary expr} {expr --5} 5
test expr-12.3 {CompileMultiplyExpr: just unary expr} {expr !27} 0
test expr-12.4 {CompileMultiplyExpr: just unary expr} {expr ~0xff00ff} -16711936
test expr-12.5 {CompileMultiplyExpr: error in unary expr} -body {
    expr ~x
} -returnCodes error -match glob -result *
test expr-12.6 {CompileMultiplyExpr: simple multiply exprs} {expr 0xff*0x3} 765
test expr-12.7 {CompileMultiplyExpr: simple multiply exprs} {expr -0xf2%-0x3} -2
test expr-12.8 {CompileMultiplyExpr: error compiling multiply arm} -body {
    expr 2*3%%6
} -returnCodes error -match glob -result *
test expr-12.9 {CompileMultiplyExpr: error compiling multiply arm} -body {
    expr 2*x
} -returnCodes error -match glob -result *
test expr-12.10 {CompileMultiplyExpr: runtime error} {
    list [catch {expr {24.0*"xx"}} msg] $msg
} {1 {cannot use non-numeric string "xx" as right operand of "*"}}
test expr-12.11 {CompileMultiplyExpr: runtime error} {
    list [catch {expr {"a"/"b"}} msg] $msg
} {1 {cannot use non-numeric string "a" as left operand of "/"}}

test expr-13.1 {CompileUnaryExpr: unary exprs} {expr -0xff} -255
test expr-13.2 {CompileUnaryExpr: unary exprs} {expr +0o00123} 83
test expr-13.3 {CompileUnaryExpr: unary exprs} {expr +--++36} 36
test expr-13.4 {CompileUnaryExpr: unary exprs} {expr !2} 0
test expr-13.5 {CompileUnaryExpr: unary exprs} {expr +--+-62.0} -62.0
test expr-13.6 {CompileUnaryExpr: unary exprs} {expr !0.0} 1
test expr-13.7 {CompileUnaryExpr: unary exprs} {expr !0xef} 0
test expr-13.8 {CompileUnaryExpr: error compiling unary expr} -body {
    expr ~x
} -returnCodes error -match glob -result *
test expr-13.9 {CompileUnaryExpr: error compiling unary expr} -body {
    expr !1.x
} -returnCodes error -match glob -result *
test expr-13.10 {CompileUnaryExpr: runtime error} {
    list [catch {expr {~"xx"}} msg] $msg
} {1 {cannot use non-numeric string "xx" as operand of "~"}}
test expr-13.11 {CompileUnaryExpr: runtime error} {
    list [catch {expr ~4.0} msg] $msg
} {1 {cannot use floating-point value "4.0" as operand of "~"}}
test expr-13.12 {CompileUnaryExpr: just primary expr} {expr 0x123} 291
test expr-13.13 {CompileUnaryExpr: just primary expr} {
    set a 27
    expr $a
} 27
test expr-13.14 {CompileUnaryExpr: just primary expr} {
    expr double(27)
} 27.0
test expr-13.15 {CompileUnaryExpr: just primary expr} {expr "123"} 123
test expr-13.16 {CompileUnaryExpr: error in primary expr} {
    catch {expr [set]} msg
    set msg
} {wrong # args: should be "set varName ?newValue?"}
test expr-13.17 {CompileUnaryExpr: negating non-numeric boolean literals} {
    set a1 yes; set a0 no; set b1 true; set b0 false
    list [expr {!$a1}] [expr {!$a0}] [expr {!$b1}] [expr {!$b0}]
} {0 1 0 1}

test expr-14.1 {CompilePrimaryExpr: literal primary} {expr 1} 1
test expr-14.2 {CompilePrimaryExpr: literal primary} {expr 123} 123
test expr-14.3 {CompilePrimaryExpr: literal primary} {expr 0xff} 255
test expr-14.4 {CompilePrimaryExpr: literal primary} {expr 0o0010} 8
test expr-14.5 {CompilePrimaryExpr: literal primary} {expr 62.0} 62.0
test expr-14.6 {CompilePrimaryExpr: literal primary} {
    expr 3.1400000
} 3.14
test expr-14.7 {CompilePrimaryExpr: literal primary} {expr {{abcde}<{abcdef}}} 1
test expr-14.8 {CompilePrimaryExpr: literal primary} {expr {{abc\
def} < {abcdef}}} 1
test expr-14.9 {CompilePrimaryExpr: literal primary} {expr {{abc\tde} > {abc\tdef}}} 0
test expr-14.10 {CompilePrimaryExpr: literal primary} {expr {{123}}} 123
test expr-14.11 {CompilePrimaryExpr: var reference primary} {
    set i 789
    list [expr {$i}] [expr $i]
} {789 789}
test expr-14.12 {CompilePrimaryExpr: var reference primary} {
    set i {789}    ;# test expr's aggressive conversion to numeric semantics
    list [expr {$i}] [expr $i]
} {789 789}
test expr-14.13 {CompilePrimaryExpr: var reference primary} {
    catch {unset a}
    set a(foo) foo
    set a(bar) bar
    set a(123) 123
    set result ""
    lappend result [expr $a(123)] [expr {$a(bar)<$a(foo)}]
    catch {unset a}
    set result
} {123 1}
test expr-14.14 {CompilePrimaryExpr: var reference primary} {
    set i 123    ;# test "$var.0" floating point conversion hack
    list [expr $i] [expr $i.0] [expr $i.0/12.0]
} {123 123.0 10.25}
test expr-14.15 {CompilePrimaryExpr: var reference primary} {
    set i 123
    catch {expr $i.2} msg
    set msg
} 123.2
test expr-14.16 {CompilePrimaryExpr: error compiling var reference primary} -body {
    expr {$a(foo}
} -returnCodes error -match glob -result *
test expr-14.17 {CompilePrimaryExpr: string primary that looks like var ref} -body {
    expr $
} -returnCodes error -match glob -result *
test expr-14.18 {CompilePrimaryExpr: quoted string primary} {
    expr "21"
} 21
test expr-14.19 {CompilePrimaryExpr: quoted string primary} {
    set i 123
    set x 456
    expr "$i+$x"
} 579
test expr-14.20 {CompilePrimaryExpr: quoted string primary} {
    set i 3
    set x 6
    expr 2+"$i.$x"
} 5.6
test expr-14.21 {CompilePrimaryExpr: error in quoted string primary} {
    catch {expr "[set]"} msg
    set msg
} {wrong # args: should be "set varName ?newValue?"}
test expr-14.22 {CompilePrimaryExpr: subcommand primary} {
    expr {[set i 123; set i]}
} 123
test expr-14.23 {CompilePrimaryExpr: error in subcommand primary} -body {
    catch {expr {[set]}} msg
    set ::errorInfo
} -match glob -result {wrong # args: should be "set varName ?newValue?"
    while *ing
"set"*}
test expr-14.24 {CompilePrimaryExpr: error in subcommand primary} -body {
    expr {[set i}
} -returnCodes error -match glob -result *
test expr-14.25 {CompilePrimaryExpr: math function primary} {
    format %.6g [expr exp(1.0)]
} 2.71828
test expr-14.26 {CompilePrimaryExpr: math function primary} {
    format %.6g [expr pow(2.0+0.1,3.0+0.1)]
} 9.97424
test expr-14.27 {CompilePrimaryExpr: error in math function primary} -body {
    expr sinh::(2.0)
} -returnCodes error -match glob -result *
test expr-14.28 {CompilePrimaryExpr: subexpression primary} {
    expr 2+(3*4)
} 14
test expr-14.29 {CompilePrimaryExpr: error in subexpression primary} -body {
    catch {expr 2+(3*[set])} msg
    set ::errorInfo
} -match glob -result {wrong # args: should be "set varName ?newValue?"
    while *ing
"set"*}
test expr-14.30 {CompilePrimaryExpr: missing paren in subexpression primary} -body {
    expr 2+(3*(4+5)
} -returnCodes error -match glob -result *
test expr-14.31 {CompilePrimaryExpr: just var ref in subexpression primary} {
    set i "5+10"
    list "[expr $i] == 15" "[expr ($i)] == 15" "[eval expr ($i)] == 15"
} {{15 == 15} {15 == 15} {15 == 15}}
test expr-14.32 {CompilePrimaryExpr: unexpected token} -body {
    expr @
} -returnCodes error -match glob -result *

test expr-15.1 {CompileMathFuncCall: missing parenthesis} -body {
    expr sinh2.0)
} -returnCodes error -match glob -result *
test expr-15.2 {CompileMathFuncCall: unknown math function} -body {
    catch {expr whazzathuh(1)} msg
    set ::errorInfo
} -match glob -result {* "*whazzathuh"
    while *ing
"expr whazzathuh(1)"}
test expr-15.3 {CompileMathFuncCall: too many arguments} -body {
    catch {expr sin(1,2,3)} msg
    set ::errorInfo
} -match glob -result {too many arguments for math function*
    while *ing
"expr sin(1,2,3)"}
test expr-15.4 {CompileMathFuncCall: ')' found before last required arg} -body {
    catch {expr sin()} msg
    set ::errorInfo
} -match glob -result {not enough arguments for math function*
    while *ing
"expr sin()"}
test expr-15.5 {CompileMathFuncCall: not enough arguments} -body {
    catch {expr pow(1)} msg
    set ::errorInfo
} -match glob -result {not enough arguments for math function*
    while *ing
"expr pow(1)"}
test expr-15.6 {CompileMathFuncCall: missing ')'} -body {
    expr sin(1
} -returnCodes error -match glob -result *


test expr-16.1 {GetToken: checks whether integer token starting with "0x" (e.g., "0x$") is invalid} {
    catch {unset a}
    set a(VALUE) ff15
    set i 123
    if {[expr 0x$a(VALUE)] & 16} {
	set i {}
    }
    set i
} {}
test expr-16.2 {GetToken: check for string literal in braces} {
    expr {{1}}
} {1}

# Check "expr" and computed command names.

test expr-17.1 {expr and computed command names} {
    set i 0
    set z expr
    $z 1+2
} 3

# Check correct conversion of operands to numbers: If the string looks like
# an integer, convert to integer. Otherwise, if the string looks like a
# double, convert to double.

test expr-18.1 {expr and conversion of operands to numbers} {
    set x [lindex 11 0]
    catch {expr int($x)}
    expr {$x}
} 11
test expr-18.2 {whitespace strings should not be == 0 (buggy strtol/strtoul)} {
    expr {" "}
} { }

# Check "expr" and interpreter result object resetting before appending
# an error msg during evaluation of exprs not in {}s

test expr-19.1 {expr and interpreter result object resetting} {
    proc p {} {
	set t  10.0
	set x  2.0
	set dx 0.2
	set f  {$dx-$x/10}
	set g  {-$x/5}
	set center 1.0
	set x  [expr $x-$center]
	set dx [expr $dx+$g]
	set x  [expr $x+$f+$center]
	set x  [expr $x+$f+$center]
	set y  [expr round($x)]
    }
    p
} 3

# Test for incorrect "double evaluation" semantics

test expr-20.1 {wrong brace matching} {
    catch {unset l}
    catch {unset r}
    catch {unset q}
    catch {unset cmd}
    catch {unset a}
    set l "\{"; set r "\}"; set q "\""
    set cmd "expr $l$q|$q == $q$r$q$r"
    list [catch $cmd a] $a
} {1 {extra characters after close-brace}}
test expr-20.2 {double invocation of variable traces} -body {
    set exprtracecounter 0
    proc exprtraceproc {args} {
       upvar #0 exprtracecounter counter
       set argc [llength $args]
       set extraargs [lrange $args 0 [expr {$argc - 4}]]
       set name [lindex $args [expr {$argc - 3}]]
       upvar 1 $name var
       if {[incr counter] % 2 == 1} {
	   set var "$counter oops [concat $extraargs]"
       } else {
	   set var "$counter + [concat $extraargs]"
       }
    }
    trace add variable exprtracevar read [list exprtraceproc 10]
    list [catch {expr "$exprtracevar + 20"} a] $a \
	[catch {expr "$exprtracevar + 20"} b] $b \
	[unset exprtracevar exprtracecounter]
} -match glob -result {1 * 0 32 {}}
test expr-20.3 {broken substitution of integer digits} {
    # fails with 8.0.x, but not 8.1b2
    list [set a 000; expr 0x1$a] [set a 1; expr ${a}000]
} {4096 1000}
test expr-20.4 {proper double evaluation compilation, error case} {
    catch {unset a}; # make sure $a doesn't exist
    list [catch {expr 1?{$a}:0} msg] $msg
} {1 {can't read "a": no such variable}}
test expr-20.5 {proper double evaluation compilation, working case} {
    set a yellow
    expr 1?{$a}:0
} yellow
test expr-20.6 {handling of compile error in trial compile} {
    list [catch {expr + {[incr]}} msg] $msg
} {1 {wrong # args: should be "incr varName ?increment?"}}
test expr-20.7 {handling of compile error in runtime case} {
    list [catch {expr + {[error foo]}} msg] $msg
} {1 foo}

# Test for non-numeric boolean literal handling
test expr-21.1	{non-numeric boolean literals} {expr false } false
test expr-21.2	{non-numeric boolean literals} {expr true  } true
test expr-21.3	{non-numeric boolean literals} {expr off   } off
test expr-21.4	{non-numeric boolean literals} {expr on    } on
test expr-21.5	{non-numeric boolean literals} {expr no    } no
test expr-21.6	{non-numeric boolean literals} {expr yes   } yes
test expr-21.7	{non-numeric boolean literals} {expr !false} 1
test expr-21.8	{non-numeric boolean literals} {expr !true } 0
test expr-21.9	{non-numeric boolean literals} {expr !off  } 1
test expr-21.10 {non-numeric boolean literals} {expr !on   } 0
test expr-21.11 {non-numeric boolean literals} {expr !no   } 1
test expr-21.12 {non-numeric boolean literals} {expr !yes  } 0
test expr-21.13 {non-numeric boolean literals} -body {
    expr !truef
} -returnCodes error -match glob -result *
test expr-21.14 {non-numeric boolean literals} {
    list [catch {expr !"truef"} err] $err
} {1 {cannot use non-numeric string "truef" as operand of "!"}}
test expr-21.15 {non-numeric boolean variables} {
    set v truef
    list [catch {expr {!$v}} err] $err
} {1 {cannot use non-numeric string "truef" as operand of "!"}}
test expr-21.16 {non-numeric boolean variables} {
    set v "true "
    list [catch {expr {!$v}} err] $err
} {1 {cannot use non-numeric string "true " as operand of "!"}}
test expr-21.17 {non-numeric boolean variables} {
    set v "tru"
    list [catch {expr {!$v}} err] $err
} {0 0}
test expr-21.18 {non-numeric boolean variables} {
    set v "fal"
    list [catch {expr {!$v}} err] $err
} {0 1}
test expr-21.19 {non-numeric boolean variables} {
    set v "y"
    list [catch {expr {!$v}} err] $err
} {0 0}
test expr-21.20 {non-numeric boolean variables} {
    set v "of"
    list [catch {expr {!$v}} err] $err
} {0 1}
test expr-21.21 {non-numeric boolean variables} {
    set v "o"
    list [catch {expr {!$v}} err] $err
} {1 {cannot use non-numeric string "o" as operand of "!"}}
test expr-21.22 {non-numeric boolean variables} {
    set v ""
    list [catch {expr {!$v}} err] $err
} {1 {cannot use non-numeric string "" as operand of "!"}}

# Test for non-numeric float handling.
test expr-22.1 {non-numeric floats} {
    list [catch {expr {NaN + 1}} msg] $msg
} {1 {cannot use non-numeric floating-point value "NaN" as left operand of "+"}}
test expr-22.2 {non-numeric floats} !ieeeFloatingPoint {
    list [catch {expr {Inf + 1}} msg] $msg
} {1 {can't use infinite floating-point value as operand of "+"}}
test expr-22.3 {non-numeric floats} {
    set nan NaN
    list [catch {expr {$nan + 1}} msg] $msg
} {1 {cannot use non-numeric floating-point value "NaN" as left operand of "+"}}
test expr-22.4 {non-numeric floats} !ieeeFloatingPoint {
    set inf Inf
    list [catch {expr {$inf + 1}} msg] $msg
} {1 {can't use infinite floating-point value as operand of "+"}}
test expr-22.5 {non-numeric floats} {
    list [catch {expr NaN} msg] $msg
} {1 {domain error: argument not in valid range}}
test expr-22.6 {non-numeric floats} !ieeeFloatingPoint {
    list [catch {expr Inf} msg] $msg
} {1 {floating-point value too large to represent}}
test expr-22.7 {non-numeric floats} {
    list [catch {expr {1 / NaN}} msg] $msg
} {1 {cannot use non-numeric floating-point value "NaN" as right operand of "/"}}
test expr-22.8 {non-numeric floats} !ieeeFloatingPoint {
    list [catch {expr {1 / Inf}} msg] $msg
} {1 {can't use infinite floating-point value as operand of "/"}}
# Make sure [Bug 761471] stays fixed.
test expr-22.9 {non-numeric floats: shared object equality and NaN} {
    set x NaN
    expr {$x == $x}
} 0
# Make sure [Bug d0f7ba56f0] stays fixed.
test expr-22.10 {non-numeric arguments: equality and NaN} {
    set x NaN
    expr {$x > "Gran"}
} 1
test expr-22.11 {non-numeric arguments: equality and NaN} {
    set x NaN
    expr {"Gran" < $x}
} 1

# Tests for exponentiation handling
test expr-23.1 {CompileExponentialExpr: just exponential expr} {expr 4**2} 16
test expr-23.2 {CompileExponentialExpr: just exponential expr} {expr 0xff**2} 65025
test expr-23.3 {CompileExponentialExpr: just exponential expr} {expr -1**2} 1
test expr-23.4 {CompileExponentialExpr: just exponential expr} {expr 18**07} 612220032
test expr-23.5 {CompileExponentialExpr: error in exponential expr} -body {
    expr x**3
} -returnCodes error -match glob -result *
test expr-23.6 {CompileExponentialExpr: simple expo exprs} {expr 0xff**0x3} 16581375
test expr-23.7 {CompileExponentialExpr: error compiling expo arm} -body {
    expr (-3-)**6
} -returnCodes error -match glob -result *
test expr-23.8 {CompileExponentialExpr: error compiling expo arm} -body {
    expr 2**x
} -returnCodes error -match glob -result *
test expr-23.9 {CompileExponentialExpr: runtime error} {
    list [catch {expr {24.0**"xx"}} msg] $msg
} {1 {cannot use non-numeric string "xx" as right operand of "**"}}
test expr-23.10 {CompileExponentialExpr: runtime error} {
    list [catch {expr {"a"**2}} msg] $msg
} {1 {cannot use non-numeric string "a" as left operand of "**"}}
test expr-23.11 {CompileExponentialExpr: runtime error} {
    list [catch {expr {0**-1}} msg] $msg
} {1 {exponentiation of zero by negative power}}
test expr-23.12 {CompileExponentialExpr: runtime error} {
    list [catch {expr {0.0**-1.0}} msg] $msg
} {1 {exponentiation of zero by negative power}}
test expr-23.13 {CompileExponentialExpr: runtime error} {
    list [catch {expr {wide(0)**wide(-1)}} msg] $msg
} {1 {exponentiation of zero by negative power}}
test expr-23.14 {INST_EXPON: special cases} {expr {0**1}} 0
test expr-23.15 {INST_EXPON: special cases} {expr {0**0}} 1
test expr-23.16 {INST_EXPON: special cases} {expr {-2**-1}} 0
test expr-23.17 {INST_EXPON: special cases} {expr {-2**0}} 1
test expr-23.18 {INST_EXPON: special cases} {expr {-1**1}} -1
test expr-23.19 {INST_EXPON: special cases} {expr {-1**0}} 1
test expr-23.20 {INST_EXPON: special cases} {expr {-1**2}} 1
test expr-23.21 {INST_EXPON: special cases} {expr {-1**-1}} -1
test expr-23.22 {INST_EXPON: special cases} {expr {1**1234567}} 1
test expr-23.23 {INST_EXPON: special cases} {expr {2**-2}} 0
test expr-23.24 {INST_EXPON: special cases} {expr {wide(0)**wide(1)}} 0
test expr-23.25 {INST_EXPON: special cases} {expr {wide(0)**wide(0)}} 1
test expr-23.26 {INST_EXPON: special cases} {expr {wide(-2)**wide(-1)}} 0
test expr-23.27 {INST_EXPON: special cases} {expr {wide(-2)**wide(0)}} 1
test expr-23.28 {INST_EXPON: special cases} {expr {wide(-1)**wide(1)}} -1
test expr-23.29 {INST_EXPON: special cases} {expr {wide(-1)**wide(0)}} 1
test expr-23.30 {INST_EXPON: special cases} {expr {wide(-1)**wide(2)}} 1
test expr-23.31 {INST_EXPON: special cases} {expr {wide(-1)**wide(-1)}} -1
test expr-23.32 {INST_EXPON: special cases} {expr {wide(1)**wide(1234567)}} 1
test expr-23.33 {INST_EXPON: special cases} {expr {wide(2)**wide(-2)}} 0
test expr-23.34 {INST_EXPON: special cases} {expr {2**0}} 1
test expr-23.35 {INST_EXPON: special cases} {expr {wide(2)**0}} 1
test expr-23.36 {INST_EXPON: big integer} {expr {10**17}} 1[string repeat 0 17]
test expr-23.37 {INST_EXPON: big integer} {expr {10**18}} 1[string repeat 0 18]
test expr-23.38 {INST_EXPON: big integer} {expr {10**19}} 1[string repeat 0 19]
test expr-23.39 {INST_EXPON: big integer} {
    expr 1[string repeat 0 30]**2
} 1[string repeat 0 60]
test expr-23.40 {INST_EXPON: overflow to big integer} {expr {(-10)**3}} -1000
test expr-23.41 {INST_EXPON: overflow to big integer} {expr 2**64} [expr 1<<64]
test expr-23.42 {INST_EXPON: overflow to big integer} {expr 4**32} [expr 1<<64]
test expr-23.43 {INST_EXPON: overflow to big integer} {expr 16**16} [expr 1<<64]
test expr-23.44 {INST_EXPON: overflow to big integer} {expr 256**8} [expr 1<<64]
test expr-23.45 {INST_EXPON: Bug 1555371} {expr 2**1} 2
test expr-23.46 {INST_EXPON: Bug 1561260} -body {
    expr 5**28
} -match glob -result *5
test expr-23.47 {INST_EXPON: Bug 1561260} {
    expr 2**32*5**32
} 1[string repeat 0 32]
test expr-23.48 {INST_EXPON: TIP 274: right assoc} {
expr 2**3**4
} 2417851639229258349412352
test expr-23.49 {INST_EXPON: optimize powers of 2} {
    set trouble {test powers of 2}
    for {set tval 0} {$tval <= 66} {incr tval} {
	set is [expr {2 ** $tval}]
	set sb [expr {1 << $tval}]
	if {$is != $sb} {
	    append trouble \n "2**" $tval " is " $is " should be " $sb
	}
	if {$tval >= 1} {
	    set is [expr {-2 ** $tval}]
	    set sb [expr {1 << $tval}]
	    if {$tval & 1} {
		set sb [expr {-$sb}]
	    }
	    if {$is != $sb} {
		append trouble \n "-2**" $tval " is " $is " should be " $sb
	    }
	}
    }
    set trouble
} {test powers of 2}
test expr-23.50 {INST_EXPON: small powers of 32-bit integers} {
    set trouble {test small powers of 32-bit ints}
    for {set base 3} {$base <= 45} {incr base} {
	set sb $base
	set sbm [expr {-$base}]
	for {set expt 2} {$expt <= 8} {incr expt} {
	    set sb [expr {$sb * $base}]
	    set is [expr {$base ** $expt}]
	    if {$sb != $is} {
		append trouble \n $base ** $expt " is " $is " should be " $sb
	    }
	    set sbm [expr {-$sbm * $base}]
	    set ism [expr {(-$base) ** $expt}]
	    if {$sbm != $ism} {
		append trouble \n - $base ** $expt " is " $ism \
		    " should be " $sbm
	    }
	}
    }
    set trouble
} {test small powers of 32-bit ints}
test expr-23.51 {INST_EXPON: intermediate powers of 32-bit integers} {
    set trouble {test intermediate powers of 32-bit ints}
    for {set base 3} {$base <= 11} {incr base} {
	set sb [expr {$base ** 8}]
	set sbm $sb
	for {set expt 9} {$expt <= 21} {incr expt} {
	    set sb [expr {$sb * $base}]
	    set sbm [expr {$sbm * -$base}]
	    set is [expr {$base ** $expt}]
	    set ism [expr {-$base ** $expt}]
	    if {$sb != $is} {
		append trouble \n $base ** $expt " is " $is " should be " $sb
	    }
	    if {$sbm != $ism} {
		append trouble \n - $base ** $expt " is " $ism  \
		    " should be " $sbm
	    }
	}
    }
    set trouble
} {test intermediate powers of 32-bit ints}
test expr-23.52 {INST_EXPON: small integer powers with 64-bit results} {
    set trouble {test small int powers with 64-bit results}
    for {set exp 2} {$exp <= 16} {incr exp} {
	set base [expr {entier(pow(double(0x7fffffffffffffff),(1.0/$exp)))}]
	set sb 1
	set sbm 1
	for {set i 0} {$i < $exp} {incr i} {
	    set sb [expr {$sb * $base}]
	    set sbm [expr {$sbm * -$base}]
	}
	set is [expr {$base ** $exp}]
	set ism [expr {-$base ** $exp}]
	if {$sb != $is} {
	    append trouble \n $base ** $exp " is " $is " should be " $sb
	}
	if {$sbm != $ism} {
	    append trouble \n - $base ** $exp " is " $ism " should be " $sbm
	}
	incr base
	set sb 1
	set sbm 1
	for {set i 0} {$i < $exp} {incr i} {
	    set sb [expr {$sb * $base}]
	    set sbm [expr {$sbm * -$base}]
	}
	set is [expr {$base ** $exp}]
	set ism [expr {-$base ** $exp}]
	if {$sb != $is} {
	    append trouble \n $base ** $exp " is " $is " should be " $sb
	}
	if {$sbm != $ism} {
	    append trouble \n - $base ** $exp " is " $ism " should be " $sbm
	}
    }
    set trouble
} {test small int powers with 64-bit results}
test expr-23.53 {INST_EXPON: intermediate powers of 64-bit integers} {
    set trouble {test intermediate powers of 64-bit ints}
    for {set base 3} {$base <= 13} {incr base} {
	set sb [expr {$base ** 15}]
	set sbm [expr {-$sb}]
	for {set expt 16} {$expt <= 39} {incr expt} {
	    set sb [expr {$sb * $base}]
	    set sbm [expr {$sbm * -$base}]
	    set is [expr {$base ** $expt}]
	    set ism [expr {-$base ** $expt}]
	    if {$sb != $is} {
		append trouble \n $base ** $expt " is " $is " should be " $sb
	    }
	    if {$sbm != $ism} {
		append trouble \n - $base ** $expt " is " $ism  \
		    " should be " $sbm
	    }
	}
    }
    set trouble
} {test intermediate powers of 64-bit ints}
test expr-23.54.0 {INST_EXPON: Bug 2798543} {
    expr {3**9 == 3**65545}
} 0
test expr-23.54.1 {INST_EXPON: Bug 2798543} {
    expr {3**10 == 3**65546}
} 0
test expr-23.54.2 {INST_EXPON: Bug 2798543} {
    expr {3**11 == 3**65547}
} 0
test expr-23.54.3 {INST_EXPON: Bug 2798543} {
    expr {3**12 == 3**65548}
} 0
test expr-23.54.4 {INST_EXPON: Bug 2798543} {
    expr {3**13 == 3**65549}
} 0
test expr-23.54.5 {INST_EXPON: Bug 2798543} {
    expr {3**14 == 3**65550}
} 0
test expr-23.54.6 {INST_EXPON: Bug 2798543} {
    expr {3**15 == 3**65551}
} 0
test expr-23.54.7 {INST_EXPON: Bug 2798543} {
    expr {3**16 == 3**65552}
} 0
test expr-23.54.8 {INST_EXPON: Bug 2798543} {
    expr {3**17 == 3**65553}
} 0
test expr-23.54.9 {INST_EXPON: Bug 2798543} {
    expr {3**18 == 3**65554}
} 0
test expr-23.54.10 {INST_EXPON: Bug 2798543} {
    expr {3**19 == 3**65555}
} 0
test expr-23.54.11 {INST_EXPON: Bug 2798543} {
    expr {3**9 == 3**131081}
} 0
test expr-23.54.12 {INST_EXPON: Bug 2798543} -body {
    expr {3**268435456}
} -returnCodes error -result {exponent too large}
test expr-23.54.13 {INST_EXPON: Bug 2798543} {
    expr {(-3)**9 == (-3)**65545}
} 0
test expr-23.55.0 {INST_EXPON: Bug 2798543} {
    expr {4**9 == 4**65545}
} 0
test expr-23.55.1 {INST_EXPON: Bug 2798543} {
    expr {4**15 == 4**65551}
} 0
test expr-23.55.2 {INST_EXPON: Bug 2798543} {
    expr {4**9 == 4**131081}
} 0
test expr-23.55.3 {INST_EXPON: Bug 2798543} -body {
    expr {4**268435456}
} -returnCodes error -result {exponent too large}
test expr-23.55.4 {INST_EXPON: Bug 2798543} {
    expr {(-4)**9 == (-4)**65545}
} 0
test expr-23.56.0 {INST_EXPON: Bug 2798543} {
    expr {5**9 == 5**65545}
} 0
test expr-23.56.1 {INST_EXPON: Bug 2798543} {
    expr {5**13 == 5**65549}
} 0
test expr-23.56.2 {INST_EXPON: Bug 2798543} {
    expr {5**9 == 5**131081}
} 0
test expr-23.56.3 {INST_EXPON: Bug 2798543} -body {
    expr {5**268435456}
} -returnCodes error -result {exponent too large}
test expr-23.56.4 {INST_EXPON: Bug 2798543} {
    expr {(-5)**9 == (-5)**65545}
} 0
test expr-23.57.0 {INST_EXPON: Bug 2798543} {
    expr {6**9 == 6**65545}
} 0
test expr-23.57.1 {INST_EXPON: Bug 2798543} {
    expr {6**11 == 6**65547}
} 0
test expr-23.57.2 {INST_EXPON: Bug 2798543} {
    expr {6**9 == 6**131081}
} 0
test expr-23.57.3 {INST_EXPON: Bug 2798543} -body {
    expr {6**268435456}
} -returnCodes error -result {exponent too large}
test expr-23.57.4 {INST_EXPON: Bug 2798543} {
    expr {(-6)**9 == (-6)**65545}
} 0
test expr-23.58.0 {INST_EXPON: Bug 2798543} {
    expr {7**9 == 7**65545}
} 0
test expr-23.58.1 {INST_EXPON: Bug 2798543} {
    expr {7**11 == 7**65547}
} 0
test expr-23.58.2 {INST_EXPON: Bug 2798543} {
    expr {7**9 == 7**131081}
} 0
test expr-23.58.3 {INST_EXPON: Bug 2798543} -body {
    expr {7**268435456}
} -returnCodes error -result {exponent too large}
test expr-23.58.4 {INST_EXPON: Bug 2798543} {
    expr {(-7)**9 == (-7)**65545}
} 0
test expr-23.59.0 {INST_EXPON: Bug 2798543} {
    expr {8**9 == 8**65545}
} 0
test expr-23.59.1 {INST_EXPON: Bug 2798543} {
    expr {8**10 == 8**65546}
} 0
test expr-23.59.2 {INST_EXPON: Bug 2798543} {
    expr {8**9 == 8**131081}
} 0
test expr-23.59.3 {INST_EXPON: Bug 2798543} -body {
    expr {8**268435456}
} -returnCodes error -result {exponent too large}
test expr-23.59.4 {INST_EXPON: Bug 2798543} {
    expr {(-8)**9 == (-8)**65545}
} 0
test expr-23.60.0 {INST_EXPON: Bug 2798543} {
    expr {9**9 == 9**65545}
} 0
test expr-23.60.1 {INST_EXPON: Bug 2798543} {
    expr {9**9 == 9**131081}
} 0
test expr-23.60.2 {INST_EXPON: Bug 2798543} -body {
    expr {9**268435456}
} -returnCodes error -result {exponent too large}
test expr-23.60.3 {INST_EXPON: Bug 2798543} {
    expr {(-9)**9 == (-9)**65545}
} 0
test expr-23.61.0 {INST_EXPON: Bug 2798543} {
    expr {10**9 == 10**65545}
} 0
test expr-23.61.1 {INST_EXPON: Bug 2798543} {
    expr {10**9 == 10**131081}
} 0
test expr-23.61.2 {INST_EXPON: Bug 2798543} -body {
    expr {10**268435456}
} -returnCodes error -result {exponent too large}
test expr-23.61.3 {INST_EXPON: Bug 2798543} {
    expr {(-10)**9 == (-10)**65545}
} 0
test expr-23.62.0 {INST_EXPON: Bug 2798543} {
    expr {11**9 == 11**65545}
} 0
test expr-23.62.1 {INST_EXPON: Bug 2798543} {
    expr {11**9 == 11**131081}
} 0
test expr-23.62.2 {INST_EXPON: Bug 2798543} -body {
    expr {11**268435456}
} -returnCodes error -result {exponent too large}
test expr-23.62.3 {INST_EXPON: Bug 2798543} {
    expr {(-11)**9 == (-11)**65545}
} 0
test expr-23.63.0 {INST_EXPON: Bug 2798543} {
    expr {3**20 == 3**65556}
} 0
test expr-23.63.1 {INST_EXPON: Bug 2798543} {
    expr {3**39 == 3**65575}
} 0
test expr-23.63.2 {INST_EXPON: Bug 2798543} {
    expr {3**20 == 3**131092}
} 0
test expr-23.63.3 {INST_EXPON: Bug 2798543} -body {
    expr {3**268435456}
} -returnCodes error -result {exponent too large}
test expr-23.63.4 {INST_EXPON: Bug 2798543} {
    expr {(-3)**20 == (-3)**65556}
} 0
test expr-23.64.0 {INST_EXPON: Bug 2798543} {
    expr {4**17 == 4**65553}
} 0
test expr-23.64.1 {INST_EXPON: Bug 2798543} {
    expr {4**31 == 4**65567}
} 0
test expr-23.64.2 {INST_EXPON: Bug 2798543} {
    expr {4**17 == 4**131089}
} 0
test expr-23.64.3 {INST_EXPON: Bug 2798543} -body {
    expr {4**268435456}
} -returnCodes error -result {exponent too large}
test expr-23.64.4 {INST_EXPON: Bug 2798543} {
    expr {(-4)**17 == (-4)**65553}
} 0
test expr-23.65.0 {INST_EXPON: Bug 2798543} {
    expr {5**17 == 5**65553}
} 0
test expr-23.65.1 {INST_EXPON: Bug 2798543} {
    expr {5**27 == 5**65563}
} 0
test expr-23.65.2 {INST_EXPON: Bug 2798543} {
    expr {5**17 == 5**131089}
} 0
test expr-23.65.3 {INST_EXPON: Bug 2798543} -body {
    expr {5**268435456}
} -returnCodes error -result {exponent too large}
test expr-23.65.4 {INST_EXPON: Bug 2798543} {
    expr {(-5)**17 == (-5)**65553}
} 0
test expr-23.66.0 {INST_EXPON: Bug 2798543} {
    expr {6**17 == 6**65553}
} 0
test expr-23.66.1 {INST_EXPON: Bug 2798543} {
    expr {6**24 == 6**65560}
} 0
test expr-23.66.2 {INST_EXPON: Bug 2798543} {
    expr {6**17 == 6**131089}
} 0
test expr-23.66.3 {INST_EXPON: Bug 2798543} -body {
    expr {6**268435456}
} -returnCodes error -result {exponent too large}
test expr-23.66.4 {INST_EXPON: Bug 2798543} {
    expr {(-6)**17 == (-6)**65553}
} 0
test expr-23.67.0 {INST_EXPON: Bug 2798543} {
    expr {7**17 == 7**65553}
} 0
test expr-23.67.1 {INST_EXPON: Bug 2798543} {
    expr {7**22 == 7**65558}
} 0
test expr-23.67.2 {INST_EXPON: Bug 2798543} {
    expr {7**17 == 7**131089}
} 0
test expr-23.67.3 {INST_EXPON: Bug 2798543} -body {
    expr {7**268435456}
} -returnCodes error -result {exponent too large}
test expr-23.67.4 {INST_EXPON: Bug 2798543} {
    expr {(-7)**17 == (-7)**65553}
} 0
test expr-23.68.0 {INST_EXPON: Bug 2798543} {
    expr {8**17 == 8**65553}
} 0
test expr-23.68.1 {INST_EXPON: Bug 2798543} {
    expr {8**20 == 8**65556}
} 0
test expr-23.68.2 {INST_EXPON: Bug 2798543} {
    expr {8**17 == 8**131089}
} 0
test expr-23.68.3 {INST_EXPON: Bug 2798543} -body {
    expr {8**268435456}
} -returnCodes error -result {exponent too large}
test expr-23.68.4 {INST_EXPON: Bug 2798543} {
    expr {(-8)**17 == (-8)**65553}
} 0
test expr-23.69.0 {INST_EXPON: Bug 2798543} {
    expr {9**17 == 9**65553}
} 0
test expr-23.69.1 {INST_EXPON: Bug 2798543} {
    expr {9**19 == 9**65555}
} 0
test expr-23.69.2 {INST_EXPON: Bug 2798543} {
    expr {9**17 == 9**131089}
} 0
test expr-23.69.3 {INST_EXPON: Bug 2798543} -body {
    expr {9**268435456}
} -returnCodes error -result {exponent too large}
test expr-23.69.4 {INST_EXPON: Bug 2798543} {
    expr {(-9)**17 == (-9)**65553}
} 0
test expr-23.70.0 {INST_EXPON: Bug 2798543} {
    expr {10**17 == 10**65553}
} 0
test expr-23.70.1 {INST_EXPON: Bug 2798543} {
    expr {10**18 == 10**65554}
} 0
test expr-23.70.2 {INST_EXPON: Bug 2798543} {
    expr {10**17 == 10**131089}
} 0
test expr-23.70.3 {INST_EXPON: Bug 2798543} -body {
    expr {10**268435456}
} -returnCodes error -result {exponent too large}
test expr-23.70.4 {INST_EXPON: Bug 2798543} {
    expr {(-10)**17 == (-10)**65553}
} 0
test expr-23.71.0 {INST_EXPON: Bug 2798543} {
    expr {11**17 == 11**65553}
} 0
test expr-23.71.1 {INST_EXPON: Bug 2798543} {
    expr {11**18 == 11**65554}
} 0
test expr-23.71.2 {INST_EXPON: Bug 2798543} {
    expr {11**17 == 11**131089}
} 0
test expr-23.71.3 {INST_EXPON: Bug 2798543} -body {
    expr {11**268435456}
} -returnCodes error -result {exponent too large}
test expr-23.71.4 {INST_EXPON: Bug 2798543} {
    expr {(-11)**17 == (-11)**65553}
} 0
test expr-23.72.0 {INST_EXPON: Bug 2798543} {
    expr {12**17 == 12**65553}
} 0
test expr-23.72.1 {INST_EXPON: Bug 2798543} {
    expr {12**17 == 12**131089}
} 0
test expr-23.72.2 {INST_EXPON: Bug 2798543} -body {
    expr {12**268435456}
} -returnCodes error -result {exponent too large}
test expr-23.72.3 {INST_EXPON: Bug 2798543} {
    expr {(-12)**17 == (-12)**65553}
} 0
test expr-23.73.0 {INST_EXPON: Bug 2798543} {
    expr {13**17 == 13**65553}
} 0
test expr-23.73.1 {INST_EXPON: Bug 2798543} {
    expr {13**17 == 13**131089}
} 0
test expr-23.73.2 {INST_EXPON: Bug 2798543} -body {
    expr {13**268435456}
} -returnCodes error -result {exponent too large}
test expr-23.73.3 {INST_EXPON: Bug 2798543} {
    expr {(-13)**17 == (-13)**65553}
} 0
test expr-23.74.0 {INST_EXPON: Bug 2798543} {
    expr {14**17 == 14**65553}
} 0
test expr-23.74.1 {INST_EXPON: Bug 2798543} {
    expr {14**17 == 14**131089}
} 0
test expr-23.74.2 {INST_EXPON: Bug 2798543} -body {
    expr {14**268435456}
} -returnCodes error -result {exponent too large}
test expr-23.74.3 {INST_EXPON: Bug 2798543} {
    expr {(-14)**17 == (-14)**65553}
} 0


# Some compilers get this wrong; ensure that we work around it correctly
test expr-24.1 {expr edge cases; shifting} {expr int(5)>>32} 0
test expr-24.2 {expr edge cases; shifting} {expr int(5)>>63} 0
test expr-24.3 {expr edge cases; shifting} {expr wide(5)>>32} 0
test expr-24.4 {expr edge cases; shifting} {expr wide(5)>>63} 0
test expr-24.5 {expr edge cases; shifting} {expr int(5<<32)} 21474836480
test expr-24.6 {expr edge cases; shifting} {expr int(5<<63)} 46116860184273879040
test expr-24.7 {expr edge cases; shifting} {expr wide(5)<<32} 21474836480
test expr-24.8 {expr edge cases; shifting} {expr wide(10<<63)} 0
test expr-24.9 {expr edge cases; shifting} {expr 5>>32} 0

test expr-24.10 {INST_LSHIFT: Bug 1567222} {expr 500000000000000<<28} 134217728000000000000000
test expr-24.11 {INST_LSHIFT: Bug 84a5355235} {expr -549755813888>>32} -128
test expr-24.12 {INST_LSHIFT: Bug 920e393634} {expr 7244019458077122840<<1} 14488038916154245680

# List membership tests
test expr-25.1 {'in' operator} {expr {"a" in "a b c"}} 1
test expr-25.2 {'in' operator} {expr {"a" in "b a c"}} 1
test expr-25.3 {'in' operator} {expr {"a" in "b c a"}} 1
test expr-25.4 {'in' operator} {expr {"a" in ""}} 0
test expr-25.5 {'in' operator} {expr {"" in {a b c ""}}} 1
test expr-25.6 {'in' operator} {expr {"" in "a b c"}} 0
test expr-25.7 {'in' operator} {expr {"" in ""}} 0

test expr-26.1 {'ni' operator} {expr {"a" ni "a b c"}} 0
test expr-26.2 {'ni' operator} {expr {"a" ni "b a c"}} 0
test expr-26.3 {'ni' operator} {expr {"a" ni "b c a"}} 0
test expr-26.4 {'ni' operator} {expr {"a" ni ""}} 1
test expr-26.5 {'ni' operator} {expr {"" ni {a b c ""}}} 0
test expr-26.6 {'ni' operator} {expr {"" ni "a b c"}} 1
test expr-26.7 {'ni' operator} {expr {"" ni ""}} 1

foreach op {< <= == != > >=} {
    proc test$op {a b} [list expr "\$a $op \$b"]
}

test expr-27.1 {expr - correct ordering - not compiled} ieeeFloatingPoint {
    set problems {}
    # Ordering should be: -Infinity < -Normal < Subnormal < -0
    #                     < +0 < +Subnormal < +Normal < +Infinity
    # with equality within each class.
    set names {
	-Infinity -Normal -Subnormal -0 +0 +Subnormal +Normal +Infinity
    }
    set weights {
	-3 -2 -1 0 0 1 2 3
    }
    foreach name1 $names weight1 $weights {
	foreach name2 $names weight2 $weights {
	    foreach op {< <= == != >= >} {
		set shouldBe [expr "$weight1 $op $weight2"]
		set is [expr "\$ieeeValues($name1) $op \$ieeeValues($name2)"]
		if { $is != $shouldBe } {
		    append problems $name1 { } $op { } $name2 \
			":result is " $is ", should be $shouldBe" \n
		}
	    }
	}
    }
    set problems
} {}
test expr-27.2 {expr - correct ordering - compiled} ieeeFloatingPoint {
    set problems {}
    # Ordering should be: -Infinity < -Normal < Subnormal < -0
    #                     < +0 < +Subnormal < +Normal < +Infinity
    # with equality within each class.
    set names {
	-Infinity -Normal -Subnormal -0 +0 +Subnormal +Normal +Infinity
    }
    set weights {
	-3 -2 -1 0 0 1 2 3
    }
    foreach name1 $names weight1 $weights {
	foreach name2 $names weight2 $weights {
	    foreach op {< <= == != >= >} {
		set shouldBe [expr "$weight1 $op $weight2"]
		set is [test$op $ieeeValues($name1) $ieeeValues($name2)]
		if { $is != $shouldBe } {
		    append problems $name1 { } $op { } $name2 \
			":result is " $is ", should be $shouldBe" \n
		}
	    }
	}
    }
    set problems
} {}
test expr-27.3 {expr - NaN is unordered - not compiled} {
    set problems {}
    set names {
	-Infinity -Normal -Subnormal -0 +0 +Subnormal +Normal +Infinity NaN
    }
    foreach name1 $names {
	foreach op {< <= == != >= >} sb {0 0 0 1 0 0} {
	    if "(\$ieeeValues($name1) $op \$ieeeValues(NaN)) != $sb " {
		append problems $name1 { } $op { } NaN \
		    ": result is 1, should be $sb" \n
	    }
	    if "(\$ieeeValues(NaN) $op \$ieeeValues($name1)) != $sb" {
		append problems NaN { } $op { } $name1 \
		    ": result is 1, should be $sb" \n
	    }
	}
    }
    set problems
} {}
test expr-27.4 {expr - NaN is unordered - compiled} {
    set problems {}
    set names {
	-Infinity -Normal -Subnormal -0 +0 +Subnormal +Normal +Infinity NaN
    }
    foreach name1 $names {
	foreach op {< <= == != >= >} sb {0 0 0 1 0 0} {
	    if { [test$op $ieeeValues($name1) $ieeeValues(NaN)] != $sb } {
		append problems $ieeeValues($name1) { } $op { } $ieeeValues(NaN) \
		    ": result is 1, should be $sb" \n
	    }
	    if { [test$op $ieeeValues(NaN) $ieeeValues($name1)] != $sb } {
		append problems NaN { } $op { } $ieeeValues($name1) \
		    ": result is 1, should be $sb" \n
	    }
	}
    }
    set problems
} {}

proc convertToDouble { x } {
    variable ieeeValues
    binary scan [binary format d $x] c* bytes
    set result 0x
    if { $ieeeValues(littleEndian) } {
	for { set i 7 } { $i >= 0 } { incr i -1 } {
	    append result [format %02x [expr { [lindex $bytes $i] & 0xff }]]
	}
    } else {
	foreach byte $bytes {
	    append result [format %02x [expr { $byte & 0xff }]]
	}
    }
    return $result
}

test expr-28.1 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d ALL 0 E0 OK 00000000000000 E-1023
    convertToDouble 0E0
} 0x0000000000000000
test expr-28.2 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d ALL -0 E0 OK -0000000000000 E-1023
    convertToDouble -0E0
} 0x8000000000000000
test expr-28.3 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d ALL 1 E0 OK 10000000000000 E0
    convertToDouble 1E0
} 0x3ff0000000000000
test expr-28.4 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d ALL 15 E-1 OK 18000000000000 E0
    convertToDouble 15E-1
} 0x3ff8000000000000
test expr-28.5 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d ALL 125 E-2 OK 14000000000000 E0
    convertToDouble 125E-2
} 0x3ff4000000000000
test expr-28.6 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d ALL 1125 E-3 OK 12000000000000 E0
    convertToDouble 1125E-3
} 0x3ff2000000000000
test expr-28.7 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d ALL 10625 E-4 OK 11000000000000 E0
    convertToDouble 10625E-4
} 0x3ff1000000000000
test expr-28.8 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d ALL 103125 E-5 OK 10800000000000 E0
    convertToDouble 103125E-5
} 0x3ff0800000000000
test expr-28.9 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d ALL 1015625 E-6 OK 10400000000000 E0
    convertToDouble 1015625E-6
} 0x3ff0400000000000
test expr-28.10 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d ALL 10078125 E-7 OK 10200000000000 E0
    convertToDouble 10078125E-7
} 0x3ff0200000000000
test expr-28.11 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d ALL 100390625 E-8 OK 10100000000000 E0
    convertToDouble 100390625E-8
} 0x3ff0100000000000
test expr-28.12 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee ALL 1001953125 E-9 OK 10080000000000 E0
    convertToDouble 1001953125E-9
} 0x3ff0080000000000
test expr-28.13 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee ALL 10009765625 E-10 OK 10040000000000 E0
    convertToDouble 10009765625E-10
} 0x3ff0040000000000
test expr-28.14 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee ALL 100048828125 E-11 OK 10020000000000 E0
    convertToDouble 100048828125E-11
} 0x3ff0020000000000
test expr-28.15 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee ALL 1000244140625 E-12 OK 10010000000000 E0
    convertToDouble 1000244140625E-12
} 0x3ff0010000000000
test expr-28.16 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee ALL 10001220703125 E-13 OK 10008000000000 E0
    convertToDouble 10001220703125E-13
} 0x3ff0008000000000
test expr-28.17 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee ALL 100006103515625 E-14 OK 10004000000000 E0
    convertToDouble 100006103515625E-14
} 0x3ff0004000000000
test expr-28.18 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee ALL 1000030517578125 E-15 OK 10002000000000 E0
    convertToDouble 1000030517578125E-15
} 0x3ff0002000000000
test expr-28.19 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee ALL 10000152587890625 E-16 OK 10001000000000 E0
    convertToDouble 10000152587890625E-16
} 0x3ff0001000000000
test expr-28.20 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +8 E153 x 1317e5ef3ab327_0000000001& E511
    convertToDouble +8E153
} 0x5fe317e5ef3ab327
test expr-28.21 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -1 E153 x -1317e5ef3ab327_0000000001& E508
    convertToDouble -1E153
} 0xdfb317e5ef3ab327
test expr-28.22 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +9 E306 x 19a2028368022e_00000000001& E1019
    convertToDouble +9E306
} 0x7fa9a2028368022e
test expr-28.23 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -2 E153 x -1317e5ef3ab327_0000000001& E509
    convertToDouble -2E153
} 0xdfc317e5ef3ab327
test expr-28.24 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +7 E-304 x 1eb8e84fa0b278_00000000001& E-1008
    convertToDouble +7E-304
} 0x00feb8e84fa0b278
test expr-28.25 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -3 E-49 x -1c0f92a6276c9d_000000001& E-162
    convertToDouble -3E-49
} 0xb5dc0f92a6276c9d
test expr-28.26 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +7 E-303 x 13339131c46f8b_00000000001& E-1004
    convertToDouble +7E-303
} 0x0133339131c46f8b
test expr-28.27 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -6 E-49 x -1c0f92a6276c9d_000000001& E-161
    convertToDouble -6E-49
} 0xb5ec0f92a6276c9d
test expr-28.28 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +9 E43 x 102498ea6df0c3_11111111110& E146
    convertToDouble +9E43
} 0x49102498ea6df0c4
test expr-28.29 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -9 E44 x -142dbf25096cf4_1111111110& E149
    convertToDouble -9E44
} 0xc9442dbf25096cf5
test expr-28.30 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +8 E303 x 1754e31cd072d9_1111111110& E1009
    convertToDouble +8E303
} 0x7f0754e31cd072da
test expr-28.31 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -1 E303 x -1754e31cd072d9_1111111110& E1006
    convertToDouble -1E303
} 0xfed754e31cd072da
test expr-28.32 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +7 E-287 x 1551603777f798_111111110& E-951
    convertToDouble +7E-287
} 0x048551603777f799
test expr-28.33 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -2 E-204 x -1410d9f9b2f7f2_11111110& E-677
    convertToDouble -2E-204
} 0x95a410d9f9b2f7f3
test expr-28.34 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +2 E-205 x 100d7b2e28c65b_11111110& E-680
    convertToDouble +2E-205
} 0x15700d7b2e28c65c
test expr-28.35 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -9 E-47 x -10711fed5b19a3_11111110& E-153
    convertToDouble -9E-47
} 0xb660711fed5b19a4
test expr-28.36 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +34 E195 x 1d1c26db7d0dae_000000000001& E652
    convertToDouble +34E195
} 0x68bd1c26db7d0dae
test expr-28.37 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -68 E195 x -1d1c26db7d0dae_000000000001& E653
    convertToDouble -68E195
} 0xe8cd1c26db7d0dae
test expr-28.38 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +85 E194 x 1d1c26db7d0dae_000000000001& E650
    convertToDouble +85E194
} 0x689d1c26db7d0dae
test expr-28.39 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -67 E97 x -139ac1ce2cc95f_000000000001& E328
    convertToDouble -67E97
} 0xd4739ac1ce2cc95f
test expr-28.40 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +93 E-234 x 127b2e4f210075_0000000000000001& E-771
    convertToDouble +93E-234
} 0x0fc27b2e4f210075
test expr-28.41 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -19 E-87 x -12e5f5dfa4fe9d_00000000000001& E-285
    convertToDouble -19E-87
} 0xae22e5f5dfa4fe9d
test expr-28.42 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +38 E-87 x 12e5f5dfa4fe9d_00000000000001& E-284
    convertToDouble +38E-87
} 0x2e32e5f5dfa4fe9d
test expr-28.43 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -38 E-88 x -1e3cbc9907fdc8_00000000000001& E-288
    convertToDouble -38E-88
} 0xadfe3cbc9907fdc8
test expr-28.44 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -69 E220 x -1e8aa8823a5db3_11111111110& E736
    convertToDouble -69E220
} 0xedfe8aa8823a5db4
test expr-28.45 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +18 E43 x 102498ea6df0c3_11111111110& E147
    convertToDouble +18E43
} 0x49202498ea6df0c4
test expr-28.46 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -36 E43 x -102498ea6df0c3_11111111110& E148
    convertToDouble -36E43
} 0xc9302498ea6df0c4
test expr-28.47 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +61 E-99 x 10ad836f269a16_11111111111110& E-323
    convertToDouble +61E-99
} 0x2bc0ad836f269a17
test expr-28.48 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -43 E-92 x -1c0794d9d40e95_111111111111110& E-301
    convertToDouble -43E-92
} 0xad2c0794d9d40e96
test expr-28.49 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +86 E-92 x 1c0794d9d40e95_111111111111110& E-300
    convertToDouble +86E-92
} 0x2d3c0794d9d40e96
test expr-28.50 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -51 E-74 x -1cd5bee57763e5_1111111111111110& E-241
    convertToDouble -51E-74
} 0xb0ecd5bee57763e6
test expr-28.51 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +283 E85 x 16c309024bab4b_00000000000000001& E290
    convertToDouble +283E85
} 0x5216c309024bab4b
test expr-28.52 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -566 E85 x -16c309024bab4b_00000000000000001& E291
    convertToDouble -566E85
} 0xd226c309024bab4b
test expr-28.53 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +589 E187 x 1526be9c22eb17_00000000000000001& E630
    convertToDouble +589E187
} 0x675526be9c22eb17
test expr-28.54 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -839 E143 x -1ae03f245703e2_000000000000001& E484
    convertToDouble -839E143
} 0xde3ae03f245703e2
test expr-28.55 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -744 E-234 x -127b2e4f210075_0000000000000001& E-768
    convertToDouble -744E-234
} 0x8ff27b2e4f210075
test expr-28.56 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +930 E-235 x 127b2e4f210075_0000000000000001& E-771
    convertToDouble +930E-235
} 0x0fc27b2e4f210075
test expr-28.57 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -186 E-234 x -127b2e4f210075_0000000000000001& E-770
    convertToDouble -186E-234
} 0x8fd27b2e4f210075
test expr-28.58 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +604 E175 x 17d93193f78fc5_1111111111111111110& E590
    convertToDouble +604E175
} 0x64d7d93193f78fc6
test expr-28.59 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -302 E175 x -17d93193f78fc5_1111111111111111110& E589
    convertToDouble -302E175
} 0xe4c7d93193f78fc6
test expr-28.60 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +755 E174 x 17d93193f78fc5_1111111111111111110& E587
    convertToDouble +755E174
} 0x64a7d93193f78fc6
test expr-28.61 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -151 E175 x -17d93193f78fc5_1111111111111111110& E588
    convertToDouble -151E175
} 0xe4b7d93193f78fc6
test expr-28.62 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +662 E-213 x 1bdb90e62a8cbc_1111111111111110& E-699
    convertToDouble +662E-213
} 0x144bdb90e62a8cbd
test expr-28.63 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -408 E-74 x -1cd5bee57763e5_1111111111111110& E-238
    convertToDouble -408E-74
} 0xb11cd5bee57763e6
test expr-28.64 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +510 E-75 x 1cd5bee57763e5_1111111111111110& E-241
    convertToDouble +510E-75
} 0x30ecd5bee57763e6
test expr-28.65 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +6782 E55 x 159bd3ad46e346_0000000000000000001& E195
    convertToDouble +6782E55
} 0x4c259bd3ad46e346
test expr-28.66 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -2309 E92 x -1bac6f7d64d119_000000000000000001& E316
    convertToDouble -2309E92
} 0xd3bbac6f7d64d119
test expr-28.67 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +7963 E34 x 1df4170f0fdecc_00000000000000000001& E125
    convertToDouble +7963E34
} 0x47cdf4170f0fdecc
test expr-28.68 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -3391 E55 x -159bd3ad46e346_0000000000000000001& E194
    convertToDouble -3391E55
} 0xcc159bd3ad46e346
test expr-28.69 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +7903 E-96 x 107c2d27a5b989_0000000000000000001& E-306
    convertToDouble +7903E-96
} 0x2cd07c2d27a5b989
test expr-28.70 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -7611 E-226 x -119b8744033457_0000000000000000001& E-738
    convertToDouble -7611E-226
} 0x91d19b8744033457
test expr-28.71 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +4907 E-196 x 11e90a8711440f_000000000000000001& E-639
    convertToDouble +4907E-196
} 0x1801e90a8711440f
test expr-28.72 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -5547 E-311 x -13f190452a29f4_000000000000000001& E-1021
    convertToDouble -5547E-311
} 0x8023f190452a29f4
test expr-28.73 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +5311 E241 x 1f1ce3c887c25f_11111111111111111110& E812
    convertToDouble +5311E241
} 0x72bf1ce3c887c260
test expr-28.74 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -5311 E243 x -184e91f4aa0fda_11111111111111111110& E819
    convertToDouble -5311E243
} 0xf3284e91f4aa0fdb
test expr-28.75 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +5311 E242 x 13720e5d54d97b_11111111111111111110& E816
    convertToDouble +5311E242
} 0x72f3720e5d54d97c
test expr-28.76 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +9269 E-45 x 19d69455a53bd8_111111111111111111110& E-137
    convertToDouble +9269E-45
} 0x3769d69455a53bd9
test expr-28.77 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -8559 E-289 x -104a81d35952fe_11111111111111111110& E-947
    convertToDouble -8559E-289
} 0x84c04a81d35952ff
test expr-28.78 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +8699 E-276 x 12d2df246ecd2c_1111111111111111111110& E-904
    convertToDouble +8699E-276
} 0x0772d2df246ecd2d
test expr-28.79 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -8085 E-64 x -14c98fce16152d_1111111111111111110& E-200
    convertToDouble -8085E-64
} 0xb374c98fce16152e
test expr-28.80 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +74819 E201 x 1dd455061eb3f1_0000000000000000000001& E683
    convertToDouble +74819E201
} 0x6aadd455061eb3f1
test expr-28.81 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -82081 E41 x -170105df3d47cb_000000000000000000000000001& E152
    convertToDouble -82081E41
} 0xc9770105df3d47cb
test expr-28.82 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +51881 E37 x 17d2950dc76da4_000000000000000000001& E138
    convertToDouble +51881E37
} 0x4897d2950dc76da4
test expr-28.83 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -55061 E157 x -1394fc0f33536c_000000000000000000001& E537
    convertToDouble -55061E157
} 0xe18394fc0f33536c
test expr-28.84 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +77402 E-215 x 10492a4a8a37fd_0000000000000000000000001& E-698
    convertToDouble +77402E-215
} 0x1450492a4a8a37fd
test expr-28.85 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -33891 E-92 x -1592f9932c06bd_00000000000000000000001& E-291
    convertToDouble -33891E-92
} 0xadc592f9932c06bd
test expr-28.86 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +38701 E-215 x 10492a4a8a37fd_0000000000000000000000001& E-699
    convertToDouble +38701E-215
} 0x1440492a4a8a37fd
test expr-28.87 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -82139 E-76 x -1d0681489839d5_00000000000000000000001& E-237
    convertToDouble -82139E-76
} 0xb12d0681489839d5
test expr-28.88 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +75859 E25 x 132645e1ba93ef_11111111111111111111110& E99
    convertToDouble +75859E25
} 0x46232645e1ba93f0
test expr-28.89 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +89509 E140 x 16f02bee68670c_1111111111111111111110& E481
    convertToDouble +89509E140
} 0x5e06f02bee68670d
test expr-28.90 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -57533 E287 x -1272ed2307f569_1111111111111111111110& E969
    convertToDouble -57533E287
} 0xfc8272ed2307f56a
test expr-28.91 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +46073 E-32 x 12405b773fbdf2_11111111111111111111110& E-91
    convertToDouble +46073E-32
} 0x3a42405b773fbdf3
test expr-28.92 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -92146 E-32 x -12405b773fbdf2_11111111111111111111110& E-90
    convertToDouble -92146E-32
} 0xba52405b773fbdf3
test expr-28.93 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +83771 E-74 x 17206bfc4ccabd_11111111111111111111110& E-230
    convertToDouble +83771E-74
} 0x3197206bfc4ccabe
test expr-28.94 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -34796 E-276 x -12d2df246ecd2c_1111111111111111111110& E-902
    convertToDouble -34796E-276
} 0x8792d2df246ecd2d
test expr-28.95 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +584169 E229 x 1d657059dc79aa_00000000000000000000000000001& E779
    convertToDouble +584169E229
} 0x70ad657059dc79aa
test expr-28.96 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +164162 E41 x 170105df3d47cb_000000000000000000000000001& E153
    convertToDouble +164162E41
} 0x49870105df3d47cb
test expr-28.97 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -328324 E41 x -170105df3d47cb_000000000000000000000000001& E154
    convertToDouble -328324E41
} 0xc9970105df3d47cb
test expr-28.98 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +209901 E-11 x 119b96f36ec68b_00000000000000000000000001& E-19
    convertToDouble +209901E-11
} 0x3ec19b96f36ec68b
test expr-28.99 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -419802 E-11 x -119b96f36ec68b_00000000000000000000000001& E-18
    convertToDouble -419802E-11
} 0xbed19b96f36ec68b
test expr-28.100 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +940189 E-112 x 1b99d6240c1a28_00000000000000000000000001& E-353
    convertToDouble +940189E-112
} 0x29eb99d6240c1a28
test expr-28.101 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -892771 E-213 x -125818c7294f27_0000000000000000000000000001& E-688
    convertToDouble -892771E-213
} 0x94f25818c7294f27
test expr-28.102 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +757803 E120 x 11e968b555bb80_11111111111111111111111111110& E418
    convertToDouble +757803E120
} 0x5a11e968b555bb81
test expr-28.103 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -252601 E120 x -17e1e0f1c7a4ab_11111111111111111111111111110& E416
    convertToDouble -252601E120
} 0xd9f7e1e0f1c7a4ac
test expr-28.104 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +252601 E121 x 1dda592e398dd6_1111111111111111111111111110& E419
    convertToDouble +252601E121
} 0x5a2dda592e398dd7
test expr-28.105 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -505202 E120 x -17e1e0f1c7a4ab_11111111111111111111111111110& E417
    convertToDouble -505202E120
} 0xda07e1e0f1c7a4ac
test expr-28.106 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +970811 E-264 x 1dda6b965c9629_11111111111111111111111110& E-858
    convertToDouble +970811E-264
} 0x0a5dda6b965c962a
test expr-28.107 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -654839 E-60 x -100e7db3b3f241_111111111111111111111111110& E-180
    convertToDouble -654839E-60
} 0xb4b00e7db3b3f242
test expr-28.108 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +289767 E-178 x 1caad28f23a100_11111111111111111111111110& E-574
    convertToDouble +289767E-178
} 0x1c1caad28f23a101
test expr-28.109 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -579534 E-178 x -1caad28f23a100_11111111111111111111111110& E-573
    convertToDouble -579534E-178
} 0x9c2caad28f23a101
test expr-28.110 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -8823691 E130 x -1e597c0b94b7ae_00000000000000000000000000000001& E454
    convertToDouble -8823691E130
} 0xdc5e597c0b94b7ae
test expr-28.111 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +9346704 E229 x 1d657059dc79aa_00000000000000000000000000001& E783
    convertToDouble +9346704E229
} 0x70ed657059dc79aa
test expr-28.112 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -1168338 E229 x -1d657059dc79aa_00000000000000000000000000001& E780
    convertToDouble -1168338E229
} 0xf0bd657059dc79aa
test expr-28.113 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -6063369 E-136 x -1ae6148e3902b3_000000000000000000000000000001& E-430
    convertToDouble -6063369E-136
} 0xa51ae6148e3902b3
test expr-28.114 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +3865421 E-225 x 15d4fe53afec65_00000000000000000000000000001& E-726
    convertToDouble +3865421E-225
} 0x1295d4fe53afec65
test expr-28.115 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -5783893 E-127 x -17e5902ce0e151_000000000000000000000000000000001& E-400
    convertToDouble -5783893E-127
} 0xa6f7e5902ce0e151
test expr-28.116 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +2572231 E223 x 10f73be1dff9ac_111111111111111111111111111110& E762
    convertToDouble +2572231E223
} 0x6f90f73be1dff9ad
test expr-28.117 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -5144462 E223 x -10f73be1dff9ac_111111111111111111111111111110& E763
    convertToDouble -5144462E223
} 0xefa0f73be1dff9ad
test expr-28.118 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +1817623 E109 x 1d85f96f3fe659_11111111111111111111111111110& E382
    convertToDouble +1817623E109
} 0x57dd85f96f3fe65a
test expr-28.119 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +6431543 E-97 x 14f6493f34a0bc_11111111111111111111111111110& E-300
    convertToDouble +6431543E-97
} 0x2d34f6493f34a0bd
test expr-28.120 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -5444097 E-21 x -18849dd33c95ae_11111111111111111111111111110& E-48
    convertToDouble -5444097E-21
} 0xbcf8849dd33c95af
test expr-28.121 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +8076999 E-121 x 1fd332f7e2e3b2_11111111111111111111111111110& E-380
    convertToDouble +8076999E-121
} 0x283fd332f7e2e3b3
test expr-28.122 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -9997649 E-270 x -1425e9d29e558d_1111111111111111111111111110& E-874
    convertToDouble -9997649E-270
} 0x895425e9d29e558e
test expr-28.123 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +50609263 E157 x 1193aff1f1c8e3_000000000000000000000000000000001& E547
    convertToDouble +50609263E157
} 0x622193aff1f1c8e3
test expr-28.124 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +70589528 E130 x 1e597c0b94b7ae_00000000000000000000000000000001& E457
    convertToDouble +70589528E130
} 0x5c8e597c0b94b7ae
test expr-28.125 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -88236910 E129 x -1e597c0b94b7ae_00000000000000000000000000000001& E454
    convertToDouble -88236910E129
} 0xdc5e597c0b94b7ae
test expr-28.126 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +87575437 E-310 x 1805c19e680456_0000000000000000000000000000000000001& E-1004
    convertToDouble +87575437E-310
} 0x013805c19e680456
test expr-28.127 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -23135572 E-127 x -17e5902ce0e151_000000000000000000000000000000001& E-398
    convertToDouble -23135572E-127
} 0xa717e5902ce0e151
test expr-28.128 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +85900881 E177 x 14375b2214e1b4_111111111111111111111111111111110& E614
    convertToDouble +85900881E177
} 0x6654375b2214e1b5
test expr-28.129 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -84863171 E113 x -1a4a8e56474b8b_111111111111111111111111111111110& E401
    convertToDouble -84863171E113
} 0xd90a4a8e56474b8c
test expr-28.130 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +68761586 E232 x 1a662c350f37f2_1111111111111111111111111111110& E796
    convertToDouble +68761586E232
} 0x71ba662c350f37f3
test expr-28.131 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -50464069 E286 x -1948dd06de561e_1111111111111111111111111111110& E975
    convertToDouble -50464069E286
} 0xfce948dd06de561f
test expr-28.132 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +27869147 E-248 x 1dbbac6f83a820_111111111111111111111111111111111110& E-800
    convertToDouble +27869147E-248
} 0x0dfdbbac6f83a821
test expr-28.133 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -55738294 E-248 x -1dbbac6f83a820_111111111111111111111111111111111110& E-799
    convertToDouble -55738294E-248
} 0x8e0dbbac6f83a821
test expr-28.134 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +70176353 E-53 x 100683a21de854_1111111111111111111111111111111110& E-150
    convertToDouble +70176353E-53
} 0x36900683a21de855
test expr-28.135 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -80555086 E-32 x -1f29ca0ff893b0_111111111111111111111111111111110& E-81
    convertToDouble -80555086E-32
} 0xbaef29ca0ff893b1
test expr-28.136 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -491080654 E121 x -1c569e968e0944_00000000000000000000000000000000000000001& E430
    convertToDouble -491080654E121
} 0xdadc569e968e0944
test expr-28.137 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +526250918 E287 x 14997a298b2f2e_0000000000000000000000000000000000001& E982
    convertToDouble +526250918E287
} 0x7d54997a298b2f2e
test expr-28.138 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -245540327 E121 x -1c569e968e0944_00000000000000000000000000000000000000001& E429
    convertToDouble -245540327E121
} 0xdacc569e968e0944
test expr-28.139 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -175150874 E-310 x -1805c19e680456_0000000000000000000000000000000000001& E-1003
    convertToDouble -175150874E-310
} 0x814805c19e680456
test expr-28.140 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +350301748 E-310 x 1805c19e680456_0000000000000000000000000000000000001& E-1002
    convertToDouble +350301748E-310
} 0x015805c19e680456
test expr-28.141 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -437877185 E-311 x -1805c19e680456_0000000000000000000000000000000000001& E-1005
    convertToDouble -437877185E-311
} 0x812805c19e680456
test expr-28.142 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +458117166 E52 x 16ce94febdc7a4_1111111111111111111111111111111111110& E201
    convertToDouble +458117166E52
} 0x4c86ce94febdc7a5
test expr-28.143 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -916234332 E52 x -16ce94febdc7a4_1111111111111111111111111111111111110& E202
    convertToDouble -916234332E52
} 0xcc96ce94febdc7a5
test expr-28.144 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +229058583 E52 x 16ce94febdc7a4_1111111111111111111111111111111111110& E200
    convertToDouble +229058583E52
} 0x4c76ce94febdc7a5
test expr-28.145 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -525789935 E98 x -16ecdc2a58fc64_11111111111111111111111111111111110& E354
    convertToDouble -525789935E98
} 0xd616ecdc2a58fc65
test expr-28.146 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +282926897 E-227 x 1ff5a70d3d2fee_1111111111111111111111111111111111110& E-727
    convertToDouble +282926897E-227
} 0x128ff5a70d3d2fef
test expr-28.147 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -565853794 E-227 x -1ff5a70d3d2fee_1111111111111111111111111111111111110& E-726
    convertToDouble -565853794E-227
} 0x929ff5a70d3d2fef
test expr-28.148 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +667284113 E-240 x 109355f8050c01_111111111111111111111111111111111110& E-768
    convertToDouble +667284113E-240
} 0x0ff09355f8050c02
test expr-28.149 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -971212611 E-126 x -1397d3c9745d2e_111111111111111111111111111111111111110& E-389
    convertToDouble -971212611E-126
} 0xa7a397d3c9745d2f
test expr-28.150 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +9981396317 E-182 x 18afe10a2a66aa_0000000000000000000000000000000000000001& E-572
    convertToDouble +9981396317E-182
} 0x1c38afe10a2a66aa
test expr-28.151 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -5035231965 E-156 x -101891fc4717fd_00000000000000000000000000000000000001& E-486
    convertToDouble -5035231965E-156
} 0xa1901891fc4717fd
test expr-28.152 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +8336960483 E-153 x 1a06a1024b95e1_000000000000000000000000000000000000001& E-476
    convertToDouble +8336960483E-153
} 0x223a06a1024b95e1
test expr-28.153 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -8056371144 E-155 x -101891fc4717fd_00000000000000000000000000000000000001& E-482
    convertToDouble -8056371144E-155
} 0xa1d01891fc4717fd
test expr-28.154 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +6418488827 E79 x 1021f14ed7b3f9_11111111111111111111111111111111111111110& E295
    convertToDouble +6418488827E79
} 0x526021f14ed7b3fa
test expr-28.155 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -3981006983 E252 x -102ebaf189d5f1_1111111111111111111111111111111111111110& E869
    convertToDouble -3981006983E252
} 0xf6402ebaf189d5f2
test expr-28.156 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +7962013966 E252 x 102ebaf189d5f1_1111111111111111111111111111111111111110& E870
    convertToDouble +7962013966E252
} 0x76502ebaf189d5f2
test expr-28.157 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -4713898551 E261 x -11d8813536e0df_11111111111111111111111111111111111110& E899
    convertToDouble -4713898551E261
} 0xf821d8813536e0e0
test expr-28.158 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +8715380633 E-58 x 14614c3219891e_11111111111111111111111111111111111111110& E-160
    convertToDouble +8715380633E-58
} 0x35f4614c3219891f
test expr-28.159 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -9078555839 E-109 x -1fc575867314ed_111111111111111111111111111111111111111111110& E-330
    convertToDouble -9078555839E-109
} 0xab5fc575867314ee
test expr-28.160 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +9712126110 E-127 x 1397d3c9745d2e_111111111111111111111111111111111111110& E-389
    convertToDouble +9712126110E-127
} 0x27a397d3c9745d2f
test expr-28.161 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +42333842451 E201 x 10189a26df575f_000000000000000000000000000000000000000000001& E703
    convertToDouble +42333842451E201
} 0x6be0189a26df575f
test expr-28.162 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -84667684902 E201 x -10189a26df575f_000000000000000000000000000000000000000000001& E704
    convertToDouble -84667684902E201
} 0xebf0189a26df575f
test expr-28.163 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +23792120709 E-315 x 10b517dc5d3212_00000000000000000000000000000000000000001& E-1012
    convertToDouble +23792120709E-315
} 0x00b0b517dc5d3212
test expr-28.164 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -78564021519 E-227 x -1155515fd37265_00000000000000000000000000000000000000000001& E-718
    convertToDouble -78564021519E-227
} 0x931155515fd37265
test expr-28.165 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +71812054883 E-188 x 1747b46d78c6fe_00000000000000000000000000000000000000001& E-589
    convertToDouble +71812054883E-188
} 0x1b2747b46d78c6fe
test expr-28.166 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -30311163631 E-116 x -163ef6f560afe7_00000000000000000000000000000000000000001& E-351
    convertToDouble -30311163631E-116
} 0xaa063ef6f560afe7
test expr-28.167 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +71803914657 E292 x 10c0c44cdc2c05_11111111111111111111111111111111111111111110& E1006
    convertToDouble +71803914657E292
} 0x7ed0c0c44cdc2c06
test expr-28.168 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +36314223356 E-109 x 1fc575867314ed_111111111111111111111111111111111111111111110& E-328
    convertToDouble +36314223356E-109
} 0x2b7fc575867314ee
test expr-28.169 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +18157111678 E-109 x 1fc575867314ed_111111111111111111111111111111111111111111110& E-329
    convertToDouble +18157111678E-109
} 0x2b6fc575867314ee
test expr-28.170 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -45392779195 E-110 x -1fc575867314ed_111111111111111111111111111111111111111111110& E-331
    convertToDouble -45392779195E-110
} 0xab4fc575867314ee
test expr-28.171 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +778380362293 E218 x 19ab8261990292_0000000000000000000000000000000000000000000000000001& E763
    convertToDouble +778380362293E218
} 0x6fa9ab8261990292
test expr-28.172 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -685763015669 E280 x -15fd7aa44d9477_000000000000000000000000000000000000000000000001& E969
    convertToDouble -685763015669E280
} 0xfc85fd7aa44d9477
test expr-28.173 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +952918668151 E70 x 14177a9915fbf8_00000000000000000000000000000000000000000000001& E272
    convertToDouble +952918668151E70
} 0x50f4177a9915fbf8
test expr-28.174 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -548357443505 E32 x -13abde2775e9b5_0000000000000000000000000000000000000000000001& E145
    convertToDouble -548357443505E32
} 0xc903abde2775e9b5
test expr-28.175 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +384865004907 E-285 x 1aa65b58639e69_00000000000000000000000000000000000000000000001& E-909
    convertToDouble +384865004907E-285
} 0x072aa65b58639e69
test expr-28.176 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -769730009814 E-285 x -1aa65b58639e69_00000000000000000000000000000000000000000000001& E-908
    convertToDouble -769730009814E-285
} 0x873aa65b58639e69
test expr-28.177 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +697015418417 E-93 x 152847dad80453_0000000000000000000000000000000000000000000001& E-270
    convertToDouble +697015418417E-93
} 0x2f152847dad80453
test expr-28.178 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -915654049301 E-28 x -1a645598d05989_0000000000000000000000000000000000000000000001& E-54
    convertToDouble -915654049301E-28
} 0xbc9a645598d05989
test expr-28.179 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +178548656339 E169 x 1b89d67c5b6d24_111111111111111111111111111111111111111111110& E598
    convertToDouble +178548656339E169
} 0x655b89d67c5b6d25
test expr-28.180 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -742522891517 E259 x -1c1c352fc3c308_11111111111111111111111111111111111111111111110& E899
    convertToDouble -742522891517E259
} 0xf82c1c352fc3c309
test expr-28.181 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +742522891517 E258 x 167cf7596968d3_11111111111111111111111111111111111111111111110& E896
    convertToDouble +742522891517E258
} 0x77f67cf7596968d4
test expr-28.182 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -357097312678 E169 x -1b89d67c5b6d24_111111111111111111111111111111111111111111110& E599
    convertToDouble -357097312678E169
} 0xe56b89d67c5b6d25
test expr-28.183 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -3113521449172 E218 x -19ab8261990292_0000000000000000000000000000000000000000000000000001& E765
    convertToDouble -3113521449172E218
} 0xefc9ab8261990292
test expr-28.184 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +3891901811465 E217 x 19ab8261990292_0000000000000000000000000000000000000000000000000001& E762
    convertToDouble +3891901811465E217
} 0x6f99ab8261990292
test expr-28.185 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -1556760724586 E218 x -19ab8261990292_0000000000000000000000000000000000000000000000000001& E764
    convertToDouble -1556760724586E218
} 0xefb9ab8261990292
test expr-28.186 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +9997878507563 E-195 x 153db2fea1ea31_0000000000000000000000000000000000000000000000001& E-605
    convertToDouble +9997878507563E-195
} 0x1a253db2fea1ea31
test expr-28.187 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -7247563029154 E-319 x -10493f056e9ef3_0000000000000000000000000000000000000000000000001& E-1017
    convertToDouble -7247563029154E-319
} 0x8060493f056e9ef3
test expr-28.188 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +3623781514577 E-319 x 10493f056e9ef3_0000000000000000000000000000000000000000000000001& E-1018
    convertToDouble +3623781514577E-319
} 0x0050493f056e9ef3
test expr-28.189 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -3092446298323 E-200 x -113918353bbc47_0000000000000000000000000000000000000000000000001& E-623
    convertToDouble -3092446298323E-200
} 0x99013918353bbc47
test expr-28.190 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +6363857920591 E145 x 128a61cf9483b6_1111111111111111111111111111111111111111111111111110& E524
    convertToDouble +6363857920591E145
} 0x60b28a61cf9483b7
test expr-28.191 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -8233559360849 E94 x -11f324d11d4861_1111111111111111111111111111111111111111111111110& E355
    convertToDouble -8233559360849E94
} 0xd621f324d11d4862
test expr-28.192 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +2689845954547 E49 x 10bd2bfd34f98a_1111111111111111111111111111111111111111111111110& E204
    convertToDouble +2689845954547E49
} 0x4cb0bd2bfd34f98b
test expr-28.193 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -5379691909094 E49 x -10bd2bfd34f98a_1111111111111111111111111111111111111111111111110& E205
    convertToDouble -5379691909094E49
} 0xccc0bd2bfd34f98b
test expr-28.194 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +5560322501926 E-301 x 15acc2053064c1_11111111111111111111111111111111111111111111111110& E-958
    convertToDouble +5560322501926E-301
} 0x0415acc2053064c2
test expr-28.195 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -7812878489261 E-179 x -126dae7bbeda74_11111111111111111111111111111111111111111111111111110& E-552
    convertToDouble -7812878489261E-179
} 0x9d726dae7bbeda75
test expr-28.196 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +8439398533053 E-256 x 170cc285f2d209_1111111111111111111111111111111111111111111111110& E-808
    convertToDouble +8439398533053E-256
} 0x0d770cc285f2d20a
test expr-28.197 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -2780161250963 E-301 x -15acc2053064c1_11111111111111111111111111111111111111111111111110& E-959
    convertToDouble -2780161250963E-301
} 0x8405acc2053064c2
test expr-28.198 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -87605699161665 E155 x -12920f96e7f9ef_00000000000000000000000000000000000000000000000000001& E561
    convertToDouble -87605699161665E155
} 0xe302920f96e7f9ef
test expr-28.199 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -17521139832333 E156 x -12920f96e7f9ef_00000000000000000000000000000000000000000000000000001& E562
    convertToDouble -17521139832333E156
} 0xe312920f96e7f9ef
test expr-28.200 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -88218101363513 E-170 x -18395688592faf_0000000000000000000000000000000000000000000000000001& E-519
    convertToDouble -88218101363513E-170
} 0x9f88395688592faf
test expr-28.201 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +38639244311627 E-115 x 114ef3e205c817_0000000000000000000000000000000000000000000000000001& E-337
    convertToDouble +38639244311627E-115
} 0x2ae14ef3e205c817
test expr-28.202 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +35593959807306 E261 x 1072f3819c1320_11111111111111111111111111111111111111111111111111110& E912
    convertToDouble +35593959807306E261
} 0x78f072f3819c1321
test expr-28.203 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -53390939710959 E260 x -13bd243521b08d_11111111111111111111111111111111111111111111111111110& E909
    convertToDouble -53390939710959E260
} 0xf8c3bd243521b08e
test expr-28.204 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +71187919614612 E261 x 1072f3819c1320_11111111111111111111111111111111111111111111111111110& E913
    convertToDouble +71187919614612E261
} 0x790072f3819c1321
test expr-28.205 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -88984899518265 E260 x -1072f3819c1320_11111111111111111111111111111111111111111111111111110& E910
    convertToDouble -88984899518265E260
} 0xf8d072f3819c1321
test expr-28.206 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +77003665618895 E-73 x 18bf7e7fa6f029_111111111111111111111111111111111111111111111111111111110& E-197
    convertToDouble +77003665618895E-73
} 0x33a8bf7e7fa6f02a
test expr-28.207 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -15400733123779 E-72 x -18bf7e7fa6f029_111111111111111111111111111111111111111111111111111111110& E-196
    convertToDouble -15400733123779E-72
} 0xb3b8bf7e7fa6f02a
test expr-28.208 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +61602932495116 E-72 x 18bf7e7fa6f029_111111111111111111111111111111111111111111111111111111110& E-194
    convertToDouble +61602932495116E-72
} 0x33d8bf7e7fa6f02a
test expr-28.209 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -30801466247558 E-72 x -18bf7e7fa6f029_111111111111111111111111111111111111111111111111111111110& E-195
    convertToDouble -30801466247558E-72
} 0xb3c8bf7e7fa6f02a
test expr-28.210 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +834735494917063 E-300 x 1fc6c26f899dd1_0000000000000000000000000000000000000000000000000000000001& E-948
    convertToDouble +834735494917063E-300
} 0x04bfc6c26f899dd1
test expr-28.211 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -589795149206434 E-151 x -15f2df5e675a0f_0000000000000000000000000000000000000000000000000000000001& E-453
    convertToDouble -589795149206434E-151
} 0xa3a5f2df5e675a0f
test expr-28.212 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +475603213226859 E-42 x 12d73088f4050a_000000000000000000000000000000000000000000000000000000001& E-91
    convertToDouble +475603213226859E-42
} 0x3a42d73088f4050a
test expr-28.213 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -294897574603217 E-151 x -15f2df5e675a0f_0000000000000000000000000000000000000000000000000000000001& E-454
    convertToDouble -294897574603217E-151
} 0xa395f2df5e675a0f
test expr-28.214 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +850813008001913 E93 x 172f7a1831ad70_11111111111111111111111111111111111111111111111111111110& E358
    convertToDouble +850813008001913E93
} 0x56572f7a1831ad71
test expr-28.215 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -203449172043339 E185 x -1102b47e4af987_11111111111111111111111111111111111111111111111111111110& E662
    convertToDouble -203449172043339E185
} 0xe95102b47e4af988
test expr-28.216 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +406898344086678 E185 x 1102b47e4af987_11111111111111111111111111111111111111111111111111111110& E663
    convertToDouble +406898344086678E185
} 0x696102b47e4af988
test expr-28.217 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -813796688173356 E185 x -1102b47e4af987_11111111111111111111111111111111111111111111111111111110& E664
    convertToDouble -813796688173356E185
} 0xe97102b47e4af988
test expr-28.218 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +6045338514609393 E244 x 1f746182e6cd5d_00000000000000000000000000000000000000000000000000000000001& E862
    convertToDouble +6045338514609393E244
} 0x75df746182e6cd5d
test expr-28.219 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -5145963778954906 E142 x -1dfc11fbf46087_00000000000000000000000000000000000000000000000000000000001& E523
    convertToDouble -5145963778954906E142
} 0xe0adfc11fbf46087
test expr-28.220 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +2572981889477453 E142 x 1dfc11fbf46087_00000000000000000000000000000000000000000000000000000000001& E522
    convertToDouble +2572981889477453E142
} 0x609dfc11fbf46087
test expr-28.221 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -6965949469487146 E74 x -15e2c10ad970b0_0000000000000000000000000000000000000000000000000000000001& E298
    convertToDouble -6965949469487146E74
} 0xd295e2c10ad970b0
test expr-28.222 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +6182410494241627 E-119 x 11b96458445d07_0000000000000000000000000000000000000000000000000000000000001& E-343
    convertToDouble +6182410494241627E-119
} 0x2a81b96458445d07
test expr-28.223 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -8510309498186985 E-277 x -1acc46749dccfe_000000000000000000000000000000000000000000000000000000000001& E-868
    convertToDouble -8510309498186985E-277
} 0x89bacc46749dccfe
test expr-28.224 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +6647704637273331 E-212 x 13e07d2c0cb1e9_0000000000000000000000000000000000000000000000000000000000001& E-652
    convertToDouble +6647704637273331E-212
} 0x1733e07d2c0cb1e9
test expr-28.225 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -2215901545757777 E-212 x -1a80a6e566428c_000000000000000000000000000000000000000000000000000000000001& E-654
    convertToDouble -2215901545757777E-212
} 0x971a80a6e566428c
test expr-28.226 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +3771476185376383 E276 x 183010aba78a53_111111111111111111111111111111111111111111111111111111111110& E968
    convertToDouble +3771476185376383E276
} 0x7c783010aba78a54
test expr-28.227 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -3729901848043846 E212 x -1f7d6721f7f143_111111111111111111111111111111111111111111111111111111111110& E755
    convertToDouble -3729901848043846E212
} 0xef2f7d6721f7f144
test expr-28.228 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +3771476185376383 E277 x 1e3c14d6916ce8_111111111111111111111111111111111111111111111111111111111110& E971
    convertToDouble +3771476185376383E277
} 0x7cae3c14d6916ce9
test expr-28.229 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -9977830465649166 E119 x -15f6de9d5d6b5a_111111111111111111111111111111111111111111111111111111111110& E448
    convertToDouble -9977830465649166E119
} 0xdbf5f6de9d5d6b5b
test expr-28.230 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +8439928496349319 E-142 x 12483a0f125699_111111111111111111111111111111111111111111111111111111111110& E-419
    convertToDouble +8439928496349319E-142
} 0x25c2483a0f12569a
test expr-28.231 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -8204230082070882 E-59 x -1d460f4fca1d36_1111111111111111111111111111111111111111111111111111111110& E-144
    convertToDouble -8204230082070882E-59
} 0xb6fd460f4fca1d37
test expr-28.232 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +8853686434843997 E-244 x 157a340eb5d4f0_11111111111111111111111111111111111111111111111111111111110& E-758
    convertToDouble +8853686434843997E-244
} 0x10957a340eb5d4f1
test expr-28.233 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -5553274272288559 E-104 x -1c47d20a19d1ed_1111111111111111111111111111111111111111111111111111111110& E-294
    convertToDouble -5553274272288559E-104
} 0xad9c47d20a19d1ee
test expr-28.234 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +36149023611096162 E144 x 1491daad0ba280_0000000000000000000000000000000000000000000000000000000000000001& E533
    convertToDouble +36149023611096162E144
} 0x614491daad0ba280
test expr-28.235 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -36149023611096162 E147 x -14166f8cfd5cb1_0000000000000000000000000000000000000000000000000000000000000001& E543
    convertToDouble -36149023611096162E147
} 0xe1e4166f8cfd5cb1
test expr-28.236 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +18074511805548081 E146 x 1011f2d73116f4_0000000000000000000000000000000000000000000000000000000000000001& E539
    convertToDouble +18074511805548081E146
} 0x61a011f2d73116f4
test expr-28.237 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -18074511805548081 E147 x -14166f8cfd5cb1_0000000000000000000000000000000000000000000000000000000000000001& E542
    convertToDouble -18074511805548081E147
} 0xe1d4166f8cfd5cb1
test expr-28.238 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +97338774138954421 E-290 x 10d9b828199006_0000000000000000000000000000000000000000000000000000000000000001& E-907
    convertToDouble +97338774138954421E-290
} 0x0740d9b828199006
test expr-28.239 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -88133809804950961 E-308 x -119710dc581911_000000000000000000000000000000000000000000000000000000000000001& E-967
    convertToDouble -88133809804950961E-308
} 0x83819710dc581911
test expr-28.240 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +94080055902682397 E-243 x 11d467e94b856e_0000000000000000000000000000000000000000000000000000000000000001& E-751
    convertToDouble +94080055902682397E-243
} 0x1101d467e94b856e
test expr-28.241 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -24691002732654881 E-115 x -159a2783ce70ab_000000000000000000000000000000000000000000000000000000000000001& E-328
    convertToDouble -24691002732654881E-115
} 0xab759a2783ce70ab
test expr-28.242 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +52306490527514614 E49 x 13de005bd620de_111111111111111111111111111111111111111111111111111111111111111110& E218
    convertToDouble +52306490527514614E49
} 0x4d93de005bd620df
test expr-28.243 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -26153245263757307 E49 x -13de005bd620de_111111111111111111111111111111111111111111111111111111111111111110& E217
    convertToDouble -26153245263757307E49
} 0xcd83de005bd620df
test expr-28.244 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +55188692254193604 E165 x 1a999ddec72ac9_11111111111111111111111111111111111111111111111111111111111110& E603
    convertToDouble +55188692254193604E165
} 0x65aa999ddec72aca
test expr-28.245 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -68985865317742005 E164 x -1a999ddec72ac9_11111111111111111111111111111111111111111111111111111111111110& E600
    convertToDouble -68985865317742005E164
} 0xe57a999ddec72aca
test expr-28.246 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +27176258005319167 E-261 x 17c0747bd76fa0_11111111111111111111111111111111111111111111111111111111111111110& E-813
    convertToDouble +27176258005319167E-261
} 0x0d27c0747bd76fa1
test expr-28.247 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -73169230107256116 E-248 x -122cea327fa99c_1111111111111111111111111111111111111111111111111111111111110& E-768
    convertToDouble -73169230107256116E-248
} 0x8ff22cea327fa99d
test expr-28.248 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +91461537634070145 E-249 x 122cea327fa99c_1111111111111111111111111111111111111111111111111111111111110& E-771
    convertToDouble +91461537634070145E-249
} 0x0fc22cea327fa99d
test expr-28.249 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -54352516010638334 E-261 x -17c0747bd76fa0_11111111111111111111111111111111111111111111111111111111111111110& E-812
    convertToDouble -54352516010638334E-261
} 0x8d37c0747bd76fa1
test expr-28.250 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +586144289638535878 E280 x 11eccbd6f62709_0000000000000000000000000000000000000000000000000000000000000000001& E989
    convertToDouble +586144289638535878E280
} 0x7dc1eccbd6f62709
test expr-28.251 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -601117006785295431 E245 x -1e8b3525b3737e_000000000000000000000000000000000000000000000000000000000000000001& E872
    convertToDouble -601117006785295431E245
} 0xf67e8b3525b3737e
test expr-28.252 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +293072144819267939 E280 x 11eccbd6f62709_0000000000000000000000000000000000000000000000000000000000000000001& E988
    convertToDouble +293072144819267939E280
} 0x7db1eccbd6f62709
test expr-28.253 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -953184713238516652 E272 x -138fd93f1f5342_00000000000000000000000000000000000000000000000000000000000000001& E963
    convertToDouble -953184713238516652E272
} 0xfc238fd93f1f5342
test expr-28.254 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +902042358290366539 E-281 x 122dc01ca1cb8c_0000000000000000000000000000000000000000000000000000000000000000001& E-874
    convertToDouble +902042358290366539E-281
} 0x09522dc01ca1cb8c
test expr-28.255 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -557035730189854663 E-294 x -13bfac6bc4767b_00000000000000000000000000000000000000000000000000000000000000000001& E-918
    convertToDouble -557035730189854663E-294
} 0x8693bfac6bc4767b
test expr-28.256 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +902042358290366539 E-280 x 16b93023ca3e6f_0000000000000000000000000000000000000000000000000000000000000000001& E-871
    convertToDouble +902042358290366539E-280
} 0x0986b93023ca3e6f
test expr-28.257 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -354944100507554393 E-238 x -19a91cece6ad07_000000000000000000000000000000000000000000000000000000000000000001& E-733
    convertToDouble -354944100507554393E-238
} 0x9229a91cece6ad07
test expr-28.258 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +272104041512242479 E199 x 1f92bacb3cb40b_11111111111111111111111111111111111111111111111111111111111111111111110& E718
    convertToDouble +272104041512242479E199
} 0x6cdf92bacb3cb40c
test expr-28.259 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -816312124536727437 E199 x -17ae0c186d8708_11111111111111111111111111111111111111111111111111111111111111111111110& E720
    convertToDouble -816312124536727437E199
} 0xecf7ae0c186d8709
test expr-28.260 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +544208083024484958 E199 x 1f92bacb3cb40b_11111111111111111111111111111111111111111111111111111111111111111111110& E719
    convertToDouble +544208083024484958E199
} 0x6cef92bacb3cb40c
test expr-28.261 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -792644927852378159 E78 x -17bff336d8ff05_111111111111111111111111111111111111111111111111111111111111111111110& E318
    convertToDouble -792644927852378159E78
} 0xd3d7bff336d8ff06
test expr-28.262 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -679406450132979175 E-263 x -17c0747bd76fa0_11111111111111111111111111111111111111111111111111111111111111110& E-815
    convertToDouble -679406450132979175E-263
} 0x8d07c0747bd76fa1
test expr-28.263 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +543525160106383340 E-262 x 17c0747bd76fa0_11111111111111111111111111111111111111111111111111111111111111110& E-812
    convertToDouble +543525160106383340E-262
} 0x0d37c0747bd76fa1
test expr-28.264 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +7400253695682920196 E215 x 1dca94e3990085_00000000000000000000000000000000000000000000000000000000000000000000001& E776
    convertToDouble +7400253695682920196E215
} 0x707dca94e3990085
test expr-28.265 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -1850063423920730049 E215 x -1dca94e3990085_00000000000000000000000000000000000000000000000000000000000000000000001& E774
    convertToDouble -1850063423920730049E215
} 0xf05dca94e3990085
test expr-28.266 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +3700126847841460098 E215 x 1dca94e3990085_00000000000000000000000000000000000000000000000000000000000000000000001& E775
    convertToDouble +3700126847841460098E215
} 0x706dca94e3990085
test expr-28.267 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -9250317119603650245 E214 x -1dca94e3990085_00000000000000000000000000000000000000000000000000000000000000000000001& E773
    convertToDouble -9250317119603650245E214
} 0xf04dca94e3990085
test expr-28.268 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +8396094300569779681 E-252 x 1ab223efcee35a_0000000000000000000000000000000000000000000000000000000000000000000000001& E-775
    convertToDouble +8396094300569779681E-252
} 0x0f8ab223efcee35a
test expr-28.269 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -3507665085003296281 E-75 x -160499b881ea50_00000000000000000000000000000000000000000000000000000000000000000000001& E-188
    convertToDouble -3507665085003296281E-75
} 0xb4360499b881ea50
test expr-28.270 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +7015330170006592562 E-75 x 160499b881ea50_00000000000000000000000000000000000000000000000000000000000000000000001& E-187
    convertToDouble +7015330170006592562E-75
} 0x34460499b881ea50
test expr-28.271 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -7015330170006592562 E-74 x -1b85c026a264e4_00000000000000000000000000000000000000000000000000000000000000000000001& E-184
    convertToDouble -7015330170006592562E-74
} 0xb47b85c026a264e4
test expr-28.272 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +7185620434951919351 E205 x 18d92d2bcc7a80_1111111111111111111111111111111111111111111111111111111111111111111111110& E743
    convertToDouble +7185620434951919351E205
} 0x6e68d92d2bcc7a81
test expr-28.273 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -1360520207561212395 E198 x -1f92bacb3cb40b_11111111111111111111111111111111111111111111111111111111111111111111110& E717
    convertToDouble -1360520207561212395E198
} 0xeccf92bacb3cb40c
test expr-28.274 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +2178999185345151731 E-184 x 19b2c4d2a82335_1111111111111111111111111111111111111111111111111111111111111111111110& E-551
    convertToDouble +2178999185345151731E-184
} 0x1d89b2c4d2a82336
test expr-28.275 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -8691089486201567102 E-218 x -1a9c42e5b6d89e_1111111111111111111111111111111111111111111111111111111111111111111110& E-662
    convertToDouble -8691089486201567102E-218
} 0x969a9c42e5b6d89f
test expr-28.276 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +4345544743100783551 E-218 x 1a9c42e5b6d89e_1111111111111111111111111111111111111111111111111111111111111111111110& E-663
    convertToDouble +4345544743100783551E-218
} 0x168a9c42e5b6d89f
test expr-28.277 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -4357998370690303462 E-184 x -19b2c4d2a82335_1111111111111111111111111111111111111111111111111111111111111111111110& E-550
    convertToDouble -4357998370690303462E-184
} 0x9d99b2c4d2a82336
test expr-28.278 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +59825267349106892461 E177 x 199c476d7868df_000000000000000000000000000000000000000000000000000000000000000000000001& E653
    convertToDouble +59825267349106892461E177
} 0x68c99c476d7868df
test expr-28.279 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -62259110684423957791 E47 x -1d8f2cfc20d6e8_0000000000000000000000000000000000000000000000000000000000000000000000001& E221
    convertToDouble -62259110684423957791E47
} 0xcdcd8f2cfc20d6e8
test expr-28.280 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +58380168477038565599 E265 x 1f686e9efbe48d_00000000000000000000000000000000000000000000000000000000000000000000000001& E945
    convertToDouble +58380168477038565599E265
} 0x7b0f686e9efbe48d
test expr-28.281 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -62259110684423957791 E48 x -12797c1d948651_0000000000000000000000000000000000000000000000000000000000000000000000001& E225
    convertToDouble -62259110684423957791E48
} 0xce02797c1d948651
test expr-28.282 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -33584377202279118724 E-252 x -1ab223efcee35a_0000000000000000000000000000000000000000000000000000000000000000000000001& E-773
    convertToDouble -33584377202279118724E-252
} 0x8faab223efcee35a
test expr-28.283 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -57484963479615354808 E205 x -18d92d2bcc7a80_1111111111111111111111111111111111111111111111111111111111111111111111110& E746
    convertToDouble -57484963479615354808E205
} 0xee98d92d2bcc7a81
test expr-28.284 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +71856204349519193510 E204 x 18d92d2bcc7a80_1111111111111111111111111111111111111111111111111111111111111111111111110& E743
    convertToDouble +71856204349519193510E204
} 0x6e68d92d2bcc7a81
test expr-28.285 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -14371240869903838702 E205 x -18d92d2bcc7a80_1111111111111111111111111111111111111111111111111111111111111111111111110& E744
    convertToDouble -14371240869903838702E205
} 0xee78d92d2bcc7a81
test expr-28.286 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +36992084760177624177 E-318 x 18c5f9551c2f99_111111111111111111111111111111111111111111111111111111111111111111111110& E-992
    convertToDouble +36992084760177624177E-318
} 0x01f8c5f9551c2f9a
test expr-28.287 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -73984169520355248354 E-318 x -18c5f9551c2f99_111111111111111111111111111111111111111111111111111111111111111111111110& E-991
    convertToDouble -73984169520355248354E-318
} 0x8208c5f9551c2f9a
test expr-28.288 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +99257763227713890244 E-115 x 15338a554b9ce0_11111111111111111111111111111111111111111111111111111111111111111111110& E-316
    convertToDouble +99257763227713890244E-115
} 0x2c35338a554b9ce1
test expr-28.289 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -87336362425182547697 E-280 x -1130304e7d9c32_11111111111111111111111111111111111111111111111111111111111111111111110& E-864
    convertToDouble -87336362425182547697E-280
} 0x89f130304e7d9c33
test expr-28.290 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +7 E289 x 1cbb547777a284_10000000001& E962
    convertToDouble +7E289
} 0x7c1cbb547777a285
test expr-28.291 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -3 E153 x -1ca3d8e6d80cba_100000001& E509
    convertToDouble -3E153
} 0xdfcca3d8e6d80cbb
test expr-28.292 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +6 E153 x 1ca3d8e6d80cba_100000001& E510
    convertToDouble +6E153
} 0x5fdca3d8e6d80cbb
test expr-28.293 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -5 E243 x -176ec98994f488_10000001& E809
    convertToDouble -5E243
} 0xf2876ec98994f489
test expr-28.294 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +7 E-161 x 1f7e0db3799aa2_10000000001& E-533
    convertToDouble +7E-161
} 0x1eaf7e0db3799aa3
test expr-28.295 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -7 E-172 x -15a4337446ef2a_1000000001& E-569
    convertToDouble -7E-172
} 0x9c65a4337446ef2b
test expr-28.296 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +8 E-63 x 1a53fc9631d10c_10000001& E-207
    convertToDouble +8E-63
} 0x330a53fc9631d10d
test expr-28.297 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -7 E-113 x -158c47e6eea282_10000001& E-373
    convertToDouble -7E-113
} 0xa8a58c47e6eea283
test expr-28.298 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +8 E126 x 17a2ecc414a03f_0111111111110& E421
    convertToDouble +8E126
} 0x5a47a2ecc414a03f
test expr-28.299 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -4 E126 x -17a2ecc414a03f_0111111111110& E420
    convertToDouble -4E126
} 0xda37a2ecc414a03f
test expr-28.300 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +5 E125 x 17a2ecc414a03f_0111111111110& E417
    convertToDouble +5E125
} 0x5a07a2ecc414a03f
test expr-28.301 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -1 E126 x -17a2ecc414a03f_0111111111110& E418
    convertToDouble -1E126
} 0xda17a2ecc414a03f
test expr-28.302 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +8 E-163 x 1708d0f84d3de7_011111110& E-539
    convertToDouble +8E-163
} 0x1e4708d0f84d3de7
test expr-28.303 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -1 E-163 x -1708d0f84d3de7_011111110& E-542
    convertToDouble -1E-163
} 0x9e1708d0f84d3de7
test expr-28.304 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +2 E-163 x 1708d0f84d3de7_011111110& E-541
    convertToDouble +2E-163
} 0x1e2708d0f84d3de7
test expr-28.305 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -4 E-163 x -1708d0f84d3de7_011111110& E-540
    convertToDouble -4E-163
} 0x9e3708d0f84d3de7
test expr-28.306 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +51 E195 x 15d51d249dca42_1000000000001& E653
    convertToDouble +51E195
} 0x68c5d51d249dca43
test expr-28.307 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -37 E46 x -1033d7eca0adee_100000000000001& E158
    convertToDouble -37E46
} 0xc9d033d7eca0adef
test expr-28.308 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +74 E46 x 1033d7eca0adee_100000000000001& E159
    convertToDouble +74E46
} 0x49e033d7eca0adef
test expr-28.309 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -56 E289 x -1cbb547777a284_10000000001& E965
    convertToDouble -56E289
} 0xfc4cbb547777a285
test expr-28.310 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +69 E-145 x 158a41b31c9a9a_100000000001& E-476
    convertToDouble +69E-145
} 0x22358a41b31c9a9b
test expr-28.311 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -70 E-162 x -1f7e0db3799aa2_10000000001& E-533
    convertToDouble -70E-162
} 0x9eaf7e0db3799aa3
test expr-28.312 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +56 E-161 x 1f7e0db3799aa2_10000000001& E-530
    convertToDouble +56E-161
} 0x1edf7e0db3799aa3
test expr-28.313 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -21 E-303 x -1ccd59caa6a750_10000000001& E-1003
    convertToDouble -21E-303
} 0x814ccd59caa6a751
test expr-28.314 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +34 E-276 x 12d5a4350d30ff_011111111110& E-912
    convertToDouble +34E-276
} 0x06f2d5a4350d30ff
test expr-28.315 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -68 E-276 x -12d5a4350d30ff_011111111110& E-911
    convertToDouble -68E-276
} 0x8702d5a4350d30ff
test expr-28.316 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +85 E-277 x 12d5a4350d30ff_011111111110& E-914
    convertToDouble +85E-277
} 0x06d2d5a4350d30ff
test expr-28.317 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -87 E-274 x -12d36cf48e7abd_011111111111110& E-904
    convertToDouble -87E-274
} 0x8772d36cf48e7abd
test expr-28.318 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +829 E102 x 17221a79cdd1d8_1000000000000001& E348
    convertToDouble +829E102
} 0x55b7221a79cdd1d9
test expr-28.319 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -623 E100 x -1640a62f3a83de_10000000000000000001& E341
    convertToDouble -623E100
} 0xd54640a62f3a83df
test expr-28.320 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +723 E-162 x 145457ee24abd2_1000000000000001& E-529
    convertToDouble +723E-162
} 0x1ee45457ee24abd3
test expr-28.321 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -457 E-102 x -1ffc81bc29f02a_100000000000000001& E-331
    convertToDouble -457E-102
} 0xab4ffc81bc29f02b
test expr-28.322 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +914 E-102 x 1ffc81bc29f02a_100000000000000001& E-330
    convertToDouble +914E-102
} 0x2b5ffc81bc29f02b
test expr-28.323 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -323 E-135 x -1d589ae4d70218_10000000000001& E-441
    convertToDouble -323E-135
} 0xa46d589ae4d70219
test expr-28.324 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +151 E176 x 1dcf7df8f573b7_0111111111111111110& E591
    convertToDouble +151E176
} 0x64edcf7df8f573b7
test expr-28.325 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -302 E176 x -1dcf7df8f573b7_0111111111111111110& E592
    convertToDouble -302E176
} 0xe4fdcf7df8f573b7
test expr-28.326 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +921 E90 x 1c420a45fd70ff_0111111111111110& E308
    convertToDouble +921E90
} 0x533c420a45fd70ff
test expr-28.327 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -604 E176 x -1dcf7df8f573b7_0111111111111111110& E593
    convertToDouble -604E176
} 0xe50dcf7df8f573b7
test expr-28.328 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +823 E-206 x 14a48933c208ad_0111111111111110& E-675
    convertToDouble +823E-206
} 0x15c4a48933c208ad
test expr-28.329 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -463 E-114 x -11d0c83f6378a5_011111111111110& E-370
    convertToDouble -463E-114
} 0xa8d1d0c83f6378a5
test expr-28.330 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +348 E-274 x 12d36cf48e7abd_011111111111110& E-902
    convertToDouble +348E-274
} 0x0792d36cf48e7abd
test expr-28.331 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +9968 E100 x 1640a62f3a83de_10000000000000000001& E345
    convertToDouble +9968E100
} 0x558640a62f3a83df
test expr-28.332 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -6230 E99 x -1640a62f3a83de_10000000000000000001& E341
    convertToDouble -6230E99
} 0xd54640a62f3a83df
test expr-28.333 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +1246 E100 x 1640a62f3a83de_10000000000000000001& E342
    convertToDouble +1246E100
} 0x555640a62f3a83df
test expr-28.334 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +6676 E-296 x 15519ac5142aaa_1000000000000000000001& E-971
    convertToDouble +6676E-296
} 0x0345519ac5142aab
test expr-28.335 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -8345 E-297 x -15519ac5142aaa_1000000000000000000001& E-974
    convertToDouble -8345E-297
} 0x8315519ac5142aab
test expr-28.336 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +1669 E-296 x 15519ac5142aaa_1000000000000000000001& E-973
    convertToDouble +1669E-296
} 0x0325519ac5142aab
test expr-28.337 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -3338 E-296 x -15519ac5142aaa_1000000000000000000001& E-972
    convertToDouble -3338E-296
} 0x8335519ac5142aab
test expr-28.338 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +3257 E58 x 1444b34a6fb3eb_01111111111111111110& E204
    convertToDouble +3257E58
} 0x4cb444b34a6fb3eb
test expr-28.339 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -6514 E58 x -1444b34a6fb3eb_01111111111111111110& E205
    convertToDouble -6514E58
} 0xccc444b34a6fb3eb
test expr-28.340 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +2416 E176 x 1dcf7df8f573b7_0111111111111111110& E595
    convertToDouble +2416E176
} 0x652dcf7df8f573b7
test expr-28.341 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +8085 E-63 x 19fbf3c19b9a79_0111111111111111110& E-197
    convertToDouble +8085E-63
} 0x33a9fbf3c19b9a79
test expr-28.342 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -3234 E-62 x -19fbf3c19b9a79_0111111111111111110& E-195
    convertToDouble -3234E-62
} 0xb3c9fbf3c19b9a79
test expr-28.343 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +1617 E-62 x 19fbf3c19b9a79_0111111111111111110& E-196
    convertToDouble +1617E-62
} 0x33b9fbf3c19b9a79
test expr-28.344 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -6468 E-62 x -19fbf3c19b9a79_0111111111111111110& E-194
    convertToDouble -6468E-62
} 0xb3d9fbf3c19b9a79
test expr-28.345 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +53418 E111 x 15b1051df943a8_1000000000000000000001& E384
    convertToDouble +53418E111
} 0x57f5b1051df943a9
test expr-28.346 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -60513 E160 x -15043b64e56c72_1000000000000000000001& E547
    convertToDouble -60513E160
} 0xe225043b64e56c73
test expr-28.347 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +26709 E111 x 15b1051df943a8_1000000000000000000001& E383
    convertToDouble +26709E111
} 0x57e5b1051df943a9
test expr-28.348 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -99447 E166 x -10782189b336ae_1000000000000000000001& E568
    convertToDouble -99447E166
} 0xe370782189b336af
test expr-28.349 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +12549 E48 x 10c52fe6dc6a1b_011111111111111111111110& E173
    convertToDouble +12549E48
} 0x4ac0c52fe6dc6a1b
test expr-28.350 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -25098 E48 x -10c52fe6dc6a1b_011111111111111111111110& E174
    convertToDouble -25098E48
} 0xcad0c52fe6dc6a1b
test expr-28.351 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +50196 E48 x 10c52fe6dc6a1b_011111111111111111111110& E175
    convertToDouble +50196E48
} 0x4ae0c52fe6dc6a1b
test expr-28.352 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -62745 E47 x -10c52fe6dc6a1b_011111111111111111111110& E172
    convertToDouble -62745E47
} 0xcab0c52fe6dc6a1b
test expr-28.353 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +83771 E-73 x 1ce886fb5ffd6d_0111111111111111111110& E-227
    convertToDouble +83771E-73
} 0x31cce886fb5ffd6d
test expr-28.354 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -97451 E-167 x -1c0f220fb1c70d_01111111111111111111110& E-539
    convertToDouble -97451E-167
} 0x9e4c0f220fb1c70d
test expr-28.355 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +86637 E-203 x 10943edb4e81db_0111111111111111111110& E-658
    convertToDouble +86637E-203
} 0x16d0943edb4e81db
test expr-28.356 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -75569 E-254 x -15a462d91c6ab3_0111111111111111111111111110& E-828
    convertToDouble -75569E-254
} 0x8c35a462d91c6ab3
test expr-28.357 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +473806 E83 x 17d15bf3186080_1000000000000000000000001& E294
    convertToDouble +473806E83
} 0x5257d15bf3186081
test expr-28.358 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -947612 E83 x -17d15bf3186080_1000000000000000000000001& E295
    convertToDouble -947612E83
} 0xd267d15bf3186081
test expr-28.359 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +292369 E76 x 18a85eb277e644_100000000000000000000000001& E270
    convertToDouble +292369E76
} 0x50d8a85eb277e645
test expr-28.360 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -584738 E76 x -18a85eb277e644_100000000000000000000000001& E271
    convertToDouble -584738E76
} 0xd0e8a85eb277e645
test expr-28.361 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +933587 E-140 x 1b248728b9c116_100000000000000000000000001& E-446
    convertToDouble +933587E-140
} 0x241b248728b9c117
test expr-28.362 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -720919 E-14 x -1ef696965cbf04_10000000000000000000000001& E-28
    convertToDouble -720919E-14
} 0xbe3ef696965cbf05
test expr-28.363 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +535001 E-149 x 10b38e07c745ae_1000000000000000000000001& E-476
    convertToDouble +535001E-149
} 0x2230b38e07c745af
test expr-28.364 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -890521 E-235 x -114828ee39c852_1000000000000000000000001& E-761
    convertToDouble -890521E-235
} 0x90614828ee39c853
test expr-28.365 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +548057 E81 x 11a1d9135cca53_0111111111111111111111110& E288
    convertToDouble +548057E81
} 0x51f1a1d9135cca53
test expr-28.366 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -706181 E88 x -1b156ac4c2d1e5_0111111111111111111111110& E311
    convertToDouble -706181E88
} 0xd36b156ac4c2d1e5
test expr-28.367 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +820997 E106 x 1b4f8b64fa125d_0111111111111111111111110& E371
    convertToDouble +820997E106
} 0x572b4f8b64fa125d
test expr-28.368 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -320681 E63 x -17ca18a876c5ef_0111111111111111111111110& E227
    convertToDouble -320681E63
} 0xce27ca18a876c5ef
test expr-28.369 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +928609 E-261 x 1be2dd66200bef_011111111111111111111111111110& E-848
    convertToDouble +928609E-261
} 0x0afbe2dd66200bef
test expr-28.370 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -302276 E-254 x -15a462d91c6ab3_0111111111111111111111111110& E-826
    convertToDouble -302276E-254
} 0x8c55a462d91c6ab3
test expr-28.371 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +151138 E-254 x 15a462d91c6ab3_0111111111111111111111111110& E-827
    convertToDouble +151138E-254
} 0x0c45a462d91c6ab3
test expr-28.372 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +4691773 E45 x 19147b9330eaae_1000000000000000000000000001& E171
    convertToDouble +4691773E45
} 0x4aa9147b9330eaaf
test expr-28.373 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -9383546 E45 x -19147b9330eaae_1000000000000000000000000001& E172
    convertToDouble -9383546E45
} 0xcab9147b9330eaaf
test expr-28.374 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +3059949 E-243 x 13ecf22ea07862_10000000000000000000000000001& E-786
    convertToDouble +3059949E-243
} 0x0ed3ecf22ea07863
test expr-28.375 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -6119898 E-243 x -13ecf22ea07862_10000000000000000000000000001& E-785
    convertToDouble -6119898E-243
} 0x8ee3ecf22ea07863
test expr-28.376 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +5356626 E-213 x 1b84252abdf6ba_100000000000000000000000001& E-686
    convertToDouble +5356626E-213
} 0x151b84252abdf6bb
test expr-28.377 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -4877378 E-199 x -11cd5cd90cb200_100000000000000000000000001& E-639
    convertToDouble -4877378E-199
} 0x9801cd5cd90cb201
test expr-28.378 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +7716693 E223 x 1972d9d2cff683_01111111111111111111111111110& E763
    convertToDouble +7716693E223
} 0x6fa972d9d2cff683
test expr-28.379 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -5452869 E109 x -16247b136fecc3_01111111111111111111111111110& E384
    convertToDouble -5452869E109
} 0xd7f6247b136fecc3
test expr-28.380 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +4590831 E156 x 14689b4a5fa201_011111111111111111111111111110& E540
    convertToDouble +4590831E156
} 0x61b4689b4a5fa201
test expr-28.381 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -9181662 E156 x -14689b4a5fa201_011111111111111111111111111110& E541
    convertToDouble -9181662E156
} 0xe1c4689b4a5fa201
test expr-28.382 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -3714436 E-261 x -1be2dd66200bef_011111111111111111111111111110& E-846
    convertToDouble -3714436E-261
} 0x8b1be2dd66200bef
test expr-28.383 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +4643045 E-262 x 1be2dd66200bef_011111111111111111111111111110& E-849
    convertToDouble +4643045E-262
} 0x0aebe2dd66200bef
test expr-28.384 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -7428872 E-261 x -1be2dd66200bef_011111111111111111111111111110& E-845
    convertToDouble -7428872E-261
} 0x8b2be2dd66200bef
test expr-28.385 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +52942146 E130 x 16c31d08af89c2_10000000000000000000000000000001& E457
    convertToDouble +52942146E130
} 0x5c86c31d08af89c3
test expr-28.386 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -27966061 E145 x -155bcf72fd10f8_1000000000000000000000000000000001& E506
    convertToDouble -27966061E145
} 0xdf955bcf72fd10f9
test expr-28.387 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +26471073 E130 x 16c31d08af89c2_10000000000000000000000000000001& E456
    convertToDouble +26471073E130
} 0x5c76c31d08af89c3
test expr-28.388 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -55932122 E145 x -155bcf72fd10f8_1000000000000000000000000000000001& E507
    convertToDouble -55932122E145
} 0xdfa55bcf72fd10f9
test expr-28.389 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +95412548 E-99 x 18e0bfb98864c8_100000000000000000000000000000001& E-303
    convertToDouble +95412548E-99
} 0x2d08e0bfb98864c9
test expr-28.390 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -47706274 E-99 x -18e0bfb98864c8_100000000000000000000000000000001& E-304
    convertToDouble -47706274E-99
} 0xacf8e0bfb98864c9
test expr-28.391 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +23853137 E-99 x 18e0bfb98864c8_100000000000000000000000000000001& E-305
    convertToDouble +23853137E-99
} 0x2ce8e0bfb98864c9
test expr-28.392 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -78493654 E-301 x -140d76077b648e_10000000000000000000000000000001& E-974
    convertToDouble -78493654E-301
} 0x83140d76077b648f
test expr-28.393 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +65346417 E29 x 13aa1ad778f23b_0111111111111111111111111111110& E122
    convertToDouble +65346417E29
} 0x4793aa1ad778f23b
test expr-28.394 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -51083099 E167 x -14a75eb58df47b_0111111111111111111111111111110& E580
    convertToDouble -51083099E167
} 0xe434a75eb58df47b
test expr-28.395 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +89396333 E264 x 1526f061ca9053_0111111111111111111111111111111110& E903
    convertToDouble +89396333E264
} 0x786526f061ca9053
test expr-28.396 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -84863171 E114 x -106e98f5ec8f37_0111111111111111111111111111111110& E405
    convertToDouble -84863171E114
} 0xd9406e98f5ec8f37
test expr-28.397 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +59540836 E-251 x 10430c2d075c07_011111111111111111111111111111110& E-808
    convertToDouble +59540836E-251
} 0x0d70430c2d075c07
test expr-28.398 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -74426045 E-252 x -10430c2d075c07_011111111111111111111111111111110& E-811
    convertToDouble -74426045E-252
} 0x8d40430c2d075c07
test expr-28.399 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +14885209 E-251 x 10430c2d075c07_011111111111111111111111111111110& E-810
    convertToDouble +14885209E-251
} 0x0d50430c2d075c07
test expr-28.400 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -29770418 E-251 x -10430c2d075c07_011111111111111111111111111111110& E-809
    convertToDouble -29770418E-251
} 0x8d60430c2d075c07
test expr-28.401 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +982161308 E122 x 11b6231e18c5ca_100000000000000000000000000000000000000001& E435
    convertToDouble +982161308E122
} 0x5b21b6231e18c5cb
test expr-28.402 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -245540327 E122 x -11b6231e18c5ca_100000000000000000000000000000000000000001& E433
    convertToDouble -245540327E122
} 0xdb01b6231e18c5cb
test expr-28.403 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +491080654 E122 x 11b6231e18c5ca_100000000000000000000000000000000000000001& E434
    convertToDouble +491080654E122
} 0x5b11b6231e18c5cb
test expr-28.404 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +525452622 E-310 x 12045136ce0340_1000000000000000000000000000000000001& E-1001
    convertToDouble +525452622E-310
} 0x0162045136ce0341
test expr-28.405 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -771837113 E-134 x -14e61f991c4ed0_100000000000000000000000000000000001& E-416
    convertToDouble -771837113E-134
} 0xa5f4e61f991c4ed1
test expr-28.406 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +820858081 E-150 x 14050669985a86_10000000000000000000000000000000001& E-469
    convertToDouble +820858081E-150
} 0x22a4050669985a87
test expr-28.407 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -262726311 E-310 x -12045136ce0340_1000000000000000000000000000000000001& E-1002
    convertToDouble -262726311E-310
} 0x8152045136ce0341
test expr-28.408 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +923091487 E209 x 10bc60e6896717_011111111111111111111111111111111110& E724
    convertToDouble +923091487E209
} 0x6d30bc60e6896717
test expr-28.409 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -653777767 E273 x -120223f2b3a881_0111111111111111111111111111111111111110& E936
    convertToDouble -653777767E273
} 0xfa720223f2b3a881
test expr-28.410 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +842116236 E-53 x 1809c5732cdc7f_0111111111111111111111111111111110& E-147
    convertToDouble +842116236E-53
} 0x36c809c5732cdc7f
test expr-28.411 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -741111169 E-202 x -15a3e1d1b73099_01111111111111111111111111111111110& E-642
    convertToDouble -741111169E-202
} 0x97d5a3e1d1b73099
test expr-28.412 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +839507247 E-284 x 129a1effc50859_0111111111111111111111111111111110& E-914
    convertToDouble +839507247E-284
} 0x06d29a1effc50859
test expr-28.413 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -951487269 E-264 x -1c92befccb5f59_0111111111111111111111111111111110& E-848
    convertToDouble -951487269E-264
} 0x8afc92befccb5f59
test expr-28.414 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -9821613080 E121 x -11b6231e18c5ca_100000000000000000000000000000000000000001& E435
    convertToDouble -9821613080E121
} 0xdb21b6231e18c5cb
test expr-28.415 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +6677856011 E-31 x 193a6d11077292_100000000000000000000000000000000000001& E-71
    convertToDouble +6677856011E-31
} 0x3b893a6d11077293
test expr-28.416 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -3573796826 E-266 x -112be2041a79fc_100000000000000000000000000000000000001& E-852
    convertToDouble -3573796826E-266
} 0x8ab12be2041a79fd
test expr-28.417 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +7147593652 E-266 x 112be2041a79fc_100000000000000000000000000000000000001& E-851
    convertToDouble +7147593652E-266
} 0x0ac12be2041a79fd
test expr-28.418 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -9981396317 E-181 x -1edbd94cb50054_100000000000000000000000000000000000001& E-569
    convertToDouble -9981396317E-181
} 0x9c6edbd94cb50055
test expr-28.419 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +3268888835 E272 x 120223f2b3a881_0111111111111111111111111111111111111110& E935
    convertToDouble +3268888835E272
} 0x7a620223f2b3a881
test expr-28.420 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -2615111068 E273 x -120223f2b3a881_0111111111111111111111111111111111111110& E938
    convertToDouble -2615111068E273
} 0xfa920223f2b3a881
test expr-28.421 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +1307555534 E273 x 120223f2b3a881_0111111111111111111111111111111111111110& E937
    convertToDouble +1307555534E273
} 0x7a820223f2b3a881
test expr-28.422 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +2990671154 E-190 x 13db11ac608107_01111111111111111111111111111111111111110& E-600
    convertToDouble +2990671154E-190
} 0x1a73db11ac608107
test expr-28.423 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -1495335577 E-190 x -13db11ac608107_01111111111111111111111111111111111111110& E-601
    convertToDouble -1495335577E-190
} 0x9a63db11ac608107
test expr-28.424 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +5981342308 E-190 x 13db11ac608107_01111111111111111111111111111111111111110& E-599
    convertToDouble +5981342308E-190
} 0x1a83db11ac608107
test expr-28.425 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -7476677885 E-191 x -13db11ac608107_01111111111111111111111111111111111111110& E-602
    convertToDouble -7476677885E-191
} 0x9a53db11ac608107
test expr-28.426 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +82259684194 E-202 x 12c3e72d179606_1000000000000000000000000000000000000000001& E-635
    convertToDouble +82259684194E-202
} 0x1842c3e72d179607
test expr-28.427 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -93227267727 E-49 x -1960fe08d5847e_100000000000000000000000000000000000000001& E-127
    convertToDouble -93227267727E-49
} 0xb80960fe08d5847f
test expr-28.428 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +41129842097 E-202 x 12c3e72d179606_1000000000000000000000000000000000000000001& E-636
    convertToDouble +41129842097E-202
} 0x1832c3e72d179607
test expr-28.429 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -47584241418 E-314 x -14e25dd3747e96_10000000000000000000000000000000000000001& E-1008
    convertToDouble -47584241418E-314
} 0x80f4e25dd3747e97
test expr-28.430 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -79360293406 E92 x -1c58a00bb31863_01111111111111111111111111111111111111110& E341
    convertToDouble -79360293406E92
} 0xd54c58a00bb31863
test expr-28.431 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +57332259349 E225 x 120811f528378b_01111111111111111111111111111111111111110& E783
    convertToDouble +57332259349E225
} 0x70e20811f528378b
test expr-28.432 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -57202326162 E111 x -1626f1c480545b_01111111111111111111111111111111111111110& E404
    convertToDouble -57202326162E111
} 0xd93626f1c480545b
test expr-28.433 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +86860597053 E-206 x 103b77d2b969d9_0111111111111111111111111111111111111111110& E-648
    convertToDouble +86860597053E-206
} 0x17703b77d2b969d9
test expr-28.434 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -53827010643 E-200 x -132fa69a69bd6d_0111111111111111111111111111111111111111110& E-629
    convertToDouble -53827010643E-200
} 0x98a32fa69a69bd6d
test expr-28.435 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +53587107423 E-61 x 100a19a3ffd981_011111111111111111111111111111111111111111110& E-167
    convertToDouble +53587107423E-61
} 0x35800a19a3ffd981
test expr-28.436 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +635007636765 E200 x 1824e73a4f030e_100000000000000000000000000000000000000000001& E703
    convertToDouble +635007636765E200
} 0x6be824e73a4f030f
test expr-28.437 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +508006109412 E201 x 1824e73a4f030e_100000000000000000000000000000000000000000001& E706
    convertToDouble +508006109412E201
} 0x6c1824e73a4f030f
test expr-28.438 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -254003054706 E201 x -1824e73a4f030e_100000000000000000000000000000000000000000001& E705
    convertToDouble -254003054706E201
} 0xec0824e73a4f030f
test expr-28.439 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +561029718715 E-72 x 1cd96a6972a14a_100000000000000000000000000000000000000000001& E-201
    convertToDouble +561029718715E-72
} 0x336cd96a6972a14b
test expr-28.440 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -897647549944 E-71 x -1cd96a6972a14a_100000000000000000000000000000000000000000001& E-197
    convertToDouble -897647549944E-71
} 0xb3acd96a6972a14b
test expr-28.441 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +112205943743 E-71 x 1cd96a6972a14a_100000000000000000000000000000000000000000001& E-200
    convertToDouble +112205943743E-71
} 0x337cd96a6972a14b
test expr-28.442 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -873947086081 E-236 x -19e117541d04e6_1000000000000000000000000000000000000000000001& E-745
    convertToDouble -873947086081E-236
} 0x9169e117541d04e7
test expr-28.443 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +809184709177 E116 x 1de27e59fb0679_011111111111111111111111111111111111111111110& E424
    convertToDouble +809184709177E116
} 0x5a7de27e59fb0679
test expr-28.444 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -573112917422 E81 x -11958b36c5102b_01111111111111111111111111111111111111111111110& E308
    convertToDouble -573112917422E81
} 0xd331958b36c5102b
test expr-28.445 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +286556458711 E81 x 11958b36c5102b_01111111111111111111111111111111111111111111110& E307
    convertToDouble +286556458711E81
} 0x5321958b36c5102b
test expr-28.446 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +952805821491 E-259 x 1551767ef8a9a3_011111111111111111111111111111111111111111110& E-821
    convertToDouble +952805821491E-259
} 0x0ca551767ef8a9a3
test expr-28.447 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -132189992873 E-44 x -1b746cf242410b_011111111111111111111111111111111111111111110& E-110
    convertToDouble -132189992873E-44
} 0xb91b746cf242410b
test expr-28.448 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -173696038493 E-144 x -1f8fefbb3249d3_011111111111111111111111111111111111111111110& E-442
    convertToDouble -173696038493E-144
} 0xa45f8fefbb3249d3
test expr-28.449 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +1831132757599 E-107 x 138e6edd48f2a2_1000000000000000000000000000000000000000000000001& E-315
    convertToDouble +1831132757599E-107
} 0x2c438e6edd48f2a3
test expr-28.450 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -9155663787995 E-108 x -138e6edd48f2a2_1000000000000000000000000000000000000000000000001& E-316
    convertToDouble -9155663787995E-108
} 0xac338e6edd48f2a3
test expr-28.451 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +7324531030396 E-107 x 138e6edd48f2a2_1000000000000000000000000000000000000000000000001& E-313
    convertToDouble +7324531030396E-107
} 0x2c638e6edd48f2a3
test expr-28.452 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -9277338894969 E-200 x -19d5a44fd99a6a_1000000000000000000000000000000000000000000000001& E-622
    convertToDouble -9277338894969E-200
} 0x9919d5a44fd99a6b
test expr-28.453 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +8188292423973 E287 x 1390273bf8f983_0111111111111111111111111111111111111111111111110& E996
    convertToDouble +8188292423973E287
} 0x7e3390273bf8f983
test expr-28.454 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -5672557437938 E59 x -148c2bd60a1523_011111111111111111111111111111111111111111111110& E238
    convertToDouble -5672557437938E59
} 0xced48c2bd60a1523
test expr-28.455 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +2836278718969 E59 x 148c2bd60a1523_011111111111111111111111111111111111111111111110& E237
    convertToDouble +2836278718969E59
} 0x4ec48c2bd60a1523
test expr-28.456 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -9995153153494 E54 x -17ba37c4fbe993_01111111111111111111111111111111111111111111110& E222
    convertToDouble -9995153153494E54
} 0xcdd7ba37c4fbe993
test expr-28.457 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +9224786422069 E-291 x 14ee5d56b32957_011111111111111111111111111111111111111111111111110& E-924
    convertToDouble +9224786422069E-291
} 0x0634ee5d56b32957
test expr-28.458 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -3142213164987 E-294 x -1d3409dfbca26f_011111111111111111111111111111111111111111111111110& E-936
    convertToDouble -3142213164987E-294
} 0x857d3409dfbca26f
test expr-28.459 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +6284426329974 E-294 x 1d3409dfbca26f_011111111111111111111111111111111111111111111111110& E-935
    convertToDouble +6284426329974E-294
} 0x058d3409dfbca26f
test expr-28.460 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -8340483752889 E-301 x -10419183e44b91_01111111111111111111111111111111111111111111111110& E-957
    convertToDouble -8340483752889E-301
} 0x8420419183e44b91
test expr-28.461 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +67039371486466 E89 x 17f203339c9628_10000000000000000000000000000000000000000000000000001& E341
    convertToDouble +67039371486466E89
} 0x5547f203339c9629
test expr-28.462 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -62150786615239 E197 x -12e79a035b9714_1000000000000000000000000000000000000000000000000001& E700
    convertToDouble -62150786615239E197
} 0xebb2e79a035b9715
test expr-28.463 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +33519685743233 E89 x 17f203339c9628_10000000000000000000000000000000000000000000000000001& E340
    convertToDouble +33519685743233E89
} 0x5537f203339c9629
test expr-28.464 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -52563419496999 E156 x -1bdb17625bf6e6_1000000000000000000000000000000000000000000000000001& E563
    convertToDouble -52563419496999E156
} 0xe32bdb17625bf6e7
test expr-28.465 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +32599460466991 E-65 x 1f395d4c779d8e_1000000000000000000000000000000000000000000000000001& E-172
    convertToDouble +32599460466991E-65
} 0x353f395d4c779d8f
test expr-28.466 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -41010988798007 E-133 x -152e1c9e04ee06_100000000000000000000000000000000000000000000000001& E-397
    convertToDouble -41010988798007E-133
} 0xa7252e1c9e04ee07
test expr-28.467 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +65198920933982 E-65 x 1f395d4c779d8e_1000000000000000000000000000000000000000000000000001& E-171
    convertToDouble +65198920933982E-65
} 0x354f395d4c779d8f
test expr-28.468 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -82021977596014 E-133 x -152e1c9e04ee06_100000000000000000000000000000000000000000000000001& E-396
    convertToDouble -82021977596014E-133
} 0xa7352e1c9e04ee07
test expr-28.469 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +80527976643809 E61 x 1c7c5aea080a49_0111111111111111111111111111111111111111111111111110& E248
    convertToDouble +80527976643809E61
} 0x4f7c7c5aea080a49
test expr-28.470 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -74712611505209 E158 x -1eeebe9ea010f3_011111111111111111111111111111111111111111111111110& E570
    convertToDouble -74712611505209E158
} 0xe39eeebe9ea010f3
test expr-28.471 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +53390939710959 E261 x 18ac6d426a1cb1_0111111111111111111111111111111111111111111111111110& E912
    convertToDouble +53390939710959E261
} 0x78f8ac6d426a1cb1
test expr-28.472 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -69277302659155 E225 x -1547166a3a2b0f_011111111111111111111111111111111111111111111111110& E793
    convertToDouble -69277302659155E225
} 0xf18547166a3a2b0f
test expr-28.473 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +46202199371337 E-72 x 128f9edfbd341f_0111111111111111111111111111111111111111111111111111111110& E-194
    convertToDouble +46202199371337E-72
} 0x33d28f9edfbd341f
test expr-28.474 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -23438635467783 E-179 x -1ba485b99e47af_0111111111111111111111111111111111111111111111111110& E-551
    convertToDouble -23438635467783E-179
} 0x9d8ba485b99e47af
test expr-28.475 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +41921560615349 E-67 x 19b2a5c4041e4b_0111111111111111111111111111111111111111111111111110& E-178
    convertToDouble +41921560615349E-67
} 0x34d9b2a5c4041e4b
test expr-28.476 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -92404398742674 E-72 x -128f9edfbd341f_0111111111111111111111111111111111111111111111111111111110& E-193
    convertToDouble -92404398742674E-72
} 0xb3e28f9edfbd341f
test expr-28.477 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +738545606647197 E124 x 13d8886a766a20_100000000000000000000000000000000000000000000000000001& E461
    convertToDouble +738545606647197E124
} 0x5cc3d8886a766a21
test expr-28.478 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -972708181182949 E117 x -15ed1f039cebfe_1000000000000000000000000000000000000000000000000000001& E438
    convertToDouble -972708181182949E117
} 0xdb55ed1f039cebff
test expr-28.479 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -837992143580825 E87 x -17f203339c9628_10000000000000000000000000000000000000000000000000001& E338
    convertToDouble -837992143580825E87
} 0xd517f203339c9629
test expr-28.480 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +609610927149051 E-255 x 104273b18918b0_100000000000000000000000000000000000000000000000000000001& E-798
    convertToDouble +609610927149051E-255
} 0x0e104273b18918b1
test expr-28.481 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -475603213226859 E-41 x -178cfcab31064c_10000000000000000000000000000000000000000000000000000001& E-88
    convertToDouble -475603213226859E-41
} 0xba778cfcab31064d
test expr-28.482 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +563002800671023 E-177 x 1035e7b5183922_10000000000000000000000000000000000000000000000000000001& E-539
    convertToDouble +563002800671023E-177
} 0x1e4035e7b5183923
test expr-28.483 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -951206426453718 E-41 x -178cfcab31064c_10000000000000000000000000000000000000000000000000000001& E-87
    convertToDouble -951206426453718E-41
} 0xba878cfcab31064d
test expr-28.484 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +805416432656519 E202 x 175d226331d039_01111111111111111111111111111111111111111111111111111110& E720
    convertToDouble +805416432656519E202
} 0x6cf75d226331d039
test expr-28.485 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -530658674694337 E159 x -112a13daa46fe3_0111111111111111111111111111111111111111111111111111110& E577
    convertToDouble -530658674694337E159
} 0xe4012a13daa46fe3
test expr-28.486 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +946574173863918 E208 x 1a2fbffdb7580b_011111111111111111111111111111111111111111111111111110& E740
    convertToDouble +946574173863918E208
} 0x6e3a2fbffdb7580b
test expr-28.487 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -318329953318553 E113 x -178358811cbc95_011111111111111111111111111111111111111111111111111110& E423
    convertToDouble -318329953318553E113
} 0xda678358811cbc95
test expr-28.488 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -462021993713370 E-73 x -128f9edfbd341f_0111111111111111111111111111111111111111111111111111111110& E-194
    convertToDouble -462021993713370E-73
} 0xb3d28f9edfbd341f
test expr-28.489 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +369617594970696 E-72 x 128f9edfbd341f_0111111111111111111111111111111111111111111111111111111110& E-191
    convertToDouble +369617594970696E-72
} 0x34028f9edfbd341f
test expr-28.490 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +3666156212014994 E233 x 1a37935f3b71c8_100000000000000000000000000000000000000000000000000000001& E825
    convertToDouble +3666156212014994E233
} 0x738a37935f3b71c9
test expr-28.491 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -1833078106007497 E233 x -1a37935f3b71c8_100000000000000000000000000000000000000000000000000000001& E824
    convertToDouble -1833078106007497E233
} 0xf37a37935f3b71c9
test expr-28.492 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +8301790508624232 E174 x 1dcfee6690ffc6_100000000000000000000000000000000000000000000000000000001& E630
    convertToDouble +8301790508624232E174
} 0x675dcfee6690ffc7
test expr-28.493 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -1037723813578029 E174 x -1dcfee6690ffc6_100000000000000000000000000000000000000000000000000000001& E627
    convertToDouble -1037723813578029E174
} 0xe72dcfee6690ffc7
test expr-28.494 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +7297662880581139 E-286 x 18ac8c79e1ff18_1000000000000000000000000000000000000000000000000000000000001& E-898
    convertToDouble +7297662880581139E-286
} 0x07d8ac8c79e1ff19
test expr-28.495 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -5106185698912191 E-276 x -141934d77659be_1000000000000000000000000000000000000000000000000000000000001& E-865
    convertToDouble -5106185698912191E-276
} 0x89e41934d77659bf
test expr-28.496 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +7487252720986826 E-165 x 18823a57adbef8_100000000000000000000000000000000000000000000000000000000000001& E-496
    convertToDouble +7487252720986826E-165
} 0x20f8823a57adbef9
test expr-28.497 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -3743626360493413 E-165 x -18823a57adbef8_100000000000000000000000000000000000000000000000000000000000001& E-497
    convertToDouble -3743626360493413E-165
} 0xa0e8823a57adbef9
test expr-28.498 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +3773057430100257 E230 x 1ba10d818fdafd_0111111111111111111111111111111111111111111111111111111110& E815
    convertToDouble +3773057430100257E230
} 0x72eba10d818fdafd
test expr-28.499 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -7546114860200514 E230 x -1ba10d818fdafd_0111111111111111111111111111111111111111111111111111111110& E816
    convertToDouble -7546114860200514E230
} 0xf2fba10d818fdafd
test expr-28.500 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +4321222892463822 E58 x 18750ea732fdad_011111111111111111111111111111111111111111111111111111110& E244
    convertToDouble +4321222892463822E58
} 0x4f38750ea732fdad
test expr-28.501 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -7793560217139653 E51 x -1280461b856ec5_0111111111111111111111111111111111111111111111111111111110& E222
    convertToDouble -7793560217139653E51
} 0xcdd280461b856ec5
test expr-28.502 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +26525993941010681 E112 x 187dcbf6ad5cf8_10000000000000000000000000000000000000000000000000000000000001& E426
    convertToDouble +26525993941010681E112
} 0x5a987dcbf6ad5cf9
test expr-28.503 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -53051987882021362 E112 x -187dcbf6ad5cf8_10000000000000000000000000000000000000000000000000000000000001& E427
    convertToDouble -53051987882021362E112
} 0xdaa87dcbf6ad5cf9
test expr-28.504 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +72844871414247907 E77 x 1bf00baf60b70c_100000000000000000000000000000000000000000000000000000000001& E311
    convertToDouble +72844871414247907E77
} 0x536bf00baf60b70d
test expr-28.505 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -88839359596763261 E105 x -1133b1a33a1108_100000000000000000000000000000000000000000000000000000000001& E405
    convertToDouble -88839359596763261E105
} 0xd94133b1a33a1109
test expr-28.506 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +18718131802467065 E-166 x 18823a57adbef8_100000000000000000000000000000000000000000000000000000000000001& E-498
    convertToDouble +18718131802467065E-166
} 0x20d8823a57adbef9
test expr-28.507 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -14974505441973652 E-165 x -18823a57adbef8_100000000000000000000000000000000000000000000000000000000000001& E-495
    convertToDouble -14974505441973652E-165
} 0xa108823a57adbef9
test expr-28.508 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +73429396004640239 E106 x 11c5cb19ef3451_01111111111111111111111111111111111111111111111111111111111110& E408
    convertToDouble +73429396004640239E106
} 0x5971c5cb19ef3451
test expr-28.509 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -58483921078398283 E57 x -108ce499519ce3_0111111111111111111111111111111111111111111111111111111111111110& E245
    convertToDouble -58483921078398283E57
} 0xcf408ce499519ce3
test expr-28.510 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +41391519190645203 E165 x 13f33667156017_011111111111111111111111111111111111111111111111111111111111110& E603
    convertToDouble +41391519190645203E165
} 0x65a3f33667156017
test expr-28.511 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -82783038381290406 E165 x -13f33667156017_011111111111111111111111111111111111111111111111111111111111110& E604
    convertToDouble -82783038381290406E165
} 0xe5b3f33667156017
test expr-28.512 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +58767043776702677 E-163 x 12c92fee3a3867_0111111111111111111111111111111111111111111111111111111111110& E-486
    convertToDouble +58767043776702677E-163
} 0x2192c92fee3a3867
test expr-28.513 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -90506231831231999 E-129 x -1bdc4114397ff3_01111111111111111111111111111111111111111111111111111111111110& E-373
    convertToDouble -90506231831231999E-129
} 0xa8abdc4114397ff3
test expr-28.514 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +64409240769861689 E-159 x 192238f7987779_011111111111111111111111111111111111111111111111111111111111110& E-473
    convertToDouble +64409240769861689E-159
} 0x22692238f7987779
test expr-28.515 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -77305427432277771 E-190 x -1e978b7780b613_0111111111111111111111111111111111111111111111111111111111110& E-576
    convertToDouble -77305427432277771E-190
} 0x9bfe978b7780b613
test expr-28.516 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +476592356619258326 E273 x 1873cf8ee72812_10000000000000000000000000000000000000000000000000000000000000001& E965
    convertToDouble +476592356619258326E273
} 0x7c4873cf8ee72813
test expr-28.517 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -953184713238516652 E273 x -1873cf8ee72812_10000000000000000000000000000000000000000000000000000000000000001& E966
    convertToDouble -953184713238516652E273
} 0xfc5873cf8ee72813
test expr-28.518 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +899810892172646163 E283 x 1adf51fa055e02_100000000000000000000000000000000000000000000000000000000000000000001& E999
    convertToDouble +899810892172646163E283
} 0x7e6adf51fa055e03
test expr-28.519 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -929167076892018333 E187 x -1da2c42fce2bc4_10000000000000000000000000000000000000000000000000000000000000000001& E680
    convertToDouble -929167076892018333E187
} 0xea7da2c42fce2bc5
test expr-28.520 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +647761278967534239 E-312 x 1a7a2476ec0b3e_10000000000000000000000000000000000000000000000000000000000000001& E-978
    convertToDouble +647761278967534239E-312
} 0x02da7a2476ec0b3f
test expr-28.521 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -644290479820542942 E-180 x -128d1407dfa832_10000000000000000000000000000000000000000000000000000000000000001& E-539
    convertToDouble -644290479820542942E-180
} 0x9e428d1407dfa833
test expr-28.522 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +926145344610700019 E-225 x 1307a67f1f69fe_10000000000000000000000000000000000000000000000000000000000000000001& E-688
    convertToDouble +926145344610700019E-225
} 0x14f307a67f1f69ff
test expr-28.523 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -958507931896511964 E-246 x -17406753df2f0c_10000000000000000000000000000000000000000000000000000000000000001& E-758
    convertToDouble -958507931896511964E-246
} 0x9097406753df2f0d
test expr-28.524 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +272104041512242479 E200 x 13bbb4bf05f087_011111111111111111111111111111111111111111111111111111111111111111111110& E722
    convertToDouble +272104041512242479E200
} 0x6d13bbb4bf05f087
test expr-28.525 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -792644927852378159 E79 x -1daff0048f3ec7_011111111111111111111111111111111111111111111111111111111111111111110& E321
    convertToDouble -792644927852378159E79
} 0xd40daff0048f3ec7
test expr-28.526 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +544208083024484958 E200 x 13bbb4bf05f087_011111111111111111111111111111111111111111111111111111111111111111111110& E723
    convertToDouble +544208083024484958E200
} 0x6d23bbb4bf05f087
test expr-28.527 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -929963218616126365 E290 x -108dcc0c505461_01111111111111111111111111111111111111111111111111111111111111110& E1023
    convertToDouble -929963218616126365E290
} 0xffe08dcc0c505461
test expr-28.528 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +305574339166810102 E-219 x 17f399fe02c4b9_011111111111111111111111111111111111111111111111111111111111111110& E-670
    convertToDouble +305574339166810102E-219
} 0x1617f399fe02c4b9
test expr-28.529 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -152787169583405051 E-219 x -17f399fe02c4b9_011111111111111111111111111111111111111111111111111111111111111110& E-671
    convertToDouble -152787169583405051E-219
} 0x9607f399fe02c4b9
test expr-28.530 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +611148678333620204 E-219 x 17f399fe02c4b9_011111111111111111111111111111111111111111111111111111111111111110& E-669
    convertToDouble +611148678333620204E-219
} 0x1627f399fe02c4b9
test expr-28.531 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -763935847917025255 E-220 x -17f399fe02c4b9_011111111111111111111111111111111111111111111111111111111111111110& E-672
    convertToDouble -763935847917025255E-220
} 0x95f7f399fe02c4b9
test expr-28.532 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +7439550220920798612 E158 x 177fe14f40159a_10000000000000000000000000000000000000000000000000000000000000000000001& E587
    convertToDouble +7439550220920798612E158
} 0x64a77fe14f40159b
test expr-28.533 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -3719775110460399306 E158 x -177fe14f40159a_10000000000000000000000000000000000000000000000000000000000000000000001& E586
    convertToDouble -3719775110460399306E158
} 0xe4977fe14f40159b
test expr-28.534 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +9299437776150998265 E157 x 177fe14f40159a_10000000000000000000000000000000000000000000000000000000000000000000001& E584
    convertToDouble +9299437776150998265E157
} 0x64777fe14f40159b
test expr-28.535 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -7120190517612959703 E120 x -13220dcd5899fc_1000000000000000000000000000000000000000000000000000000000000000000000001& E461
    convertToDouble -7120190517612959703E120
} 0xdcc3220dcd5899fd
test expr-28.536 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +3507665085003296281 E-73 x 11339818257f0e_100000000000000000000000000000000000000000000000000000000000000000000001& E-181
    convertToDouble +3507665085003296281E-73
} 0x34a1339818257f0f
test expr-28.537 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -7015330170006592562 E-73 x -11339818257f0e_100000000000000000000000000000000000000000000000000000000000000000000001& E-180
    convertToDouble -7015330170006592562E-73
} 0xb4b1339818257f0f
test expr-28.538 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -6684428762278255956 E-294 x -1d9f82a1a6b1b8_10000000000000000000000000000000000000000000000000000000000000000001& E-915
    convertToDouble -6684428762278255956E-294
} 0x86cd9f82a1a6b1b9
test expr-28.539 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -1088416166048969916 E200 x -13bbb4bf05f087_011111111111111111111111111111111111111111111111111111111111111111111110& E724
    convertToDouble -1088416166048969916E200
} 0xed33bbb4bf05f087
test expr-28.540 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -8707329328391759328 E200 x -13bbb4bf05f087_011111111111111111111111111111111111111111111111111111111111111111111110& E727
    convertToDouble -8707329328391759328E200
} 0xed63bbb4bf05f087
test expr-28.541 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +4439021781608558002 E-65 x 1038168b71e2c9_01111111111111111111111111111111111111111111111111111111111111111110& E-154
    convertToDouble +4439021781608558002E-65
} 0x365038168b71e2c9
test expr-28.542 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -8878043563217116004 E-65 x -1038168b71e2c9_01111111111111111111111111111111111111111111111111111111111111111110& E-153
    convertToDouble -8878043563217116004E-65
} 0xb66038168b71e2c9
test expr-28.543 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +2219510890804279001 E-65 x 1038168b71e2c9_01111111111111111111111111111111111111111111111111111111111111111110& E-155
    convertToDouble +2219510890804279001E-65
} 0x364038168b71e2c9
test expr-28.544 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +33051223951904955802 E55 x 1762068a24fd54_1000000000000000000000000000000000000000000000000000000000000000000000001& E247
    convertToDouble +33051223951904955802E55
} 0x4f6762068a24fd55
test expr-28.545 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -56961524140903677624 E120 x -13220dcd5899fc_1000000000000000000000000000000000000000000000000000000000000000000000001& E464
    convertToDouble -56961524140903677624E120
} 0xdcf3220dcd5899fd
test expr-28.546 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +71201905176129597030 E119 x 13220dcd5899fc_1000000000000000000000000000000000000000000000000000000000000000000000001& E461
    convertToDouble +71201905176129597030E119
} 0x5cc3220dcd5899fd
test expr-28.547 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +14030660340013185124 E-73 x 11339818257f0e_100000000000000000000000000000000000000000000000000000000000000000000001& E-179
    convertToDouble +14030660340013185124E-73
} 0x34c1339818257f0f
test expr-28.548 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -17538325425016481405 E-74 x -11339818257f0e_100000000000000000000000000000000000000000000000000000000000000000000001& E-182
    convertToDouble -17538325425016481405E-74
} 0xb491339818257f0f
test expr-28.549 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +67536228609141569109 E-133 x 10a1b35cf2a635_01111111111111111111111111111111111111111111111111111111111111111111110& E-376
    convertToDouble +67536228609141569109E-133
} 0x2870a1b35cf2a635
test expr-28.550 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -35620497849450218807 E-306 x -15b22082529425_0111111111111111111111111111111111111111111111111111111111111111111111110& E-952
    convertToDouble -35620497849450218807E-306
} 0x8475b22082529425
test expr-28.551 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN +66550376797582521751 E-126 x 13897c0ede6c69_01111111111111111111111111111111111111111111111111111111111111111111110& E-353
    convertToDouble +66550376797582521751E-126
} 0x29e3897c0ede6c69
test expr-28.552 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b d UN -71240995698900437614 E-306 x -15b22082529425_0111111111111111111111111111111111111111111111111111111111111111111111110& E-951
    convertToDouble -71240995698900437614E-306
} 0x8485b22082529425
test expr-28.553 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +3 E24 x 13da329b633647_0001& E81
    convertToDouble +3E24
} 0x4503da329b633647
test expr-28.554 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -6 E24 x -13da329b633647_0001& E82
    convertToDouble -6E24
} 0xc513da329b633647
test expr-28.555 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +6 E26 x 1f04ef12cb04cf_0001& E88
    convertToDouble +6E26
} 0x457f04ef12cb04cf
test expr-28.556 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -7 E25 x -1cf389cd46047d_0000001& E85
    convertToDouble -7E25
} 0xc54cf389cd46047d
test expr-28.557 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +1 E-14 x 16849b86a12b9b_00000001& E-47
    convertToDouble +1E-14
} 0x3d06849b86a12b9b
test expr-28.558 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -2 E-14 x -16849b86a12b9b_00000001& E-46
    convertToDouble -2E-14
} 0xbd16849b86a12b9b
test expr-28.559 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +4 E-14 x 16849b86a12b9b_00000001& E-45
    convertToDouble +4E-14
} 0x3d26849b86a12b9b
test expr-28.560 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -8 E-14 x -16849b86a12b9b_00000001& E-44
    convertToDouble -8E-14
} 0xbd36849b86a12b9b
test expr-28.561 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +5 E26 x 19d971e4fe8401_1110& E88
    convertToDouble +5E26
} 0x4579d971e4fe8402
test expr-28.562 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -8 E27 x -19d971e4fe8401_1110& E92
    convertToDouble -8E27
} 0xc5b9d971e4fe8402
test expr-28.563 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +1 E27 x 19d971e4fe8401_1110& E89
    convertToDouble +1E27
} 0x4589d971e4fe8402
test expr-28.564 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -4 E27 x -19d971e4fe8401_1110& E91
    convertToDouble -4E27
} 0xc5a9d971e4fe8402
test expr-28.565 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +9 E-13 x 1faa7ab552a551_111110& E-41
    convertToDouble +9E-13
} 0x3d6faa7ab552a552
test expr-28.566 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -7 E-20 x -14a90ceafff9de_11110& E-64
    convertToDouble -7E-20
} 0xbbf4a90ceafff9df
test expr-28.567 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +56 E25 x 1cf389cd46047d_0000001& E88
    convertToDouble +56E25
} 0x457cf389cd46047d
test expr-28.568 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -70 E24 x -1cf389cd46047d_0000001& E85
    convertToDouble -70E24
} 0xc54cf389cd46047d
test expr-28.569 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +51 E26 x 107a9f01fbda8e_0000001& E92
    convertToDouble +51E26
} 0x45b07a9f01fbda8e
test expr-28.570 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +71 E-17 x 19949819f693d7_00000000001& E-51
    convertToDouble +71E-17
} 0x3cc9949819f693d7
test expr-28.571 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -31 E-5 x -1450efdc9c4da9_00000000001& E-12
    convertToDouble -31E-5
} 0xbf3450efdc9c4da9
test expr-28.572 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +62 E-5 x 1450efdc9c4da9_00000000001& E-11
    convertToDouble +62E-5
} 0x3f4450efdc9c4da9
test expr-28.573 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -94 E-8 x -1f8a89dc374df5_0000000001& E-21
    convertToDouble -94E-8
} 0xbeaf8a89dc374df5
test expr-28.574 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +67 E27 x 1b0fa33bba7231_11111110& E95
    convertToDouble +67E27
} 0x45eb0fa33bba7232
test expr-28.575 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -81 E24 x -10c01ab31bb5cb_1111110& E86
    convertToDouble -81E24
} 0xc550c01ab31bb5cc
test expr-28.576 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +54 E23 x 11ddfa58a6173f_111110& E82
    convertToDouble +54E23
} 0x4511ddfa58a61740
test expr-28.577 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -54 E25 x -1bead72a838453_111110& E88
    convertToDouble -54E25
} 0xc57bead72a838454
test expr-28.578 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +63 E-22 x 1dc03b8fd70169_11111111110& E-68
    convertToDouble +63E-22
} 0x3bbdc03b8fd7016a
test expr-28.579 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -63 E-23 x -17ccfc73126787_11111111110& E-71
    convertToDouble -63E-23
} 0xbb87ccfc73126788
test expr-28.580 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +43 E-4 x 119ce075f6fd21_111111110& E-8
    convertToDouble +43E-4
} 0x3f719ce075f6fd22
test expr-28.581 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -86 E-4 x -119ce075f6fd21_111111110& E-7
    convertToDouble -86E-4
} 0xbf819ce075f6fd22
test expr-28.582 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +942 E26 x 1306069e8681f3_00000000001& E96
    convertToDouble +942E26
} 0x45f306069e8681f3
test expr-28.583 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -471 E25 x -1e700a973d9cb8_0000000001& E91
    convertToDouble -471E25
} 0xc5ae700a973d9cb8
test expr-28.584 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +803 E24 x 14c1cee9cd666b_000000000001& E89
    convertToDouble +803E24
} 0x4584c1cee9cd666b
test expr-28.585 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -471 E26 x -1306069e8681f3_00000000001& E95
    convertToDouble -471E26
} 0xc5e306069e8681f3
test expr-28.586 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -409 E-21 x -1e2dcaa4115622_000000000001& E-62
    convertToDouble -409E-21
} 0xbc1e2dcaa4115622
test expr-28.587 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +818 E-21 x 1e2dcaa4115622_000000000001& E-61
    convertToDouble +818E-21
} 0x3c2e2dcaa4115622
test expr-28.588 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -867 E-8 x -122eabba029aba_000000000001& E-17
    convertToDouble -867E-8
} 0xbee22eabba029aba
test expr-28.589 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +538 E27 x 1b297cad9f70b5_1111111111111110& E98
    convertToDouble +538E27
} 0x461b297cad9f70b6
test expr-28.590 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -857 E24 x -16272678ba603b_11111111110& E89
    convertToDouble -857E24
} 0xc586272678ba603c
test expr-28.591 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +269 E27 x 1b297cad9f70b5_1111111111111110& E97
    convertToDouble +269E27
} 0x460b297cad9f70b6
test expr-28.592 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -403 E26 x -1046ec1e31dd85_1111111110& E95
    convertToDouble -403E26
} 0xc5e046ec1e31dd86
test expr-28.593 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +959 E-7 x 1923bd746a3527_11111111111110& E-14
    convertToDouble +959E-7
} 0x3f1923bd746a3528
test expr-28.594 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -959 E-6 x -1f6cacd184c271_1111111111110& E-11
    convertToDouble -959E-6
} 0xbf4f6cacd184c272
test expr-28.595 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +373 E-27 x 1cdc06b20ef182_1111111111110& E-82
    convertToDouble +373E-27
} 0x3adcdc06b20ef183
test expr-28.596 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -746 E-27 x -1cdc06b20ef182_1111111111110& E-81
    convertToDouble -746E-27
} 0xbaecdc06b20ef183
test expr-28.597 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +4069 E24 x 1a4b9887fbfe7a_0000000000001& E91
    convertToDouble +4069E24
} 0x45aa4b9887fbfe7a
test expr-28.598 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -4069 E23 x -150946d32ffec8_0000000000001& E88
    convertToDouble -4069E23
} 0xc5750946d32ffec8
test expr-28.599 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -8138 E24 x -1a4b9887fbfe7a_0000000000001& E92
    convertToDouble -8138E24
} 0xc5ba4b9887fbfe7a
test expr-28.600 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +8294 E-15 x 123d1b5eb1d778_000000000000000001& E-37
    convertToDouble +8294E-15
} 0x3da23d1b5eb1d778
test expr-28.601 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -4147 E-14 x -16cc62365e4d56_00000000000000001& E-35
    convertToDouble -4147E-14
} 0xbdc6cc62365e4d56
test expr-28.602 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +4147 E-15 x 123d1b5eb1d778_000000000000000001& E-38
    convertToDouble +4147E-15
} 0x3d923d1b5eb1d778
test expr-28.603 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -8294 E-14 x -16cc62365e4d56_00000000000000001& E-34
    convertToDouble -8294E-14
} 0xbdd6cc62365e4d56
test expr-28.604 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +538 E27 x 1b297cad9f70b5_1111111111111110& E98
    convertToDouble +538E27
} 0x461b297cad9f70b6
test expr-28.605 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -2690 E26 x -1b297cad9f70b5_1111111111111110& E97
    convertToDouble -2690E26
} 0xc60b297cad9f70b6
test expr-28.606 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +269 E27 x 1b297cad9f70b5_1111111111111110& E97
    convertToDouble +269E27
} 0x460b297cad9f70b6
test expr-28.607 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -2152 E27 x -1b297cad9f70b5_1111111111111110& E100
    convertToDouble -2152E27
} 0xc63b297cad9f70b6
test expr-28.608 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +1721 E-17 x 136071dcae4564_111111111111110& E-46
    convertToDouble +1721E-17
} 0x3d136071dcae4565
test expr-28.609 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -7979 E-27 x -134ac304747faf_111111111111110& E-77
    convertToDouble -7979E-27
} 0xbb234ac304747fb0
test expr-28.610 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +6884 E-17 x 136071dcae4564_111111111111110& E-44
    convertToDouble +6884E-17
} 0x3d336071dcae4565
test expr-28.611 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -8605 E-18 x -136071dcae4564_111111111111110& E-47
    convertToDouble -8605E-18
} 0xbd036071dcae4565
test expr-28.612 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +82854 E27 x 10570ed9e3cecc_00000000000000001& E106
    convertToDouble +82854E27
} 0x4690570ed9e3cecc
test expr-28.613 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -55684 E24 x -167d9735144ae3_00000000000000001& E95
    convertToDouble -55684E24
} 0xc5e67d9735144ae3
test expr-28.614 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +27842 E24 x 167d9735144ae3_00000000000000001& E94
    convertToDouble +27842E24
} 0x45d67d9735144ae3
test expr-28.615 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -48959 E25 x -18b7cd6ca56f85_00000000000000001& E98
    convertToDouble -48959E25
} 0xc618b7cd6ca56f85
test expr-28.616 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +81921 E-17 x 1cd2c9a6cdd003_000000000000000000001& E-41
    convertToDouble +81921E-17
} 0x3d6cd2c9a6cdd003
test expr-28.617 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -76207 E-8 x -18f8b4dd16f1df_0000000000000000001& E-11
    convertToDouble -76207E-8
} 0xbf48f8b4dd16f1df
test expr-28.618 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +4147 E-15 x 123d1b5eb1d778_000000000000000001& E-38
    convertToDouble +4147E-15
} 0x3d923d1b5eb1d778
test expr-28.619 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -41470 E-16 x -123d1b5eb1d778_000000000000000001& E-38
    convertToDouble -41470E-16
} 0xbd923d1b5eb1d778
test expr-28.620 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +89309 E24 x 12092ac5f2019e_1111111111111111110& E96
    convertToDouble +89309E24
} 0x45f2092ac5f2019f
test expr-28.621 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +75859 E26 x 17efd75a2938eb_1111111111111111111110& E102
    convertToDouble +75859E26
} 0x4657efd75a2938ec
test expr-28.622 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -75859 E25 x -132645e1ba93ef_1111111111111111111110& E99
    convertToDouble -75859E25
} 0xc6232645e1ba93f0
test expr-28.623 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +14257 E-23 x 150a246ecd44f2_1111111111111111110& E-63
    convertToDouble +14257E-23
} 0x3c050a246ecd44f3
test expr-28.624 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -28514 E-23 x -150a246ecd44f2_1111111111111111110& E-62
    convertToDouble -28514E-23
} 0xbc150a246ecd44f3
test expr-28.625 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +57028 E-23 x 150a246ecd44f2_1111111111111111110& E-61
    convertToDouble +57028E-23
} 0x3c250a246ecd44f3
test expr-28.626 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -71285 E-24 x -150a246ecd44f2_1111111111111111110& E-64
    convertToDouble -71285E-24
} 0xbbf50a246ecd44f3
test expr-28.627 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +344863 E27 x 1100c873963d6d_00000000000000000001& E108
    convertToDouble +344863E27
} 0x46b100c873963d6d
test expr-28.628 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -951735 E27 x -17764ad224e24a_000000000000000000001& E109
    convertToDouble -951735E27
} 0xc6c7764ad224e24a
test expr-28.629 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +200677 E23 x 1035e73135b834_0000000000000000001& E94
    convertToDouble +200677E23
} 0x45d035e73135b834
test expr-28.630 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -401354 E24 x -144360fd832641_0000000000000000001& E98
    convertToDouble -401354E24
} 0xc6144360fd832641
test expr-28.631 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +839604 E-11 x 119b96f36ec68b_00000000000000000000000001& E-17
    convertToDouble +839604E-11
} 0x3ee19b96f36ec68b
test expr-28.632 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -209901 E-11 x -119b96f36ec68b_00000000000000000000000001& E-19
    convertToDouble -209901E-11
} 0xbec19b96f36ec68b
test expr-28.633 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +419802 E-11 x 119b96f36ec68b_00000000000000000000000001& E-18
    convertToDouble +419802E-11
} 0x3ed19b96f36ec68b
test expr-28.634 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -537734 E-24 x -13d6c1088ae40e_0000000000000000000001& E-61
    convertToDouble -537734E-24
} 0xbc23d6c1088ae40e
test expr-28.635 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +910308 E26 x 11f3e1839eeab0_11111111111111111111110& E106
    convertToDouble +910308E26
} 0x4691f3e1839eeab1
test expr-28.636 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -227577 E26 x -11f3e1839eeab0_11111111111111111111110& E104
    convertToDouble -227577E26
} 0xc671f3e1839eeab1
test expr-28.637 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +455154 E26 x 11f3e1839eeab0_11111111111111111111110& E105
    convertToDouble +455154E26
} 0x4681f3e1839eeab1
test expr-28.638 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -531013 E25 x -10c17d25834171_11111111111111111111110& E102
    convertToDouble -531013E25
} 0xc650c17d25834172
test expr-28.639 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +963019 E-21 x 11592429784914_11111111111111111111110& E-50
    convertToDouble +963019E-21
} 0x3cd1592429784915
test expr-28.640 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -519827 E-13 x -1be872a8b30d7c_11111111111111111111110& E-25
    convertToDouble -519827E-13
} 0xbe6be872a8b30d7d
test expr-28.641 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +623402 E-27 x 178d2c97bde2a0_11111111111111111111110& E-71
    convertToDouble +623402E-27
} 0x3b878d2c97bde2a1
test expr-28.642 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -311701 E-27 x -178d2c97bde2a0_11111111111111111111110& E-72
    convertToDouble -311701E-27
} 0xbb778d2c97bde2a1
test expr-28.643 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +9613651 E26 x 17b31116270d9b_000000000000000000000001& E109
    convertToDouble +9613651E26
} 0x46c7b31116270d9b
test expr-28.644 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -9191316 E23 x -1733bfae0801fd_0000000000000000000001& E99
    convertToDouble -9191316E23
} 0xc62733bfae0801fd
test expr-28.645 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +4595658 E23 x 1733bfae0801fd_0000000000000000000001& E98
    convertToDouble +4595658E23
} 0x461733bfae0801fd
test expr-28.646 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -2297829 E23 x -1733bfae0801fd_0000000000000000000001& E97
    convertToDouble -2297829E23
} 0xc60733bfae0801fd
test expr-28.647 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -1679208 E-11 x -119b96f36ec68b_00000000000000000000000001& E-16
    convertToDouble -1679208E-11
} 0xbef19b96f36ec68b
test expr-28.648 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +3379223 E27 x 14d3794ce2fc25_1111111111111111111111110& E111
    convertToDouble +3379223E27
} 0x46e4d3794ce2fc26
test expr-28.649 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -6758446 E27 x -14d3794ce2fc25_1111111111111111111111110& E112
    convertToDouble -6758446E27
} 0xc6f4d3794ce2fc26
test expr-28.650 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +5444097 E-21 x 18849dd33c95ae_11111111111111111111111111110& E-48
    convertToDouble +5444097E-21
} 0x3cf8849dd33c95af
test expr-28.651 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -8399969 E-27 x -13d5783e85fcf7_1111111111111111111111110& E-67
    convertToDouble -8399969E-27
} 0xbbc3d5783e85fcf8
test expr-28.652 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +8366487 E-16 x 1cbf3d630403af_1111111111111111111111110& E-31
    convertToDouble +8366487E-16
} 0x3e0cbf3d630403b0
test expr-28.653 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -8366487 E-15 x -11f7865de2824d_11111111111111111111111110& E-27
    convertToDouble -8366487E-15
} 0xbe41f7865de2824e
test expr-28.654 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +65060671 E25 x 1009e7d474572a_0000000000000000000000000001& E109
    convertToDouble +65060671E25
} 0x46c009e7d474572a
test expr-28.655 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +65212389 E23 x 1493d098d37657_000000000000000000000000001& E102
    convertToDouble +65212389E23
} 0x465493d098d37657
test expr-28.656 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +55544957 E-13 x 174c1826f3010c_00000000000000000000000000001& E-18
    convertToDouble +55544957E-13
} 0x3ed74c1826f3010c
test expr-28.657 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -51040905 E-20 x -11f55b23c8bf2d_0000000000000000000000000001& E-41
    convertToDouble -51040905E-20
} 0xbd61f55b23c8bf2d
test expr-28.658 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +99585767 E-22 x 166cba8699f0f2_0000000000000000000000000001& E-47
    convertToDouble +99585767E-22
} 0x3d066cba8699f0f2
test expr-28.659 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -99585767 E-23 x -11f095387b2728_0000000000000000000000000001& E-50
    convertToDouble -99585767E-23
} 0xbcd1f095387b2728
test expr-28.660 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +40978393 E26 x 1941401cca2bfd_1111111111111111111111111110& E111
    convertToDouble +40978393E26
} 0x46e941401cca2bfe
test expr-28.661 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -67488159 E24 x -1a9e90059d12db_11111111111111111111111111110& E105
    convertToDouble -67488159E24
} 0xc68a9e90059d12dc
test expr-28.662 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +69005339 E23 x 15c634f6ef1f95_111111111111111111111111110& E102
    convertToDouble +69005339E23
} 0x4655c634f6ef1f96
test expr-28.663 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -81956786 E26 x -1941401cca2bfd_1111111111111111111111111110& E112
    convertToDouble -81956786E26
} 0xc6f941401cca2bfe
test expr-28.664 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -87105552 E-21 x -18849dd33c95ae_11111111111111111111111111110& E-44
    convertToDouble -87105552E-21
} 0xbd38849dd33c95af
test expr-28.665 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +10888194 E-21 x 18849dd33c95ae_11111111111111111111111111110& E-47
    convertToDouble +10888194E-21
} 0x3d08849dd33c95af
test expr-28.666 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -21776388 E-21 x -18849dd33c95ae_11111111111111111111111111110& E-46
    convertToDouble -21776388E-21
} 0xbd18849dd33c95af
test expr-28.667 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +635806667 E27 x 1e9cec176c96f8_000000000000000000000000000000001& E118
    convertToDouble +635806667E27
} 0x475e9cec176c96f8
test expr-28.668 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -670026614 E25 x -14a593f89f4194_00000000000000000000000000000001& E112
    convertToDouble -670026614E25
} 0xc6f4a593f89f4194
test expr-28.669 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +335013307 E26 x 19cef8f6c711f9_0000000000000000000000000000001& E114
    convertToDouble +335013307E26
} 0x4719cef8f6c711f9
test expr-28.670 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -335013307 E25 x -14a593f89f4194_00000000000000000000000000000001& E111
    convertToDouble -335013307E25
} 0xc6e4a593f89f4194
test expr-28.671 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +371790617 E-24 x 1aca538c61ba9c_000000000000000000000000000000001& E-52
    convertToDouble +371790617E-24
} 0x3cbaca538c61ba9c
test expr-28.672 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -371790617 E-25 x -156ea93d1afbb0_0000000000000000000000000000000001& E-55
    convertToDouble -371790617E-25
} 0xbc856ea93d1afbb0
test expr-28.673 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +743581234 E-24 x 1aca538c61ba9c_000000000000000000000000000000001& E-51
    convertToDouble +743581234E-24
} 0x3ccaca538c61ba9c
test expr-28.674 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -743581234 E-25 x -156ea93d1afbb0_0000000000000000000000000000000001& E-54
    convertToDouble -743581234E-25
} 0xbc956ea93d1afbb0
test expr-28.675 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +202464477 E24 x 13f6ec0435ce24_111111111111111111111111111110& E107
    convertToDouble +202464477E24
} 0x46a3f6ec0435ce25
test expr-28.676 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -404928954 E24 x -13f6ec0435ce24_111111111111111111111111111110& E108
    convertToDouble -404928954E24
} 0xc6b3f6ec0435ce25
test expr-28.677 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +997853758 E27 x 1805bfa33b98fa_111111111111111111111111111110& E119
    convertToDouble +997853758E27
} 0x476805bfa33b98fb
test expr-28.678 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -997853758 E26 x -1337cc829613fb_111111111111111111111111111110& E116
    convertToDouble -997853758E26
} 0xc73337cc829613fc
test expr-28.679 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +405498418 E-17 x 116a8093df66a6_111111111111111111111111111111110& E-28
    convertToDouble +405498418E-17
} 0x3e316a8093df66a7
test expr-28.680 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -582579084 E-14 x -186f653140a658_111111111111111111111111111111110& E-18
    convertToDouble -582579084E-14
} 0xbed86f653140a659
test expr-28.681 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +608247627 E-18 x 14e633e4a5ae61_111111111111111111111111111111110& E-31
    convertToDouble +608247627E-18
} 0x3e04e633e4a5ae62
test expr-28.682 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -291289542 E-14 x -186f653140a658_111111111111111111111111111111110& E-19
    convertToDouble -291289542E-14
} 0xbec86f653140a659
test expr-28.683 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -9537100005 E26 x -16f5b11191713a_000000000000000000000000000000001& E119
    convertToDouble -9537100005E26
} 0xc766f5b11191713a
test expr-28.684 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +6358066670 E27 x 1322138ea3de5b_000000000000000000000000000000001& E122
    convertToDouble +6358066670E27
} 0x479322138ea3de5b
test expr-28.685 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -1271613334 E27 x -1e9cec176c96f8_000000000000000000000000000000001& E119
    convertToDouble -1271613334E27
} 0xc76e9cec176c96f8
test expr-28.686 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +5229646999 E-16 x 118c3b89731f3d_000000000000000000000000000000000001& E-21
    convertToDouble +5229646999E-16
} 0x3ea18c3b89731f3d
test expr-28.687 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +5229646999 E-17 x 1c13927584fec8_00000000000000000000000000000000001& E-25
    convertToDouble +5229646999E-17
} 0x3e6c13927584fec8
test expr-28.688 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +4429943614 E24 x 1b4d37fa06864a_1111111111111111111111111111111110& E111
    convertToDouble +4429943614E24
} 0x46eb4d37fa06864b
test expr-28.689 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -8859887228 E24 x -1b4d37fa06864a_1111111111111111111111111111111110& E112
    convertToDouble -8859887228E24
} 0xc6fb4d37fa06864b
test expr-28.690 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +2214971807 E24 x 1b4d37fa06864a_1111111111111111111111111111111110& E110
    convertToDouble +2214971807E24
} 0x46db4d37fa06864b
test expr-28.691 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -4176887093 E26 x -141c692c5bd07a_111111111111111111111111111111110& E118
    convertToDouble -4176887093E26
} 0xc7541c692c5bd07b
test expr-28.692 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +4003495257 E-20 x 16026b2e07ec06_111111111111111111111111111111111110& E-35
    convertToDouble +4003495257E-20
} 0x3dc6026b2e07ec07
test expr-28.693 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -4361901637 E-23 x -188e29a9d7c5b8_11111111111111111111111111111111110& E-45
    convertToDouble -4361901637E-23
} 0xbd288e29a9d7c5b9
test expr-28.694 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +8723803274 E-23 x 188e29a9d7c5b8_11111111111111111111111111111111110& E-44
    convertToDouble +8723803274E-23
} 0x3d388e29a9d7c5b9
test expr-28.695 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -8006990514 E-20 x -16026b2e07ec06_111111111111111111111111111111111110& E-34
    convertToDouble -8006990514E-20
} 0xbdd6026b2e07ec07
test expr-28.696 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +72835110098 E27 x 1b65c41711fb6d_0000000000000000000000000000000000001& E125
    convertToDouble +72835110098E27
} 0x47cb65c41711fb6d
test expr-28.697 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -36417555049 E27 x -1b65c41711fb6d_0000000000000000000000000000000000001& E124
    convertToDouble -36417555049E27
} 0xc7bb65c41711fb6d
test expr-28.698 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +84279630104 E25 x 144a221b1cf62e_000000000000000000000000000000000001& E119
    convertToDouble +84279630104E25
} 0x47644a221b1cf62e
test expr-28.699 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -84279630104 E24 x -103b4e7c172b58_000000000000000000000000000000000001& E116
    convertToDouble -84279630104E24
} 0xc7303b4e7c172b58
test expr-28.700 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +21206176437 E-27 x 1872f563ae0cc9_0000000000000000000000000000000000001& E-56
    convertToDouble +21206176437E-27
} 0x3c7872f563ae0cc9
test expr-28.701 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -66461566917 E-22 x -1d3ae83e4322b3_00000000000000000000000000000000000001& E-38
    convertToDouble -66461566917E-22
} 0xbd9d3ae83e4322b3
test expr-28.702 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +64808355539 E-16 x 1b2ebe83265fbf_00000000000000000000000000000000000001& E-18
    convertToDouble +64808355539E-16
} 0x3edb2ebe83265fbf
test expr-28.703 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -84932679673 E-19 x -123d39339f1bf6_00000000000000000000000000000000000001& E-27
    convertToDouble -84932679673E-19
} 0xbe423d39339f1bf6
test expr-28.704 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +65205430094 E26 x 139f3e5d7fd76a_1111111111111111111111111111111111110& E122
    convertToDouble +65205430094E26
} 0x47939f3e5d7fd76b
test expr-28.705 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -68384463429 E25 x -107684982f634e_1111111111111111111111111111111111111110& E119
    convertToDouble -68384463429E25
} 0xc7607684982f634f
test expr-28.706 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +32602715047 E26 x 139f3e5d7fd76a_1111111111111111111111111111111111110& E121
    convertToDouble +32602715047E26
} 0x47839f3e5d7fd76b
test expr-28.707 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -62662203426 E27 x -1792269424688d_111111111111111111111111111111111110& E125
    convertToDouble -62662203426E27
} 0xc7c792269424688e
test expr-28.708 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +58784444678 E-18 x 1f8f45c64b4682_111111111111111111111111111111111111110& E-25
    convertToDouble +58784444678E-18
} 0x3e6f8f45c64b4683
test expr-28.709 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -50980203373 E-21 x -1c06d366394440_11111111111111111111111111111111111111111110& E-35
    convertToDouble -50980203373E-21
} 0xbdcc06d366394441
test expr-28.710 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +29392222339 E-18 x 1f8f45c64b4682_111111111111111111111111111111111111110& E-26
    convertToDouble +29392222339E-18
} 0x3e5f8f45c64b4683
test expr-28.711 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -75529940323 E-27 x -15c5203c0aad52_1111111111111111111111111111111111111110& E-54
    convertToDouble -75529940323E-27
} 0xbc95c5203c0aad53
test expr-28.712 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -937495906299 E26 x -11a1e0ebb6af11_000000000000000000000000000000000000000001& E126
    convertToDouble -937495906299E26
} 0xc7d1a1e0ebb6af11
test expr-28.713 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +842642485799 E-20 x 121879decdd7cb_000000000000000000000000000000000000000001& E-27
    convertToDouble +842642485799E-20
} 0x3e421879decdd7cb
test expr-28.714 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -387824150699 E-23 x -110e8302245571_00000000000000000000000000000000000000001& E-38
    convertToDouble -387824150699E-23
} 0xbd910e8302245571
test expr-28.715 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +924948814726 E-27 x 10a992d1fc6ded_00000000000000000000000000000000000000001& E-50
    convertToDouble +924948814726E-27
} 0x3cd0a992d1fc6ded
test expr-28.716 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -775648301398 E-23 x -110e8302245571_00000000000000000000000000000000000000001& E-37
    convertToDouble -775648301398E-23
} 0xbda10e8302245571
test expr-28.717 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +547075707432 E25 x 107684982f634e_1111111111111111111111111111111111111110& E122
    convertToDouble +547075707432E25
} 0x47907684982f634f
test expr-28.718 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +683844634290 E24 x 107684982f634e_1111111111111111111111111111111111111110& E119
    convertToDouble +683844634290E24
} 0x47607684982f634f
test expr-28.719 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -136768926858 E25 x -107684982f634e_1111111111111111111111111111111111111110& E120
    convertToDouble -136768926858E25
} 0xc7707684982f634f
test expr-28.720 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +509802033730 E-22 x 1c06d366394440_11111111111111111111111111111111111111111110& E-35
    convertToDouble +509802033730E-22
} 0x3dcc06d366394441
test expr-28.721 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +101960406746 E-21 x 1c06d366394440_11111111111111111111111111111111111111111110& E-34
    convertToDouble +101960406746E-21
} 0x3ddc06d366394441
test expr-28.722 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -815683253968 E-21 x -1c06d366394440_11111111111111111111111111111111111111111110& E-31
    convertToDouble -815683253968E-21
} 0xbe0c06d366394441
test expr-28.723 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +7344124123524 E24 x 1619b519dd6833_00000000000000000000000000000000000000000001& E122
    convertToDouble +7344124123524E24
} 0x479619b519dd6833
test expr-28.724 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -9180155154405 E23 x -1619b519dd6833_00000000000000000000000000000000000000000001& E119
    convertToDouble -9180155154405E23
} 0xc76619b519dd6833
test expr-28.725 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +6479463327323 E27 x 130a9b3e9bd05e_00000000000000000000000000000000000000000001& E132
    convertToDouble +6479463327323E27
} 0x48330a9b3e9bd05e
test expr-28.726 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -1836031030881 E24 x -1619b519dd6833_00000000000000000000000000000000000000000001& E120
    convertToDouble -1836031030881E24
} 0xc77619b519dd6833
test expr-28.727 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +4337269293039 E-19 x 1d1b5f354c63d6_00000000000000000000000000000000000000000001& E-22
    convertToDouble +4337269293039E-19
} 0x3e9d1b5f354c63d6
test expr-28.728 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -4599163554373 E-23 x -1948bf4d34088d_00000000000000000000000000000000000000000001& E-35
    convertToDouble -4599163554373E-23
} 0xbdc948bf4d34088d
test expr-28.729 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +9198327108746 E-23 x 1948bf4d34088d_00000000000000000000000000000000000000000001& E-34
    convertToDouble +9198327108746E-23
} 0x3dd948bf4d34088d
test expr-28.730 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +4812803938347 E27 x 1c4980a4ee94ce_111111111111111111111111111111111111111111110& E131
    convertToDouble +4812803938347E27
} 0x482c4980a4ee94cf
test expr-28.731 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -8412030890011 E23 x -14405075e52db9_11111111111111111111111111111111111111111110& E119
    convertToDouble -8412030890011E23
} 0xc764405075e52dba
test expr-28.732 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +9625607876694 E27 x 1c4980a4ee94ce_111111111111111111111111111111111111111111110& E132
    convertToDouble +9625607876694E27
} 0x483c4980a4ee94cf
test expr-28.733 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -4739968828249 E24 x -1c87140cdf8a1d_1111111111111111111111111111111111111111110& E121
    convertToDouble -4739968828249E24
} 0xc78c87140cdf8a1e
test expr-28.734 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +9697183891673 E-23 x 1aa7c959b6a666_11111111111111111111111111111111111111111111110& E-34
    convertToDouble +9697183891673E-23
} 0x3ddaa7c959b6a667
test expr-28.735 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -7368108517543 E-20 x -13c7535bbd85a1_1111111111111111111111111111111111111111111110& E-24
    convertToDouble -7368108517543E-20
} 0xbe73c7535bbd85a2
test expr-28.736 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +51461358161422 E25 x 18326f87d4cae0_0000000000000000000000000000000000000000000000001& E128
    convertToDouble +51461358161422E25
} 0x47f8326f87d4cae0
test expr-28.737 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -77192037242133 E26 x -16af488f577e32_0000000000000000000000000000000000000000000000001& E132
    convertToDouble -77192037242133E26
} 0xc836af488f577e32
test expr-28.738 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +77192037242133 E25 x 1225d3a5df9828_0000000000000000000000000000000000000000000000001& E129
    convertToDouble +77192037242133E25
} 0x480225d3a5df9828
test expr-28.739 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -51461358161422 E27 x -12e767221e3e7f_0000000000000000000000000000000000000000000000001& E135
    convertToDouble -51461358161422E27
} 0xc862e767221e3e7f
test expr-28.740 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +43999661561541 E-21 x 179f4476d372a3_0000000000000000000000000000000000000000000000001& E-25
    convertToDouble +43999661561541E-21
} 0x3e679f4476d372a3
test expr-28.741 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -87999323123082 E-21 x -179f4476d372a3_0000000000000000000000000000000000000000000000001& E-24
    convertToDouble -87999323123082E-21
} 0xbe779f4476d372a3
test expr-28.742 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +48374886826137 E-26 x 110538f23350d5_00000000000000000000000000000000000000000000001& E-41
    convertToDouble +48374886826137E-26
} 0x3d610538f23350d5
test expr-28.743 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -57684246567111 E-23 x -13d1f5c1b8a912_00000000000000000000000000000000000000000000001& E-31
    convertToDouble -57684246567111E-23
} 0xbe03d1f5c1b8a912
test expr-28.744 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +87192805957686 E23 x 1a3d16e55a9664_1111111111111111111111111111111111111111111110& E122
    convertToDouble +87192805957686E23
} 0x479a3d16e55a9665
test expr-28.745 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -75108713005913 E24 x -1c40b4baa79655_11111111111111111111111111111111111111111111110& E125
    convertToDouble -75108713005913E24
} 0xc7cc40b4baa79656
test expr-28.746 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +64233110587487 E27 x 179873e38669a6_1111111111111111111111111111111111111111111110& E135
    convertToDouble +64233110587487E27
} 0x48679873e38669a7
test expr-28.747 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -77577471133384 E-23 x -1aa7c959b6a666_11111111111111111111111111111111111111111111110& E-31
    convertToDouble -77577471133384E-23
} 0xbe0aa7c959b6a667
test expr-28.748 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +48485919458365 E-24 x 1aa7c959b6a666_11111111111111111111111111111111111111111111110& E-35
    convertToDouble +48485919458365E-24
} 0x3dcaa7c959b6a667
test expr-28.749 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -56908598265713 E-26 x -1405deef4bdef5_111111111111111111111111111111111111111111111110& E-41
    convertToDouble -56908598265713E-26
} 0xbd6405deef4bdef6
test expr-28.750 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +589722294620133 E23 x 162ed1b287caef_00000000000000000000000000000000000000000000000001& E125
    convertToDouble +589722294620133E23
} 0x47c62ed1b287caef
test expr-28.751 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +652835804449289 E-22 x 118640e490b087_0000000000000000000000000000000000000000000000000001& E-24
    convertToDouble +652835804449289E-22
} 0x3e718640e490b087
test expr-28.752 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -656415363936202 E-23 x -1c315cfe25d201_00000000000000000000000000000000000000000000000001& E-28
    convertToDouble -656415363936202E-23
} 0xbe3c315cfe25d201
test expr-28.753 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +579336749585745 E-25 x 1fd9709d9aeb19_00000000000000000000000000000000000000000000000001& E-35
    convertToDouble +579336749585745E-25
} 0x3dcfd9709d9aeb19
test expr-28.754 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -381292764980839 E-26 x -10c4f9921c3f8f_00000000000000000000000000000000000000000000000001& E-38
    convertToDouble -381292764980839E-26
} 0xbd90c4f9921c3f8f
test expr-28.755 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +965265859649698 E23 x 12279607edcb0c_1111111111111111111111111111111111111111111111110& E126
    convertToDouble +965265859649698E23
} 0x47d2279607edcb0d
test expr-28.756 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -848925235434882 E27 x -137d88ba4b43e3_1111111111111111111111111111111111111111111111111110& E139
    convertToDouble -848925235434882E27
} 0xc8a37d88ba4b43e4
test expr-28.757 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +536177612222491 E23 x 142b33dd3acafd_11111111111111111111111111111111111111111111111110& E125
    convertToDouble +536177612222491E23
} 0x47c42b33dd3acafe
test expr-28.758 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -424462617717441 E27 x -137d88ba4b43e3_1111111111111111111111111111111111111111111111111110& E138
    convertToDouble -424462617717441E27
} 0xc8937d88ba4b43e4
test expr-28.759 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +276009279888989 E-27 x 136c242313c288_111111111111111111111111111111111111111111111111110& E-42
    convertToDouble +276009279888989E-27
} 0x3d536c242313c289
test expr-28.760 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -608927158043691 E-26 x -1ac7e909c22f09_11111111111111111111111111111111111111111111111110& E-38
    convertToDouble -608927158043691E-26
} 0xbd9ac7e909c22f0a
test expr-28.761 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +552018559777978 E-27 x 136c242313c288_111111111111111111111111111111111111111111111111110& E-41
    convertToDouble +552018559777978E-27
} 0x3d636c242313c289
test expr-28.762 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -425678377667758 E-22 x -16da7aa49bdcd5_1111111111111111111111111111111111111111111111110& E-25
    convertToDouble -425678377667758E-22
} 0xbe66da7aa49bdcd6
test expr-28.763 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +8013702726927119 E26 x 126607f8f1b29e_00000000000000000000000000000000000000000000000000001& E139
    convertToDouble +8013702726927119E26
} 0x48a26607f8f1b29e
test expr-28.764 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +8862627962362001 E27 x 196f3b0e7787c2_00000000000000000000000000000000000000000000000000001& E142
    convertToDouble +8862627962362001E27
} 0x48d96f3b0e7787c2
test expr-28.765 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -5068007907757162 E26 x -17456a27848397_00000000000000000000000000000000000000000000000000001& E138
    convertToDouble -5068007907757162E26
} 0xc897456a27848397
test expr-28.766 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -7379714799828406 E-23 x -13cf4d2839e036_00000000000000000000000000000000000000000000000000001& E-24
    convertToDouble -7379714799828406E-23
} 0xbe73cf4d2839e036
test expr-28.767 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +4114538064016107 E-27 x 12188eda98010c_0000000000000000000000000000000000000000000000000001& E-38
    convertToDouble +4114538064016107E-27
} 0x3d92188eda98010c
test expr-28.768 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -3689857399914203 E-23 x -13cf4d2839e036_00000000000000000000000000000000000000000000000000001& E-25
    convertToDouble -3689857399914203E-23
} 0xbe63cf4d2839e036
test expr-28.769 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +5575954851815478 E23 x 1a37cfbf2ffdb5_1111111111111111111111111111111111111111111111111110& E128
    convertToDouble +5575954851815478E23
} 0x47fa37cfbf2ffdb6
test expr-28.770 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +3395700941739528 E27 x 137d88ba4b43e3_1111111111111111111111111111111111111111111111111110& E141
    convertToDouble +3395700941739528E27
} 0x48c37d88ba4b43e4
test expr-28.771 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +4115535777581961 E-23 x 1618596be30fe4_111111111111111111111111111111111111111111111111111110& E-25
    convertToDouble +4115535777581961E-23
} 0x3e6618596be30fe5
test expr-28.772 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -8231071555163922 E-23 x -1618596be30fe4_111111111111111111111111111111111111111111111111111110& E-24
    convertToDouble -8231071555163922E-23
} 0xbe7618596be30fe5
test expr-28.773 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +6550246696190871 E-26 x 1201538b0f8c69_111111111111111111111111111111111111111111111111111110& E-34
    convertToDouble +6550246696190871E-26
} 0x3dd201538b0f8c6a
test expr-28.774 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -68083046403986701 E27 x -186c70ba8ba28d_000000000000000000000000000000000000000000000000000000001& E145
    convertToDouble -68083046403986701E27
} 0xc9086c70ba8ba28d
test expr-28.775 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +43566388595783643 E27 x 1f41e1bf48b03f_111111111111111111111111111111111111111111111111111111110& E144
    convertToDouble +43566388595783643E27
} 0x48ff41e1bf48b040
test expr-28.776 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -87132777191567286 E27 x -1f41e1bf48b03f_111111111111111111111111111111111111111111111111111111110& E145
    convertToDouble -87132777191567286E27
} 0xc90f41e1bf48b040
test expr-28.777 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +59644881059342141 E25 x 1b6338d9d8ae38_11111111111111111111111111111111111111111111111111111110& E138
    convertToDouble +59644881059342141E25
} 0x489b6338d9d8ae39
test expr-28.778 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -83852770718576667 E23 x -18a4619ed6f442_111111111111111111111111111111111111111111111111111111110& E132
    convertToDouble -83852770718576667E23
} 0xc838a4619ed6f443
test expr-28.779 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +99482967418206961 E-25 x 155d224bfed7ac_11111111111111111111111111111111111111111111111111111111110& E-27
    convertToDouble +99482967418206961E-25
} 0x3e455d224bfed7ad
test expr-28.780 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -99482967418206961 E-26 x -11174ea3324623_11111111111111111111111111111111111111111111111111111111110& E-30
    convertToDouble -99482967418206961E-26
} 0xbe11174ea3324624
test expr-28.781 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +87446669969994614 E-27 x 1809832942376d_11111111111111111111111111111111111111111111111111111110& E-34
    convertToDouble +87446669969994614E-27
} 0x3dd809832942376e
test expr-28.782 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -43723334984997307 E-27 x -1809832942376d_11111111111111111111111111111111111111111111111111111110& E-35
    convertToDouble -43723334984997307E-27
} 0xbdc809832942376e
test expr-28.783 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +5 E24 x 108b2a2c280290_1001& E82
    convertToDouble +5E24
} 0x45108b2a2c280291
test expr-28.784 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -8 E25 x -108b2a2c280290_1001& E86
    convertToDouble -8E25
} 0xc5508b2a2c280291
test expr-28.785 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +1 E25 x 108b2a2c280290_1001& E83
    convertToDouble +1E25
} 0x45208b2a2c280291
test expr-28.786 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -4 E25 x -108b2a2c280290_1001& E85
    convertToDouble -4E25
} 0xc5408b2a2c280291
test expr-28.787 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +2 E-5 x 14f8b588e368f0_100001& E-16
    convertToDouble +2E-5
} 0x3ef4f8b588e368f1
test expr-28.788 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -5 E-6 x -14f8b588e368f0_100001& E-18
    convertToDouble -5E-6
} 0xbed4f8b588e368f1
test expr-28.789 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +4 E-5 x 14f8b588e368f0_100001& E-15
    convertToDouble +4E-5
} 0x3f04f8b588e368f1
test expr-28.790 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -3 E-20 x -11b578c96db19a_100001& E-65
    convertToDouble -3E-20
} 0xbbe1b578c96db19b
test expr-28.791 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +3 E27 x 1363156bbee301_0110& E91
    convertToDouble +3E27
} 0x45a363156bbee301
test expr-28.792 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -9 E26 x -1743b34e18439b_010& E89
    convertToDouble -9E26
} 0xc58743b34e18439b
test expr-28.793 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +7 E25 x 1cf389cd46047d_00& E85
    convertToDouble +7E25
} 0x454cf389cd46047d
test expr-28.794 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -6 E27 x -1363156bbee301_0110& E92
    convertToDouble -6E27
} 0xc5b363156bbee301
test expr-28.795 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +2 E-21 x 12e3b40a0e9b4f_0111110& E-69
    convertToDouble +2E-21
} 0x3ba2e3b40a0e9b4f
test expr-28.796 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -5 E-22 x -12e3b40a0e9b4f_0111110& E-71
    convertToDouble -5E-22
} 0xbb82e3b40a0e9b4f
test expr-28.797 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -4 E-21 x -12e3b40a0e9b4f_0111110& E-68
    convertToDouble -4E-21
} 0xbbb2e3b40a0e9b4f
test expr-28.798 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +87 E25 x 167d2d5406637c_10001& E89
    convertToDouble +87E25
} 0x45867d2d5406637d
test expr-28.799 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -97 E24 x -140f232256e982_1000000001& E86
    convertToDouble -97E24
} 0xc5540f232256e983
test expr-28.800 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +82 E-24 x 18c87154dff6c6_1000000001& E-74
    convertToDouble +82E-24
} 0x3b58c87154dff6c7
test expr-28.801 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -41 E-24 x -18c87154dff6c6_1000000001& E-75
    convertToDouble -41E-24
} 0xbb48c87154dff6c7
test expr-28.802 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +76 E-23 x 1cb644dc1633c0_10000001& E-71
    convertToDouble +76E-23
} 0x3b8cb644dc1633c1
test expr-28.803 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +83 E25 x 15747ab143e353_011111111110& E89
    convertToDouble +83E25
} 0x4585747ab143e353
test expr-28.804 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -50 E27 x -1431e0fae6d721_0111110& E95
    convertToDouble -50E27
} 0xc5e431e0fae6d721
test expr-28.805 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +25 E27 x 1431e0fae6d721_0111110& E94
    convertToDouble +25E27
} 0x45d431e0fae6d721
test expr-28.806 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -99 E27 x -13fe2e171cda19_011110& E96
    convertToDouble -99E27
} 0xc5f3fe2e171cda19
test expr-28.807 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +97 E-10 x 14d4a1a3157dc7_011111110& E-27
    convertToDouble +97E-10
} 0x3e44d4a1a3157dc7
test expr-28.808 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -57 E-20 x -15077f6f3242e7_011111110& E-61
    convertToDouble -57E-20
} 0xbc25077f6f3242e7
test expr-28.809 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +997 E23 x 149e12f51c1a3c_10000000001& E86
    convertToDouble +997E23
} 0x45549e12f51c1a3d
test expr-28.810 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +776 E24 x 140f232256e982_1000000001& E89
    convertToDouble +776E24
} 0x45840f232256e983
test expr-28.811 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -388 E24 x -140f232256e982_1000000001& E88
    convertToDouble -388E24
} 0xc5740f232256e983
test expr-28.812 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +521 E-10 x 1bf891c92c0890_100000000001& E-25
    convertToDouble +521E-10
} 0x3e6bf891c92c0891
test expr-28.813 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -506 E-26 x -1877fa0260beb2_10000000001& E-78
    convertToDouble -506E-26
} 0xbb1877fa0260beb3
test expr-28.814 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +739 E-10 x 13d65e8c76722c_10000000001& E-24
    convertToDouble +739E-10
} 0x3e73d65e8c76722d
test expr-28.815 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -867 E-7 x -16ba56a8834168_100000000001& E-14
    convertToDouble -867E-7
} 0xbf16ba56a8834169
test expr-28.816 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -415 E24 x -15747ab143e353_011111111110& E88
    convertToDouble -415E24
} 0xc575747ab143e353
test expr-28.817 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +332 E25 x 15747ab143e353_011111111110& E91
    convertToDouble +332E25
} 0x45a5747ab143e353
test expr-28.818 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -664 E25 x -15747ab143e353_011111111110& E92
    convertToDouble -664E25
} 0xc5b5747ab143e353
test expr-28.819 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +291 E-13 x 1ffeebfc8b81b5_01111111111110& E-36
    convertToDouble +291E-13
} 0x3dbffeebfc8b81b5
test expr-28.820 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -982 E-8 x -14981285e98e79_0111111111110& E-17
    convertToDouble -982E-8
} 0xbee4981285e98e79
test expr-28.821 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +582 E-13 x 1ffeebfc8b81b5_01111111111110& E-35
    convertToDouble +582E-13
} 0x3dcffeebfc8b81b5
test expr-28.822 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -491 E-8 x -14981285e98e79_0111111111110& E-18
    convertToDouble -491E-8
} 0xbed4981285e98e79
test expr-28.823 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +4574 E26 x 1717c1a612f954_100000000001& E98
    convertToDouble +4574E26
} 0x461717c1a612f955
test expr-28.824 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -8609 E26 x -15bb6f942546ee_1000000000001& E99
    convertToDouble -8609E26
} 0xc625bb6f942546ef
test expr-28.825 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +2287 E26 x 1717c1a612f954_100000000001& E97
    convertToDouble +2287E26
} 0x460717c1a612f955
test expr-28.826 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -4818 E24 x -1f22b65eb419a0_10000000001& E91
    convertToDouble -4818E24
} 0xc5af22b65eb419a1
test expr-28.827 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +6529 E-8 x 111d89a8b5c142_100000000000001& E-14
    convertToDouble +6529E-8
} 0x3f111d89a8b5c143
test expr-28.828 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -8151 E-21 x -12cb804b61b898_1000000000000001& E-57
    convertToDouble -8151E-21
} 0xbc62cb804b61b899
test expr-28.829 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +1557 E-12 x 1abfc227ab1026_10000000000001& E-30
    convertToDouble +1557E-12
} 0x3e1abfc227ab1027
test expr-28.830 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -2573 E-18 x -172cef1ebbca44_10000000000001& E-49
    convertToDouble -2573E-18
} 0xbce72cef1ebbca45
test expr-28.831 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +4929 E-16 x 1157a604ed019f_0111111111111110& E-41
    convertToDouble +4929E-16
} 0x3d6157a604ed019f
test expr-28.832 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -3053 E-22 x -1686f435fe6b6b_011111111111110& E-62
    convertToDouble -3053E-22
} 0xbc1686f435fe6b6b
test expr-28.833 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +9858 E-16 x 1157a604ed019f_0111111111111110& E-40
    convertToDouble +9858E-16
} 0x3d7157a604ed019f
test expr-28.834 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -7767 E-11 x -14d971170ed055_011111111111110& E-24
    convertToDouble -7767E-11
} 0xbe74d971170ed055
test expr-28.835 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +54339 E26 x 1125782ec15cbe_100000000000000001& E102
    convertToDouble +54339E26
} 0x465125782ec15cbf
test expr-28.836 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -62409 E25 x -1f822c980d4bb2_100000000000000001& E98
    convertToDouble -62409E25
} 0xc61f822c980d4bb3
test expr-28.837 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +32819 E27 x 19e3be885fc16a_100000000000001& E104
    convertToDouble +32819E27
} 0x4679e3be885fc16b
test expr-28.838 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -89849 E27 x -11b8371b6dda04_1000000000000001& E106
    convertToDouble -89849E27
} 0xc691b8371b6dda05
test expr-28.839 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +63876 E-20 x 1703856844bdbe_1000000000000000000001& E-51
    convertToDouble +63876E-20
} 0x3cc703856844bdbf
test expr-28.840 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -15969 E-20 x -1703856844bdbe_1000000000000000000001& E-53
    convertToDouble -15969E-20
} 0xbca703856844bdbf
test expr-28.841 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +31938 E-20 x 1703856844bdbe_1000000000000000000001& E-52
    convertToDouble +31938E-20
} 0x3cb703856844bdbf
test expr-28.842 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -79845 E-21 x -1703856844bdbe_1000000000000000000001& E-54
    convertToDouble -79845E-21
} 0xbc9703856844bdbf
test expr-28.843 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +89306 E27 x 119cccff237e17_011111111111110& E106
    convertToDouble +89306E27
} 0x46919cccff237e17
test expr-28.844 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -25487 E24 x -1496968ba07117_01111111111110& E94
    convertToDouble -25487E24
} 0xc5d496968ba07117
test expr-28.845 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +79889 E24 x 10222a1c7e27d3_01111111111110& E96
    convertToDouble +79889E24
} 0x45f0222a1c7e27d3
test expr-28.846 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -97379 E26 x -1eba3685911519_011111111111111110& E102
    convertToDouble -97379E26
} 0xc65eba3685911519
test expr-28.847 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +81002 E-8 x 1a8af0b45d9531_0111111111111111110& E-11
    convertToDouble +81002E-8
} 0x3f4a8af0b45d9531
test expr-28.848 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -43149 E-25 x -146064de6ecbed_011111111111111110& E-68
    convertToDouble -43149E-25
} 0xbbb46064de6ecbed
test expr-28.849 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +40501 E-8 x 1a8af0b45d9531_0111111111111111110& E-12
    convertToDouble +40501E-8
} 0x3f3a8af0b45d9531
test expr-28.850 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -60318 E-10 x -194c988f217e51_011111111111111110& E-18
    convertToDouble -60318E-10
} 0xbed94c988f217e51
test expr-28.851 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -648299 E27 x -1ff6af0bf00100_10000000000000000001& E108
    convertToDouble -648299E27
} 0xc6bff6af0bf00101
test expr-28.852 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +780649 E24 x 13b4d36f9edd18_10000000000000000001& E99
    convertToDouble +780649E24
} 0x4623b4d36f9edd19
test expr-28.853 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +720919 E-14 x 1ef696965cbf04_10000000000000000000000001& E-28
    convertToDouble +720919E-14
} 0x3e3ef696965cbf05
test expr-28.854 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -629703 E-11 x -1a69626d2629d0_1000000000000000000000001& E-18
    convertToDouble -629703E-11
} 0xbeda69626d2629d1
test expr-28.855 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +557913 E24 x 1c2adb44b394bf_01111111111111111110& E98
    convertToDouble +557913E24
} 0x461c2adb44b394bf
test expr-28.856 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -847899 E23 x -111f88fb93dce9_011111111111111111110& E96
    convertToDouble -847899E23
} 0xc5f11f88fb93dce9
test expr-28.857 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +565445 E27 x 1be0eb55770d4d_0111111111111111110& E108
    convertToDouble +565445E27
} 0x46bbe0eb55770d4d
test expr-28.858 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -736531 E24 x -1297b853d64ac7_01111111111111111110& E99
    convertToDouble -736531E24
} 0xc62297b853d64ac7
test expr-28.859 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +680013 E-19 x 13240293e95c3b_01111111111111111111110& E-44
    convertToDouble +680013E-19
} 0x3d33240293e95c3b
test expr-28.860 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -529981 E-10 x -1bc948d999ac11_011111111111111111110& E-15
    convertToDouble -529981E-10
} 0xbf0bc948d999ac11
test expr-28.861 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +382923 E-23 x 11a8c1c10a1fc5_011111111111111111110& E-58
    convertToDouble +382923E-23
} 0x3c51a8c1c10a1fc5
test expr-28.862 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -633614 E-18 x -164b166995a9b7_011111111111111111110& E-41
    convertToDouble -633614E-18
} 0xbd664b166995a9b7
test expr-28.863 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +2165479 E27 x 1ab10c016c34b8_100000000000000000000001& E110
    convertToDouble +2165479E27
} 0x46dab10c016c34b9
test expr-28.864 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -8661916 E27 x -1ab10c016c34b8_100000000000000000000001& E112
    convertToDouble -8661916E27
} 0xc6fab10c016c34b9
test expr-28.865 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +4330958 E27 x 1ab10c016c34b8_100000000000000000000001& E111
    convertToDouble +4330958E27
} 0x46eab10c016c34b9
test expr-28.866 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -9391993 E22 x -12f78bec748c98_1000000000000000000001& E96
    convertToDouble -9391993E22
} 0xc5f2f78bec748c99
test expr-28.867 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -5767352 E-14 x -1ef696965cbf04_10000000000000000000000001& E-25
    convertToDouble -5767352E-14
} 0xbe6ef696965cbf05
test expr-28.868 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +7209190 E-15 x 1ef696965cbf04_10000000000000000000000001& E-28
    convertToDouble +7209190E-15
} 0x3e3ef696965cbf05
test expr-28.869 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -1441838 E-14 x -1ef696965cbf04_10000000000000000000000001& E-27
    convertToDouble -1441838E-14
} 0xbe4ef696965cbf05
test expr-28.870 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +8478990 E22 x 111f88fb93dce9_011111111111111111110& E96
    convertToDouble +8478990E22
} 0x45f11f88fb93dce9
test expr-28.871 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +1473062 E24 x 1297b853d64ac7_01111111111111111110& E100
    convertToDouble +1473062E24
} 0x463297b853d64ac7
test expr-28.872 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +8366487 E-14 x 167567f55b22e1_0111111111111111111111110& E-24
    convertToDouble +8366487E-14
} 0x3e767567f55b22e1
test expr-28.873 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -8399969 E-25 x -1efd8be1b15b43_011111111111111111111110& E-61
    convertToDouble -8399969E-25
} 0xbc2efd8be1b15b43
test expr-28.874 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +9366737 E-12 x 13a4ba87ddc13f_011111111111111111111110& E-17
    convertToDouble +9366737E-12
} 0x3ee3a4ba87ddc13f
test expr-28.875 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -9406141 E-13 x -1f8fd047c84d49_0111111111111111111111110& E-21
    convertToDouble -9406141E-13
} 0xbeaf8fd047c84d49
test expr-28.876 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +65970979 E24 x 1a055dd68f3e3c_1000000000000000000000000001& E105
    convertToDouble +65970979E24
} 0x468a055dd68f3e3d
test expr-28.877 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -65060671 E26 x -140c61c9916cf4_100000000000000000000000001& E112
    convertToDouble -65060671E26
} 0xc6f40c61c9916cf5
test expr-28.878 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +54923002 E27 x 1527d37d8b38ea_10000000000000000000000001& E115
    convertToDouble +54923002E27
} 0x472527d37d8b38eb
test expr-28.879 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -63846927 E25 x -1f7a9d79dad9b4_10000000000000000000000001& E108
    convertToDouble -63846927E25
} 0xc6bf7a9d79dad9b5
test expr-28.880 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +99585767 E-21 x 1c07e928406d2e_100000000000000000000000001& E-44
    convertToDouble +99585767E-21
} 0x3d3c07e928406d2f
test expr-28.881 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +67488159 E25 x 10a31a03822bc9_011111111111111111111111111110& E109
    convertToDouble +67488159E25
} 0x46c0a31a03822bc9
test expr-28.882 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -69005339 E24 x -1b37c234aae77b_011111111111111111111111110& E105
    convertToDouble -69005339E24
} 0xc68b37c234aae77b
test expr-28.883 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +81956786 E27 x 1f919023fcb6fd_0111111111111111111111111110& E115
    convertToDouble +81956786E27
} 0x472f919023fcb6fd
test expr-28.884 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -40978393 E27 x -1f919023fcb6fd_0111111111111111111111111110& E114
    convertToDouble -40978393E27
} 0xc71f919023fcb6fd
test expr-28.885 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +77505754 E-12 x 145152b6f85e09_0111111111111111111111111110& E-14
    convertToDouble +77505754E-12
} 0x3f145152b6f85e09
test expr-28.886 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -38752877 E-12 x -145152b6f85e09_0111111111111111111111111110& E-15
    convertToDouble -38752877E-12
} 0xbf045152b6f85e09
test expr-28.887 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +82772981 E-15 x 16381dae63505f_0111111111111111111111111111110& E-24
    convertToDouble +82772981E-15
} 0x3e76381dae63505f
test expr-28.888 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -95593517 E-25 x -160ad862d8537d_0111111111111111111111111110& E-57
    convertToDouble -95593517E-25
} 0xbc660ad862d8537d
test expr-28.889 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +200036989 E25 x 18a80dedbc575e_10000000000000000000000000001& E110
    convertToDouble +200036989E25
} 0x46d8a80dedbc575f
test expr-28.890 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -772686455 E27 x -129a0c45ceca7a_1000000000000000000000000000001& E119
    convertToDouble -772686455E27
} 0xc7629a0c45ceca7b
test expr-28.891 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +859139907 E23 x 10f18c4dd0ffe2_10000000000000000000000000001& E106
    convertToDouble +859139907E23
} 0x4690f18c4dd0ffe3
test expr-28.892 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -400073978 E25 x -18a80dedbc575e_10000000000000000000000000001& E111
    convertToDouble -400073978E25
} 0xc6e8a80dedbc575f
test expr-28.893 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +569014327 E-14 x 17ddbeac19d3b2_100000000000000000000000000001& E-18
    convertToDouble +569014327E-14
} 0x3ed7ddbeac19d3b3
test expr-28.894 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -794263862 E-15 x -1aa6acb41dfc52_1000000000000000000000000000001& E-21
    convertToDouble -794263862E-15
} 0xbeaaa6acb41dfc53
test expr-28.895 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +397131931 E-15 x 1aa6acb41dfc52_1000000000000000000000000000001& E-22
    convertToDouble +397131931E-15
} 0x3e9aa6acb41dfc53
test expr-28.896 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -380398957 E-16 x -146c29d8331024_100000000000000000000000000001& E-25
    convertToDouble -380398957E-16
} 0xbe646c29d8331025
test expr-28.897 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +567366773 E27 x 1b5155dd5417f9_0111111111111111111111111111110& E118
    convertToDouble +567366773E27
} 0x475b5155dd5417f9
test expr-28.898 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -337440795 E24 x -10a31a03822bc9_011111111111111111111111111110& E108
    convertToDouble -337440795E24
} 0xc6b0a31a03822bc9
test expr-28.899 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +134976318 E25 x 10a31a03822bc9_011111111111111111111111111110& E110
    convertToDouble +134976318E25
} 0x46d0a31a03822bc9
test expr-28.900 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -269952636 E25 x -10a31a03822bc9_011111111111111111111111111110& E111
    convertToDouble -269952636E25
} 0xc6e0a31a03822bc9
test expr-28.901 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +932080597 E-20 x 147f25b4941e5b_0111111111111111111111111111110& E-37
    convertToDouble +932080597E-20
} 0x3da47f25b4941e5b
test expr-28.902 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -331091924 E-15 x -16381dae63505f_0111111111111111111111111111110& E-22
    convertToDouble -331091924E-15
} 0xbe96381dae63505f
test expr-28.903 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -413864905 E-16 x -16381dae63505f_0111111111111111111111111111110& E-25
    convertToDouble -413864905E-16
} 0xbe66381dae63505f
test expr-28.904 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +8539246247 E26 x 148eb7813eaeba_10000000000000000000000000000001& E119
    convertToDouble +8539246247E26
} 0x47648eb7813eaebb
test expr-28.905 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -5859139791 E26 x -1c35f28719d478_10000000000000000000000000000001& E118
    convertToDouble -5859139791E26
} 0xc75c35f28719d479
test expr-28.906 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +6105010149 E24 x 12d000fb2b138a_1000000000000000000000000000000001& E112
    convertToDouble +6105010149E24
} 0x46f2d000fb2b138b
test expr-28.907 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -3090745820 E27 x -129a0c45ceca7a_1000000000000000000000000000001& E121
    convertToDouble -3090745820E27
} 0xc7829a0c45ceca7b
test expr-28.908 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +3470877773 E-20 x 1314d381f2c31e_1000000000000000000000000000000001& E-35
    convertToDouble +3470877773E-20
} 0x3dc314d381f2c31f
test expr-28.909 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -6136309089 E-27 x -1c4c799fab4328_1000000000000000000000000000000001& E-58
    convertToDouble -6136309089E-27
} 0xbc5c4c799fab4329
test expr-28.910 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +8917758713 E-19 x 1ea424bda7d7f4_100000000000000000000000000000001& E-31
    convertToDouble +8917758713E-19
} 0x3e0ea424bda7d7f5
test expr-28.911 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -6941755546 E-20 x -1314d381f2c31e_1000000000000000000000000000000001& E-34
    convertToDouble -6941755546E-20
} 0xbdd314d381f2c31f
test expr-28.912 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +9194900535 E25 x 11b56f9c090dfb_011111111111111111111111111111111110& E116
    convertToDouble +9194900535E25
} 0x4731b56f9c090dfb
test expr-28.913 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -1838980107 E26 x -11b56f9c090dfb_011111111111111111111111111111111110& E117
    convertToDouble -1838980107E26
} 0xc741b56f9c090dfb
test expr-28.914 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +7355920428 E26 x 11b56f9c090dfb_011111111111111111111111111111111110& E119
    convertToDouble +7355920428E26
} 0x4761b56f9c090dfb
test expr-28.915 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -3677960214 E26 x -11b56f9c090dfb_011111111111111111111111111111111110& E118
    convertToDouble -3677960214E26
} 0xc751b56f9c090dfb
test expr-28.916 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +8473634343 E-17 x 16bf0984b232b7_0111111111111111111111111111111110& E-24
    convertToDouble +8473634343E-17
} 0x3e76bf0984b232b7
test expr-28.917 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -8870766274 E-16 x -1dc3ee22137269_0111111111111111111111111111111110& E-21
    convertToDouble -8870766274E-16
} 0xbeadc3ee22137269
test expr-28.918 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +4435383137 E-16 x 1dc3ee22137269_0111111111111111111111111111111110& E-22
    convertToDouble +4435383137E-16
} 0x3e9dc3ee22137269
test expr-28.919 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -9598990129 E-15 x -14216b286031e7_01111111111111111111111111111111110& E-17
    convertToDouble -9598990129E-15
} 0xbee4216b286031e7
test expr-28.920 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +71563496764 E26 x 15890d1ef6a0da_10000000000000000000000000000000000001& E122
    convertToDouble +71563496764E26
} 0x4795890d1ef6a0db
test expr-28.921 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -89454370955 E25 x -15890d1ef6a0da_10000000000000000000000000000000000001& E119
    convertToDouble -89454370955E25
} 0xc765890d1ef6a0db
test expr-28.922 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +17890874191 E26 x 15890d1ef6a0da_10000000000000000000000000000000000001& E120
    convertToDouble +17890874191E26
} 0x4775890d1ef6a0db
test expr-28.923 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -35781748382 E26 x -15890d1ef6a0da_10000000000000000000000000000000000001& E121
    convertToDouble -35781748382E26
} 0xc785890d1ef6a0db
test expr-28.924 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +57973447842 E-19 x 18e63f7cf5313c_1000000000000000000000000000000000000001& E-28
    convertToDouble +57973447842E-19
} 0x3e38e63f7cf5313d
test expr-28.925 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -28986723921 E-19 x -18e63f7cf5313c_1000000000000000000000000000000000000001& E-29
    convertToDouble -28986723921E-19
} 0xbe28e63f7cf5313d
test expr-28.926 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +76822711313 E-19 x 107f5f8b3bf818_100000000000000000000000000000000001& E-27
    convertToDouble +76822711313E-19
} 0x3e407f5f8b3bf819
test expr-28.927 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -97699466874 E-20 x -10c8de34de806e_10000000000000000000000000000000001& E-30
    convertToDouble -97699466874E-20
} 0xbe10c8de34de806f
test expr-28.928 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +67748656762 E27 x 197bf5559b31fd_01111111111111111111111111111111111110& E125
    convertToDouble +67748656762E27
} 0x47c97bf5559b31fd
test expr-28.929 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -19394840991 E24 x -1de1ea791a6e7d_0111111111111111111111111111111111110& E113
    convertToDouble -19394840991E24
} 0xc70de1ea791a6e7d
test expr-28.930 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +38789681982 E24 x 1de1ea791a6e7d_0111111111111111111111111111111111110& E114
    convertToDouble +38789681982E24
} 0x471de1ea791a6e7d
test expr-28.931 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -33874328381 E27 x -197bf5559b31fd_01111111111111111111111111111111111110& E124
    convertToDouble -33874328381E27
} 0xc7b97bf5559b31fd
test expr-28.932 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +54323763886 E-27 x 1f50c5c63e5441_0111111111111111111111111111111111110& E-55
    convertToDouble +54323763886E-27
} 0x3c8f50c5c63e5441
test expr-28.933 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -58987193887 E-20 x -14449185a4c829_011111111111111111111111111111111111110& E-31
    convertToDouble -58987193887E-20
} 0xbe04449185a4c829
test expr-28.934 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +27161881943 E-27 x 1f50c5c63e5441_0111111111111111111111111111111111110& E-56
    convertToDouble +27161881943E-27
} 0x3c7f50c5c63e5441
test expr-28.935 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -93042648033 E-19 x -13fb12dc023fd3_0111111111111111111111111111111111110& E-27
    convertToDouble -93042648033E-19
} 0xbe43fb12dc023fd3
test expr-28.936 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +520831059055 E27 x 187d469cb69dd0_10000000000000000000000000000000000000001& E128
    convertToDouble +520831059055E27
} 0x47f87d469cb69dd1
test expr-28.937 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -768124264394 E25 x -171d6a019edae8_1000000000000000000000000000000000000001& E122
    convertToDouble -768124264394E25
} 0xc7971d6a019edae9
test expr-28.938 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +384062132197 E25 x 171d6a019edae8_1000000000000000000000000000000000000001& E121
    convertToDouble +384062132197E25
} 0x47871d6a019edae9
test expr-28.939 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +765337749889 E-25 x 158ad6f5d0a854_100000000000000000000000000000000000000001& E-44
    convertToDouble +765337749889E-25
} 0x3d358ad6f5d0a855
test expr-28.940 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +794368912771 E25 x 17e79872f2f7ef_01111111111111111111111111111111111111110& E122
    convertToDouble +794368912771E25
} 0x4797e79872f2f7ef
test expr-28.941 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -994162090146 E23 x -132598f85e658b_011111111111111111111111111111111111110& E116
    convertToDouble -994162090146E23
} 0xc7332598f85e658b
test expr-28.942 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +781652779431 E26 x 1d670adf52038f_01111111111111111111111111111111111110& E125
    convertToDouble +781652779431E26
} 0x47cd670adf52038f
test expr-28.943 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +910077190046 E-26 x 147e3ce1871d79_01111111111111111111111111111111111111110& E-47
    convertToDouble +910077190046E-26
} 0x3d047e3ce1871d79
test expr-28.944 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -455038595023 E-26 x -147e3ce1871d79_01111111111111111111111111111111111111110& E-48
    convertToDouble -455038595023E-26
} 0xbcf47e3ce1871d79
test expr-28.945 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +471897551096 E-20 x 14449185a4c829_011111111111111111111111111111111111110& E-28
    convertToDouble +471897551096E-20
} 0x3e34449185a4c829
test expr-28.946 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -906698409911 E-21 x -1f27674f7d5745_0111111111111111111111111111111111111110& E-31
    convertToDouble -906698409911E-21
} 0xbe0f27674f7d5745
test expr-28.947 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +8854128003935 E25 x 10a71b8948faac_100000000000000000000000000000000000000001& E126
    convertToDouble +8854128003935E25
} 0x47d0a71b8948faad
test expr-28.948 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -8146122716299 E27 x -17f0762ac05654_1000000000000000000000000000000000000000001& E132
    convertToDouble -8146122716299E27
} 0xc837f0762ac05655
test expr-28.949 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +7083302403148 E26 x 10a71b8948faac_100000000000000000000000000000000000000001& E129
    convertToDouble +7083302403148E26
} 0x4800a71b8948faad
test expr-28.950 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -3541651201574 E26 x -10a71b8948faac_100000000000000000000000000000000000000001& E128
    convertToDouble -3541651201574E26
} 0xc7f0a71b8948faad
test expr-28.951 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +8394920649291 E-25 x 1d8978e8c1cc78_100000000000000000000000000000000000000000001& E-41
    convertToDouble +8394920649291E-25
} 0x3d6d8978e8c1cc79
test expr-28.952 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -7657975756753 E-22 x -1a5006d695fef0_1000000000000000000000000000000000000000000001& E-31
    convertToDouble -7657975756753E-22
} 0xbe0a5006d695fef1
test expr-28.953 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +5473834002228 E-20 x 1d632e1f745624_100000000000000000000000000000000000000000001& E-25
    convertToDouble +5473834002228E-20
} 0x3e6d632e1f745625
test expr-28.954 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -6842292502785 E-21 x -1d632e1f745624_100000000000000000000000000000000000000000001& E-28
    convertToDouble -6842292502785E-21
} 0xbe3d632e1f745625
test expr-28.955 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -2109568884597 E25 x -1fbdc386609b13_011111111111111111111111111111111111111110& E123
    convertToDouble -2109568884597E25
} 0xc7afbdc386609b13
test expr-28.956 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +8438275538388 E25 x 1fbdc386609b13_011111111111111111111111111111111111111110& E125
    convertToDouble +8438275538388E25
} 0x47cfbdc386609b13
test expr-28.957 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -4219137769194 E25 x -1fbdc386609b13_011111111111111111111111111111111111111110& E124
    convertToDouble -4219137769194E25
} 0xc7bfbdc386609b13
test expr-28.958 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +3200141789841 E-25 x 1684dcea3829f7_0111111111111111111111111111111111111111110& E-42
    convertToDouble +3200141789841E-25
} 0x3d5684dcea3829f7
test expr-28.959 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -8655689322607 E-22 x -1dbd9ff5dc8991_011111111111111111111111111111111111111110& E-31
    convertToDouble -8655689322607E-22
} 0xbe0dbd9ff5dc8991
test expr-28.960 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +6400283579682 E-25 x 1684dcea3829f7_0111111111111111111111111111111111111111110& E-41
    convertToDouble +6400283579682E-25
} 0x3d6684dcea3829f7
test expr-28.961 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -8837719634493 E-21 x -12fa9676d2585b_011111111111111111111111111111111111111110& E-27
    convertToDouble -8837719634493E-21
} 0xbe42fa9676d2585b
test expr-28.962 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +19428217075297 E24 x 1d3b7a1d154aba_10000000000000000000000000000000000000000000001& E123
    convertToDouble +19428217075297E24
} 0x47ad3b7a1d154abb
test expr-28.963 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -38856434150594 E24 x -1d3b7a1d154aba_10000000000000000000000000000000000000000000001& E124
    convertToDouble -38856434150594E24
} 0xc7bd3b7a1d154abb
test expr-28.964 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +77712868301188 E24 x 1d3b7a1d154aba_10000000000000000000000000000000000000000000001& E125
    convertToDouble +77712868301188E24
} 0x47cd3b7a1d154abb
test expr-28.965 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -77192037242133 E27 x -1c5b1ab32d5dbe_1000000000000000000000000000000000000000000000001& E135
    convertToDouble -77192037242133E27
} 0xc86c5b1ab32d5dbf
test expr-28.966 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +76579757567530 E-23 x 1a5006d695fef0_1000000000000000000000000000000000000000000001& E-31
    convertToDouble +76579757567530E-23
} 0x3e0a5006d695fef1
test expr-28.967 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +15315951513506 E-22 x 1a5006d695fef0_1000000000000000000000000000000000000000000001& E-30
    convertToDouble +15315951513506E-22
} 0x3e1a5006d695fef1
test expr-28.968 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -38289878783765 E-23 x -1a5006d695fef0_1000000000000000000000000000000000000000000001& E-32
    convertToDouble -38289878783765E-23
} 0xbdfa5006d695fef1
test expr-28.969 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +49378033925202 E25 x 1737aa2567167b_0111111111111111111111111111111111111111111110& E128
    convertToDouble +49378033925202E25
} 0x47f737aa2567167b
test expr-28.970 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -50940527102367 E24 x -132964f2944b05_0111111111111111111111111111111111111111111111110& E125
    convertToDouble -50940527102367E24
} 0xc7c32964f2944b05
test expr-28.971 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +98756067850404 E25 x 1737aa2567167b_0111111111111111111111111111111111111111111110& E129
    convertToDouble +98756067850404E25
} 0x480737aa2567167b
test expr-28.972 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -99589397544892 E26 x -1d4446075c4933_0111111111111111111111111111111111111111111110& E132
    convertToDouble -99589397544892E26
} 0xc83d4446075c4933
test expr-28.973 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -56908598265713 E-25 x -190756ab1ed6b3_011111111111111111111111111111111111111111111110& E-38
    convertToDouble -56908598265713E-25
} 0xbd990756ab1ed6b3
test expr-28.974 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +97470695699657 E-22 x 14ee821710e655_01111111111111111111111111111111111111111111110& E-27
    convertToDouble +97470695699657E-22
} 0x3e44ee821710e655
test expr-28.975 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -35851901247343 E-25 x -1f8921657e1581_0111111111111111111111111111111111111111111110& E-39
    convertToDouble -35851901247343E-25
} 0xbd8f8921657e1581
test expr-28.976 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +154384074484266 E27 x 1c5b1ab32d5dbe_1000000000000000000000000000000000000000000000001& E136
    convertToDouble +154384074484266E27
} 0x487c5b1ab32d5dbf
test expr-28.977 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -308768148968532 E27 x -1c5b1ab32d5dbe_1000000000000000000000000000000000000000000000001& E137
    convertToDouble -308768148968532E27
} 0xc88c5b1ab32d5dbf
test expr-28.978 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +910990389005985 E23 x 112242592ae54a_100000000000000000000000000000000000000000000001& E126
    convertToDouble +910990389005985E23
} 0x47d12242592ae54b
test expr-28.979 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +271742424169201 E-27 x 131f46bcf7b452_10000000000000000000000000000000000000000000000001& E-42
    convertToDouble +271742424169201E-27
} 0x3d531f46bcf7b453
test expr-28.980 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -543484848338402 E-27 x -131f46bcf7b452_10000000000000000000000000000000000000000000000001& E-41
    convertToDouble -543484848338402E-27
} 0xbd631f46bcf7b453
test expr-28.981 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +162192083357563 E-26 x 1c887b68658760_1000000000000000000000000000000000000000000000001& E-40
    convertToDouble +162192083357563E-26
} 0x3d7c887b68658761
test expr-28.982 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -869254552770081 E-23 x -12aac70665485e_1000000000000000000000000000000000000000000000000001& E-27
    convertToDouble -869254552770081E-23
} 0xbe42aac70665485f
test expr-28.983 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +664831007626046 E24 x 1f429cb67eb075_011111111111111111111111111111111111111111111111110& E128
    convertToDouble +664831007626046E24
} 0x47ff429cb67eb075
test expr-28.984 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -332415503813023 E24 x -1f429cb67eb075_011111111111111111111111111111111111111111111111110& E127
    convertToDouble -332415503813023E24
} 0xc7ef429cb67eb075
test expr-28.985 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +943701829041427 E24 x 162fb2e38ee461_01111111111111111111111111111111111111111111111110& E129
    convertToDouble +943701829041427E24
} 0x48062fb2e38ee461
test expr-28.986 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -101881054204734 E24 x -132964f2944b05_0111111111111111111111111111111111111111111111110& E126
    convertToDouble -101881054204734E24
} 0xc7d32964f2944b05
test expr-28.987 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +828027839666967 E-27 x 1d2236349da3cd_011111111111111111111111111111111111111111111111110& E-41
    convertToDouble +828027839666967E-27
} 0x3d6d2236349da3cd
test expr-28.988 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -280276135608777 E-27 x -13b901892fd0bf_0111111111111111111111111111111111111111111111110& E-42
    convertToDouble -280276135608777E-27
} 0xbd53b901892fd0bf
test expr-28.989 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +212839188833879 E-21 x 1c91194dc2d40b_0111111111111111111111111111111111111111111111110& E-23
    convertToDouble +212839188833879E-21
} 0x3e8c91194dc2d40b
test expr-28.990 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -113817196531426 E-25 x -190756ab1ed6b3_011111111111111111111111111111111111111111111110& E-37
    convertToDouble -113817196531426E-25
} 0xbda90756ab1ed6b3
test expr-28.991 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +9711553197796883 E27 x 1bdeec25c0f03e_10000000000000000000000000000000000000000000000000001& E142
    convertToDouble +9711553197796883E27
} 0x48dbdeec25c0f03f
test expr-28.992 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -2739849386524269 E26 x -19295ade212370_1000000000000000000000000000000000000000000000000001& E137
    convertToDouble -2739849386524269E26
} 0xc889295ade212371
test expr-28.993 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +5479698773048538 E26 x 19295ade212370_1000000000000000000000000000000000000000000000000001& E138
    convertToDouble +5479698773048538E26
} 0x4899295ade212371
test expr-28.994 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +6124568318523113 E-25 x 150b3a2e0aff14_1000000000000000000000000000000000000000000000000000001& E-31
    convertToDouble +6124568318523113E-25
} 0x3e050b3a2e0aff15
test expr-28.995 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -1139777988171071 E-24 x -1394cbee428ea4_10000000000000000000000000000000000000000000000000001& E-30
    convertToDouble -1139777988171071E-24
} 0xbe1394cbee428ea5
test expr-28.996 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +6322612303128019 E-27 x 1bcea0ec21e250_1000000000000000000000000000000000000000000000000000001& E-38
    convertToDouble +6322612303128019E-27
} 0x3d9bcea0ec21e251
test expr-28.997 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -2955864564844617 E-25 x -1450030e26c6dc_10000000000000000000000000000000000000000000000000001& E-32
    convertToDouble -2955864564844617E-25
} 0xbdf450030e26c6dd
test expr-28.998 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -9994029144998961 E25 x -125b2b7fed4a61_0111111111111111111111111111111111111111111111111110& E136
    convertToDouble -9994029144998961E25
} 0xc8725b2b7fed4a61
test expr-28.999 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -2971238324022087 E27 x -110dd7a301db67_0111111111111111111111111111111111111111111111111110& E141
    convertToDouble -2971238324022087E27
} 0xc8c10dd7a301db67
test expr-28.1000 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -1656055679333934 E-27 x -1d2236349da3cd_011111111111111111111111111111111111111111111111110& E-40
    convertToDouble -1656055679333934E-27
} 0xbd7d2236349da3cd
test expr-28.1001 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -1445488709150234 E-26 x -1fc960c59526c7_0111111111111111111111111111111111111111111111110& E-37
    convertToDouble -1445488709150234E-26
} 0xbdafc960c59526c7
test expr-28.1002 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +55824717499885172 E27 x 1406b0cd17fd56_1000000000000000000000000000000000000000000000000000000001& E145
    convertToDouble +55824717499885172E27
} 0x490406b0cd17fd57
test expr-28.1003 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -69780896874856465 E26 x -1406b0cd17fd56_1000000000000000000000000000000000000000000000000000000001& E142
    convertToDouble -69780896874856465E26
} 0xc8d406b0cd17fd57
test expr-28.1004 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +84161538867545199 E25 x 13529217bdce6c_10000000000000000000000000000000000000000000000000000000001& E139
    convertToDouble +84161538867545199E25
} 0x48a3529217bdce6d
test expr-28.1005 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -27912358749942586 E27 x -1406b0cd17fd56_1000000000000000000000000000000000000000000000000000000001& E144
    convertToDouble -27912358749942586E27
} 0xc8f406b0cd17fd57
test expr-28.1006 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +24711112462926331 E-25 x 153a07f6040d22_100000000000000000000000000000000000000000000000000000001& E-29
    convertToDouble +24711112462926331E-25
} 0x3e253a07f6040d23
test expr-28.1007 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -12645224606256038 E-27 x -1bcea0ec21e250_1000000000000000000000000000000000000000000000000000001& E-37
    convertToDouble -12645224606256038E-27
} 0xbdabcea0ec21e251
test expr-28.1008 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -12249136637046226 E-25 x -150b3a2e0aff14_1000000000000000000000000000000000000000000000000000001& E-30
    convertToDouble -12249136637046226E-25
} 0xbe150b3a2e0aff15
test expr-28.1009 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +74874448287465757 E27 x 1adc21d1d50b09_01111111111111111111111111111111111111111111111111111110& E145
    convertToDouble +74874448287465757E27
} 0x490adc21d1d50b09
test expr-28.1010 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -35642836832753303 E24 x -1a2fac2b421f53_0111111111111111111111111111111111111111111111111111110& E134
    convertToDouble -35642836832753303E24
} 0xc85a2fac2b421f53
test expr-28.1011 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -71285673665506606 E24 x -1a2fac2b421f53_0111111111111111111111111111111111111111111111111111110& E135
    convertToDouble -71285673665506606E24
} 0xc86a2fac2b421f53
test expr-28.1012 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +43723334984997307 E-26 x 1e0be3f392c549_01111111111111111111111111111111111111111111111111111110& E-32
    convertToDouble +43723334984997307E-26
} 0x3dfe0be3f392c549
test expr-28.1013 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN +10182419849537963 E-24 x 15ddd831ebbe53_011111111111111111111111111111111111111111111111111110& E-27
    convertToDouble +10182419849537963E-24
} 0x3e45ddd831ebbe53
test expr-28.1014 {input floating-point conversion} {ieeeFloatingPoint} {
    # Ad2b dieee UN -93501703572661982 E-26 x -10103f97ea6e13_0111111111111111111111111111111111111111111111111110& E-30
    convertToDouble -93501703572661982E-26
} 0xbe10103f97ea6e13

test expr-29.1 {smallest representible number} {ieeeFloatingPoint} {
    list [catch {convertToDouble 4.9406564584124654e-324} result] \
	$result \
	[catch {convertToDouble 2.4703282292062327e-324} result] \
	$result \
	[catch {convertToDouble 2.47032822920623e-324} result] \
	$result
} {0 0x0000000000000001 0 0x0000000000000001 0 0x0000000000000000}
test expr-29.2 {smallest representible number} {ieeeFloatingPoint} {
    list [catch {convertToDouble -4.9406564584124654e-324} result] \
	$result \
	[catch {convertToDouble -2.4703282292062327e-324} result] \
	$result \
	[catch {convertToDouble -2.47032822920623e-324} result] \
	$result
} {0 0x8000000000000001 0 0x8000000000000001 0 0x8000000000000000}
test expr-29.3 {silent underflow on input conversion} {ieeeFloatingPoint} {
    set v ?
    list [scan 2.47032822920623e-324 %g v] $v
} {1 0.0}
test expr-29.4 {silent underflow on input conversion} {ieeeFloatingPoint} {
    set v ?
    list [scan -2.47032822920623e-324 %g v] $v
} {1 -0.0}

test expr-30.1 {largest representible number} {ieeeFloatingPoint} {
    list [catch {convertToDouble 1.7976931348623155e+308} result] \
	$result \
	[catch {convertToDouble 1.7976931348623157e+308} result] \
	$result \
	[catch {convertToDouble 1.7976931348623159e+308} result] \
	$result
} {0 0x7feffffffffffffe 0 0x7fefffffffffffff 0 0x7ff0000000000000}
test expr-30.2 {largest representible number} {ieeeFloatingPoint} {
    list [catch {convertToDouble -1.7976931348623155e+308} result] \
	$result \
	[catch {convertToDouble -1.7976931348623157e+308} result] \
	$result \
	[catch {convertToDouble -1.7976931348623159e+308} result] \
	$result
} {0 0xffeffffffffffffe 0 0xffefffffffffffff 0 0xfff0000000000000}
test expr-30.3 {silent overflow on input conversion} {ieeeFloatingPoint} {
    set v ?
    list [scan 1.7976931348623159e+308 %f v] $v
} {1 Inf}
test expr-30.4 {silent overflow on input conversion} {ieeeFloatingPoint} {
    set v ?
    list [scan -1.7976931348623159e+308 %f v] $v
} {1 -Inf}

# bool() tests (TIP #182)
set i 0
foreach s {yes true on} {
    test expr-31.$i.0 {boolean conversion} {expr bool($s)} 1
    test expr-31.$i.1 {boolean conversion} {expr bool(!$s)} 0
    test expr-31.$i.2 {boolean conversion} {expr bool("$s")} 1
    test expr-31.$i.3 {boolean conversion} {expr bool(!"$s")} 0
    set j 1
    while {$j < [string length $s]-1} {
	test expr-31.$i.4.$j {boolean conversion} {
	    expr bool([string range $s 0 $j])
	} 1
	test expr-31.$i.5.$j {boolean conversion} {
	    expr bool("[string range $s 0 $j]")
	} 1
	incr j
    }
    incr i
}
test expr-31.0.4.0 {boolean conversion} {expr bool(y)} 1
test expr-31.0.5.0 {boolean conversion} {expr bool("y")} 1
test expr-31.1.4.0 {boolean conversion} {expr bool(t)} 1
test expr-31.1.5.0 {boolean conversion} {expr bool("t")} 1
test expr-31.2.4.0 {boolean conversion} -body {
    expr bool(o)
} -returnCodes error -match glob -result *
test expr-31.2.5.0 {boolean conversion} -body {
    expr bool("o")
} -returnCodes error -match glob -result *
foreach s {no false off} {
    test expr-31.$i.0 {boolean conversion} {expr bool($s)} 0
    test expr-31.$i.1 {boolean conversion} {expr bool(!$s)} 1
    test expr-31.$i.2 {boolean conversion} {expr bool("$s")} 0
    test expr-31.$i.3 {boolean conversion} {expr bool(!"$s")} 1
    set j 1
    while {$j < [string length $s]-1} {
	test expr-31.$i.4.$j {boolean conversion} {
	    expr bool([string range $s 0 $j])
	} 0
	test expr-31.$i.5.$j {boolean conversion} {
	    expr bool("[string range $s 0 $j]")
	} 0
	incr j
    }
    incr i
}
test expr-31.3.4.0 {boolean conversion} {expr bool(n)} 0
test expr-31.3.5.0 {boolean conversion} {expr bool("n")} 0
test expr-31.4.4.0 {boolean conversion} {expr bool(f)} 0
test expr-31.4.5.0 {boolean conversion} {expr bool("f")} 0
test expr-31.6  {boolean conversion} {expr bool(-1 + 1)} 0
test expr-31.7  {boolean conversion} {expr bool(0 + 1)} 1
test expr-31.8  {boolean conversion} {expr bool(0.0)} 0
test expr-31.9  {boolean conversion} {expr bool(0x0)} 0
test expr-31.10 {boolean conversion} {expr bool(wide(0))} 0
test expr-31.11 {boolean conversion} {expr bool(5.0)} 1
test expr-31.12 {boolean conversion} {expr bool(5)} 1
test expr-31.13 {boolean conversion} {expr bool(0x5)} 1
test expr-31.14 {boolean conversion} {expr bool(wide(5))} 1
test expr-31.15 {boolean conversion} -body {
    expr bool("fred")
} -returnCodes error -match glob -result *

test expr-32.1 {expr mod basics} {
    set mod_nums [list \
	{-3 1} {-3 2} {-3 3} {-3 4} {-3 5} \
	{-3 -1} {-3 -2} {-3 -3} {-3 -4} {-3 -5} \
	{-2 1} {-2 2} {-2 3} {-2 4} {-2 5} \
	{-2 -1} {-2 -2} {-2 -3} {-2 -4} {-2 -5} \
	{-1 1} {-1 2} {-1 3} {-1 4} {-1 5} \
	{-1 -1} {-1 -2} {-1 -3} {-1 -4} {-1 -5} \
	{0 -100} {0 -1} {0 1} {0 100} \
	{1 1} {1 2} {1 3} {1 4} {1 5} \
	{1 -1} {1 -2} {1 -3} {1 -4} {1 -5} \
	{2 1} {2 2} {2 3} {2 4} {2 5} \
	{2 -1} {2 -2} {2 -3} {2 -4} {2 -5} \
	{3 1} {3 2} {3 3} {3 4} {3 5} \
	{3 -1} {3 -2} {3 -3} {3 -4} {3 -5} \
	]
    set results [list]
    foreach pair $mod_nums {
	set dividend [lindex $pair 0]
	set divisor [lindex $pair 1]
	lappend results [expr {$dividend % $divisor}]
    }
    set results
} [list \
    0 1 0 1 2 \
    0 -1 0 -3 -3 \
    0 0 1 2 3 \
    0 0 -2 -2 -2 \
    0 1 2 3 4 \
    0 -1 -1 -1 -1 \
    0 0 0 0 \
    0 1 1 1 1 \
    0 -1 -2 -3 -4 \
    0 0 2 2 2 \
    0 0 -1 -2 -3 \
    0 1 0 3 3 \
    0 -1 0 -1 -2 \
    ]

test expr-32.2 {expr div basics} {
    set mod_nums [list \
	{-3 1} {-3 2} {-3 3} {-3 4} {-3 5} \
	{-3 -1} {-3 -2} {-3 -3} {-3 -4} {-3 -5} \
	{-2 1} {-2 2} {-2 3} {-2 4} {-2 5} \
	{-2 -1} {-2 -2} {-2 -3} {-2 -4} {-2 -5} \
	{-1 1} {-1 2} {-1 3} {-1 4} {-1 5} \
	{-1 -1} {-1 -2} {-1 -3} {-1 -4} {-1 -5} \
	{0 -100} {0 -1} {0 1} {0 100} \
	{1 1} {1 2} {1 3} {1 4} {1 5} \
	{1 -1} {1 -2} {1 -3} {1 -4} {1 -5} \
	{2 1} {2 2} {2 3} {2 4} {2 5} \
	{2 -1} {2 -2} {2 -3} {2 -4} {2 -5} \
	{3 1} {3 2} {3 3} {3 4} {3 5} \
	{3 -1} {3 -2} {3 -3} {3 -4} {3 -5} \
	]
    set results [list]
    foreach pair $mod_nums {
	set dividend [lindex $pair 0]
	set divisor [lindex $pair 1]
	lappend results [expr {$dividend / $divisor}]
    }
    set results
} [list \
    -3 -2 -1 -1 -1 \
    3 1 1 0 0 \
    -2 -1 -1 -1 -1 \
    2 1 0 0 0 \
    -1 -1 -1 -1 -1 \
    1 0 0 0 0 \
    0 0 0 0 \
    1 0 0 0 0 \
    -1 -1 -1 -1 -1 \
    2 1 0 0 0 \
    -2 -1 -1 -1 -1 \
    3 1 1 0 0 \
    -3 -2 -1 -1 -1 \
    ]

test expr-32.3 {Bug 1585704} {
    expr 1%(1<<63)
} 1
test expr-32.4 {Bug 1585704} {
    expr -1%(1<<63)
} [expr (1<<63)-1]
test expr-32.5 {Bug 1585704} {
    expr (1<<32)%(1<<63)
} [expr 1<<32]
test expr-32.6 {Bug 1585704} {
    expr -(1<<32)%(1<<63)
} [expr (1<<63)-(1<<32)]
test expr-32.7 {bignum regression} {
    expr {0%(1<<63)}
} 0
test expr-32.8 {bignum regression} {
    expr {0%-(1<<63)}
} 0
test expr-32.9 {bignum regression} {
    expr {0%-(1+(1<<63))}
} 0

test expr-33.1 {parse largest long value} {
    set max_long_str 2147483647
    set max_long_hex "0x7FFFFFFF "

    # Convert to integer (long, not wide) internal rep
    set max_long 2147483647
    string is integer $max_long

    list \
	[expr {" $max_long_str "}] \
	[expr {$max_long_str + 0}] \
	[expr {$max_long + 0}] \
	[expr {2147483647 + 0}] \
	[expr {$max_long == $max_long_hex}] \
	[expr {int(2147483647 + 1) > 0}] \

} {2147483647 2147483647 2147483647 2147483647 1 1}
test expr-33.2 {parse smallest long value} {
    set min_long_str -2147483648
    set min_long_hex "-0x80000000 "

    set min_long -2147483648
    # This will convert to integer (not wide) internal rep
    string is integer $min_long

    # Note: If the final expression returns 0 then the
    # expression literal is being promoted to a wide type
    # when it should be parsed as a long type.
    list \
	[expr {" $min_long_str "}] \
	[expr {$min_long_str + 0}] \
	[expr {$min_long + 0}] \
	[expr {-2147483648 + 0}] \
	[expr {$min_long == $min_long_hex}] \
	[expr {int(-2147483648 - 1) == -0x80000001}] \

} {-2147483648 -2147483648 -2147483648 -2147483648 1 1}
test expr-33.3 {parse largest wide value} wideIs64bit {
    set max_wide_str 9223372036854775807
    set max_wide_hex "0x7FFFFFFFFFFFFFFF "

    # Convert to wide integer
    set max_wide 9223372036854775807
    string is integer $max_wide

    list \
	[expr {" $max_wide_str "}] \
	[expr {$max_wide_str + 0}] \
	[expr {$max_wide + 0}] \
	[expr {9223372036854775807 + 0}] \
	[expr {$max_wide == $max_wide_hex}] \
	[expr {wide(9223372036854775807 + 1) < 0}] \

} {9223372036854775807 9223372036854775807 9223372036854775807 9223372036854775807 1 1}
test expr-33.4 {parse smallest wide value} wideIs64bit {
    set min_wide_str -9223372036854775808
    set min_wide_hex "-0x8000000000000000 "

    set min_wide -9223372036854775808
    # Convert to wide integer
    string is integer $min_wide

    # Note: If the final expression returns 0 then the
    # wide integer is not being parsed correctly with
    # the leading - sign.
    list \
	[expr {" $min_wide_str "}] \
	[expr {$min_wide_str + 0}] \
	[expr {$min_wide + 0}] \
	[expr {-9223372036854775808 + 0}] \
	[expr {$min_wide == $min_wide_hex}] \
	[expr {wide(-9223372036854775808 - 1) == 0x7FFFFFFFFFFFFFFF}] \

} {-9223372036854775808 -9223372036854775808 -9223372036854775808 -9223372036854775808 1 1}

set min -2147483648
set max 2147483647

test expr-34.1 {expr edge cases} {
    expr {$min / $min}
} {1}
test expr-34.2 {expr edge cases} {
    expr {$min % $min}
} {0}
test expr-34.3 {expr edge cases} {
    expr {$min / ($min + 1)}
} {1}
test expr-34.4 {expr edge cases} {
    expr {$min % ($min + 1)}
} {-1}
test expr-34.5 {expr edge cases} {
    expr {$min / ($min + 2)}
} {1}
test expr-34.6 {expr edge cases} {
    expr {$min % ($min + 2)}
} {-2}
test expr-34.7 {expr edge cases} {
    expr {$min / ($min + 3)}
} {1}
test expr-34.8 {expr edge cases} {
    expr {$min % ($min + 3)}
} {-3}
test expr-34.9 {expr edge cases} {
    expr {$min / -3}
} {715827882}
test expr-34.10 {expr edge cases} {
    expr {$min % -3}
} {-2}
test expr-34.11 {expr edge cases} {
    expr {$min / -2}
} {1073741824}
test expr-34.12 {expr edge cases} {
    expr {$min % -2}
} {0}
test expr-34.13 {expr edge cases} {
    expr {int($min / -1)}
} {2147483648}
test expr-34.14 {expr edge cases} {
    expr {$min % -1}
} {0}
test expr-34.15 {expr edge cases} {
    expr {-int($min * -1)}
} $min
test expr-34.16 {expr edge cases} {
    expr {-int(-$min)}
} $min
test expr-34.17 {expr edge cases} {
    expr {$min / 1}
} $min
test expr-34.18 {expr edge cases} {
    expr {$min % 1}
} {0}
test expr-34.19 {expr edge cases} {
    expr {$min / 2}
} {-1073741824}
test expr-34.20 {expr edge cases} {
    expr {$min % 2}
} {0}
test expr-34.21 {expr edge cases} {
    expr {$min / 3}
} {-715827883}
test expr-34.22 {expr edge cases} {
    expr {$min % 3}
} {1}
test expr-34.23 {expr edge cases} {
    expr {$min / ($max - 3)}
} {-2}
test expr-34.24 {expr edge cases} {
    expr {$min % ($max - 3)}
} {2147483640}
test expr-34.25 {expr edge cases} {
    expr {$min / ($max - 2)}
} {-2}
test expr-34.26 {expr edge cases} {
    expr {$min % ($max - 2)}
} {2147483642}
test expr-34.27 {expr edge cases} {
    expr {$min / ($max - 1)}
} {-2}
test expr-34.28 {expr edge cases} {
    expr {$min % ($max - 1)}
} {2147483644}
test expr-34.29 {expr edge cases} {
    expr {$min / $max}
} {-2}
test expr-34.30 {expr edge cases} {
    expr {$min % $max}
} {2147483646}
test expr-34.31 {expr edge cases} {
    expr {$max / $max}
} {1}
test expr-34.32 {expr edge cases} {
    expr {$max % $max}
} {0}
test expr-34.33 {expr edge cases} {
    expr {$max / ($max - 1)}
} {1}
test expr-34.34 {expr edge cases} {
    expr {$max % ($max - 1)}
} {1}
test expr-34.35 {expr edge cases} {
    expr {$max / ($max - 2)}
} {1}
test expr-34.36 {expr edge cases} {
    expr {$max % ($max - 2)}
} {2}
test expr-34.37 {expr edge cases} {
    expr {$max / ($max - 3)}
} {1}
test expr-34.38 {expr edge cases} {
    expr {$max % ($max - 3)}
} {3}
test expr-34.39 {expr edge cases} {
    expr {$max / 3}
} {715827882}
test expr-34.40 {expr edge cases} {
    expr {$max % 3}
} {1}
test expr-34.41 {expr edge cases} {
    expr {$max / 2}
} {1073741823}
test expr-34.42 {expr edge cases} {
    expr {$max % 2}
} {1}
test expr-34.43 {expr edge cases} {
    expr {$max / 1}
} $max
test expr-34.44 {expr edge cases} {
    expr {$max % 1}
} {0}
test expr-34.45 {expr edge cases} {
    expr {$max / -1}
} "-$max"
test expr-34.46 {expr edge cases} {
    expr {$max % -1}
} {0}
test expr-34.47 {expr edge cases} {
    expr {$max / -2}
} {-1073741824}
test expr-34.48 {expr edge cases} {
    expr {$max % -2}
} {-1}
test expr-34.49 {expr edge cases} {
    expr {$max / -3}
} {-715827883}
test expr-34.50 {expr edge cases} {
    expr {$max % -3}
} {-2}
test expr-34.51 {expr edge cases} {
    expr {$max / ($min + 3)}
} {-2}
test expr-34.52 {expr edge cases} {
    expr {$max % ($min + 3)}
} {-2147483643}
test expr-34.53 {expr edge cases} {
    expr {$max / ($min + 2)}
} {-2}
test expr-34.54 {expr edge cases} {
    expr {$max % ($min + 2)}
} {-2147483645}
test expr-34.55 {expr edge cases} {
    expr {$max / ($min + 1)}
} {-1}
test expr-34.56 {expr edge cases} {
    expr {$max % ($min + 1)}
} {0}
test expr-34.57 {expr edge cases} {
    expr {$max / $min}
} {-1}
test expr-34.58 {expr edge cases} {
    expr {$max % $min}
} {-1}
test expr-34.59 {expr edge cases} {
    expr {($min + 1) / ($max - 1)}
} {-2}
test expr-34.60 {expr edge cases} {
    expr {($min + 1) % ($max - 1)}
} {2147483645}
test expr-34.61 {expr edge cases} {
    expr {($max - 1) / ($min + 1)}
} {-1}
test expr-34.62 {expr edge cases} {
    expr {($max - 1) % ($min + 1)}
} {-1}
test expr-34.63 {expr edge cases} {
    expr {($max - 1) / $min}
} {-1}
test expr-34.64 {expr edge cases} {
    expr {($max - 1) % $min}
} {-2}
test expr-34.65 {expr edge cases} {
    expr {($max - 2) / $min}
} {-1}
test expr-34.66 {expr edge cases} {
    expr {($max - 2) % $min}
} {-3}
test expr-34.67 {expr edge cases} {
    expr {($max - 3) / $min}
} {-1}
test expr-34.68 {expr edge cases} {
    expr {($max - 3) % $min}
} {-4}
test expr-34.69 {expr edge cases} {
    expr {-3 / $min}
} {0}
test expr-34.70 {expr edge cases} {
    expr {-3 % $min}
} {-3}
test expr-34.71 {expr edge cases} {
    expr {-2 / $min}
} {0}
test expr-34.72 {expr edge cases} {
    expr {-2 % $min}
} {-2}
test expr-34.73 {expr edge cases} {
    expr {-1 / $min}
} {0}
test expr-34.74 {expr edge cases} {
    expr {-1 % $min}
} {-1}
test expr-34.75 {expr edge cases} {
    expr {0 / $min}
} {0}
test expr-34.76 {expr edge cases} {
    expr {0 % $min}
} {0}
test expr-34.77 {expr edge cases} {
    expr {0 / ($min + 1)}
} {0}
test expr-34.78 {expr edge cases} {
    expr {0 % ($min + 1)}
} {0}
test expr-34.79 {expr edge cases} {
    expr {1 / $min}
} {-1}
test expr-34.80 {expr edge cases} {
    expr {1 % $min}
} {-2147483647}
test expr-34.81 {expr edge cases} {
    expr {1 / ($min + 1)}
} {-1}
test expr-34.82 {expr edge cases} {
    expr {1 % ($min + 1)}
} {-2147483646}
test expr-34.83 {expr edge cases} {
    expr {2 / $min}
} {-1}
test expr-34.84 {expr edge cases} {
    expr {2 % $min}
} {-2147483646}
test expr-34.85 {expr edge cases} {
    expr {2 / ($min + 1)}
} {-1}
test expr-34.86 {expr edge cases} {
    expr {2 % ($min + 1)}
} {-2147483645}
test expr-34.87 {expr edge cases} {
    expr {3 / $min}
} {-1}
test expr-34.88 {expr edge cases} {
    expr {3 % $min}
} {-2147483645}
test expr-34.89 {expr edge cases} {
    expr {3 / ($min + 1)}
} {-1}
test expr-34.90 {expr edge cases} {
    expr {3 % ($min + 1)}
} {-2147483644}

# Euclidean property:
# quotient * divisor + remainder = dividend

test expr-35.1 {expr edge cases} {
    set dividend $max
    set divisor 2
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($divisor * $q) + $r}]
} {1073741823 * 2 + 1 = 2147483647}
test expr-35.2 {expr edge cases} {
    set dividend [expr {$max - 1}]
    set divisor 2
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($q * $divisor) + $r}]
} {1073741823 * 2 + 0 = 2147483646}
test expr-35.3 {expr edge cases} {
    set dividend [expr {$max - 2}]
    set divisor 2
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($q * $divisor) + $r}]
} {1073741822 * 2 + 1 = 2147483645}
test expr-35.4 {expr edge cases} {
    set dividend $max
    set divisor 3
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($q * $divisor) + $r}]
} {715827882 * 3 + 1 = 2147483647}
test expr-35.5 {expr edge cases} {
    set dividend [expr {$max - 1}]
    set divisor 3
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($q * $divisor) + $r}]
} {715827882 * 3 + 0 = 2147483646}
test expr-35.6 {expr edge cases} {
    set dividend [expr {$max - 2}]
    set divisor 3
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($q * $divisor) + $r}]
} {715827881 * 3 + 2 = 2147483645}
test expr-35.7 {expr edge cases} {
    set dividend $min
    set divisor 2
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($q * $divisor) + $r}]
} {-1073741824 * 2 + 0 = -2147483648}
test expr-35.8 {expr edge cases} {
    set dividend [expr {$min + 1}]
    set divisor 2
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($q * $divisor) + $r}]
} {-1073741824 * 2 + 1 = -2147483647}
test expr-35.9 {expr edge cases} {
    set dividend [expr {$min + 2}]
    set divisor 2
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($q * $divisor) + $r}]
} {-1073741823 * 2 + 0 = -2147483646}
test expr-35.10 {expr edge cases} {
    # Two things could happen here. The multiplication
    # could overflow a 32 bit type, so that when
    # 1 is added it overflows again back to min.
    # The multiplication could also use a wide type
    # to hold ($min - 1) until 1 is added and
    # the number becomes $min again.
    set dividend $min
    set divisor 3
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($q * $divisor) + $r}]
} {-715827883 * 3 + 1 = -2147483648}
test expr-35.11 {expr edge cases} {
    set dividend $min
    set divisor -3
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($q * $divisor) + $r}]
} {715827882 * -3 + -2 = -2147483648}
test expr-35.12 {expr edge cases} {
    set dividend $min
    set divisor $min
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($q * $divisor) + $r}]
} {1 * -2147483648 + 0 = -2147483648}
test expr-35.13 {expr edge cases} {
    set dividend $min
    set divisor [expr {$min + 1}]
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($q * $divisor) + $r}]
} {1 * -2147483647 + -1 = -2147483648}
test expr-35.14 {expr edge cases} {
    set dividend $min
    set divisor [expr {$min + 2}]
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($q * $divisor) + $r}]
} {1 * -2147483646 + -2 = -2147483648}

# 64bit wide integer checks

set min -9223372036854775808
set max 9223372036854775807

test expr-36.1 {expr edge cases} {wideIs64bit} {
    expr {$min / $min}
} {1}
test expr-36.2 {expr edge cases} {wideIs64bit} {
    expr {$min % $min}
} {0}
test expr-36.3 {expr edge cases} {wideIs64bit} {
    expr {$min / ($min + 1)}
} {1}
test expr-36.4 {expr edge cases} {wideIs64bit} {
    expr {$min % ($min + 1)}
} {-1}
test expr-36.5 {expr edge cases} {wideIs64bit} {
    expr {$min / ($min + 2)}
} {1}
test expr-36.6 {expr edge cases} {wideIs64bit} {
    expr {$min % ($min + 2)}
} {-2}
test expr-36.7 {expr edge cases} {wideIs64bit} {
    expr {$min / ($min + 3)}
} {1}
test expr-36.8 {expr edge cases} {wideIs64bit} {
    expr {$min % ($min + 3)}
} {-3}
test expr-36.9 {expr edge cases} {wideIs64bit} {
    expr {$min / -3}
} {3074457345618258602}
test expr-36.10 {expr edge cases} {wideIs64bit} {
    expr {$min % -3}
} {-2}
test expr-36.11 {expr edge cases} {wideIs64bit} {
    expr {$min / -2}
} {4611686018427387904}
test expr-36.12 {expr edge cases} {wideIs64bit} {
    expr {$min % -2}
} {0}
test expr-36.13 {expr edge cases} wideIs64bit {
    expr {wide($min / -1)}
} $min
test expr-36.14 {expr edge cases} {wideIs64bit} {
    expr {$min % -1}
} {0}
test expr-36.15 {expr edge cases} wideIs64bit {
    expr {wide($min * -1)}
} $min
test expr-36.16 {expr edge cases} wideIs64bit {
    expr {wide(-$min)}
} $min
test expr-36.17 {expr edge cases} {wideIs64bit} {
    expr {$min / 1}
} $min
test expr-36.18 {expr edge cases} {wideIs64bit} {
    expr {$min % 1}
} {0}
test expr-36.19 {expr edge cases} {wideIs64bit} {
    expr {$min / 2}
} {-4611686018427387904}
test expr-36.20 {expr edge cases} {wideIs64bit} {
    expr {$min % 2}
} {0}
test expr-36.21 {expr edge cases} {wideIs64bit} {
    expr {$min / 3}
} {-3074457345618258603}
test expr-36.22 {expr edge cases} {wideIs64bit} {
    expr {$min % 3}
} {1}
test expr-36.23 {expr edge cases} {wideIs64bit} {
    expr {$min / ($max - 3)}
} {-2}
test expr-36.24 {expr edge cases} {wideIs64bit} {
    expr {$min % ($max - 3)}
} {9223372036854775800}
test expr-36.25 {expr edge cases} {wideIs64bit} {
    expr {$min / ($max - 2)}
} {-2}
test expr-36.26 {expr edge cases} {wideIs64bit} {
    expr {$min % ($max - 2)}
} {9223372036854775802}
test expr-36.27 {expr edge cases} {wideIs64bit} {
    expr {$min / ($max - 1)}
} {-2}
test expr-36.28 {expr edge cases} {wideIs64bit} {
    expr {$min % ($max - 1)}
} {9223372036854775804}
test expr-36.29 {expr edge cases} {wideIs64bit} {
    expr {$min / $max}
} {-2}
test expr-36.30 {expr edge cases} {wideIs64bit} {
    expr {$min % $max}
} {9223372036854775806}
test expr-36.31 {expr edge cases} {wideIs64bit} {
    expr {$max / $max}
} {1}
test expr-36.32 {expr edge cases} {wideIs64bit} {
    expr {$max % $max}
} {0}
test expr-36.33 {expr edge cases} {wideIs64bit} {
    expr {$max / ($max - 1)}
} {1}
test expr-36.34 {expr edge cases} {wideIs64bit} {
    expr {$max % ($max - 1)}
} {1}
test expr-36.35 {expr edge cases} {wideIs64bit} {
    expr {$max / ($max - 2)}
} {1}
test expr-36.36 {expr edge cases} {wideIs64bit} {
    expr {$max % ($max - 2)}
} {2}
test expr-36.37 {expr edge cases} {wideIs64bit} {
    expr {$max / ($max - 3)}
} {1}
test expr-36.38 {expr edge cases} {wideIs64bit} {
    expr {$max % ($max - 3)}
} {3}
test expr-36.39 {expr edge cases} {wideIs64bit} {
    expr {$max / 3}
} {3074457345618258602}
test expr-36.40 {expr edge cases} {wideIs64bit} {
    expr {$max % 3}
} {1}
test expr-36.41 {expr edge cases} {wideIs64bit} {
    expr {$max / 2}
} {4611686018427387903}
test expr-36.42 {expr edge cases} {wideIs64bit} {
    expr {$max % 2}
} {1}
test expr-36.43 {expr edge cases} {wideIs64bit} {
    expr {$max / 1}
} $max
test expr-36.44 {expr edge cases} {wideIs64bit} {
    expr {$max % 1}
} {0}
test expr-36.45 {expr edge cases} {wideIs64bit} {
    expr {$max / -1}
} "-$max"
test expr-36.46 {expr edge cases} {wideIs64bit} {
    expr {$max % -1}
} {0}
test expr-36.47 {expr edge cases} {wideIs64bit} {
    expr {$max / -2}
} {-4611686018427387904}
test expr-36.48 {expr edge cases} {wideIs64bit} {
    expr {$max % -2}
} {-1}
test expr-36.49 {expr edge cases} {wideIs64bit} {
    expr {$max / -3}
} {-3074457345618258603}
test expr-36.50 {expr edge cases} {wideIs64bit} {
    expr {$max % -3}
} {-2}
test expr-36.51 {expr edge cases} {wideIs64bit} {
    expr {$max / ($min + 3)}
} {-2}
test expr-36.52 {expr edge cases} {wideIs64bit} {
    expr {$max % ($min + 3)}
} {-9223372036854775803}
test expr-36.53 {expr edge cases} {wideIs64bit} {
    expr {$max / ($min + 2)}
} {-2}
test expr-36.54 {expr edge cases} {wideIs64bit} {
    expr {$max % ($min + 2)}
} {-9223372036854775805}
test expr-36.55 {expr edge cases} {wideIs64bit} {
    expr {$max / ($min + 1)}
} {-1}
test expr-36.56 {expr edge cases} {wideIs64bit} {
    expr {$max % ($min + 1)}
} {0}
test expr-36.57 {expr edge cases} {wideIs64bit} {
    expr {$max / $min}
} {-1}
test expr-36.58 {expr edge cases} {wideIs64bit} {
    expr {$max % $min}
} {-1}
test expr-36.59 {expr edge cases} {wideIs64bit} {
    expr {($min + 1) / ($max - 1)}
} {-2}
test expr-36.60 {expr edge cases} {wideIs64bit} {
    expr {($min + 1) % ($max - 1)}
} {9223372036854775805}
test expr-36.61 {expr edge cases} {wideIs64bit} {
    expr {($max - 1) / ($min + 1)}
} {-1}
test expr-36.62 {expr edge cases} {wideIs64bit} {
    expr {($max - 1) % ($min + 1)}
} {-1}
test expr-36.63 {expr edge cases} {wideIs64bit} {
    expr {($max - 1) / $min}
} {-1}
test expr-36.64 {expr edge cases} {wideIs64bit} {
    expr {($max - 1) % $min}
} {-2}
test expr-36.65 {expr edge cases} {wideIs64bit} {
    expr {($max - 2) / $min}
} {-1}
test expr-36.66 {expr edge cases} {wideIs64bit} {
    expr {($max - 2) % $min}
} {-3}
test expr-36.67 {expr edge cases} {wideIs64bit} {
    expr {($max - 3) / $min}
} {-1}
test expr-36.68 {expr edge cases} {wideIs64bit} {
    expr {($max - 3) % $min}
} {-4}
test expr-36.69 {expr edge cases} {wideIs64bit} {
    expr {-3 / $min}
} {0}
test expr-36.70 {expr edge cases} {wideIs64bit} {
    expr {-3 % $min}
} {-3}
test expr-36.71 {expr edge cases} {wideIs64bit} {
    expr {-2 / $min}
} {0}
test expr-36.72 {expr edge cases} {wideIs64bit} {
    expr {-2 % $min}
} {-2}
test expr-36.73 {expr edge cases} {wideIs64bit} {
    expr {-1 / $min}
} {0}
test expr-36.74 {expr edge cases} {wideIs64bit} {
    expr {-1 % $min}
} {-1}
test expr-36.75 {expr edge cases} {wideIs64bit} {
    expr {0 / $min}
} {0}
test expr-36.76 {expr edge cases} {wideIs64bit} {
    expr {0 % $min}
} {0}
test expr-36.77 {expr edge cases} {wideIs64bit} {
    expr {0 / ($min + 1)}
} {0}
test expr-36.78 {expr edge cases} {wideIs64bit} {
    expr {0 % ($min + 1)}
} {0}
test expr-36.79 {expr edge cases} {wideIs64bit} {
    expr {1 / $min}
} {-1}
test expr-36.80 {expr edge cases} {wideIs64bit} {
    expr {1 % $min}
} {-9223372036854775807}
test expr-36.81 {expr edge cases} {wideIs64bit} {
    expr {1 / ($min + 1)}
} {-1}
test expr-36.82 {expr edge cases} {wideIs64bit} {
    expr {1 % ($min + 1)}
} {-9223372036854775806}
test expr-36.83 {expr edge cases} {wideIs64bit} {
    expr {2 / $min}
} {-1}
test expr-36.84 {expr edge cases} {wideIs64bit} {
    expr {2 % $min}
} {-9223372036854775806}
test expr-36.85 {expr edge cases} {wideIs64bit} {
    expr {2 / ($min + 1)}
} {-1}
test expr-36.86 {expr edge cases} {wideIs64bit} {
    expr {2 % ($min + 1)}
} {-9223372036854775805}
test expr-36.87 {expr edge cases} {wideIs64bit} {
    expr {3 / $min}
} {-1}
test expr-36.88 {expr edge cases} {wideIs64bit} {
    expr {3 % $min}
} {-9223372036854775805}
test expr-36.89 {expr edge cases} {wideIs64bit} {
    expr {3 / ($min + 1)}
} {-1}
test expr-36.90 {expr edge cases} {wideIs64bit} {
    expr {3 % ($min + 1)}
} {-9223372036854775804}

test expr-37.1 {expr edge cases} {wideIs64bit} {
    set dividend $max
    set divisor 2
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($divisor * $q) + $r}]
} {4611686018427387903 * 2 + 1 = 9223372036854775807}
test expr-37.2 {expr edge cases} {wideIs64bit} {
    set dividend [expr {$max - 1}]
    set divisor 2
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($q * $divisor) + $r}]
} {4611686018427387903 * 2 + 0 = 9223372036854775806}
test expr-37.3 {expr edge cases} {wideIs64bit} {
    set dividend [expr {$max - 2}]
    set divisor 2
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($q * $divisor) + $r}]
} {4611686018427387902 * 2 + 1 = 9223372036854775805}
test expr-37.4 {expr edge cases} {wideIs64bit} {
    set dividend $max
    set divisor 3
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($q * $divisor) + $r}]
} {3074457345618258602 * 3 + 1 = 9223372036854775807}
test expr-37.5 {expr edge cases} {wideIs64bit} {
    set dividend [expr {$max - 1}]
    set divisor 3
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($q * $divisor) + $r}]
} {3074457345618258602 * 3 + 0 = 9223372036854775806}
test expr-37.6 {expr edge cases} {wideIs64bit} {
    set dividend [expr {$max - 2}]
    set divisor 3
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($q * $divisor) + $r}]
} {3074457345618258601 * 3 + 2 = 9223372036854775805}
test expr-37.7 {expr edge cases} {wideIs64bit} {
    set dividend $min
    set divisor 2
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($q * $divisor) + $r}]
} {-4611686018427387904 * 2 + 0 = -9223372036854775808}
test expr-37.8 {expr edge cases} {wideIs64bit} {
    set dividend [expr {$min + 1}]
    set divisor 2
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($q * $divisor) + $r}]
} {-4611686018427387904 * 2 + 1 = -9223372036854775807}
test expr-37.9 {expr edge cases} {wideIs64bit} {
    set dividend [expr {$min + 2}]
    set divisor 2
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($q * $divisor) + $r}]
} {-4611686018427387903 * 2 + 0 = -9223372036854775806}
test expr-37.10 {expr edge cases} {wideIs64bit} {
    # Multiplication overflows 64 bit type here,
    # so when the 1 is added it overflows
    # again and we end up back at min.
    set dividend $min
    set divisor 3
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($q * $divisor) + $r}]
} {-3074457345618258603 * 3 + 1 = -9223372036854775808}
test expr-37.11 {expr edge cases} {wideIs64bit} {
    set dividend $min
    set divisor -3
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($q * $divisor) + $r}]
} {3074457345618258602 * -3 + -2 = -9223372036854775808}
test expr-37.12 {expr edge cases} {wideIs64bit} {
    set dividend $min
    set divisor $min
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($q * $divisor) + $r}]
} {1 * -9223372036854775808 + 0 = -9223372036854775808}
test expr-37.13 {expr edge cases} {wideIs64bit} {
    set dividend $min
    set divisor [expr {$min + 1}]
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($q * $divisor) + $r}]
} {1 * -9223372036854775807 + -1 = -9223372036854775808}
test expr-37.14 {expr edge cases} {wideIs64bit} {
    set dividend $min
    set divisor [expr {$min + 2}]
    set q [expr {$dividend / $divisor}]
    set r [expr {$dividend % $divisor}]
    list $q * $divisor + $r = [expr {($q * $divisor) + $r}]
} {1 * -9223372036854775806 + -2 = -9223372036854775808}

test expr-38.1 {abs of smallest 32-bit integer [Bug 1241572]} {wideIs64bit} {
    expr {abs(-2147483648)}
} 2147483648
test expr-38.2 {abs and -0 [Bug 1893815]} {
    expr {abs(-0)}
} 0
test expr-38.3 {abs and -0 [Bug 1893815]} {
    expr {abs(-0.0)}
} 0.0
test expr-38.4 {abs and -0 [Bug 1893815]} {
    expr {abs(-1e-324)}
} 0.0
test expr-38.5 {abs and -0 [Bug 1893815]} {
    ::tcl::mathfunc::abs -0
} 0
test expr-38.6 {abs and -0 [Bug 1893815]} {
    ::tcl::mathfunc::abs -0.0
} 0.0
test expr-38.7 {abs and -0 [Bug 1893815]} {
    ::tcl::mathfunc::abs -1e-324
} 0.0
test expr-38.8 {abs and 0.0 [Bug 2954959]} {
    ::tcl::mathfunc::abs 0.0
} 0.0
test expr-38.9 {abs and 0.0 [Bug 2954959]} {
    expr {abs(0.0)}
} 0.0
test expr-38.10 {abs and -0x0 [Bug 2954959]} {
    expr {abs(-0x0)}
} 0
test expr-38.11 {abs and 0x0 [Bug 2954959]} {
    ::tcl::mathfunc::abs { 	0x0}
} { 	0x0}
test expr-38.12 {abs and -0x0 [Bug 2954959]} {
    ::tcl::mathfunc::abs { 	-0x0}
} 0
test expr-38.13 {abs and 0.0 [Bug 2954959]} {
    ::tcl::mathfunc::abs 1e-324
} 1e-324
test expr-38.14 {abs and INT64_MIN special-case} {
    ::tcl::mathfunc::abs -9223372036854775808
} 9223372036854775808
test expr-38.15 {abs and INT128_MIN special-case} {
    ::tcl::mathfunc::abs -170141183460469231731687303715884105728
} 170141183460469231731687303715884105728

testConstraint testexprlongobj   [llength [info commands testexprlongobj]]
testConstraint testexprdoubleobj [llength [info commands testexprdoubleobj]]

test expr-39.1 {Check that Tcl_ExprLongObj doesn't modify interpreter result if no error} testexprlongobj {
    testexprlongobj 4+1
} {This is a result: 5}
#Check for [Bug 1109484]
test expr-39.2 {Tcl_ExprLongObj handles wide ints gracefully} testexprlongobj {
    testexprlongobj wide(1)+2
} {This is a result: 3}

test expr-39.3 {Tcl_ExprLongObj on the empty string} \
    -constraints {testexprlongobj}\
    -body {testexprlongobj ""} \
    -match glob \
    -returnCodes error -result *
test expr-39.4 {Tcl_ExprLongObj coerces doubles} testexprlongobj {
    testexprlongobj 3+.14159
} {This is a result: 3}
test expr-39.5 {Tcl_ExprLongObj handles overflows} {testexprlongobj longIs32bit} {
    testexprlongobj 0x80000000
} {This is a result: -2147483648}
test expr-39.6 {Tcl_ExprLongObj handles overflows} {testexprlongobj longIs32bit} {
    testexprlongobj 0xffffffff
} {This is a result: -1}
test expr-39.7 {Tcl_ExprLongObj handles overflows} \
    -constraints {testexprlongobj longIs32bit} \
    -match glob \
    -body {
	list [catch {testexprlongobj 0x100000000} result] $result
    } \
    -result {1 {integer value too large to represent*}}
test expr-39.8 {Tcl_ExprLongObj handles overflows} testexprlongobj {
    testexprlongobj -0x80000000
} {This is a result: -2147483648}
test expr-39.9 {Tcl_ExprLongObj handles overflows} {testexprlongobj longIs32bit} {
    testexprlongobj -0x7fffffff
} {This is a result: -2147483647}
test expr-39.10 {Tcl_ExprLongObj handles overflows} \
    -constraints {testexprlongobj longIs32bit} \
    -match glob \
    -body {
	list [catch {testexprlongobj -0x100000000} result] $result
    } \
    -result {1 {integer value too large to represent*}}
test expr-39.11 {Tcl_ExprLongObj handles overflows} {testexprlongobj longIs32bit} {
    testexprlongobj 2147483648.
} {This is a result: -2147483648}
test expr-39.12 {Tcl_ExprLongObj handles overflows} {testexprlongobj longIs32bit} {
    testexprlongobj 4294967295.
} {This is a result: -1}
test expr-39.13 {Tcl_ExprLongObj handles overflows} \
    -constraints {testexprlongobj longIs32bit} \
    -match glob \
    -body {
	list [catch {testexprlongobj 4294967296.} result] $result
    } \
    -result {1 {integer value too large to represent*}}
test expr-39.14 {Tcl_ExprLongObj handles overflows} testexprlongobj {
    testexprlongobj -2147483648.
} {This is a result: -2147483648}
test expr-39.15 {Tcl_ExprLongObj handles overflows} {testexprlongobj longIs32bit} {
    testexprlongobj -2147483648.
} {This is a result: -2147483648}
test expr-39.16 {Tcl_ExprLongObj handles overflows} \
    -constraints {testexprlongobj longIs32bit} \
    -match glob \
    -body {
	list [catch {testexprlongobj 4294967296.} result] $result
    } \
    -result {1 {integer value too large to represent*}}

test expr-39.17 {Check that Tcl_ExprDoubleObj doesn't modify interpreter result if no error} testexprdoubleobj {
    testexprdoubleobj 4.+1.
} {This is a result: 5.0}
#Check for [Bug 1109484]
test expr-39.18 {Tcl_ExprDoubleObj on the empty string} \
    -constraints {testexprdoubleobj} \
    -match glob \
    -body {testexprdoubleobj ""} \
    -returnCodes error -result *
test expr-39.19 {Tcl_ExprDoubleObj coerces wides} testexprdoubleobj {
    testexprdoubleobj 1[string repeat 0 17]
} {This is a result: 1e+17}
test expr-39.20 {Tcl_ExprDoubleObj coerces bignums} testexprdoubleobj {
    testexprdoubleobj 1[string repeat 0 38]
} {This is a result: 1e+38}
test expr-39.21 {Tcl_ExprDoubleObj handles overflows} \
    testexprdoubleobj&&ieeeFloatingPoint {
	testexprdoubleobj 17976931348623157[string repeat 0 292].
    } {This is a result: 1.7976931348623157e+308}
test expr-39.22 {Tcl_ExprDoubleObj handles overflows that look like int} \
    testexprdoubleobj&&ieeeFloatingPoint {
	testexprdoubleobj 17976931348623157[string repeat 0 292]
    } {This is a result: 1.7976931348623157e+308}
test expr-39.23 {Tcl_ExprDoubleObj handles overflows} \
    testexprdoubleobj&&ieeeFloatingPoint {
	testexprdoubleobj 17976931348623165[string repeat 0 292].
    } {This is a result: Inf}
test expr-39.24 {Tcl_ExprDoubleObj handles overflows that look like int} \
    testexprdoubleobj&&ieeeFloatingPoint {
	testexprdoubleobj 17976931348623165[string repeat 0 292]
    } {This is a result: Inf}
test expr-39.25 {Tcl_ExprDoubleObj and NaN} \
    {testexprdoubleobj ieeeFloatingPoint} {
	list [catch {testexprdoubleobj 0.0/0.0} result] $result
    } {1 {domain error: argument not in valid range}}

test expr-40.1 {large octal shift} {
    expr 0o100000000000000000000000000000000
} [expr 0x1000000000000000000000000]
test expr-40.2 {large octal shift} {
    expr 0o100000000000000000000000000000001
} [expr 0x1000000000000000000000001]

test expr-41.1 {exponent overflow} {
    expr 1.0e2147483630
} Inf
test expr-41.2 {exponent underflow} {
    expr 1.0e-2147483630
} 0.0

test expr-41.3 {exponent overflow} {
    expr 1e2147483647
} Inf
test expr-41.4 {exponent overflow} {
    expr 1e2147483648
} Inf
test expr-41.5 {exponent overflow} {
    expr 100e2147483645
} Inf
test expr-41.6 {exponent overflow} {
    expr 100e2147483646
} Inf
test expr-41.7 {exponent overflow} {
    expr 1.0e2147483647
} Inf
test expr-41.8 {exponent overflow} {
    expr 1.0e2147483648
} Inf
test expr-41.9 {exponent overflow} {
    expr 1.2e2147483647
} Inf
test expr-41.10 {exponent overflow} {
    expr 1.2e2147483648
} Inf

test expr-41.11 {exponent overflow} {
    expr 1e-2147483648
} 0.0
test expr-41.12 {exponent overflow} {
    expr 1e-2147483649
} 0.0
test expr-41.13 {exponent overflow} {
    expr 100e-2147483650
} 0.0
test expr-41.14 {exponent overflow} {
    expr 100e-2147483651
} 0.0
test expr-41.15 {exponent overflow} {
    expr 1.0e-2147483648
} 0.0
test expr-41.16 {exponent overflow} {
    expr 1.0e-2147483649
} 0.0
test expr-41.17 {exponent overflow} {
    expr 1.23e-2147483646
} 0.0
test expr-41.18 {exponent overflow} {
    expr 1.23e-2147483647
} 0.0

test expr-41.19 {numSigDigs == 0} {
    expr 0e309
} 0.0
test expr-41.20 {numSigDigs == 0} {
    expr 0e310
} 0.0
test expr-41.21 {negative zero, large exponent} {
    expr -0e309
} -0.0
test expr-41.22 {negative zero, large exponent} {
    expr -0e310
} -0.0
test expr-41.23 {floating point overflow on significand (Bug 1de6b0629e)} {
    expr 123[string repeat 0 309]1e-310
} 123.0

test expr-42.1 {denormals} ieeeFloatingPoint {
    expr 7e-324
} 5e-324

# TIP 114

test expr-43.1 {0b notation} {
    expr 0b0
} 0
test expr-43.2 {0b notation} {
    expr 0b1
} 1
test expr-43.3 {0b notation} {
    expr 0b10
} 2
test expr-43.4 {0b notation} {
    expr 0b11
} 3
test expr-43.5 {0b notation} {
    expr 0b100
} 4
test expr-43.6 {0b notation} {
    expr 0b101
} 5
test expr-43.7 {0b notation} {
    expr 0b1000
} 8
test expr-43.8 {0b notation} {
    expr 0b1001
} 9
test expr-43.9 {0b notation} {
    expr 0b1[string repeat 0 31]
} 2147483648
test expr-43.10 {0b notation} {
    expr 0b1[string repeat 0 30]1
} 2147483649
test expr-43.11 {0b notation} {
    expr 0b[string repeat 1 64]
} 18446744073709551615
test expr-43.12 {0b notation} {
    expr 0b1[string repeat 0 64]
} 18446744073709551616
test expr-43.13 {0b notation} {
    expr 0b1[string repeat 0 63]1
} 18446744073709551617

test expr-44.1 {0o notation} {
    expr 0o0
} 0
test expr-44.2 {0o notation} {
    expr 0o1
} 1
test expr-44.3 {0o notation} {
    expr 0o7
} 7
test expr-44.4 {0o notation} {
    expr 0o10
} 8
test expr-44.5 {0o notation} {
    expr 0o11
} 9
test expr-44.6 {0o notation} {
    expr 0o100
} 64
test expr-44.7 {0o notation} {
    expr 0o101
} 65
test expr-44.8 {0o notation} {
    expr 0o1000
} 512
test expr-44.9 {0o notation} {
    expr 0o1001
} 513
test expr-44.10 {0o notation} {
    expr 0o1[string repeat 7 21]
} 18446744073709551615
test expr-44.11 {0o notation} {
    expr 0o2[string repeat 0 21]
} 18446744073709551616
test expr-44.12 {0o notation} {
    expr 0o2[string repeat 0 20]1
} 18446744073709551617

# TIP 237 again

test expr-45.1 {entier} {
    expr entier(0)
} 0
test expr-45.2 {entier} {
    expr entier(0.5)
} 0
test expr-45.3 {entier} {
    expr entier(1.0)
} 1
test expr-45.4 {entier} {
    expr entier(1.5)
} 1
test expr-45.5 {entier} {
    expr entier(2.0)
} 2
test expr-45.6 {entier} {
    expr entier(1e+22)
} 10000000000000000000000
test expr-45.7 {entier} {
    list [catch {expr entier(Inf)} result] $result
} {1 {integer value too large to represent}}
test expr-45.8 {entier} ieeeFloatingPoint {
    list [catch {expr {entier($ieeeValues(NaN))}} result] $result
} {1 {floating point value is Not a Number}}
test expr-45.9 {entier} ieeeFloatingPoint {
    list [catch {expr {entier($ieeeValues(-NaN))}} result] $result
} {1 {floating point value is Not a Number}}

test expr-46.1 {round() rounds to +-infinity} {
    expr round(0.5)
} 1
test expr-46.2 {round() rounds to +-infinity} {
    expr round(1.5)
} 2
test expr-46.3 {round() rounds to +-infinity} {
    expr round(-0.5)
} -1
test expr-46.4 {round() rounds to +-infinity} {
    expr round(-1.5)
} -2
test expr-46.5 {round() overflow} {
    expr round(9.2233720368547758e+018)
} 9223372036854775808
test expr-46.6 {round() overflow} {
    expr round(-9.2233720368547758e+018)
} -9223372036854775808
test expr-46.7 {round() bad value} -body {
    set x trash
    expr {round($x)}
} -returnCodes error -match glob -result *
test expr-46.8 {round() already an integer} {
    set x 123456789012
    incr x
    expr round($x)
} 123456789013
test expr-46.9 {round() boundary case - 1/2 - 1 ulp} {
    set x 0.25
    set bit 0.125
    while 1 {
	set newx [expr {$x + $bit}]
	if { $newx == $x || $newx == 0.5 } break
	set x $newx
	set bit [expr { $bit / 2.0 }]
    }
    expr {round($x)}
} 0
test expr-46.10 {round() boundary case - 1/2 + 1 ulp} {
    set x 0.75
    set bit 0.125
    while 1 {
	set newx [expr {$x - $bit}]
	if { $newx == $x || $newx == 0.5 } break
	set x $newx
	set bit [expr { $bit / 2.0 }]
    }
    expr {round($x)}
} 1
test expr-46.11 {round() boundary case - -1/2 - 1 ulp} {
    set x -0.75
    set bit 0.125
    while 1 {
	set newx [expr {$x + $bit}]
	if { $newx == $x || $newx == -0.5 } break
	set x $newx
	set bit [expr { $bit / 2.0 }]
    }
    expr {round($x)}
} -1
test expr-46.12 {round() boundary case - -1/2 + 1 ulp} {
    set x -0.25
    set bit 0.125
    while 1 {
	set newx [expr {$x - $bit}]
	if { $newx == $x || $newx == -0.5 } break
	set x $newx
	set bit [expr { $bit / 2.0 }]
    }
    expr {round($x)}
} 0
test expr-46.13 {round() boundary case - round down} {
    expr {round(2147483647 - 0.51)}
} 2147483646

test expr-46.14 {round() boundary case - round up} {
    expr {round(2147483647 - 0.50)}
} 2147483647

test expr-46.15 {round() boundary case - round up to wide} {
    expr {round(2147483647 + 0.50)}
} [expr {wide(2147483647) + 1}]

test expr-46.16 {round() boundary case - round up} {
    expr {round(-2147483648 + 0.51)}
} -2147483647

test expr-46.17 {round() boundary case - round down} {
    expr {round(-2147483648 + 0.50)}
} -2147483648
test expr-46.18 {round() boundary case - round down to wide} {
    expr {round(-2147483648 - 0.50)}
} [expr {wide(-2147483648) - 1}]

test expr-46.19 {round() handling of long/bignum boundary} {
    expr {round(double(0x7fffffffffffffff))}
} 9223372036854775808

test expr-47.1 {isqrt() - arg count} {
    list [catch {expr {isqrt(1,2)}} result] $result
} {1 {too many arguments for math function "isqrt"}}

test expr-47.2 {isqrt() - non-number} {
    list [catch {expr {isqrt({rubbish})}} result] $result
} {1 {expected number but got "rubbish"}}

test expr-47.3 {isqrt() - NaN} ieeeFloatingPoint {
    list [catch {expr {isqrt(NaN)}} result] $result
} {1 {floating point value is Not a Number}}

test expr-47.4 {isqrt() of negative floating point number} {
    list [catch {expr {isqrt(-1.0)}} result] $result
} {1 {square root of negative argument}}

test expr-47.5 {isqrt() of floating point zero} {
    expr isqrt(0.0)
} 0

test expr-47.6 {isqrt() of exact floating point numbers} {
    set trouble {}
    for {set i 0} {$i < 16} {incr i} {
	set root [expr {1 << $i}]
	set rm1 [expr {$root - 1}]
	set arg [expr {pow(2., (2 * $i))}]
	if {isqrt($arg-1) != $rm1} {
	    append trouble "i = " $i ": isqrt( " $arg "-1) != " $rm1 "\n"
	}
	if {isqrt($arg) != $root} {
	    append trouble "i = " $i ": isqrt( " $arg ") != " $root "\n"
	}
	if {isqrt($arg+1) != $root} {
	    append trouble "i = " $i ": isqrt( " $arg "+1) != " $root "\n"
	}
    }
    set trouble
} {}

test expr-47.7 {isqrt() of exact floating point numbers} ieeeFloatingPoint {
    set trouble {}
    for {set i 17} {$i < 27} {incr i} {
	set root [expr {1 << $i}]
	set rm1 [expr {$root - 1}]
	set arg [expr {pow(2., (2 * $i))}]
	if {isqrt($arg-1.0) != $rm1} {
	    append trouble "i = " $i ": isqrt( " $arg "-1) != " $rm1 "\n"
	}
	if {isqrt($arg) != $root} {
	    append trouble "i = " $i ": isqrt( " $arg ") != " $root "\n"
	}
	if {isqrt($arg+1.0) != $root} {
	    append trouble "i = " $i ": isqrt( " $arg "+1) != " $root "\n"
	}
    }
    set trouble
} {}

test expr-47.8 {isqrt of inexact floating point number} ieeeFloatingPoint {
    expr isqrt(2[string repeat 0 34])
} 141421356237309504

test expr-47.9 {isqrt of negative int} {
    list [catch {expr isqrt(-1)} result] $result
} {1 {square root of negative argument}}

test expr-47.10 {isqrt of negative bignum} {
    list [catch {expr isqrt(-1[string repeat 0 1000])} result] $result
} {1 {square root of negative argument}}

test expr-47.11 {isqrt of zero} {
    expr {isqrt(0)}
} 0

test expr-47.12 {isqrt of various sizes of integer} {
    set faults 0
    set trouble {}
    for {set i 0} {$faults < 10 && $i <= 1024} {incr i} {
	set root [expr {1 << $i}]
	set rm1 [expr {$root - 1}]
	set arg [expr {1 << (2 * $i)}]
	set tval [expr {isqrt($arg-1)}]
	if {$tval != $rm1} {
	    append trouble "i = " $i ": isqrt(" $arg "-1) == " $tval \
		" != " $rm1 "\n"
	    incr faults
	}
	set tval [expr {isqrt($arg)}]
	if {$tval != $root} {
	    append trouble "i = " $i ": isqrt(" $arg ") == " $tval \
		" != " $root "\n"
	    incr faults
	}
	set tval [expr {isqrt($arg+1)}]
	if {$tval != $root} {
	    append trouble "i = " $i ": isqrt(" $arg "+1) == " $tval \
		" != " $root "\n"
	    incr faults
	}
    }
    set trouble
} {}

test expr-47.13 {isqrt and floating point rounding (Bug 2143288)} {
    set trouble {}
    set faults 0
    for {set i 0} {$i < 29 && $faults < 10} {incr i} {
	for {set j 0} {$j <= $i} {incr j} {
	    set k [expr {isqrt((1<<56)+(1<<$i)+(1<<$j))}]
	    if {$k != (1<<28)} {
		append trouble "i = $i, j = $j, k = $k\n"
		incr faults
	    }
	}
	set k [expr {isqrt((1<<56)+(1<<29)+(1<<$i))}]
	if {$k != (1<<28)+1} {
	    append trouble "i = $i, k = $k\n"
	    incr faults
	}
    }
    set trouble
} {}
test expr-47.14 {isqrt() - lseq} {
    list [catch {expr {isqrt([lseq 1 3])}} result] $result
} {1 {expected number but got a list}}
test expr-47.15 {isqrt() - lseq} {
    list [catch {expr {isqrt({1 2 "})}} result] $result
} {1 {expected number but got "1 2 ""}}
test expr-47.16 {isqrt() - lseq} {
    list [catch {expr {isqrt([dict create foo bar])}} result] $result
} {1 {expected number but got a list}}

test expr-48.1 {Bug 1770224} {
    expr {-0x8000000000000001 >> 0x8000000000000000}
} -1

test expr-49.1 {Bug 2823282} {
    coroutine foo apply {{} {set expr expr; $expr {[yield]}}}
    foo 1
} 1

test expr-50.1 {test sqrt() of bignums with non-Inf answer} {
    expr {sqrt("1[string repeat 0 616]") == 1e308}
} 1

test expr-51.1 {test round-to-even on input} {
    expr 6.9294956446009195e15
} 6929495644600920.0

test expr-52.1 {
	comparison with empty string does not generate string representation
} {
	set a [list one two three]
	list [expr {$a eq {}}] [expr {$a < {}}] [expr {$a > {}}] [
		string match {*no string representation*} [
		::tcl::unsupported::representation $a]]
} {0 0 1 1}

foreach func {isfinite isinf isnan isnormal issubnormal} {
    test expr-53.1.$func {float classification: basic arg handling} -body {
	expr ${func}()
    } -returnCodes error -result "not enough arguments for math function \"$func\""
    test expr-53.2.$func {float classification: basic arg handling} -body {
	expr ${func}(1,2)
    } -returnCodes error -result "too many arguments for math function \"$func\""
    test expr-53.3.$func {float classification: basic arg handling} -body {
	expr ${func}(true)
    } -returnCodes error -result {expected number but got "true"}
    test expr-53.4.$func {float classification: basic arg handling} -body {
	expr ${func}("gorp")
    } -returnCodes error -result {expected number but got "gorp"}
    test expr-53.5.$func {float classification: basic arg handling} -body {
	expr ${func}(1.0)
    } -match glob -result *
    test expr-53.6.$func {float classification: basic arg handling} -body {
	expr ${func}(0x123)
    } -match glob -result *
}

foreach {v r} {
                    1	normal
                   -1	normal
   0x7fffffffffffffff	normal
  -0x7fffffffffffffff	normal
 0xffffffffffffffffff	normal
-0xffffffffffffffffff	normal
                  1.0	normal
                 -1.0	normal
                    0	zero
                   -0	zero
                  0.0	zero
                 -0.0	zero
                1/Inf	zero
               -1/Inf	zero
               1e-314	subnormal
              -1e-314	subnormal
        .0999999**319	subnormal
       -.0999999**319	subnormal
            1e-320/.9	subnormal
           -1e-320/.9	subnormal
               1e5555	infinite
          1e308**1e10	infinite
                  Inf	infinite
              -1e5555	infinite
     -1e308**(1e10+1)	infinite
                 -Inf	infinite
                  NaN	nan
} {
    set changed 0
    if {[regexp {[/\*]} $v]} { set v [expr $v]; set changed 1 }
    test expr-58.1($v)=$r-$changed "float classification: fpclassify($v) eq $r" {
	fpclassify $v
    } $r
    test expr-58.2($v)-$changed "float classification: isfinite($v)" {
	expr {isfinite($v)}
    } [expr {$r ni {"infinite" "nan"}}]
    test expr-58.3($v)-$changed "float classification: isinf($v)" {
	expr {isinf($v)}
    } [expr {$r eq "infinite"}]
    test expr-58.4($v)-$changed "float classification: isnan($v)" {
	expr {isnan($v)}
    } [expr {$r eq "nan"}]
    test expr-58.5($v)-$changed "float classification: isnormal($v)" {
	expr {isnormal($v)}
    } [expr {$r eq "normal"}]
    test expr-58.6($v)-$changed "float classification: issubnormal($v)" {
	expr {issubnormal($v)}
    } [expr {$r eq "subnormal"}]
    test expr-58.7($v)-$changed "float classification: isunordered(0 and $v)" {
	expr {isunordered(0,$v) + isunordered($v,0)}
    } [expr {$r eq "nan" ? 2 : 0}]
    test expr-58.8($v)-$changed "float classification: isunordered(NaN and $v)" {
	expr {isunordered(NaN,$v) + isunordered($v,NaN)}
    } 2
}
unset -nocomplain v r

test expr-59.10 {float classification: fpclassify} -returnCodes error -body {
    fpclassify
} -result {wrong # args: should be "fpclassify floatValue"}
test expr-59.11 {float classification: fpclassify} -returnCodes error -body {
    fpclassify a b
} -result {wrong # args: should be "fpclassify floatValue"}
test expr-59.12 {float classification: fpclassify} -returnCodes error -body {
    fpclassify gorp
} -result {expected number but got "gorp"}

test expr-60.1 {float classification: basic arg handling} -body {
    expr isunordered()
} -returnCodes error -result {not enough arguments for math function "isunordered"}
test expr-60.2 {float classification: basic arg handling} -body {
    expr isunordered(1)
} -returnCodes error -result {not enough arguments for math function "isunordered"}
test expr-60.3 {float classification: basic arg handling} -body {
    expr {isunordered(1, 2, 3)}
} -returnCodes error -result {too many arguments for math function "isunordered"}
test expr-60.4 {float classification: basic arg handling} -body {
    expr {isunordered(true, 1.0)}
} -returnCodes error -result {expected number but got "true"}
test expr-60.5 {float classification: basic arg handling} -body {
    expr {isunordered("gorp", 1.0)}
} -returnCodes error -result {expected number but got "gorp"}
test expr-60.6a {float classification: basic arg handling, large bigint -> double and wide} -body {
    expr "isunordered(0x[string repeat f 100], 0x7fffffffffffffff)"
} -result 0
test expr-60.6b {float classification: basic arg handling, large bigint -> double Inf and wide} -body {
    expr "isunordered(0x[string repeat f 1000], 0x7fffffffffffffff)"
} -result 0
test expr-60.7 {float classification: basic arg handling} -body {
    expr {isunordered(1.0, true)}
} -returnCodes error -result {expected number but got "true"}
test expr-60.8 {float classification: basic arg handling} -body {
    expr {isunordered(1.0, "gorp")}
} -returnCodes error -result {expected number but got "gorp"}
test expr-60.9a {float classification: basic arg handling, wide and large bigint -> double} -body {
    expr "isunordered(0x7fffffffffffffff, 0x[string repeat f 100])"
} -result 0
test expr-60.9b {float classification: basic arg handling, wide and large bigint -> double Inf} -body {
    expr "isunordered(0x7fffffffffffffff, 0x[string repeat f 1000])"
} -result 0

test expr-62.1 {TIP 582: comments} -body {
    expr {1 # + 2}
} -result 1
test expr-62.2 {TIP 582: comments} -body {
    expr "1 #\n+ 2"
} -result 3
test expr-62.3 {TIP 582: comments} -setup {
    set ctr 0
} -body {
    expr {
	# This is a demonstration of a comment
	1 + 2 + 3
	# and another comment
	+ 4 + 5
	# + [incr ctr]
	+ [incr ctr]
    }
} -result 16
# Buggy because line breaks aren't tracked inside expressions at all
test expr-62.4 {TIP 582: comments don't hide line breaks} -setup {
    proc getline {} {
	dict get [info frame -1] line
    }
    set base [getline]
} -constraints knownBug -body {
    expr {
	0
	# a comment
	+ [getline] - $base
    }
} -cleanup {
    rename getline ""
} -result 5
test expr-62.5 {TIP 582: comments don't splice tokens} {
    set a False
    expr {$a#don't splice
ne#don't splice
false}
} 1
test expr-62.6 {TIP 582: comments don't splice tokens} {
    expr {0x2#don't splice
ne#don't splice
2}
} 1
test expr-62.7 {TIP 582: comments can go inside function calls} {
    expr {max(1,# comment
	      2)}
} 2
test expr-62.8 {TIP 582: comments can go inside function calls} {
    expr {max(1# comment
	      ,2)}
} 2
test expr-62.9 {TIP 582: comments can go inside function calls} {
    expr {max(# comment
	      1,2)}
} 2
test expr-62.10 {TIP 582: comments can go inside function calls} {
    expr {max# comment
	     (1,2)}
} 2

test expr-bug-8dd2807066 {Bug 8dd2807066} {
    expr {max(abs(-668336881543038127783364011867))}
} 668336881543038127783364011867

test expr-bug-8dd2807066-1 {Bug 8dd2807066, more elaborate} {
    expr {max(abs(-668336881543038127783364011867),0)}
} 668336881543038127783364011867

# Bug e3dcab1d14 TODO: Need to work out a test case that fails
# without tcl_precision, which has been eliminated in 9.0

# proc do-one-test-expr-63 {e p float athreshold} {
#     # e - power of 2 to test
#     # p - tcl_precision to test wuth
#     # float - floating point value 2**-$p
#     # athreshold - tolerable absolute error (1/2 decimal digit in
#     #              least significant place plus 1/2 least significant bit)
#     set trouble {}
#     set ::tcl_precision $p
#     set xfmt x[expr $float]
#     set ::tcl_precision 0
#     set fmt [string range $xfmt 1 end]
#     set aerror [expr {abs($fmt - $float)}]
#     if {$aerror > $athreshold} {
#         return "Result $fmt is more than $athreshold away from $float"
#     } else {
#         return {}
#     }
# }

# proc run-test-expr-63 {} {
#     for {set e 0} {$e <= 1023} {incr e} {
#         set pt [expr {floor($e*log(2)/log(10))}]
#         for {set p 6} {$p <= 17} {incr p} {
#             set athreshold [expr {0.5*10.0**-($pt+$p) + 2.0**-($e+53)}]
#             set numer [expr {5**$e}]
#             set xfloat x[expr {2.**-$e}]
#             set float [string range $xfloat 1 end]
#             test expr-63.$p.$e "convert 2**-$e to decimal at precision $p" {
#                 do-one-test-expr-63 $e $p $float $athreshold
#             } {}
#         }
#     }
#     rename do-one-test-expr-63 {}
#     rename run-test-expr-63 {}
# }
# run-test-expr-63

# cleanup
unset -nocomplain a
unset -nocomplain min
unset -nocomplain max

::tcltest::cleanupTests
return

# Local Variables:
# mode: tcl
# End:
