diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 86d1295..8beedcb 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -22,7 +22,7 @@ jobs:
       fail-fast: false
       matrix:
         version:
-          - '1.6'
+          - '1.8'
           - '1'
         os:
           - ubuntu-latest
diff --git a/Project.toml b/Project.toml
index c1d9d2e..ee96394 100644
--- a/Project.toml
+++ b/Project.toml
@@ -2,8 +2,12 @@ name = "Decimals"
 uuid = "abce61dc-4473-55a0-ba07-351d65e31d42"
 version = "0.4.1"
 
+[deps]
+ScopedValues = "7e506255-f358-4e82-b7e4-beb19740aa63"
+
 [compat]
-julia = "1"
+ScopedValues = "1"
+julia = "1.8"
 
 [extras]
 Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
diff --git a/scripts/dectest.jl b/scripts/dectest.jl
index 21eae45..20a3fb0 100644
--- a/scripts/dectest.jl
+++ b/scripts/dectest.jl
@@ -1,24 +1,48 @@
 function _precision(line)
     m = match(r"^precision:\s*(\d+)$", line)
+    isnothing(m) && throw(ArgumentError(line))
     return parse(Int, m[1])
 end
 
 function _rounding(line)
     m = match(r"^rounding:\s*(\w+)$", line)
-    return Symbol(m[1])
+    isnothing(m) && throw(ArgumentError(line))
+    r = m[1]
+    if r == "ceiling"
+        return "RoundUp"
+    elseif r == "down"
+        return "RoundToZero"
+    elseif r == "floor"
+        return "RoundDown"
+    elseif r == "half_even"
+        return "RoundNearest"
+    elseif r == "half_up"
+        return "RoundNearestTiesAway"
+    elseif r == "up"
+        return "RoundFromZero"
+    elseif r == "half_down"
+        return "RoundHalfDownUnsupported"
+    elseif r == "05up"
+        return "Round05UpUnsupported"
+    else
+        throw(ArgumentError(r))
+    end
 end
 
 function _maxexponent(line)
-    m = match(r"^maxexponent:\s*(\d+)$", line)
+    m = match(r"^maxexponent:\s*\+?(\d+)$", line)
+    isnothing(m) && throw(ArgumentError(line))
     return parse(Int, m[1])
 end
 
 function _minexponent(line)
     m = match(r"^minexponent:\s*(-\d+)$", line)
+    isnothing(m) && throw(ArgumentError(line))
     return parse(Int, m[1])
 end
 
 function _test(line)
+    occursin("->", line) || throw(ArgumentError(line))
     lhs, rhs = split(line, "->")
     id, operation, operands... = split(lhs)
     result, conditions... = split(rhs)
@@ -31,47 +55,55 @@ function decimal(x)
     return "dec\"$x\""
 end
 
-print_precision(io, p::Int) = println(io, "    setprecision(Decimal, $p)")
-print_maxexponent(io, e::Int) = println(io, "    Decimals.CONTEXT.Emax = $e")
-print_minexponent(io, e::Int) = println(io, "    Decimals.CONTEXT.Emin = $e")
-function print_rounding(io, r::Symbol)
-    modes = Dict(:ceiling => "RoundUp",
-                 :down => "RoundToZero",
-                 :floor => "RoundDown",
-                 :half_even => "RoundNearest",
-                 :half_up => "RoundNearestTiesAway",
-                 :up => "RoundFromZero",
-                 :half_down => "RoundHalfDownUnsupported",
-                 Symbol("05up") => "Round05UpUnsupported")
-    haskey(modes, r) || throw(ArgumentError(r))
-    rmod = modes[r]
-    println(io, "    setrounding(Decimal, $rmod)")
-end
-
 function print_operation(io, operation, operands)
-    if operation == "plus"
-        print_plus(io, operands...)
-    elseif operation == "minus"
-        print_minus(io, operands...)
+    if operation == "abs"
+        print_abs(io, operands...)
+    elseif operation == "add"
+        print_add(io, operands...)
+    elseif operation == "apply"
+        print_apply(io, operands...)
     elseif operation == "compare"
         print_compare(io, operands...)
+    elseif operation == "divide"
+        print_divide(io, operands...)
+    elseif operation == "minus"
+        print_minus(io, operands...)
+    elseif operation == "multiply"
+        print_multiply(io, operands...)
+    elseif operation == "plus"
+        print_plus(io, operands...)
+    elseif operation == "reduce"
+        print_reduce(io, operands...)
+    elseif operation == "subtract"
+        print_subtract(io, operands...)
     else
         throw(ArgumentError(operation))
     end
 end
+print_abs(io, x) = print(io, "abs(", decimal(x), ")")
+print_add(io, x, y) = print(io, decimal(x), " + ", decimal(y))
+print_apply(io, x) = print(io, decimal(x))
 print_compare(io, x, y) = print(io, "cmp(", decimal(x), ", ", decimal(y), ")")
+print_divide(io, x, y) = print(io, decimal(x), " / ", decimal(y))
 print_minus(io, x) = print(io, "-(", decimal(x), ")")
+print_multiply(io, x, y) = print(io, decimal(x), " * ", decimal(y))
 print_plus(io, x) = print(io, "+(", decimal(x), ")")
+print_reduce(io, x) = print(io, "reduce(", decimal(x), ")")
+print_subtract(io, x, y) = print(io, decimal(x), " - ", decimal(y))
 
-function print_test(io, test)
+function print_test(io, test, directives)
     println(io, "    # $(test.id)")
 
+    names = sort!(collect(keys(directives)))
+    params = join(("$k=$(directives[k])" for k in names), ", ")
+    print(io, "    @with_context ($params) ")
+
     if :overflow ∈ test.conditions
-        print(io, "    @test_throws OverflowError ")
+        print(io, "@test_throws OverflowError ")
         print_operation(io, test.operation, test.operands)
         println(io)
     else
-        print(io, "    @test ")
+        print(io, "@test ")
         print_operation(io, test.operation, test.operands)
         print(io, " == ")
         println(io, decimal(test.result))
@@ -83,34 +115,36 @@ function isspecial(value)
     return occursin(r"(inf|nan|#)", value)
 end
 
-function translate(io, line)
-    isempty(line) && return
-    startswith(line, "--") && return
-
-    line = lowercase(line)
-
-    if startswith(line, "version:")
-        # ...
-    elseif startswith(line, "extended:")
-        # ...
-    elseif startswith(line, "clamp:")
-        # ...
-    elseif startswith(line, "precision:")
-        precision = _precision(line)
-        print_precision(io, precision)
-    elseif startswith(line, "rounding:")
-        rounding = _rounding(line)
-        print_rounding(io, rounding)
-    elseif startswith(line, "maxexponent:")
-        maxexponent = _maxexponent(line)
-        print_maxexponent(io, maxexponent)
-    elseif startswith(line, "minexponent:")
-        minexponent = _minexponent(line)
-        print_minexponent(io, minexponent)
-    else
-        test = _test(line)
-        any(isspecial, test.operands) && return
-        print_test(io, test)
+function translate(io, dectest_path)
+    directives = Dict{String, Any}()
+
+    for line in eachline(dectest_path)
+        line = strip(line)
+
+        isempty(line) && continue
+        startswith(line, "--") && continue
+
+        line = lowercase(line)
+
+        if startswith(line, "version:")
+            # ...
+        elseif startswith(line, "extended:")
+            # ...
+        elseif startswith(line, "clamp:")
+            # ...
+        elseif startswith(line, "precision:")
+            directives["precision"] = _precision(line)
+        elseif startswith(line, "rounding:")
+            directives["rounding"] = _rounding(line)
+        elseif startswith(line, "maxexponent:")
+            directives["Emax"] = _maxexponent(line)
+        elseif startswith(line, "minexponent:")
+            directives["Emin"] = _minexponent(line)
+        else
+            test = _test(line)
+            any(isspecial, test.operands) && continue
+            print_test(io, test, directives)
+        end
     end
 end
 
@@ -120,13 +154,13 @@ function (@main)(args=ARGS)
     open(output_path, "w") do io
         println(io, """
                 using Decimals
+                using ScopedValues
                 using Test
+                using Decimals: @with_context
 
                 @testset \"$name\" begin""")
 
-        for line in eachline(dectest_path)
-            translate(io, line)
-        end
+        translate(io, dectest_path)
 
         println(io, "end")
     end
diff --git a/src/Decimals.jl b/src/Decimals.jl
index 2160794..7e8ab6c 100644
--- a/src/Decimals.jl
+++ b/src/Decimals.jl
@@ -21,6 +21,7 @@ struct Decimal <: AbstractFloat
 end
 
 include("bigint.jl")
+include("context.jl")
 
 # Convert between Decimal objects, numbers, and strings
 include("decimal.jl")
diff --git a/src/arithmetic.jl b/src/arithmetic.jl
index 549c10b..a8f1289 100644
--- a/src/arithmetic.jl
+++ b/src/arithmetic.jl
@@ -4,7 +4,8 @@ Base.promote_rule(::Type{Decimal}, ::Type{<:Real}) = Decimal
 Base.promote_rule(::Type{BigFloat}, ::Type{Decimal}) = Decimal
 Base.promote_rule(::Type{BigInt}, ::Type{Decimal}) = Decimal
 
-const BigTen = BigInt(10)
+Base.:(+)(x::Decimal) = fix(x)
+Base.:(-)(x::Decimal) = fix(Decimal(!x.s, x.c, x.q))
 
 # Addition
 # To add, convert both decimals to the same exponent.
@@ -24,9 +25,6 @@ function Base.:(+)(x::Decimal, y::Decimal)
     return normalize(Decimal(s, abs(c), y.q))
 end
 
-# Negation
-Base.:(-)(x::Decimal) = Decimal(!x.s, x.c, x.q)
-
 # Subtraction
 Base.:(-)(x::Decimal, y::Decimal) = +(x, -y)
 
diff --git a/src/context.jl b/src/context.jl
new file mode 100644
index 0000000..825fcbf
--- /dev/null
+++ b/src/context.jl
@@ -0,0 +1,134 @@
+using ScopedValues
+
+Base.@kwdef struct Context
+    precision::Int=28
+    rounding::RoundingMode=RoundNearest
+    Emax::Int=999999
+    Emin::Int=-999999
+end
+
+const CONTEXT = ScopedValue(Context())
+
+Base.precision(::Type{Decimal}) = CONTEXT[].precision
+Base.rounding(::Type{Decimal}) = CONTEXT[].rounding
+
+"""
+    with_context(f; kwargs...)
+
+Run `f` with [`Context`](@ref) parametrized by `kwargs`.
+
+# Examples
+
+```jldoctest
+julia> Decimals.with_context(precision=42) do
+    precision(Decimal)
+end
+42
+```
+
+See also [`@with_context`](@ref).
+"""
+function with_context(f; kwargs...)
+    with(f, CONTEXT => Context(;kwargs...))
+end
+
+"""
+    @with_context params expr
+
+Run `expr` with [`Context`](@ref) parametrized by a named tuple `params`.
+
+# Examples
+
+```jldoctest
+julia> Decimals.@with_context (precision=42, ) precision(Decimal)
+42
+```
+
+See also [`with_context`](@ref).
+"""
+macro with_context(params, expr)
+    return quote
+        @with Decimals.CONTEXT => Decimals.Context(;$params...) $(esc(expr))
+    end
+end
+
+"""
+    fix(x)
+
+Round and fix the exponent of `x` to keep it within the precision and exponent
+limits as given by the current `CONTEXT`.
+"""
+function fix(x::Decimal)
+    prec = precision(Decimal)
+    rmod = rounding(Decimal)
+
+    Emin, Emax = CONTEXT[].Emin, CONTEXT[].Emax
+    Etiny = Emin - prec + 1
+    Etop = Emax - prec + 1
+
+    if iszero(x)
+        return Decimal(x.s, x.c, clamp(x.q, Etiny, Etop))
+    end
+
+    clen = ndigits(x.c)
+    exp_min = clen + x.q - prec
+
+    # Equivalent to `clen + x.q - 1 > Emax`
+    if exp_min > Etop
+        throw(OverflowError("Exponent limit ($Emax) exceeded: $x"))
+    end
+
+    subnormal = exp_min < Etiny
+    if subnormal
+        exp_min = Etiny
+    end
+
+    # Number of digits and exponent within bounds
+    if x.q ≥ exp_min
+        return x
+    end
+
+    # Number of digits of the resulting coefficient
+    digits = clen + x.q - exp_min
+    if digits < 0
+        x = Decimal(x.s, BigOne, exp_min - 1)
+        digits = 0
+    end
+
+    # Number of least significant digits to remove from `c`
+    trun_len = clen - digits
+
+    # Signed coefficient for rounding modes like RoundToZero
+    c = (-1)^x.s * x.c
+
+    # Split `c` into `digits` most significant digits and `trun_len` least
+    # significant digits
+    # This is like round(c, rmod, sigdigits=digits), except here we can
+    # tell from `rem` if the rounding was lossless
+    c, rem = divrem(c, BigTen ^ trun_len, rmod)
+
+    # Rounding is exact if the truncated digits were zero
+    exact = iszero(rem)
+
+    # If the number of digits exceeded `digits` after rounding,
+    # it means that `c` was like 99...9 and was rounded up,
+    # becoming                  100...0, so `c` is divisible by 10
+    if ndigits(c) > prec
+        c = exactdiv(c, 10)
+        exp_min += 1
+    end
+
+    # Exponent might have exceeded due to rounding
+    if exp_min > Etop
+        throw(OverflowError("Exponent limit ($Emax) exceeded: $x"))
+    end
+
+    x = Decimal(x.s, abs(c), exp_min)
+
+    #if subnormal && !exact
+    #    throw(ErrorException("Underflow"))
+    #end
+
+    return x
+end
+
diff --git a/test/dectests/test_compare.jl b/test/dectests/test_compare.jl
new file mode 100644
index 0000000..b025592
--- /dev/null
+++ b/test/dectests/test_compare.jl
@@ -0,0 +1,1099 @@
+using Decimals
+using ScopedValues
+using Test
+using Decimals: @with_context
+
+@testset "Compare" begin
+    # comx001
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-2", dec"-2") == dec"0"
+    # comx002
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-2", dec"-1") == dec"-1"
+    # comx003
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-2", dec"0") == dec"-1"
+    # comx004
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-2", dec"1") == dec"-1"
+    # comx005
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-2", dec"2") == dec"-1"
+    # comx006
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-1", dec"-2") == dec"1"
+    # comx007
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-1", dec"-1") == dec"0"
+    # comx008
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-1", dec"0") == dec"-1"
+    # comx009
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-1", dec"1") == dec"-1"
+    # comx010
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-1", dec"2") == dec"-1"
+    # comx011
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0", dec"-2") == dec"1"
+    # comx012
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0", dec"-1") == dec"1"
+    # comx013
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0", dec"0") == dec"0"
+    # comx014
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0", dec"1") == dec"-1"
+    # comx015
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0", dec"2") == dec"-1"
+    # comx016
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"-2") == dec"1"
+    # comx017
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"-1") == dec"1"
+    # comx018
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"0") == dec"1"
+    # comx019
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1") == dec"0"
+    # comx020
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"2") == dec"-1"
+    # comx021
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"2", dec"-2") == dec"1"
+    # comx022
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"2", dec"-1") == dec"1"
+    # comx023
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"2", dec"0") == dec"1"
+    # comx025
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"2", dec"1") == dec"1"
+    # comx026
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"2", dec"2") == dec"0"
+    # comx031
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-20", dec"-20") == dec"0"
+    # comx032
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-20", dec"-10") == dec"-1"
+    # comx033
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-20", dec"00") == dec"-1"
+    # comx034
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-20", dec"10") == dec"-1"
+    # comx035
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-20", dec"20") == dec"-1"
+    # comx036
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-10", dec"-20") == dec"1"
+    # comx037
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-10", dec"-10") == dec"0"
+    # comx038
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-10", dec"00") == dec"-1"
+    # comx039
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-10", dec"10") == dec"-1"
+    # comx040
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-10", dec"20") == dec"-1"
+    # comx041
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"00", dec"-20") == dec"1"
+    # comx042
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"00", dec"-10") == dec"1"
+    # comx043
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"00", dec"00") == dec"0"
+    # comx044
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"00", dec"10") == dec"-1"
+    # comx045
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"00", dec"20") == dec"-1"
+    # comx046
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"10", dec"-20") == dec"1"
+    # comx047
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"10", dec"-10") == dec"1"
+    # comx048
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"10", dec"00") == dec"1"
+    # comx049
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"10", dec"10") == dec"0"
+    # comx050
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"10", dec"20") == dec"-1"
+    # comx051
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"20", dec"-20") == dec"1"
+    # comx052
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"20", dec"-10") == dec"1"
+    # comx053
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"20", dec"00") == dec"1"
+    # comx055
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"20", dec"10") == dec"1"
+    # comx056
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"20", dec"20") == dec"0"
+    # comx061
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-2.0", dec"-2.0") == dec"0"
+    # comx062
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-2.0", dec"-1.0") == dec"-1"
+    # comx063
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-2.0", dec"0.0") == dec"-1"
+    # comx064
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-2.0", dec"1.0") == dec"-1"
+    # comx065
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-2.0", dec"2.0") == dec"-1"
+    # comx066
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-1.0", dec"-2.0") == dec"1"
+    # comx067
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-1.0", dec"-1.0") == dec"0"
+    # comx068
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-1.0", dec"0.0") == dec"-1"
+    # comx069
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-1.0", dec"1.0") == dec"-1"
+    # comx070
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-1.0", dec"2.0") == dec"-1"
+    # comx071
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.0", dec"-2.0") == dec"1"
+    # comx072
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.0", dec"-1.0") == dec"1"
+    # comx073
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.0", dec"0.0") == dec"0"
+    # comx074
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.0", dec"1.0") == dec"-1"
+    # comx075
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.0", dec"2.0") == dec"-1"
+    # comx076
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1.0", dec"-2.0") == dec"1"
+    # comx077
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1.0", dec"-1.0") == dec"1"
+    # comx078
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1.0", dec"0.0") == dec"1"
+    # comx079
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1.0", dec"1.0") == dec"0"
+    # comx080
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1.0", dec"2.0") == dec"-1"
+    # comx081
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"2.0", dec"-2.0") == dec"1"
+    # comx082
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"2.0", dec"-1.0") == dec"1"
+    # comx083
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"2.0", dec"0.0") == dec"1"
+    # comx085
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"2.0", dec"1.0") == dec"1"
+    # comx086
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"2.0", dec"2.0") == dec"0"
+    # comx095
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"9.99999999e+999999999", dec"9.99999999e+999999999") == dec"0"
+    # comx096
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-9.99999999e+999999999", dec"9.99999999e+999999999") == dec"-1"
+    # comx097
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"9.99999999e+999999999", dec"-9.99999999e+999999999") == dec"1"
+    # comx098
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-9.99999999e+999999999", dec"-9.99999999e+999999999") == dec"0"
+    # comx100
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"7.0", dec"7.0") == dec"0"
+    # comx101
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"7.0", dec"7") == dec"0"
+    # comx102
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"7", dec"7.0") == dec"0"
+    # comx103
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"7e+0", dec"7.0") == dec"0"
+    # comx104
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"70e-1", dec"7.0") == dec"0"
+    # comx105
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.7e+1", dec"7") == dec"0"
+    # comx106
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"70e-1", dec"7") == dec"0"
+    # comx107
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"7.0", dec"7e+0") == dec"0"
+    # comx108
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"7.0", dec"70e-1") == dec"0"
+    # comx109
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"7", dec"0.7e+1") == dec"0"
+    # comx110
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"7", dec"70e-1") == dec"0"
+    # comx120
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8.0", dec"7.0") == dec"1"
+    # comx121
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8.0", dec"7") == dec"1"
+    # comx122
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8", dec"7.0") == dec"1"
+    # comx123
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8e+0", dec"7.0") == dec"1"
+    # comx124
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"80e-1", dec"7.0") == dec"1"
+    # comx125
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.8e+1", dec"7") == dec"1"
+    # comx126
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"80e-1", dec"7") == dec"1"
+    # comx127
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8.0", dec"7e+0") == dec"1"
+    # comx128
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8.0", dec"70e-1") == dec"1"
+    # comx129
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8", dec"0.7e+1") == dec"1"
+    # comx130
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8", dec"70e-1") == dec"1"
+    # comx140
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8.0", dec"9.0") == dec"-1"
+    # comx141
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8.0", dec"9") == dec"-1"
+    # comx142
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8", dec"9.0") == dec"-1"
+    # comx143
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8e+0", dec"9.0") == dec"-1"
+    # comx144
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"80e-1", dec"9.0") == dec"-1"
+    # comx145
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.8e+1", dec"9") == dec"-1"
+    # comx146
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"80e-1", dec"9") == dec"-1"
+    # comx147
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8.0", dec"9e+0") == dec"-1"
+    # comx148
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8.0", dec"90e-1") == dec"-1"
+    # comx149
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8", dec"0.9e+1") == dec"-1"
+    # comx150
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8", dec"90e-1") == dec"-1"
+    # comx200
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-7.0", dec"7.0") == dec"-1"
+    # comx201
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-7.0", dec"7") == dec"-1"
+    # comx202
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-7", dec"7.0") == dec"-1"
+    # comx203
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-7e+0", dec"7.0") == dec"-1"
+    # comx204
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-70e-1", dec"7.0") == dec"-1"
+    # comx205
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0.7e+1", dec"7") == dec"-1"
+    # comx206
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-70e-1", dec"7") == dec"-1"
+    # comx207
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-7.0", dec"7e+0") == dec"-1"
+    # comx208
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-7.0", dec"70e-1") == dec"-1"
+    # comx209
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-7", dec"0.7e+1") == dec"-1"
+    # comx210
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-7", dec"70e-1") == dec"-1"
+    # comx220
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8.0", dec"7.0") == dec"-1"
+    # comx221
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8.0", dec"7") == dec"-1"
+    # comx222
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8", dec"7.0") == dec"-1"
+    # comx223
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8e+0", dec"7.0") == dec"-1"
+    # comx224
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-80e-1", dec"7.0") == dec"-1"
+    # comx225
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0.8e+1", dec"7") == dec"-1"
+    # comx226
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-80e-1", dec"7") == dec"-1"
+    # comx227
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8.0", dec"7e+0") == dec"-1"
+    # comx228
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8.0", dec"70e-1") == dec"-1"
+    # comx229
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8", dec"0.7e+1") == dec"-1"
+    # comx230
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8", dec"70e-1") == dec"-1"
+    # comx240
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8.0", dec"9.0") == dec"-1"
+    # comx241
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8.0", dec"9") == dec"-1"
+    # comx242
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8", dec"9.0") == dec"-1"
+    # comx243
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8e+0", dec"9.0") == dec"-1"
+    # comx244
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-80e-1", dec"9.0") == dec"-1"
+    # comx245
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0.8e+1", dec"9") == dec"-1"
+    # comx246
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-80e-1", dec"9") == dec"-1"
+    # comx247
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8.0", dec"9e+0") == dec"-1"
+    # comx248
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8.0", dec"90e-1") == dec"-1"
+    # comx249
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8", dec"0.9e+1") == dec"-1"
+    # comx250
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8", dec"90e-1") == dec"-1"
+    # comx300
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"7.0", dec"-7.0") == dec"1"
+    # comx301
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"7.0", dec"-7") == dec"1"
+    # comx302
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"7", dec"-7.0") == dec"1"
+    # comx303
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"7e+0", dec"-7.0") == dec"1"
+    # comx304
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"70e-1", dec"-7.0") == dec"1"
+    # comx305
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec".7e+1", dec"-7") == dec"1"
+    # comx306
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"70e-1", dec"-7") == dec"1"
+    # comx307
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"7.0", dec"-7e+0") == dec"1"
+    # comx308
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"7.0", dec"-70e-1") == dec"1"
+    # comx309
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"7", dec"-.7e+1") == dec"1"
+    # comx310
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"7", dec"-70e-1") == dec"1"
+    # comx320
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8.0", dec"-7.0") == dec"1"
+    # comx321
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8.0", dec"-7") == dec"1"
+    # comx322
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8", dec"-7.0") == dec"1"
+    # comx323
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8e+0", dec"-7.0") == dec"1"
+    # comx324
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"80e-1", dec"-7.0") == dec"1"
+    # comx325
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec".8e+1", dec"-7") == dec"1"
+    # comx326
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"80e-1", dec"-7") == dec"1"
+    # comx327
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8.0", dec"-7e+0") == dec"1"
+    # comx328
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8.0", dec"-70e-1") == dec"1"
+    # comx329
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8", dec"-.7e+1") == dec"1"
+    # comx330
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8", dec"-70e-1") == dec"1"
+    # comx340
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8.0", dec"-9.0") == dec"1"
+    # comx341
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8.0", dec"-9") == dec"1"
+    # comx342
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8", dec"-9.0") == dec"1"
+    # comx343
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8e+0", dec"-9.0") == dec"1"
+    # comx344
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"80e-1", dec"-9.0") == dec"1"
+    # comx345
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec".8e+1", dec"-9") == dec"1"
+    # comx346
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"80e-1", dec"-9") == dec"1"
+    # comx347
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8.0", dec"-9e+0") == dec"1"
+    # comx348
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8.0", dec"-90e-1") == dec"1"
+    # comx349
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8", dec"-.9e+1") == dec"1"
+    # comx350
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"8", dec"-90e-1") == dec"1"
+    # comx400
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-7.0", dec"-7.0") == dec"0"
+    # comx401
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-7.0", dec"-7") == dec"0"
+    # comx402
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-7", dec"-7.0") == dec"0"
+    # comx403
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-7e+0", dec"-7.0") == dec"0"
+    # comx404
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-70e-1", dec"-7.0") == dec"0"
+    # comx405
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-.7e+1", dec"-7") == dec"0"
+    # comx406
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-70e-1", dec"-7") == dec"0"
+    # comx407
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-7.0", dec"-7e+0") == dec"0"
+    # comx408
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-7.0", dec"-70e-1") == dec"0"
+    # comx409
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-7", dec"-.7e+1") == dec"0"
+    # comx410
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-7", dec"-70e-1") == dec"0"
+    # comx420
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8.0", dec"-7.0") == dec"-1"
+    # comx421
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8.0", dec"-7") == dec"-1"
+    # comx422
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8", dec"-7.0") == dec"-1"
+    # comx423
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8e+0", dec"-7.0") == dec"-1"
+    # comx424
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-80e-1", dec"-7.0") == dec"-1"
+    # comx425
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-.8e+1", dec"-7") == dec"-1"
+    # comx426
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-80e-1", dec"-7") == dec"-1"
+    # comx427
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8.0", dec"-7e+0") == dec"-1"
+    # comx428
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8.0", dec"-70e-1") == dec"-1"
+    # comx429
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8", dec"-.7e+1") == dec"-1"
+    # comx430
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8", dec"-70e-1") == dec"-1"
+    # comx440
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8.0", dec"-9.0") == dec"1"
+    # comx441
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8.0", dec"-9") == dec"1"
+    # comx442
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8", dec"-9.0") == dec"1"
+    # comx443
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8e+0", dec"-9.0") == dec"1"
+    # comx444
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-80e-1", dec"-9.0") == dec"1"
+    # comx445
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-.8e+1", dec"-9") == dec"1"
+    # comx446
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-80e-1", dec"-9") == dec"1"
+    # comx447
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8.0", dec"-9e+0") == dec"1"
+    # comx448
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8.0", dec"-90e-1") == dec"1"
+    # comx449
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8", dec"-.9e+1") == dec"1"
+    # comx450
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-8", dec"-90e-1") == dec"1"
+    # comx451
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1.0", dec"0.1") == dec"1"
+    # comx452
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.1", dec"1.0") == dec"-1"
+    # comx453
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"10.0", dec"0.1") == dec"1"
+    # comx454
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.1", dec"10.0") == dec"-1"
+    # comx455
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"100", dec"1.0") == dec"1"
+    # comx456
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1.0", dec"100") == dec"-1"
+    # comx457
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1000", dec"10.0") == dec"1"
+    # comx458
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"10.0", dec"1000") == dec"-1"
+    # comx459
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"10000", dec"100.0") == dec"1"
+    # comx460
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"100.0", dec"10000") == dec"-1"
+    # comx461
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"100000", dec"1000.0") == dec"1"
+    # comx462
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1000.0", dec"100000") == dec"-1"
+    # comx463
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1000000", dec"10000.0") == dec"1"
+    # comx464
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"10000.0", dec"1000000") == dec"-1"
+    # comx470
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.4560000000000000e789", dec"123.456e789") == dec"0"
+    # comx471
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.456000000000000e-89", dec"123.456e-89") == dec"0"
+    # comx472
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.45600000000000e789", dec"123.456e789") == dec"0"
+    # comx473
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.4560000000000e-89", dec"123.456e-89") == dec"0"
+    # comx474
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.456000000000e789", dec"123.456e789") == dec"0"
+    # comx475
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.45600000000e-89", dec"123.456e-89") == dec"0"
+    # comx476
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.4560000000e789", dec"123.456e789") == dec"0"
+    # comx477
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.456000000e-89", dec"123.456e-89") == dec"0"
+    # comx478
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.45600000e789", dec"123.456e789") == dec"0"
+    # comx479
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.4560000e-89", dec"123.456e-89") == dec"0"
+    # comx480
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.456000e789", dec"123.456e789") == dec"0"
+    # comx481
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.45600e-89", dec"123.456e-89") == dec"0"
+    # comx482
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.4560e789", dec"123.456e789") == dec"0"
+    # comx483
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.456e-89", dec"123.456e-89") == dec"0"
+    # comx484
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.456e-89", dec"123.4560000000000000e-89") == dec"0"
+    # comx485
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.456e789", dec"123.456000000000000e789") == dec"0"
+    # comx486
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.456e-89", dec"123.45600000000000e-89") == dec"0"
+    # comx487
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.456e789", dec"123.4560000000000e789") == dec"0"
+    # comx488
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.456e-89", dec"123.456000000000e-89") == dec"0"
+    # comx489
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.456e789", dec"123.45600000000e789") == dec"0"
+    # comx490
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.456e-89", dec"123.4560000000e-89") == dec"0"
+    # comx491
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.456e789", dec"123.456000000e789") == dec"0"
+    # comx492
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.456e-89", dec"123.45600000e-89") == dec"0"
+    # comx493
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.456e789", dec"123.4560000e789") == dec"0"
+    # comx494
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.456e-89", dec"123.456000e-89") == dec"0"
+    # comx495
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.456e789", dec"123.45600e789") == dec"0"
+    # comx496
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.456e-89", dec"123.4560e-89") == dec"0"
+    # comx497
+    @with_context (Emax=999999999, Emin=-999999999, precision=40, rounding=RoundNearestTiesAway) @test cmp(dec"123.456e789", dec"123.456e789") == dec"0"
+    # comx500
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e-15") == dec"1"
+    # comx501
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e-14") == dec"1"
+    # comx502
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e-13") == dec"1"
+    # comx503
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e-12") == dec"1"
+    # comx504
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e-11") == dec"1"
+    # comx505
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e-10") == dec"1"
+    # comx506
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e-9") == dec"1"
+    # comx507
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e-8") == dec"1"
+    # comx508
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e-7") == dec"1"
+    # comx509
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e-6") == dec"1"
+    # comx510
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e-5") == dec"1"
+    # comx511
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e-4") == dec"1"
+    # comx512
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e-3") == dec"1"
+    # comx513
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e-2") == dec"1"
+    # comx514
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e-1") == dec"1"
+    # comx515
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e-0") == dec"0"
+    # comx516
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e+1") == dec"-1"
+    # comx517
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e+2") == dec"-1"
+    # comx518
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e+3") == dec"-1"
+    # comx519
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e+4") == dec"-1"
+    # comx521
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e+5") == dec"-1"
+    # comx522
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e+6") == dec"-1"
+    # comx523
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e+7") == dec"-1"
+    # comx524
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e+8") == dec"-1"
+    # comx525
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e+9") == dec"-1"
+    # comx526
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e+10") == dec"-1"
+    # comx527
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e+11") == dec"-1"
+    # comx528
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e+12") == dec"-1"
+    # comx529
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e+13") == dec"-1"
+    # comx530
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e+14") == dec"-1"
+    # comx531
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1e+15") == dec"-1"
+    # comx540
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e-15", dec"1") == dec"-1"
+    # comx541
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e-14", dec"1") == dec"-1"
+    # comx542
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e-13", dec"1") == dec"-1"
+    # comx543
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e-12", dec"1") == dec"-1"
+    # comx544
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e-11", dec"1") == dec"-1"
+    # comx545
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e-10", dec"1") == dec"-1"
+    # comx546
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e-9", dec"1") == dec"-1"
+    # comx547
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e-8", dec"1") == dec"-1"
+    # comx548
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e-7", dec"1") == dec"-1"
+    # comx549
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e-6", dec"1") == dec"-1"
+    # comx550
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e-5", dec"1") == dec"-1"
+    # comx551
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e-4", dec"1") == dec"-1"
+    # comx552
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e-3", dec"1") == dec"-1"
+    # comx553
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e-2", dec"1") == dec"-1"
+    # comx554
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e-1", dec"1") == dec"-1"
+    # comx555
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e-0", dec"1") == dec"0"
+    # comx556
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e+1", dec"1") == dec"1"
+    # comx557
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e+2", dec"1") == dec"1"
+    # comx558
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e+3", dec"1") == dec"1"
+    # comx559
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e+4", dec"1") == dec"1"
+    # comx561
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e+5", dec"1") == dec"1"
+    # comx562
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e+6", dec"1") == dec"1"
+    # comx563
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e+7", dec"1") == dec"1"
+    # comx564
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e+8", dec"1") == dec"1"
+    # comx565
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e+9", dec"1") == dec"1"
+    # comx566
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e+10", dec"1") == dec"1"
+    # comx567
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e+11", dec"1") == dec"1"
+    # comx568
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e+12", dec"1") == dec"1"
+    # comx569
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e+13", dec"1") == dec"1"
+    # comx570
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e+14", dec"1") == dec"1"
+    # comx571
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e+15", dec"1") == dec"1"
+    # comx580
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.000000987654321", dec"1e-15") == dec"1"
+    # comx581
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.000000987654321", dec"1e-14") == dec"1"
+    # comx582
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.000000987654321", dec"1e-13") == dec"1"
+    # comx583
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.000000987654321", dec"1e-12") == dec"1"
+    # comx584
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.000000987654321", dec"1e-11") == dec"1"
+    # comx585
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.000000987654321", dec"1e-10") == dec"1"
+    # comx586
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.000000987654321", dec"1e-9") == dec"1"
+    # comx587
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.000000987654321", dec"1e-8") == dec"1"
+    # comx588
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.000000987654321", dec"1e-7") == dec"1"
+    # comx589
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.000000987654321", dec"1e-6") == dec"-1"
+    # comx590
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.000000987654321", dec"1e-5") == dec"-1"
+    # comx591
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.000000987654321", dec"1e-4") == dec"-1"
+    # comx592
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.000000987654321", dec"1e-3") == dec"-1"
+    # comx593
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.000000987654321", dec"1e-2") == dec"-1"
+    # comx594
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.000000987654321", dec"1e-1") == dec"-1"
+    # comx595
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.000000987654321", dec"1e-0") == dec"-1"
+    # comx596
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.000000987654321", dec"1e+1") == dec"-1"
+    # comx597
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.000000987654321", dec"1e+2") == dec"-1"
+    # comx598
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.000000987654321", dec"1e+3") == dec"-1"
+    # comx599
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.000000987654321", dec"1e+4") == dec"-1"
+    # comx600
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12", dec"12.2345") == dec"-1"
+    # comx601
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.0", dec"12.2345") == dec"-1"
+    # comx602
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.00", dec"12.2345") == dec"-1"
+    # comx603
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.000", dec"12.2345") == dec"-1"
+    # comx604
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.0000", dec"12.2345") == dec"-1"
+    # comx605
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.00000", dec"12.2345") == dec"-1"
+    # comx606
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.000000", dec"12.2345") == dec"-1"
+    # comx607
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.0000000", dec"12.2345") == dec"-1"
+    # comx608
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.00000000", dec"12.2345") == dec"-1"
+    # comx609
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.000000000", dec"12.2345") == dec"-1"
+    # comx610
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.1234", dec"12") == dec"1"
+    # comx611
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.1234", dec"12.0") == dec"1"
+    # comx612
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.1234", dec"12.00") == dec"1"
+    # comx613
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.1234", dec"12.000") == dec"1"
+    # comx614
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.1234", dec"12.0000") == dec"1"
+    # comx615
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.1234", dec"12.00000") == dec"1"
+    # comx616
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.1234", dec"12.000000") == dec"1"
+    # comx617
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.1234", dec"12.0000000") == dec"1"
+    # comx618
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.1234", dec"12.00000000") == dec"1"
+    # comx619
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.1234", dec"12.000000000") == dec"1"
+    # comx620
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"-12", dec"-12.2345") == dec"1"
+    # comx621
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"-12.0", dec"-12.2345") == dec"1"
+    # comx622
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"-12.00", dec"-12.2345") == dec"1"
+    # comx623
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"-12.000", dec"-12.2345") == dec"1"
+    # comx624
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"-12.0000", dec"-12.2345") == dec"1"
+    # comx625
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"-12.00000", dec"-12.2345") == dec"1"
+    # comx626
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"-12.000000", dec"-12.2345") == dec"1"
+    # comx627
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"-12.0000000", dec"-12.2345") == dec"1"
+    # comx628
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"-12.00000000", dec"-12.2345") == dec"1"
+    # comx629
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"-12.000000000", dec"-12.2345") == dec"1"
+    # comx630
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"-12.1234", dec"-12") == dec"-1"
+    # comx631
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"-12.1234", dec"-12.0") == dec"-1"
+    # comx632
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"-12.1234", dec"-12.00") == dec"-1"
+    # comx633
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"-12.1234", dec"-12.000") == dec"-1"
+    # comx634
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"-12.1234", dec"-12.0000") == dec"-1"
+    # comx635
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"-12.1234", dec"-12.00000") == dec"-1"
+    # comx636
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"-12.1234", dec"-12.000000") == dec"-1"
+    # comx637
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"-12.1234", dec"-12.0000000") == dec"-1"
+    # comx638
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"-12.1234", dec"-12.00000000") == dec"-1"
+    # comx639
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"-12.1234", dec"-12.000000000") == dec"-1"
+    # comx640
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0", dec"0") == dec"0"
+    # comx641
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0", dec"-0") == dec"0"
+    # comx642
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0", dec"-0.0") == dec"0"
+    # comx643
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0", dec"0.0") == dec"0"
+    # comx644
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0", dec"0") == dec"0"
+    # comx645
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0", dec"-0") == dec"0"
+    # comx646
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0", dec"-0.0") == dec"0"
+    # comx647
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0", dec"0.0") == dec"0"
+    # comx648
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.0", dec"0") == dec"0"
+    # comx649
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.0", dec"-0") == dec"0"
+    # comx650
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.0", dec"-0.0") == dec"0"
+    # comx651
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.0", dec"0.0") == dec"0"
+    # comx652
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0.0", dec"0") == dec"0"
+    # comx653
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0.0", dec"-0") == dec"0"
+    # comx654
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0.0", dec"-0.0") == dec"0"
+    # comx655
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0.0", dec"0.0") == dec"0"
+    # comx656
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0e1", dec"0.0") == dec"0"
+    # comx657
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0e2", dec"0.0") == dec"0"
+    # comx658
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0e1", dec"0.0") == dec"0"
+    # comx659
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0e2", dec"0.0") == dec"0"
+    # comx660
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0e1", dec"0") == dec"0"
+    # comx661
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0e2", dec"0") == dec"0"
+    # comx662
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0e1", dec"0") == dec"0"
+    # comx663
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0e2", dec"0") == dec"0"
+    # comx664
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0e1", dec"-0e1") == dec"0"
+    # comx665
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0e2", dec"-0e1") == dec"0"
+    # comx666
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0e1", dec"-0e1") == dec"0"
+    # comx667
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0e2", dec"-0e1") == dec"0"
+    # comx668
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0e1", dec"-0e2") == dec"0"
+    # comx669
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0e2", dec"-0e2") == dec"0"
+    # comx670
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0e1", dec"-0e2") == dec"0"
+    # comx671
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0e2", dec"-0e2") == dec"0"
+    # comx672
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0e1", dec"0e1") == dec"0"
+    # comx673
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0e2", dec"0e1") == dec"0"
+    # comx674
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0e1", dec"0e1") == dec"0"
+    # comx675
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0e2", dec"0e1") == dec"0"
+    # comx676
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0e1", dec"0e2") == dec"0"
+    # comx677
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0e2", dec"0e2") == dec"0"
+    # comx678
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0e1", dec"0e2") == dec"0"
+    # comx679
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0e2", dec"0e2") == dec"0"
+    # comx680
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12", dec"12") == dec"0"
+    # comx681
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12", dec"12.0") == dec"0"
+    # comx682
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12", dec"12.00") == dec"0"
+    # comx683
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12", dec"12.000") == dec"0"
+    # comx684
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12", dec"12.0000") == dec"0"
+    # comx685
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12", dec"12.00000") == dec"0"
+    # comx686
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12", dec"12.000000") == dec"0"
+    # comx687
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12", dec"12.0000000") == dec"0"
+    # comx688
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12", dec"12.00000000") == dec"0"
+    # comx689
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12", dec"12.000000000") == dec"0"
+    # comx690
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12", dec"12") == dec"0"
+    # comx691
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.0", dec"12") == dec"0"
+    # comx692
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.00", dec"12") == dec"0"
+    # comx693
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.000", dec"12") == dec"0"
+    # comx694
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.0000", dec"12") == dec"0"
+    # comx695
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.00000", dec"12") == dec"0"
+    # comx696
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.000000", dec"12") == dec"0"
+    # comx697
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.0000000", dec"12") == dec"0"
+    # comx698
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.00000000", dec"12") == dec"0"
+    # comx699
+    @with_context (Emax=999999999, Emin=-999999999, precision=20, rounding=RoundNearestTiesAway) @test cmp(dec"12.000000000", dec"12") == dec"0"
+    # comx701
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"12345678000", dec"1") == dec"1"
+    # comx702
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"12345678000") == dec"-1"
+    # comx703
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1234567800", dec"1") == dec"1"
+    # comx704
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1234567800") == dec"-1"
+    # comx705
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1234567890", dec"1") == dec"1"
+    # comx706
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1234567890") == dec"-1"
+    # comx707
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1234567891", dec"1") == dec"1"
+    # comx708
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1234567891") == dec"-1"
+    # comx709
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"12345678901", dec"1") == dec"1"
+    # comx710
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"12345678901") == dec"-1"
+    # comx711
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1234567896", dec"1") == dec"1"
+    # comx712
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1234567896") == dec"-1"
+    # comx713
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-1234567891", dec"1") == dec"-1"
+    # comx714
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"-1234567891") == dec"1"
+    # comx715
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-12345678901", dec"1") == dec"-1"
+    # comx716
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"-12345678901") == dec"1"
+    # comx717
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-1234567896", dec"1") == dec"-1"
+    # comx718
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"-1234567896") == dec"1"
+    # comx721
+    @with_context (Emax=999, Emin=-999, precision=15, rounding=RoundNearestTiesAway) @test cmp(dec"12345678000", dec"1") == dec"1"
+    # comx722
+    @with_context (Emax=999, Emin=-999, precision=15, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"12345678000") == dec"-1"
+    # comx723
+    @with_context (Emax=999, Emin=-999, precision=15, rounding=RoundNearestTiesAway) @test cmp(dec"1234567800", dec"1") == dec"1"
+    # comx724
+    @with_context (Emax=999, Emin=-999, precision=15, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1234567800") == dec"-1"
+    # comx725
+    @with_context (Emax=999, Emin=-999, precision=15, rounding=RoundNearestTiesAway) @test cmp(dec"1234567890", dec"1") == dec"1"
+    # comx726
+    @with_context (Emax=999, Emin=-999, precision=15, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1234567890") == dec"-1"
+    # comx727
+    @with_context (Emax=999, Emin=-999, precision=15, rounding=RoundNearestTiesAway) @test cmp(dec"1234567891", dec"1") == dec"1"
+    # comx728
+    @with_context (Emax=999, Emin=-999, precision=15, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1234567891") == dec"-1"
+    # comx729
+    @with_context (Emax=999, Emin=-999, precision=15, rounding=RoundNearestTiesAway) @test cmp(dec"12345678901", dec"1") == dec"1"
+    # comx730
+    @with_context (Emax=999, Emin=-999, precision=15, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"12345678901") == dec"-1"
+    # comx731
+    @with_context (Emax=999, Emin=-999, precision=15, rounding=RoundNearestTiesAway) @test cmp(dec"1234567896", dec"1") == dec"1"
+    # comx732
+    @with_context (Emax=999, Emin=-999, precision=15, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1234567896") == dec"-1"
+    # comx740
+    @with_context (Emax=999, Emin=-999, precision=5, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"0.9999999") == dec"1"
+    # comx741
+    @with_context (Emax=999, Emin=-999, precision=5, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"0.999999") == dec"1"
+    # comx742
+    @with_context (Emax=999, Emin=-999, precision=5, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"0.99999") == dec"1"
+    # comx743
+    @with_context (Emax=999, Emin=-999, precision=5, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1.0000") == dec"0"
+    # comx744
+    @with_context (Emax=999, Emin=-999, precision=5, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1.00001") == dec"-1"
+    # comx745
+    @with_context (Emax=999, Emin=-999, precision=5, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1.000001") == dec"-1"
+    # comx746
+    @with_context (Emax=999, Emin=-999, precision=5, rounding=RoundNearestTiesAway) @test cmp(dec"1", dec"1.0000001") == dec"-1"
+    # comx750
+    @with_context (Emax=999, Emin=-999, precision=5, rounding=RoundNearestTiesAway) @test cmp(dec"0.9999999", dec"1") == dec"-1"
+    # comx751
+    @with_context (Emax=999, Emin=-999, precision=5, rounding=RoundNearestTiesAway) @test cmp(dec"0.999999", dec"1") == dec"-1"
+    # comx752
+    @with_context (Emax=999, Emin=-999, precision=5, rounding=RoundNearestTiesAway) @test cmp(dec"0.99999", dec"1") == dec"-1"
+    # comx753
+    @with_context (Emax=999, Emin=-999, precision=5, rounding=RoundNearestTiesAway) @test cmp(dec"1.0000", dec"1") == dec"0"
+    # comx754
+    @with_context (Emax=999, Emin=-999, precision=5, rounding=RoundNearestTiesAway) @test cmp(dec"1.00001", dec"1") == dec"1"
+    # comx755
+    @with_context (Emax=999, Emin=-999, precision=5, rounding=RoundNearestTiesAway) @test cmp(dec"1.000001", dec"1") == dec"1"
+    # comx756
+    @with_context (Emax=999, Emin=-999, precision=5, rounding=RoundNearestTiesAway) @test cmp(dec"1.0000001", dec"1") == dec"1"
+    # comx760
+    @with_context (Emax=999, Emin=-999, precision=5, rounding=RoundNearestTiesAway) @test cmp(dec"-36852134.84194296250843579428931", dec"-5830629.8347085025808756560357940") == dec"-1"
+    # comx761
+    @with_context (Emax=999, Emin=-999, precision=5, rounding=RoundNearestTiesAway) @test cmp(dec"-36852134.84194296250843579428931", dec"-36852134.84194296250843579428931") == dec"0"
+    # comx762
+    @with_context (Emax=999, Emin=-999, precision=5, rounding=RoundNearestTiesAway) @test cmp(dec"-36852134.94194296250843579428931", dec"-36852134.84194296250843579428931") == dec"-1"
+    # comx763
+    @with_context (Emax=999, Emin=-999, precision=5, rounding=RoundNearestTiesAway) @test cmp(dec"-36852134.84194296250843579428931", dec"-36852134.94194296250843579428931") == dec"1"
+    # comx764
+    @with_context (Emax=999, Emin=-999, precision=11, rounding=RoundNearestTiesAway) @test cmp(dec"-36852134.84194296250843579428931", dec"-36852134.94194296250843579428931") == dec"1"
+    # comx765
+    @with_context (Emax=999, Emin=-999, precision=10, rounding=RoundNearestTiesAway) @test cmp(dec"-36852134.84194296250843579428931", dec"-36852134.94194296250843579428931") == dec"1"
+    # comx766
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-36852134.84194296250843579428931", dec"-36852134.94194296250843579428931") == dec"1"
+    # comx767
+    @with_context (Emax=999, Emin=-999, precision=8, rounding=RoundNearestTiesAway) @test cmp(dec"-36852134.84194296250843579428931", dec"-36852134.94194296250843579428931") == dec"1"
+    # comx768
+    @with_context (Emax=999, Emin=-999, precision=7, rounding=RoundNearestTiesAway) @test cmp(dec"-36852134.84194296250843579428931", dec"-36852134.94194296250843579428931") == dec"1"
+    # comx769
+    @with_context (Emax=999, Emin=-999, precision=6, rounding=RoundNearestTiesAway) @test cmp(dec"-36852134.84194296250843579428931", dec"-36852134.94194296250843579428931") == dec"1"
+    # comx770
+    @with_context (Emax=999, Emin=-999, precision=5, rounding=RoundNearestTiesAway) @test cmp(dec"-36852134.84194296250843579428931", dec"-36852134.94194296250843579428931") == dec"1"
+    # comx771
+    @with_context (Emax=999, Emin=-999, precision=4, rounding=RoundNearestTiesAway) @test cmp(dec"-36852134.84194296250843579428931", dec"-36852134.94194296250843579428931") == dec"1"
+    # comx772
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test cmp(dec"-36852134.84194296250843579428931", dec"-36852134.94194296250843579428931") == dec"1"
+    # comx773
+    @with_context (Emax=999, Emin=-999, precision=2, rounding=RoundNearestTiesAway) @test cmp(dec"-36852134.84194296250843579428931", dec"-36852134.94194296250843579428931") == dec"1"
+    # comx774
+    @with_context (Emax=999, Emin=-999, precision=1, rounding=RoundNearestTiesAway) @test cmp(dec"-36852134.84194296250843579428931", dec"-36852134.94194296250843579428931") == dec"1"
+    # comx880
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"+1.23456789012345e-0", dec"9e+999999999") == dec"-1"
+    # comx881
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"9e+999999999", dec"+1.23456789012345e-0") == dec"1"
+    # comx882
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"+0.100", dec"9e-999999999") == dec"1"
+    # comx883
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"9e-999999999", dec"+0.100") == dec"-1"
+    # comx885
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-1.23456789012345e-0", dec"9e+999999999") == dec"-1"
+    # comx886
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"9e+999999999", dec"-1.23456789012345e-0") == dec"1"
+    # comx887
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0.100", dec"9e-999999999") == dec"-1"
+    # comx888
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"9e-999999999", dec"-0.100") == dec"1"
+    # comx889
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e-599999999", dec"1e-400000001") == dec"-1"
+    # comx890
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e-599999999", dec"1e-400000000") == dec"-1"
+    # comx891
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e-600000000", dec"1e-400000000") == dec"-1"
+    # comx892
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"9e-999999998", dec"0.01") == dec"-1"
+    # comx893
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"9e-999999998", dec"0.1") == dec"-1"
+    # comx894
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0.01", dec"9e-999999998") == dec"1"
+    # comx895
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e599999999", dec"1e400000001") == dec"1"
+    # comx896
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e599999999", dec"1e400000000") == dec"1"
+    # comx897
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e600000000", dec"1e400000000") == dec"1"
+    # comx898
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"9e999999998", dec"100") == dec"1"
+    # comx899
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"9e999999998", dec"10") == dec"1"
+    # comx900
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"100", dec"9e999999998") == dec"-1"
+    # comx901
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e+777777777", dec"1e+411111111") == dec"1"
+    # comx902
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e+777777777", dec"-1e+411111111") == dec"1"
+    # comx903
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-1e+777777777", dec"1e+411111111") == dec"-1"
+    # comx904
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-1e+777777777", dec"-1e+411111111") == dec"-1"
+    # comx905
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e-777777777", dec"1e-411111111") == dec"-1"
+    # comx906
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"1e-777777777", dec"-1e-411111111") == dec"1"
+    # comx907
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-1e-777777777", dec"1e-411111111") == dec"-1"
+    # comx908
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-1e-777777777", dec"-1e-411111111") == dec"1"
+    # comx910
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0e-383", dec"0") == dec"0"
+    # comx911
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0e-383", dec"-0") == dec"0"
+    # comx912
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0e-383", dec"0") == dec"0"
+    # comx913
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0e-383", dec"-0") == dec"0"
+    # comx914
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0e-383", dec"0e+384") == dec"0"
+    # comx915
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0e-383", dec"-0e+384") == dec"0"
+    # comx916
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0e-383", dec"0e+384") == dec"0"
+    # comx917
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0e-383", dec"-0e+384") == dec"0"
+    # comx918
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0", dec"0e+384") == dec"0"
+    # comx919
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0", dec"-0e+384") == dec"0"
+    # comx920
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0", dec"0e+384") == dec"0"
+    # comx921
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0", dec"-0e+384") == dec"0"
+    # comx930
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0e+384", dec"0") == dec"0"
+    # comx931
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0e+384", dec"-0") == dec"0"
+    # comx932
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0e+384", dec"0") == dec"0"
+    # comx933
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0e+384", dec"-0") == dec"0"
+    # comx934
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0e+384", dec"0e-383") == dec"0"
+    # comx935
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0e+384", dec"-0e-383") == dec"0"
+    # comx936
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0e+384", dec"0e-383") == dec"0"
+    # comx937
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0e+384", dec"-0e-383") == dec"0"
+    # comx938
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0", dec"0e-383") == dec"0"
+    # comx939
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"0", dec"-0e-383") == dec"0"
+    # comx940
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0", dec"0e-383") == dec"0"
+    # comx941
+    @with_context (Emax=999999999, Emin=-999999999, precision=9, rounding=RoundNearestTiesAway) @test cmp(dec"-0", dec"-0e-383") == dec"0"
+end
diff --git a/test/dectests/test_minus.jl b/test/dectests/test_minus.jl
new file mode 100644
index 0000000..9e05567
--- /dev/null
+++ b/test/dectests/test_minus.jl
@@ -0,0 +1,211 @@
+using Decimals
+using ScopedValues
+using Test
+using Decimals: @with_context
+
+@testset "Minus" begin
+    # minx001
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"1") == dec"-1"
+    # minx002
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-1") == dec"1"
+    # minx003
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"1.00") == dec"-1.00"
+    # minx004
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-1.00") == dec"1.00"
+    # minx005
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"0") == dec"0"
+    # minx006
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"0.00") == dec"0.00"
+    # minx007
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"00.0") == dec"0.0"
+    # minx008
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"00.00") == dec"0.00"
+    # minx009
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"00") == dec"0"
+    # minx010
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-2") == dec"2"
+    # minx011
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"2") == dec"-2"
+    # minx012
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-2.00") == dec"2.00"
+    # minx013
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"2.00") == dec"-2.00"
+    # minx014
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-0") == dec"0"
+    # minx015
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-0.00") == dec"0.00"
+    # minx016
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-00.0") == dec"0.0"
+    # minx017
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-00.00") == dec"0.00"
+    # minx018
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-00") == dec"0"
+    # minx020
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-0e3") == dec"0e+3"
+    # minx021
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-0e2") == dec"0e+2"
+    # minx022
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-0e1") == dec"0e+1"
+    # minx023
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-0e0") == dec"0"
+    # minx024
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"+0e0") == dec"0"
+    # minx025
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"+0e1") == dec"0e+1"
+    # minx026
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"+0e2") == dec"0e+2"
+    # minx027
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"+0e3") == dec"0e+3"
+    # minx030
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-5e3") == dec"5e+3"
+    # minx031
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-5e8") == dec"5e+8"
+    # minx032
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-5e13") == dec"5e+13"
+    # minx033
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-5e18") == dec"5e+18"
+    # minx034
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"+5e3") == dec"-5e+3"
+    # minx035
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"+5e8") == dec"-5e+8"
+    # minx036
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"+5e13") == dec"-5e+13"
+    # minx037
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"+5e18") == dec"-5e+18"
+    # minx050
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-2000000") == dec"2000000"
+    # minx051
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"2000000") == dec"-2000000"
+    # minx052
+    @with_context (Emax=384, Emin=-383, precision=7, rounding=RoundNearestTiesAway) @test -(dec"-2000000") == dec"2000000"
+    # minx053
+    @with_context (Emax=384, Emin=-383, precision=7, rounding=RoundNearestTiesAway) @test -(dec"2000000") == dec"-2000000"
+    # minx054
+    @with_context (Emax=384, Emin=-383, precision=6, rounding=RoundNearestTiesAway) @test -(dec"-2000000") == dec"2.00000e+6"
+    # minx055
+    @with_context (Emax=384, Emin=-383, precision=6, rounding=RoundNearestTiesAway) @test -(dec"2000000") == dec"-2.00000e+6"
+    # minx056
+    @with_context (Emax=384, Emin=-383, precision=3, rounding=RoundNearestTiesAway) @test -(dec"-2000000") == dec"2.00e+6"
+    # minx057
+    @with_context (Emax=384, Emin=-383, precision=3, rounding=RoundNearestTiesAway) @test -(dec"2000000") == dec"-2.00e+6"
+    # minx060
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"56267e-10") == dec"-0.0000056267"
+    # minx061
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"56267e-5") == dec"-0.56267"
+    # minx062
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"56267e-2") == dec"-562.67"
+    # minx063
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"56267e-1") == dec"-5626.7"
+    # minx065
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"56267e-0") == dec"-56267"
+    # minx066
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"56267e+0") == dec"-56267"
+    # minx067
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"56267e+1") == dec"-5.6267e+5"
+    # minx068
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"56267e+2") == dec"-5.6267e+6"
+    # minx069
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"56267e+3") == dec"-5.6267e+7"
+    # minx070
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"56267e+4") == dec"-5.6267e+8"
+    # minx071
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"56267e+5") == dec"-5.6267e+9"
+    # minx072
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"56267e+6") == dec"-5.6267e+10"
+    # minx080
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-56267e-10") == dec"0.0000056267"
+    # minx081
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-56267e-5") == dec"0.56267"
+    # minx082
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-56267e-2") == dec"562.67"
+    # minx083
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-56267e-1") == dec"5626.7"
+    # minx085
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-56267e-0") == dec"56267"
+    # minx086
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-56267e+0") == dec"56267"
+    # minx087
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-56267e+1") == dec"5.6267e+5"
+    # minx088
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-56267e+2") == dec"5.6267e+6"
+    # minx089
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-56267e+3") == dec"5.6267e+7"
+    # minx090
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-56267e+4") == dec"5.6267e+8"
+    # minx091
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-56267e+5") == dec"5.6267e+9"
+    # minx092
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test -(dec"-56267e+6") == dec"5.6267e+10"
+    # minx100
+    @with_context (Emax=999999999, Emin=-999999999, precision=3, rounding=RoundNearestTiesAway) @test_throws OverflowError -(dec"9.999e+999999999")
+    # minx101
+    @with_context (Emax=999999999, Emin=-999999999, precision=3, rounding=RoundNearestTiesAway) @test_throws OverflowError -(dec"-9.999e+999999999")
+    # minx110
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test -(dec"1.00e-999") == dec"-1.00e-999"
+    # minx111
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test -(dec"0.1e-999") == dec"-1e-1000"
+    # minx112
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test -(dec"0.10e-999") == dec"-1.0e-1000"
+    # minx113
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test -(dec"0.100e-999") == dec"-1.0e-1000"
+    # minx114
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test -(dec"0.01e-999") == dec"-1e-1001"
+    # minx115
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test -(dec"0.999e-999") == dec"-1.00e-999"
+    # minx116
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test -(dec"0.099e-999") == dec"-1.0e-1000"
+    # minx117
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test -(dec"0.009e-999") == dec"-1e-1001"
+    # minx118
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test -(dec"0.001e-999") == dec"-0e-1001"
+    # minx119
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test -(dec"0.0009e-999") == dec"-0e-1001"
+    # minx120
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test -(dec"0.0001e-999") == dec"-0e-1001"
+    # minx130
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test -(dec"-1.00e-999") == dec"1.00e-999"
+    # minx131
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test -(dec"-0.1e-999") == dec"1e-1000"
+    # minx132
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test -(dec"-0.10e-999") == dec"1.0e-1000"
+    # minx133
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test -(dec"-0.100e-999") == dec"1.0e-1000"
+    # minx134
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test -(dec"-0.01e-999") == dec"1e-1001"
+    # minx135
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test -(dec"-0.999e-999") == dec"1.00e-999"
+    # minx136
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test -(dec"-0.099e-999") == dec"1.0e-1000"
+    # minx137
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test -(dec"-0.009e-999") == dec"1e-1001"
+    # minx138
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test -(dec"-0.001e-999") == dec"0e-1001"
+    # minx139
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test -(dec"-0.0009e-999") == dec"0e-1001"
+    # minx140
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test -(dec"-0.0001e-999") == dec"0e-1001"
+    # minx301
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test -(dec"12345678000") == dec"-1.23456780e+10"
+    # minx302
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test -(dec"1234567800") == dec"-1.23456780e+9"
+    # minx303
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test -(dec"1234567890") == dec"-1.23456789e+9"
+    # minx304
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test -(dec"1234567891") == dec"-1.23456789e+9"
+    # minx305
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test -(dec"12345678901") == dec"-1.23456789e+10"
+    # minx306
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test -(dec"1234567896") == dec"-1.23456790e+9"
+    # minx321
+    @with_context (Emax=999, Emin=-999, precision=15, rounding=RoundNearestTiesAway) @test -(dec"12345678000") == dec"-12345678000"
+    # minx322
+    @with_context (Emax=999, Emin=-999, precision=15, rounding=RoundNearestTiesAway) @test -(dec"1234567800") == dec"-1234567800"
+    # minx323
+    @with_context (Emax=999, Emin=-999, precision=15, rounding=RoundNearestTiesAway) @test -(dec"1234567890") == dec"-1234567890"
+    # minx324
+    @with_context (Emax=999, Emin=-999, precision=15, rounding=RoundNearestTiesAway) @test -(dec"1234567891") == dec"-1234567891"
+    # minx325
+    @with_context (Emax=999, Emin=-999, precision=15, rounding=RoundNearestTiesAway) @test -(dec"12345678901") == dec"-12345678901"
+    # minx326
+    @with_context (Emax=999, Emin=-999, precision=15, rounding=RoundNearestTiesAway) @test -(dec"1234567896") == dec"-1234567896"
+end
diff --git a/test/dectests/test_plus.jl b/test/dectests/test_plus.jl
new file mode 100644
index 0000000..517ca76
--- /dev/null
+++ b/test/dectests/test_plus.jl
@@ -0,0 +1,229 @@
+using Decimals
+using ScopedValues
+using Test
+using Decimals: @with_context
+
+@testset "Plus" begin
+    # plux001
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"1") == dec"1"
+    # plux002
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-1") == dec"-1"
+    # plux003
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"1.00") == dec"1.00"
+    # plux004
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-1.00") == dec"-1.00"
+    # plux005
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"0") == dec"0"
+    # plux006
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"0.00") == dec"0.00"
+    # plux007
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"00.0") == dec"0.0"
+    # plux008
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"00.00") == dec"0.00"
+    # plux009
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"00") == dec"0"
+    # plux010
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-2") == dec"-2"
+    # plux011
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"2") == dec"2"
+    # plux012
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-2.00") == dec"-2.00"
+    # plux013
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"2.00") == dec"2.00"
+    # plux014
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-0") == dec"0"
+    # plux015
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-0.00") == dec"0.00"
+    # plux016
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-00.0") == dec"0.0"
+    # plux017
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-00.00") == dec"0.00"
+    # plux018
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-00") == dec"0"
+    # plux020
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-2000000") == dec"-2000000"
+    # plux021
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"2000000") == dec"2000000"
+    # plux022
+    @with_context (Emax=384, Emin=-383, precision=7, rounding=RoundNearestTiesAway) @test +(dec"-2000000") == dec"-2000000"
+    # plux023
+    @with_context (Emax=384, Emin=-383, precision=7, rounding=RoundNearestTiesAway) @test +(dec"2000000") == dec"2000000"
+    # plux024
+    @with_context (Emax=384, Emin=-383, precision=6, rounding=RoundNearestTiesAway) @test +(dec"-2000000") == dec"-2.00000e+6"
+    # plux025
+    @with_context (Emax=384, Emin=-383, precision=6, rounding=RoundNearestTiesAway) @test +(dec"2000000") == dec"2.00000e+6"
+    # plux026
+    @with_context (Emax=384, Emin=-383, precision=3, rounding=RoundNearestTiesAway) @test +(dec"-2000000") == dec"-2.00e+6"
+    # plux027
+    @with_context (Emax=384, Emin=-383, precision=3, rounding=RoundNearestTiesAway) @test +(dec"2000000") == dec"2.00e+6"
+    # plux060
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"56267e-10") == dec"0.0000056267"
+    # plux061
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"56267e-5") == dec"0.56267"
+    # plux062
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"56267e-2") == dec"562.67"
+    # plux063
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"56267e-1") == dec"5626.7"
+    # plux065
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"56267e-0") == dec"56267"
+    # plux066
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"56267e+0") == dec"56267"
+    # plux067
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"56267e+1") == dec"5.6267e+5"
+    # plux068
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"56267e+2") == dec"5.6267e+6"
+    # plux069
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"56267e+3") == dec"5.6267e+7"
+    # plux070
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"56267e+4") == dec"5.6267e+8"
+    # plux071
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"56267e+5") == dec"5.6267e+9"
+    # plux072
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"56267e+6") == dec"5.6267e+10"
+    # plux080
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-56267e-10") == dec"-0.0000056267"
+    # plux081
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-56267e-5") == dec"-0.56267"
+    # plux082
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-56267e-2") == dec"-562.67"
+    # plux083
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-56267e-1") == dec"-5626.7"
+    # plux085
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-56267e-0") == dec"-56267"
+    # plux086
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-56267e+0") == dec"-56267"
+    # plux087
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-56267e+1") == dec"-5.6267e+5"
+    # plux088
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-56267e+2") == dec"-5.6267e+6"
+    # plux089
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-56267e+3") == dec"-5.6267e+7"
+    # plux090
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-56267e+4") == dec"-5.6267e+8"
+    # plux091
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-56267e+5") == dec"-5.6267e+9"
+    # plux092
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-56267e+6") == dec"-5.6267e+10"
+    # plux120
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-0e3") == dec"0e+3"
+    # plux121
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-0e2") == dec"0e+2"
+    # plux122
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-0e1") == dec"0e+1"
+    # plux123
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-0e0") == dec"0"
+    # plux124
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"+0e0") == dec"0"
+    # plux125
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"+0e1") == dec"0e+1"
+    # plux126
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"+0e2") == dec"0e+2"
+    # plux127
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"+0e3") == dec"0e+3"
+    # plux130
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-5e3") == dec"-5e+3"
+    # plux131
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-5e8") == dec"-5e+8"
+    # plux132
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-5e13") == dec"-5e+13"
+    # plux133
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"-5e18") == dec"-5e+18"
+    # plux134
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"+5e3") == dec"5e+3"
+    # plux135
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"+5e8") == dec"5e+8"
+    # plux136
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"+5e13") == dec"5e+13"
+    # plux137
+    @with_context (Emax=384, Emin=-383, precision=9, rounding=RoundNearestTiesAway) @test +(dec"+5e18") == dec"5e+18"
+    # plux160
+    @with_context (Emax=999999999, Emin=-999999999, precision=3, rounding=RoundNearestTiesAway) @test_throws OverflowError +(dec"9.999e+999999999")
+    # plux161
+    @with_context (Emax=999999999, Emin=-999999999, precision=3, rounding=RoundNearestTiesAway) @test_throws OverflowError +(dec"-9.999e+999999999")
+    # plux210
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test +(dec"1.00e-999") == dec"1.00e-999"
+    # plux211
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test +(dec"0.1e-999") == dec"1e-1000"
+    # plux212
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test +(dec"0.10e-999") == dec"1.0e-1000"
+    # plux213
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test +(dec"0.100e-999") == dec"1.0e-1000"
+    # plux214
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test +(dec"0.01e-999") == dec"1e-1001"
+    # plux215
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test +(dec"0.999e-999") == dec"1.00e-999"
+    # plux216
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test +(dec"0.099e-999") == dec"1.0e-1000"
+    # plux217
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test +(dec"0.009e-999") == dec"1e-1001"
+    # plux218
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test +(dec"0.001e-999") == dec"0e-1001"
+    # plux219
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test +(dec"0.0009e-999") == dec"0e-1001"
+    # plux220
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test +(dec"0.0001e-999") == dec"0e-1001"
+    # plux230
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test +(dec"-1.00e-999") == dec"-1.00e-999"
+    # plux231
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test +(dec"-0.1e-999") == dec"-1e-1000"
+    # plux232
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test +(dec"-0.10e-999") == dec"-1.0e-1000"
+    # plux233
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test +(dec"-0.100e-999") == dec"-1.0e-1000"
+    # plux234
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test +(dec"-0.01e-999") == dec"-1e-1001"
+    # plux235
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test +(dec"-0.999e-999") == dec"-1.00e-999"
+    # plux236
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test +(dec"-0.099e-999") == dec"-1.0e-1000"
+    # plux237
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test +(dec"-0.009e-999") == dec"-1e-1001"
+    # plux238
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test +(dec"-0.001e-999") == dec"-0e-1001"
+    # plux239
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test +(dec"-0.0009e-999") == dec"-0e-1001"
+    # plux240
+    @with_context (Emax=999, Emin=-999, precision=3, rounding=RoundNearestTiesAway) @test +(dec"-0.0001e-999") == dec"-0e-1001"
+    # plux251
+    @with_context (Emax=384, Emin=-383, precision=16, rounding=RoundNearestTiesAway) @test +(dec"7e-398") == dec"7e-398"
+    # plux252
+    @with_context (Emax=384, Emin=-383, precision=16, rounding=RoundNearestTiesAway) @test +(dec"0e-398") == dec"0e-398"
+    # plux253
+    @with_context (Emax=384, Emin=-383, precision=16, rounding=RoundNearestTiesAway) @test +(dec"7e-399") == dec"1e-398"
+    # plux254
+    @with_context (Emax=384, Emin=-383, precision=16, rounding=RoundNearestTiesAway) @test +(dec"4e-399") == dec"0e-398"
+    # plux255
+    @with_context (Emax=384, Emin=-383, precision=16, rounding=RoundNearestTiesAway) @test +(dec"7e-400") == dec"0e-398"
+    # plux256
+    @with_context (Emax=384, Emin=-383, precision=16, rounding=RoundNearestTiesAway) @test +(dec"7e-401") == dec"0e-398"
+    # plux257
+    @with_context (Emax=384, Emin=-383, precision=16, rounding=RoundNearestTiesAway) @test +(dec"0e-399") == dec"0e-398"
+    # plux258
+    @with_context (Emax=384, Emin=-383, precision=16, rounding=RoundNearestTiesAway) @test +(dec"0e-400") == dec"0e-398"
+    # plux259
+    @with_context (Emax=384, Emin=-383, precision=16, rounding=RoundNearestTiesAway) @test +(dec"0e-401") == dec"0e-398"
+    # plux301
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test +(dec"12345678000") == dec"1.23456780e+10"
+    # plux302
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test +(dec"1234567800") == dec"1.23456780e+9"
+    # plux303
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test +(dec"1234567890") == dec"1.23456789e+9"
+    # plux304
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test +(dec"1234567891") == dec"1.23456789e+9"
+    # plux305
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test +(dec"12345678901") == dec"1.23456789e+10"
+    # plux306
+    @with_context (Emax=999, Emin=-999, precision=9, rounding=RoundNearestTiesAway) @test +(dec"1234567896") == dec"1.23456790e+9"
+    # plux321
+    @with_context (Emax=999, Emin=-999, precision=15, rounding=RoundNearestTiesAway) @test +(dec"12345678000") == dec"12345678000"
+    # plux322
+    @with_context (Emax=999, Emin=-999, precision=15, rounding=RoundNearestTiesAway) @test +(dec"1234567800") == dec"1234567800"
+    # plux323
+    @with_context (Emax=999, Emin=-999, precision=15, rounding=RoundNearestTiesAway) @test +(dec"1234567890") == dec"1234567890"
+    # plux324
+    @with_context (Emax=999, Emin=-999, precision=15, rounding=RoundNearestTiesAway) @test +(dec"1234567891") == dec"1234567891"
+    # plux325
+    @with_context (Emax=999, Emin=-999, precision=15, rounding=RoundNearestTiesAway) @test +(dec"12345678901") == dec"12345678901"
+    # plux326
+    @with_context (Emax=999, Emin=-999, precision=15, rounding=RoundNearestTiesAway) @test +(dec"1234567896") == dec"1234567896"
+end
diff --git a/test/runtests.jl b/test/runtests.jl
index cf0e978..5bf5c95 100644
--- a/test/runtests.jl
+++ b/test/runtests.jl
@@ -15,14 +15,17 @@ global d = [
 include("test_arithmetic.jl")
 include("test_bigint.jl")
 include("test_constructor.jl")
-include("test_parse.jl")
-include("test_show.jl")
+include("test_context.jl")
 include("test_decimal.jl")
 include("test_equals.jl")
 include("test_hash.jl")
 include("test_norm.jl")
+include("test_parse.jl")
 include("test_round.jl")
+include("test_show.jl")
 
-include("test_compare.jl")
+include("dectests/test_compare.jl")
+include("dectests/test_minus.jl")
+include("dectests/test_plus.jl")
 
 end
diff --git a/test/test_compare.jl b/test/test_compare.jl
deleted file mode 100644
index ace7c50..0000000
--- a/test/test_compare.jl
+++ /dev/null
@@ -1,827 +0,0 @@
-using Decimals
-using Test
-
-@testset "Compare" begin
-    # com001
-    @test cmp(dec"-2", dec"-2") == 0
-    # com002
-    @test cmp(dec"-2", dec"-1") == -1
-    # com003
-    @test cmp(dec"-2", dec"0") == -1
-    # com004
-    @test cmp(dec"-2", dec"1") == -1
-    # com005
-    @test cmp(dec"-2", dec"2") == -1
-    # com006
-    @test cmp(dec"-1", dec"-2") == 1
-    # com007
-    @test cmp(dec"-1", dec"-1") == 0
-    # com008
-    @test cmp(dec"-1", dec"0") == -1
-    # com009
-    @test cmp(dec"-1", dec"1") == -1
-    # com010
-    @test cmp(dec"-1", dec"2") == -1
-    # com011
-    @test cmp(dec"0", dec"-2") == 1
-    # com012
-    @test cmp(dec"0", dec"-1") == 1
-    # com013
-    @test cmp(dec"0", dec"0") == 0
-    # com014
-    @test cmp(dec"0", dec"1") == -1
-    # com015
-    @test cmp(dec"0", dec"2") == -1
-    # com016
-    @test cmp(dec"1", dec"-2") == 1
-    # com017
-    @test cmp(dec"1", dec"-1") == 1
-    # com018
-    @test cmp(dec"1", dec"0") == 1
-    # com019
-    @test cmp(dec"1", dec"1") == 0
-    # com020
-    @test cmp(dec"1", dec"2") == -1
-    # com021
-    @test cmp(dec"2", dec"-2") == 1
-    # com022
-    @test cmp(dec"2", dec"-1") == 1
-    # com023
-    @test cmp(dec"2", dec"0") == 1
-    # com025
-    @test cmp(dec"2", dec"1") == 1
-    # com026
-    @test cmp(dec"2", dec"2") == 0
-    # com031
-    @test cmp(dec"-20", dec"-20") == 0
-    # com032
-    @test cmp(dec"-20", dec"-10") == -1
-    # com033
-    @test cmp(dec"-20", dec"00") == -1
-    # com034
-    @test cmp(dec"-20", dec"10") == -1
-    # com035
-    @test cmp(dec"-20", dec"20") == -1
-    # com036
-    @test cmp(dec"-10", dec"-20") == 1
-    # com037
-    @test cmp(dec"-10", dec"-10") == 0
-    # com038
-    @test cmp(dec"-10", dec"00") == -1
-    # com039
-    @test cmp(dec"-10", dec"10") == -1
-    # com040
-    @test cmp(dec"-10", dec"20") == -1
-    # com041
-    @test cmp(dec"00", dec"-20") == 1
-    # com042
-    @test cmp(dec"00", dec"-10") == 1
-    # com043
-    @test cmp(dec"00", dec"00") == 0
-    # com044
-    @test cmp(dec"00", dec"10") == -1
-    # com045
-    @test cmp(dec"00", dec"20") == -1
-    # com046
-    @test cmp(dec"10", dec"-20") == 1
-    # com047
-    @test cmp(dec"10", dec"-10") == 1
-    # com048
-    @test cmp(dec"10", dec"00") == 1
-    # com049
-    @test cmp(dec"10", dec"10") == 0
-    # com050
-    @test cmp(dec"10", dec"20") == -1
-    # com051
-    @test cmp(dec"20", dec"-20") == 1
-    # com052
-    @test cmp(dec"20", dec"-10") == 1
-    # com053
-    @test cmp(dec"20", dec"00") == 1
-    # com055
-    @test cmp(dec"20", dec"10") == 1
-    # com056
-    @test cmp(dec"20", dec"20") == 0
-    # com061
-    @test cmp(dec"-2.0", dec"-2.0") == 0
-    # com062
-    @test cmp(dec"-2.0", dec"-1.0") == -1
-    # com063
-    @test cmp(dec"-2.0", dec"0.0") == -1
-    # com064
-    @test cmp(dec"-2.0", dec"1.0") == -1
-    # com065
-    @test cmp(dec"-2.0", dec"2.0") == -1
-    # com066
-    @test cmp(dec"-1.0", dec"-2.0") == 1
-    # com067
-    @test cmp(dec"-1.0", dec"-1.0") == 0
-    # com068
-    @test cmp(dec"-1.0", dec"0.0") == -1
-    # com069
-    @test cmp(dec"-1.0", dec"1.0") == -1
-    # com070
-    @test cmp(dec"-1.0", dec"2.0") == -1
-    # com071
-    @test cmp(dec"0.0", dec"-2.0") == 1
-    # com072
-    @test cmp(dec"0.0", dec"-1.0") == 1
-    # com073
-    @test cmp(dec"0.0", dec"0.0") == 0
-    # com074
-    @test cmp(dec"0.0", dec"1.0") == -1
-    # com075
-    @test cmp(dec"0.0", dec"2.0") == -1
-    # com076
-    @test cmp(dec"1.0", dec"-2.0") == 1
-    # com077
-    @test cmp(dec"1.0", dec"-1.0") == 1
-    # com078
-    @test cmp(dec"1.0", dec"0.0") == 1
-    # com079
-    @test cmp(dec"1.0", dec"1.0") == 0
-    # com080
-    @test cmp(dec"1.0", dec"2.0") == -1
-    # com081
-    @test cmp(dec"2.0", dec"-2.0") == 1
-    # com082
-    @test cmp(dec"2.0", dec"-1.0") == 1
-    # com083
-    @test cmp(dec"2.0", dec"0.0") == 1
-    # com085
-    @test cmp(dec"2.0", dec"1.0") == 1
-    # com086
-    @test cmp(dec"2.0", dec"2.0") == 0
-    # com100
-    @test cmp(dec"7.0", dec"7.0") == 0
-    # com101
-    @test cmp(dec"7.0", dec"7") == 0
-    # com102
-    @test cmp(dec"7", dec"7.0") == 0
-    # com103
-    @test cmp(dec"7E+0", dec"7.0") == 0
-    # com104
-    @test cmp(dec"70E-1", dec"7.0") == 0
-    # com105
-    @test cmp(dec"0.7E+1", dec"7") == 0
-    # com106
-    @test cmp(dec"70E-1", dec"7") == 0
-    # com107
-    @test cmp(dec"7.0", dec"7E+0") == 0
-    # com108
-    @test cmp(dec"7.0", dec"70E-1") == 0
-    # com109
-    @test cmp(dec"7", dec"0.7E+1") == 0
-    # com110
-    @test cmp(dec"7", dec"70E-1") == 0
-    # com120
-    @test cmp(dec"8.0", dec"7.0") == 1
-    # com121
-    @test cmp(dec"8.0", dec"7") == 1
-    # com122
-    @test cmp(dec"8", dec"7.0") == 1
-    # com123
-    @test cmp(dec"8E+0", dec"7.0") == 1
-    # com124
-    @test cmp(dec"80E-1", dec"7.0") == 1
-    # com125
-    @test cmp(dec"0.8E+1", dec"7") == 1
-    # com126
-    @test cmp(dec"80E-1", dec"7") == 1
-    # com127
-    @test cmp(dec"8.0", dec"7E+0") == 1
-    # com128
-    @test cmp(dec"8.0", dec"70E-1") == 1
-    # com129
-    @test cmp(dec"8", dec"0.7E+1") == 1
-    # com130
-    @test cmp(dec"8", dec"70E-1") == 1
-    # com140
-    @test cmp(dec"8.0", dec"9.0") == -1
-    # com141
-    @test cmp(dec"8.0", dec"9") == -1
-    # com142
-    @test cmp(dec"8", dec"9.0") == -1
-    # com143
-    @test cmp(dec"8E+0", dec"9.0") == -1
-    # com144
-    @test cmp(dec"80E-1", dec"9.0") == -1
-    # com145
-    @test cmp(dec"0.8E+1", dec"9") == -1
-    # com146
-    @test cmp(dec"80E-1", dec"9") == -1
-    # com147
-    @test cmp(dec"8.0", dec"9E+0") == -1
-    # com148
-    @test cmp(dec"8.0", dec"90E-1") == -1
-    # com149
-    @test cmp(dec"8", dec"0.9E+1") == -1
-    # com150
-    @test cmp(dec"8", dec"90E-1") == -1
-    # com200
-    @test cmp(dec"-7.0", dec"7.0") == -1
-    # com201
-    @test cmp(dec"-7.0", dec"7") == -1
-    # com202
-    @test cmp(dec"-7", dec"7.0") == -1
-    # com203
-    @test cmp(dec"-7E+0", dec"7.0") == -1
-    # com204
-    @test cmp(dec"-70E-1", dec"7.0") == -1
-    # com205
-    @test cmp(dec"-0.7E+1", dec"7") == -1
-    # com206
-    @test cmp(dec"-70E-1", dec"7") == -1
-    # com207
-    @test cmp(dec"-7.0", dec"7E+0") == -1
-    # com208
-    @test cmp(dec"-7.0", dec"70E-1") == -1
-    # com209
-    @test cmp(dec"-7", dec"0.7E+1") == -1
-    # com210
-    @test cmp(dec"-7", dec"70E-1") == -1
-    # com220
-    @test cmp(dec"-8.0", dec"7.0") == -1
-    # com221
-    @test cmp(dec"-8.0", dec"7") == -1
-    # com222
-    @test cmp(dec"-8", dec"7.0") == -1
-    # com223
-    @test cmp(dec"-8E+0", dec"7.0") == -1
-    # com224
-    @test cmp(dec"-80E-1", dec"7.0") == -1
-    # com225
-    @test cmp(dec"-0.8E+1", dec"7") == -1
-    # com226
-    @test cmp(dec"-80E-1", dec"7") == -1
-    # com227
-    @test cmp(dec"-8.0", dec"7E+0") == -1
-    # com228
-    @test cmp(dec"-8.0", dec"70E-1") == -1
-    # com229
-    @test cmp(dec"-8", dec"0.7E+1") == -1
-    # com230
-    @test cmp(dec"-8", dec"70E-1") == -1
-    # com240
-    @test cmp(dec"-8.0", dec"9.0") == -1
-    # com241
-    @test cmp(dec"-8.0", dec"9") == -1
-    # com242
-    @test cmp(dec"-8", dec"9.0") == -1
-    # com243
-    @test cmp(dec"-8E+0", dec"9.0") == -1
-    # com244
-    @test cmp(dec"-80E-1", dec"9.0") == -1
-    # com245
-    @test cmp(dec"-0.8E+1", dec"9") == -1
-    # com246
-    @test cmp(dec"-80E-1", dec"9") == -1
-    # com247
-    @test cmp(dec"-8.0", dec"9E+0") == -1
-    # com248
-    @test cmp(dec"-8.0", dec"90E-1") == -1
-    # com249
-    @test cmp(dec"-8", dec"0.9E+1") == -1
-    # com250
-    @test cmp(dec"-8", dec"90E-1") == -1
-    # com300
-    @test cmp(dec"7.0", dec"-7.0") == 1
-    # com301
-    @test cmp(dec"7.0", dec"-7") == 1
-    # com302
-    @test cmp(dec"7", dec"-7.0") == 1
-    # com303
-    @test cmp(dec"7E+0", dec"-7.0") == 1
-    # com304
-    @test cmp(dec"70E-1", dec"-7.0") == 1
-    # com305
-    @test cmp(dec".7E+1", dec"-7") == 1
-    # com306
-    @test cmp(dec"70E-1", dec"-7") == 1
-    # com307
-    @test cmp(dec"7.0", dec"-7E+0") == 1
-    # com308
-    @test cmp(dec"7.0", dec"-70E-1") == 1
-    # com309
-    @test cmp(dec"7", dec"-.7E+1") == 1
-    # com310
-    @test cmp(dec"7", dec"-70E-1") == 1
-    # com320
-    @test cmp(dec"8.0", dec"-7.0") == 1
-    # com321
-    @test cmp(dec"8.0", dec"-7") == 1
-    # com322
-    @test cmp(dec"8", dec"-7.0") == 1
-    # com323
-    @test cmp(dec"8E+0", dec"-7.0") == 1
-    # com324
-    @test cmp(dec"80E-1", dec"-7.0") == 1
-    # com325
-    @test cmp(dec".8E+1", dec"-7") == 1
-    # com326
-    @test cmp(dec"80E-1", dec"-7") == 1
-    # com327
-    @test cmp(dec"8.0", dec"-7E+0") == 1
-    # com328
-    @test cmp(dec"8.0", dec"-70E-1") == 1
-    # com329
-    @test cmp(dec"8", dec"-.7E+1") == 1
-    # com330
-    @test cmp(dec"8", dec"-70E-1") == 1
-    # com340
-    @test cmp(dec"8.0", dec"-9.0") == 1
-    # com341
-    @test cmp(dec"8.0", dec"-9") == 1
-    # com342
-    @test cmp(dec"8", dec"-9.0") == 1
-    # com343
-    @test cmp(dec"8E+0", dec"-9.0") == 1
-    # com344
-    @test cmp(dec"80E-1", dec"-9.0") == 1
-    # com345
-    @test cmp(dec".8E+1", dec"-9") == 1
-    # com346
-    @test cmp(dec"80E-1", dec"-9") == 1
-    # com347
-    @test cmp(dec"8.0", dec"-9E+0") == 1
-    # com348
-    @test cmp(dec"8.0", dec"-90E-1") == 1
-    # com349
-    @test cmp(dec"8", dec"-.9E+1") == 1
-    # com350
-    @test cmp(dec"8", dec"-90E-1") == 1
-    # com400
-    @test cmp(dec"-7.0", dec"-7.0") == 0
-    # com401
-    @test cmp(dec"-7.0", dec"-7") == 0
-    # com402
-    @test cmp(dec"-7", dec"-7.0") == 0
-    # com403
-    @test cmp(dec"-7E+0", dec"-7.0") == 0
-    # com404
-    @test cmp(dec"-70E-1", dec"-7.0") == 0
-    # com405
-    @test cmp(dec"-.7E+1", dec"-7") == 0
-    # com406
-    @test cmp(dec"-70E-1", dec"-7") == 0
-    # com407
-    @test cmp(dec"-7.0", dec"-7E+0") == 0
-    # com408
-    @test cmp(dec"-7.0", dec"-70E-1") == 0
-    # com409
-    @test cmp(dec"-7", dec"-.7E+1") == 0
-    # com410
-    @test cmp(dec"-7", dec"-70E-1") == 0
-    # com420
-    @test cmp(dec"-8.0", dec"-7.0") == -1
-    # com421
-    @test cmp(dec"-8.0", dec"-7") == -1
-    # com422
-    @test cmp(dec"-8", dec"-7.0") == -1
-    # com423
-    @test cmp(dec"-8E+0", dec"-7.0") == -1
-    # com424
-    @test cmp(dec"-80E-1", dec"-7.0") == -1
-    # com425
-    @test cmp(dec"-.8E+1", dec"-7") == -1
-    # com426
-    @test cmp(dec"-80E-1", dec"-7") == -1
-    # com427
-    @test cmp(dec"-8.0", dec"-7E+0") == -1
-    # com428
-    @test cmp(dec"-8.0", dec"-70E-1") == -1
-    # com429
-    @test cmp(dec"-8", dec"-.7E+1") == -1
-    # com430
-    @test cmp(dec"-8", dec"-70E-1") == -1
-    # com440
-    @test cmp(dec"-8.0", dec"-9.0") == 1
-    # com441
-    @test cmp(dec"-8.0", dec"-9") == 1
-    # com442
-    @test cmp(dec"-8", dec"-9.0") == 1
-    # com443
-    @test cmp(dec"-8E+0", dec"-9.0") == 1
-    # com444
-    @test cmp(dec"-80E-1", dec"-9.0") == 1
-    # com445
-    @test cmp(dec"-.8E+1", dec"-9") == 1
-    # com446
-    @test cmp(dec"-80E-1", dec"-9") == 1
-    # com447
-    @test cmp(dec"-8.0", dec"-9E+0") == 1
-    # com448
-    @test cmp(dec"-8.0", dec"-90E-1") == 1
-    # com449
-    @test cmp(dec"-8", dec"-.9E+1") == 1
-    # com450
-    @test cmp(dec"-8", dec"-90E-1") == 1
-    # com460
-    @test cmp(dec"9.99999999E+999999999", dec"9.99999999E+999999999") == 0
-    # com461
-    @test cmp(dec"-9.99999999E+999999999", dec"9.99999999E+999999999") == -1
-    # com462
-    @test cmp(dec"9.99999999E+999999999", dec"-9.99999999E+999999999") == 1
-    # com463
-    @test cmp(dec"-9.99999999E+999999999", dec"-9.99999999E+999999999") == 0
-    # com470
-    @test cmp(dec"123.4560000000000000E789", dec"123.456E789") == 0
-    # com471
-    @test cmp(dec"123.456000000000000E-89", dec"123.456E-89") == 0
-    # com472
-    @test cmp(dec"123.45600000000000E789", dec"123.456E789") == 0
-    # com473
-    @test cmp(dec"123.4560000000000E-89", dec"123.456E-89") == 0
-    # com474
-    @test cmp(dec"123.456000000000E789", dec"123.456E789") == 0
-    # com475
-    @test cmp(dec"123.45600000000E-89", dec"123.456E-89") == 0
-    # com476
-    @test cmp(dec"123.4560000000E789", dec"123.456E789") == 0
-    # com477
-    @test cmp(dec"123.456000000E-89", dec"123.456E-89") == 0
-    # com478
-    @test cmp(dec"123.45600000E789", dec"123.456E789") == 0
-    # com479
-    @test cmp(dec"123.4560000E-89", dec"123.456E-89") == 0
-    # com480
-    @test cmp(dec"123.456000E789", dec"123.456E789") == 0
-    # com481
-    @test cmp(dec"123.45600E-89", dec"123.456E-89") == 0
-    # com482
-    @test cmp(dec"123.4560E789", dec"123.456E789") == 0
-    # com483
-    @test cmp(dec"123.456E-89", dec"123.456E-89") == 0
-    # com484
-    @test cmp(dec"123.456E-89", dec"123.4560000000000000E-89") == 0
-    # com485
-    @test cmp(dec"123.456E789", dec"123.456000000000000E789") == 0
-    # com486
-    @test cmp(dec"123.456E-89", dec"123.45600000000000E-89") == 0
-    # com487
-    @test cmp(dec"123.456E789", dec"123.4560000000000E789") == 0
-    # com488
-    @test cmp(dec"123.456E-89", dec"123.456000000000E-89") == 0
-    # com489
-    @test cmp(dec"123.456E789", dec"123.45600000000E789") == 0
-    # com490
-    @test cmp(dec"123.456E-89", dec"123.4560000000E-89") == 0
-    # com491
-    @test cmp(dec"123.456E789", dec"123.456000000E789") == 0
-    # com492
-    @test cmp(dec"123.456E-89", dec"123.45600000E-89") == 0
-    # com493
-    @test cmp(dec"123.456E789", dec"123.4560000E789") == 0
-    # com494
-    @test cmp(dec"123.456E-89", dec"123.456000E-89") == 0
-    # com495
-    @test cmp(dec"123.456E789", dec"123.45600E789") == 0
-    # com496
-    @test cmp(dec"123.456E-89", dec"123.4560E-89") == 0
-    # com497
-    @test cmp(dec"123.456E789", dec"123.456E789") == 0
-    # com500
-    @test cmp(dec"1", dec"1E-15") == 1
-    # com501
-    @test cmp(dec"1", dec"1E-14") == 1
-    # com502
-    @test cmp(dec"1", dec"1E-13") == 1
-    # com503
-    @test cmp(dec"1", dec"1E-12") == 1
-    # com504
-    @test cmp(dec"1", dec"1E-11") == 1
-    # com505
-    @test cmp(dec"1", dec"1E-10") == 1
-    # com506
-    @test cmp(dec"1", dec"1E-9") == 1
-    # com507
-    @test cmp(dec"1", dec"1E-8") == 1
-    # com508
-    @test cmp(dec"1", dec"1E-7") == 1
-    # com509
-    @test cmp(dec"1", dec"1E-6") == 1
-    # com510
-    @test cmp(dec"1", dec"1E-5") == 1
-    # com511
-    @test cmp(dec"1", dec"1E-4") == 1
-    # com512
-    @test cmp(dec"1", dec"1E-3") == 1
-    # com513
-    @test cmp(dec"1", dec"1E-2") == 1
-    # com514
-    @test cmp(dec"1", dec"1E-1") == 1
-    # com515
-    @test cmp(dec"1", dec"1E-0") == 0
-    # com516
-    @test cmp(dec"1", dec"1E+1") == -1
-    # com517
-    @test cmp(dec"1", dec"1E+2") == -1
-    # com518
-    @test cmp(dec"1", dec"1E+3") == -1
-    # com519
-    @test cmp(dec"1", dec"1E+4") == -1
-    # com521
-    @test cmp(dec"1", dec"1E+5") == -1
-    # com522
-    @test cmp(dec"1", dec"1E+6") == -1
-    # com523
-    @test cmp(dec"1", dec"1E+7") == -1
-    # com524
-    @test cmp(dec"1", dec"1E+8") == -1
-    # com525
-    @test cmp(dec"1", dec"1E+9") == -1
-    # com526
-    @test cmp(dec"1", dec"1E+10") == -1
-    # com527
-    @test cmp(dec"1", dec"1E+11") == -1
-    # com528
-    @test cmp(dec"1", dec"1E+12") == -1
-    # com529
-    @test cmp(dec"1", dec"1E+13") == -1
-    # com530
-    @test cmp(dec"1", dec"1E+14") == -1
-    # com531
-    @test cmp(dec"1", dec"1E+15") == -1
-    # com540
-    @test cmp(dec"1E-15", dec"1") == -1
-    # com541
-    @test cmp(dec"1E-14", dec"1") == -1
-    # com542
-    @test cmp(dec"1E-13", dec"1") == -1
-    # com543
-    @test cmp(dec"1E-12", dec"1") == -1
-    # com544
-    @test cmp(dec"1E-11", dec"1") == -1
-    # com545
-    @test cmp(dec"1E-10", dec"1") == -1
-    # com546
-    @test cmp(dec"1E-9", dec"1") == -1
-    # com547
-    @test cmp(dec"1E-8", dec"1") == -1
-    # com548
-    @test cmp(dec"1E-7", dec"1") == -1
-    # com549
-    @test cmp(dec"1E-6", dec"1") == -1
-    # com550
-    @test cmp(dec"1E-5", dec"1") == -1
-    # com551
-    @test cmp(dec"1E-4", dec"1") == -1
-    # com552
-    @test cmp(dec"1E-3", dec"1") == -1
-    # com553
-    @test cmp(dec"1E-2", dec"1") == -1
-    # com554
-    @test cmp(dec"1E-1", dec"1") == -1
-    # com555
-    @test cmp(dec"1E-0", dec"1") == 0
-    # com556
-    @test cmp(dec"1E+1", dec"1") == 1
-    # com557
-    @test cmp(dec"1E+2", dec"1") == 1
-    # com558
-    @test cmp(dec"1E+3", dec"1") == 1
-    # com559
-    @test cmp(dec"1E+4", dec"1") == 1
-    # com561
-    @test cmp(dec"1E+5", dec"1") == 1
-    # com562
-    @test cmp(dec"1E+6", dec"1") == 1
-    # com563
-    @test cmp(dec"1E+7", dec"1") == 1
-    # com564
-    @test cmp(dec"1E+8", dec"1") == 1
-    # com565
-    @test cmp(dec"1E+9", dec"1") == 1
-    # com566
-    @test cmp(dec"1E+10", dec"1") == 1
-    # com567
-    @test cmp(dec"1E+11", dec"1") == 1
-    # com568
-    @test cmp(dec"1E+12", dec"1") == 1
-    # com569
-    @test cmp(dec"1E+13", dec"1") == 1
-    # com570
-    @test cmp(dec"1E+14", dec"1") == 1
-    # com571
-    @test cmp(dec"1E+15", dec"1") == 1
-    # com580
-    @test cmp(dec"0.000000987654321", dec"1E-15") == 1
-    # com581
-    @test cmp(dec"0.000000987654321", dec"1E-14") == 1
-    # com582
-    @test cmp(dec"0.000000987654321", dec"1E-13") == 1
-    # com583
-    @test cmp(dec"0.000000987654321", dec"1E-12") == 1
-    # com584
-    @test cmp(dec"0.000000987654321", dec"1E-11") == 1
-    # com585
-    @test cmp(dec"0.000000987654321", dec"1E-10") == 1
-    # com586
-    @test cmp(dec"0.000000987654321", dec"1E-9") == 1
-    # com587
-    @test cmp(dec"0.000000987654321", dec"1E-8") == 1
-    # com588
-    @test cmp(dec"0.000000987654321", dec"1E-7") == 1
-    # com589
-    @test cmp(dec"0.000000987654321", dec"1E-6") == -1
-    # com590
-    @test cmp(dec"0.000000987654321", dec"1E-5") == -1
-    # com591
-    @test cmp(dec"0.000000987654321", dec"1E-4") == -1
-    # com592
-    @test cmp(dec"0.000000987654321", dec"1E-3") == -1
-    # com593
-    @test cmp(dec"0.000000987654321", dec"1E-2") == -1
-    # com594
-    @test cmp(dec"0.000000987654321", dec"1E-1") == -1
-    # com595
-    @test cmp(dec"0.000000987654321", dec"1E-0") == -1
-    # com596
-    @test cmp(dec"0.000000987654321", dec"1E+1") == -1
-    # com597
-    @test cmp(dec"0.000000987654321", dec"1E+2") == -1
-    # com598
-    @test cmp(dec"0.000000987654321", dec"1E+3") == -1
-    # com599
-    @test cmp(dec"0.000000987654321", dec"1E+4") == -1
-    # com600
-    @test cmp(dec"12", dec"12.2345") == -1
-    # com601
-    @test cmp(dec"12.0", dec"12.2345") == -1
-    # com602
-    @test cmp(dec"12.00", dec"12.2345") == -1
-    # com603
-    @test cmp(dec"12.000", dec"12.2345") == -1
-    # com604
-    @test cmp(dec"12.0000", dec"12.2345") == -1
-    # com605
-    @test cmp(dec"12.00000", dec"12.2345") == -1
-    # com606
-    @test cmp(dec"12.000000", dec"12.2345") == -1
-    # com607
-    @test cmp(dec"12.0000000", dec"12.2345") == -1
-    # com608
-    @test cmp(dec"12.00000000", dec"12.2345") == -1
-    # com609
-    @test cmp(dec"12.000000000", dec"12.2345") == -1
-    # com610
-    @test cmp(dec"12.1234", dec"12") == 1
-    # com611
-    @test cmp(dec"12.1234", dec"12.0") == 1
-    # com612
-    @test cmp(dec"12.1234", dec"12.00") == 1
-    # com613
-    @test cmp(dec"12.1234", dec"12.000") == 1
-    # com614
-    @test cmp(dec"12.1234", dec"12.0000") == 1
-    # com615
-    @test cmp(dec"12.1234", dec"12.00000") == 1
-    # com616
-    @test cmp(dec"12.1234", dec"12.000000") == 1
-    # com617
-    @test cmp(dec"12.1234", dec"12.0000000") == 1
-    # com618
-    @test cmp(dec"12.1234", dec"12.00000000") == 1
-    # com619
-    @test cmp(dec"12.1234", dec"12.000000000") == 1
-    # com620
-    @test cmp(dec"-12", dec"-12.2345") == 1
-    # com621
-    @test cmp(dec"-12.0", dec"-12.2345") == 1
-    # com622
-    @test cmp(dec"-12.00", dec"-12.2345") == 1
-    # com623
-    @test cmp(dec"-12.000", dec"-12.2345") == 1
-    # com624
-    @test cmp(dec"-12.0000", dec"-12.2345") == 1
-    # com625
-    @test cmp(dec"-12.00000", dec"-12.2345") == 1
-    # com626
-    @test cmp(dec"-12.000000", dec"-12.2345") == 1
-    # com627
-    @test cmp(dec"-12.0000000", dec"-12.2345") == 1
-    # com628
-    @test cmp(dec"-12.00000000", dec"-12.2345") == 1
-    # com629
-    @test cmp(dec"-12.000000000", dec"-12.2345") == 1
-    # com630
-    @test cmp(dec"-12.1234", dec"-12") == -1
-    # com631
-    @test cmp(dec"-12.1234", dec"-12.0") == -1
-    # com632
-    @test cmp(dec"-12.1234", dec"-12.00") == -1
-    # com633
-    @test cmp(dec"-12.1234", dec"-12.000") == -1
-    # com634
-    @test cmp(dec"-12.1234", dec"-12.0000") == -1
-    # com635
-    @test cmp(dec"-12.1234", dec"-12.00000") == -1
-    # com636
-    @test cmp(dec"-12.1234", dec"-12.000000") == -1
-    # com637
-    @test cmp(dec"-12.1234", dec"-12.0000000") == -1
-    # com638
-    @test cmp(dec"-12.1234", dec"-12.00000000") == -1
-    # com639
-    @test cmp(dec"-12.1234", dec"-12.000000000") == -1
-    # com680
-    @test cmp(dec"12", dec"12") == 0
-    # com681
-    @test cmp(dec"12", dec"12.0") == 0
-    # com682
-    @test cmp(dec"12", dec"12.00") == 0
-    # com683
-    @test cmp(dec"12", dec"12.000") == 0
-    # com684
-    @test cmp(dec"12", dec"12.0000") == 0
-    # com685
-    @test cmp(dec"12", dec"12.00000") == 0
-    # com686
-    @test cmp(dec"12", dec"12.000000") == 0
-    # com687
-    @test cmp(dec"12", dec"12.0000000") == 0
-    # com688
-    @test cmp(dec"12", dec"12.00000000") == 0
-    # com689
-    @test cmp(dec"12", dec"12.000000000") == 0
-    # com690
-    @test cmp(dec"12", dec"12") == 0
-    # com691
-    @test cmp(dec"12.0", dec"12") == 0
-    # com692
-    @test cmp(dec"12.00", dec"12") == 0
-    # com693
-    @test cmp(dec"12.000", dec"12") == 0
-    # com694
-    @test cmp(dec"12.0000", dec"12") == 0
-    # com695
-    @test cmp(dec"12.00000", dec"12") == 0
-    # com696
-    @test cmp(dec"12.000000", dec"12") == 0
-    # com697
-    @test cmp(dec"12.0000000", dec"12") == 0
-    # com698
-    @test cmp(dec"12.00000000", dec"12") == 0
-    # com699
-    @test cmp(dec"12.000000000", dec"12") == 0
-    # com701
-    @test cmp(dec"12345678000", dec"1") == 1
-    # com702
-    @test cmp(dec"1", dec"12345678000") == -1
-    # com703
-    @test cmp(dec"1234567800", dec"1") == 1
-    # com704
-    @test cmp(dec"1", dec"1234567800") == -1
-    # com705
-    @test cmp(dec"1234567890", dec"1") == 1
-    # com706
-    @test cmp(dec"1", dec"1234567890") == -1
-    # com707
-    @test cmp(dec"1234567891", dec"1") == 1
-    # com708
-    @test cmp(dec"1", dec"1234567891") == -1
-    # com709
-    @test cmp(dec"12345678901", dec"1") == 1
-    # com710
-    @test cmp(dec"1", dec"12345678901") == -1
-    # com711
-    @test cmp(dec"1234567896", dec"1") == 1
-    # com712
-    @test cmp(dec"1", dec"1234567896") == -1
-    # com713
-    @test cmp(dec"-1234567891", dec"1") == -1
-    # com714
-    @test cmp(dec"1", dec"-1234567891") == 1
-    # com715
-    @test cmp(dec"-12345678901", dec"1") == -1
-    # com716
-    @test cmp(dec"1", dec"-12345678901") == 1
-    # com717
-    @test cmp(dec"-1234567896", dec"1") == -1
-    # com718
-    @test cmp(dec"1", dec"-1234567896") == 1
-    # com741
-    @test cmp(dec"12345678000", dec"1") == 1
-    # com742
-    @test cmp(dec"1", dec"12345678000") == -1
-    # com743
-    @test cmp(dec"1234567800", dec"1") == 1
-    # com744
-    @test cmp(dec"1", dec"1234567800") == -1
-    # com745
-    @test cmp(dec"1234567890", dec"1") == 1
-    # com746
-    @test cmp(dec"1", dec"1234567890") == -1
-    # com747
-    @test cmp(dec"1234567891", dec"1") == 1
-    # com748
-    @test cmp(dec"1", dec"1234567891") == -1
-    # com749
-    @test cmp(dec"12345678901", dec"1") == 1
-    # com750
-    @test cmp(dec"1", dec"12345678901") == -1
-    # com751
-    @test cmp(dec"1234567896", dec"1") == 1
-    # com752
-    @test cmp(dec"1", dec"1234567896") == -1
-end
diff --git a/test/test_context.jl b/test/test_context.jl
new file mode 100644
index 0000000..7ca80d3
--- /dev/null
+++ b/test/test_context.jl
@@ -0,0 +1,40 @@
+using Decimals
+using ScopedValues
+using Test
+using Decimals: @with_context, with_context
+
+@testset "Context" begin
+    @testset "precision" begin
+        @test precision(Decimal) == 28
+        with_context(precision=42) do
+            @test precision(Decimal) == 42
+        end
+        @with_context (precision=42,) @test precision(Decimal) == 42
+    end
+
+    @testset "rounding" begin
+        @test rounding(Decimal) == RoundNearest
+        with_context(rounding=RoundNearestTiesAway) do
+            @test rounding(Decimal) == RoundNearestTiesAway
+        end
+        @with_context (rounding=RoundNearestTiesAway,) @test rounding(Decimal) == RoundNearestTiesAway
+    end
+
+    @testset "overflow" begin
+        with_context(precision=3, Emax=9) do
+            x = Decimal(0, 123, 7)
+            @test x == Decimals.fix(x)
+
+            x = Decimal(0, 123, 8)
+            @test_throws OverflowError Decimals.fix(x)
+        end
+
+        @with_context (precision=3, Emax=9) begin
+            x = Decimal(0, 123, 7)
+            @test x == Decimals.fix(x)
+
+            x = Decimal(0, 123, 8)
+            @test_throws OverflowError Decimals.fix(x)
+        end
+    end
+end